Unverified Commit de13f4ba authored by Gaétan Lepage's avatar Gaétan Lepage Committed by GitHub
Browse files

python3Packages.hatch: init at 1.16.2 (#504244)

parents 0dd0b1c9 f6c34ae0
Loading
Loading
Loading
Loading
+1 −211
Original line number Diff line number Diff line
{
  lib,
  stdenv,
  python3Packages,
  fetchFromGitHub,
  replaceVars,
  git,
  cargo,
  versionCheckHook,
  writableTmpDirAsHomeHook,
  darwin,
  nix-update-script,
}:

python3Packages.buildPythonApplication (finalAttrs: {
  pname = "hatch";
  version = "1.16.2";
  pyproject = true;

  src = fetchFromGitHub {
    owner = "pypa";
    repo = "hatch";
    tag = "hatch-v${finalAttrs.version}";
    hash = "sha256-A91tpoNBTerB2e09dmvgwealId8mnjxcyiVyCkMxQlY=";
  };

  patches = [ (replaceVars ./paths.patch { uv = lib.getExe python3Packages.uv; }) ];

  build-system = with python3Packages; [
    hatchling
    hatch-vcs
  ];

  pythonRemoveDeps = [ "uv" ];

  dependencies =
    with python3Packages;
    [
      click
      hatchling
      httpx
      hyperlink
      keyring
      packaging
      pexpect
      platformdirs
      pyproject-hooks
      rich
      shellingham
      tomli-w
      tomlkit
      userpath
      virtualenv
    ]
    ++ lib.optionals (pythonOlder "3.14") [
      backports-zstd
    ];

  nativeCheckInputs =
    with python3Packages;
    [
      binary
      flit-core
      git
      pytestCheckHook
      pytest-mock
      pytest-xdist
      setuptools
    ]
    ++ [
      cargo
      versionCheckHook
      writableTmpDirAsHomeHook
    ]
    ++ lib.optionals stdenv.hostPlatform.isDarwin [
      darwin.ps
    ];

  disabledTests = [
    # AssertionError: assert (1980, 1, 2, 0, 0, 0) == (2020, 2, 2, 0, 0, 0)
    "test_default"
    "test_editable_default"
    "test_editable_default_extra_dependencies"
    "test_editable_default_force_include"
    "test_editable_default_force_include_option"
    "test_editable_default_symlink"
    "test_editable_exact"
    "test_editable_exact_extra_dependencies"
    "test_editable_exact_force_include"
    "test_editable_exact_force_include_build_data_precedence"
    "test_editable_exact_force_include_option"
    "test_editable_pth"
    "test_explicit_path"

    # Loosen hatchling runtime version dependency
    "test_core"
    # New failing
    "test_guess_variant"
    "test_open"
    "test_no_open"
    "test_uv_env"
    "test_pyenv"
    "test_pypirc"
    # Relies on FHS
    # Could not read ELF interpreter from any of the following paths: /bin/sh, /usr/bin/env, /bin/dash, /bin/ls
    "test_new_selected_python"

    # https://github.com/pypa/hatch/issues/2006
    "test_project_location_basic_set_first_project"
    "test_project_location_complex_set_first_project"

    # TypeError: 'int' object is not subscriptable with newer packaging
    "test_begin"
    "test_continue"
  ]
  ++ lib.optionals stdenv.hostPlatform.isDarwin [
    # This test assumes it is running on macOS with a system shell on the PATH.
    # It is not possible to run it in a nix build using a /nix/store shell.
    # See https://github.com/pypa/hatch/pull/709 for the relevant code.
    "test_populate_default_popen_kwargs_executable"

    # Those tests fail because the final wheel is named '...2-macosx_11_0_arm64.whl' instead of
    # '...2-macosx_14_0_arm64.whl'
    "test_macos_archflags"
    "test_macos_max_compat"

    # https://github.com/pypa/hatch/issues/1942
    "test_features"
    "test_sync_dynamic_dependencies"
  ]
  ++ lib.optionals stdenv.hostPlatform.isAarch64 [ "test_resolve" ];

  disabledTestPaths = [
    # httpx.ConnectError: [Errno -3] Temporary failure in name resolution
    "tests/workspaces/test_config.py"

    # additional comment `-*- coding: utf-8 -*-` in output
    "tests/backend/builders/test_sdist.py"

    # missing output `Syncing dependencies`
    "tests/cli/build/test_build.py"
    "tests/cli/project/test_metadata.py"
    "tests/cli/version/test_version.py"

    # AttributeError: 'WheelBuilderConfig' object has no attribute 'sbom_files'
    "tests/backend/builders/test_wheel.py::TestSBOMFiles"

    # some issue with the version of `binary`
    "tests/dep/test_sync.py::test_dependency_not_found"
    "tests/dep/test_sync.py::test_marker_unmet"

    # AssertionError on the version metadata
    # https://github.com/pypa/hatch/issues/1877
    "tests/backend/metadata/test_spec.py::TestCoreMetadataV21::test_all"
    "tests/backend/metadata/test_spec.py::TestCoreMetadataV21::test_license_expression"
    "tests/backend/metadata/test_spec.py::TestCoreMetadataV22::test_all"
    "tests/backend/metadata/test_spec.py::TestCoreMetadataV22::test_license_expression"
    "tests/backend/metadata/test_spec.py::TestCoreMetadataV23::test_all"
    "tests/backend/metadata/test_spec.py::TestCoreMetadataV23::test_license_expression"
    "tests/backend/metadata/test_spec.py::TestCoreMetadataV23::test_license_files"
    "tests/backend/metadata/test_spec.py::TestProjectMetadataFromCoreMetadata::test_license_files"

    # Table title centering changed in newer Rich
    "tests/cli/dep/show/test_table.py"
    "tests/cli/env/test_show.py"
    "tests/cli/python/test_show.py"

    # Version scheme failures with newer packaging
    "tests/backend/version/scheme/test_standard.py::TestWithEpoch::test_correct[minor,dev-1!0.1.0.dev0]"
    "tests/backend/version/scheme/test_standard.py::TestMultiple::test_correct[minor,dev-0.1.0.dev0]"
  ]
  ++ lib.optionals stdenv.hostPlatform.isDarwin [
    # AssertionError: assert [call('test h...2p32/bin/sh')] == [call('test h..., shell=True)]
    # At index 0 diff:
    #    call('test hatch-test.py3.10', shell=True, executable='/nix/store/b34ianga4diikh0kymkpqwmvba0mmzf7-bash-5.2p32/bin/sh')
    # != call('test hatch-test.py3.10', shell=True)
    "tests/cli/fmt/test_fmt.py"
    "tests/cli/test/test_test.py"

    # Dependency/versioning errors in the CLI tests, only seem to show up on Darwin
    # https://github.com/pypa/hatch/issues/1893
    "tests/cli/env/test_create.py::test_sync_dependencies_pip"
    "tests/cli/env/test_create.py::test_sync_dependencies_uv"
    "tests/cli/project/test_metadata.py::TestBuildDependenciesMissing::test_no_compatibility_check_if_exists"
    "tests/cli/run/test_run.py::TestScriptRunner::test_dependencies"
    "tests/cli/run/test_run.py::TestScriptRunner::test_dependencies_from_tool_config"
    "tests/cli/run/test_run.py::test_dependency_hash_checking"
    "tests/cli/run/test_run.py::test_sync_dependencies"
    "tests/cli/run/test_run.py::test_sync_project_dependencies"
    "tests/cli/run/test_run.py::test_sync_project_features"
    "tests/cli/version/test_version.py::test_no_compatibility_check_if_exists"
  ];

  passthru = {
    updateScript = nix-update-script {
      extraArgs = [
        "--version-regex"
        "hatch-v([0-9.]+)"
      ];
    };
  };

  meta = {
    description = "Modern, extensible Python project manager";
    homepage = "https://hatch.pypa.io/latest/";
    changelog = "https://github.com/pypa/hatch/blob/hatch-v${finalAttrs.version}/docs/history/hatch.md";
    license = lib.licenses.mit;
    maintainers = with lib.maintainers; [ onny ];
    mainProgram = "hatch";
  };
})
{ python3Packages }: with python3Packages; toPythonApplication hatch
+255 −0
Original line number Diff line number Diff line
{
  lib,
  stdenv,
  buildPythonPackage,
  fetchFromGitHub,
  replaceVars,
  uv,

  # build-system,
  hatch-vcs,
  hatchling,

  # dependencies
  click,
  httpx,
  hyperlink,
  keyring,
  packaging,
  pexpect,
  platformdirs,
  pyproject-hooks,
  python-discovery,
  rich,
  shellingham,
  tomli-w,
  tomlkit,
  userpath,
  virtualenv,
  # python<3.14 only
  pythonOlder,
  backports-zstd,

  # tests
  binary,
  cargo,
  flit-core,
  gitMinimal,
  pytest-mock,
  pytest-xdist,
  pytestCheckHook,
  setuptools,
  versionCheckHook,
  writableTmpDirAsHomeHook,

  darwin,
  nix-update-script,
}:

buildPythonPackage (finalAttrs: {
  pname = "hatch";
  version = "1.16.5";
  pyproject = true;

  src = fetchFromGitHub {
    owner = "pypa";
    repo = "hatch";
    tag = "hatch-v${finalAttrs.version}";
    hash = "sha256-pUlRy8ar0zXsGGSA1VTZyPiU4LruYp/maU2C5T4E5WI=";
  };

  patches = [
    (replaceVars ./inject-uv-path.patch {
      uv = lib.getExe uv;
    })
  ];

  build-system = [
    hatchling
    hatch-vcs
  ];

  pythonRemoveDeps = [
    "uv"
  ];
  pythonRelaxDeps = [
    "virtualenv"
  ];
  dependencies = [
    click
    hatchling
    httpx
    hyperlink
    keyring
    packaging
    pexpect
    platformdirs
    pyproject-hooks
    python-discovery
    rich
    shellingham
    tomli-w
    tomlkit
    userpath
    virtualenv
  ]
  ++ lib.optionals (pythonOlder "3.14") [
    backports-zstd
  ];

  nativeCheckInputs = [
    binary
    flit-core
    pytest-mock
    pytest-xdist
    pytestCheckHook
    setuptools
    cargo
    gitMinimal
    versionCheckHook
    writableTmpDirAsHomeHook
  ]
  ++ lib.optionals stdenv.hostPlatform.isDarwin [
    darwin.ps
  ];

  disabledTests = [
    # AssertionError: assert ['dep2', 'pro...u7kv', 'dep1'] == ['dep2', 'pro...u7kv', 'dep1']
    # At index 1 diff: 'proj@ file:///build/tmp5snbu7kv' != 'proj @ file:///build/tmp5snbu7kv'
    "test_all"
    "test_context_formatting"
    "test_dependencies"
    "test_project_dependencies_context_formatting"

    # AssertionError: assert (1980, 1, 2, 0, 0, 0) == (2020, 2, 2, 0, 0, 0)
    "test_default"
    "test_editable_default"
    "test_editable_default_extra_dependencies"
    "test_editable_default_force_include"
    "test_editable_default_force_include_option"
    "test_editable_default_symlink"
    "test_editable_exact"
    "test_editable_exact_extra_dependencies"
    "test_editable_exact_force_include"
    "test_editable_exact_force_include_build_data_precedence"
    "test_editable_exact_force_include_option"
    "test_editable_pth"
    "test_explicit_path"

    # Loosen hatchling runtime version dependency
    "test_core"
    # New failing
    "test_guess_variant"
    "test_open"
    "test_no_open"
    "test_uv_env"
    "test_pyenv"
    "test_pypirc"
    # Relies on FHS
    # Could not read ELF interpreter from any of the following paths: /bin/sh, /usr/bin/env, /bin/dash, /bin/ls
    "test_new_selected_python"

    # https://github.com/pypa/hatch/issues/2006
    "test_project_location_basic_set_first_project"
    "test_project_location_complex_set_first_project"

    # TypeError: 'int' object is not subscriptable with newer packaging
    "test_begin"
    "test_continue"
  ]
  ++ lib.optionals stdenv.hostPlatform.isDarwin [
    # This test assumes it is running on macOS with a system shell on the PATH.
    # It is not possible to run it in a nix build using a /nix/store shell.
    # See https://github.com/pypa/hatch/pull/709 for the relevant code.
    "test_populate_default_popen_kwargs_executable"

    # Those tests fail because the final wheel is named '...2-macosx_11_0_arm64.whl' instead of
    # '...2-macosx_14_0_arm64.whl'
    "test_macos_archflags"
    "test_macos_max_compat"

    # https://github.com/pypa/hatch/issues/1942
    "test_features"
    "test_sync_dynamic_dependencies"
  ]
  ++ lib.optionals stdenv.hostPlatform.isAarch64 [ "test_resolve" ];

  disabledTestPaths = [
    # httpx.ConnectError: [Errno -3] Temporary failure in name resolution
    "tests/workspaces/test_config.py"

    # additional comment `-*- coding: utf-8 -*-` in output
    "tests/backend/builders/test_sdist.py"

    # missing output `Syncing dependencies`
    "tests/cli/build/test_build.py"
    "tests/cli/project/test_metadata.py"
    "tests/cli/version/test_version.py"

    # AttributeError: 'WheelBuilderConfig' object has no attribute 'sbom_files'
    "tests/backend/builders/test_wheel.py::TestSBOMFiles"

    # some issue with the version of `binary`
    "tests/dep/test_sync.py::test_dependency_not_found"
    "tests/dep/test_sync.py::test_marker_unmet"

    # AssertionError on the version metadata
    # https://github.com/pypa/hatch/issues/1877
    "tests/backend/metadata/test_spec.py::TestCoreMetadataV21::test_all"
    "tests/backend/metadata/test_spec.py::TestCoreMetadataV21::test_license_expression"
    "tests/backend/metadata/test_spec.py::TestCoreMetadataV22::test_all"
    "tests/backend/metadata/test_spec.py::TestCoreMetadataV22::test_license_expression"
    "tests/backend/metadata/test_spec.py::TestCoreMetadataV23::test_all"
    "tests/backend/metadata/test_spec.py::TestCoreMetadataV23::test_license_expression"
    "tests/backend/metadata/test_spec.py::TestCoreMetadataV23::test_license_files"
    "tests/backend/metadata/test_spec.py::TestProjectMetadataFromCoreMetadata::test_license_files"

    # Table title centering changed in newer Rich
    "tests/cli/dep/show/test_table.py"
    "tests/cli/env/test_show.py"
    "tests/cli/python/test_show.py"

    # Version scheme failures with newer packaging
    "tests/backend/version/scheme/test_standard.py::TestWithEpoch::test_correct[minor,dev-1!0.1.0.dev0]"
    "tests/backend/version/scheme/test_standard.py::TestMultiple::test_correct[minor,dev-0.1.0.dev0]"
  ]
  ++ lib.optionals stdenv.hostPlatform.isDarwin [
    # AssertionError: assert [call('test h...2p32/bin/sh')] == [call('test h..., shell=True)]
    # At index 0 diff:
    #    call('test hatch-test.py3.10', shell=True, executable='/nix/store/b34ianga4diikh0kymkpqwmvba0mmzf7-bash-5.2p32/bin/sh')
    # != call('test hatch-test.py3.10', shell=True)
    "tests/cli/fmt/test_fmt.py"
    "tests/cli/test/test_test.py"

    # Dependency/versioning errors in the CLI tests, only seem to show up on Darwin
    # https://github.com/pypa/hatch/issues/1893
    "tests/cli/env/test_create.py::test_sync_dependencies_pip"
    "tests/cli/env/test_create.py::test_sync_dependencies_uv"
    "tests/cli/project/test_metadata.py::TestBuildDependenciesMissing::test_no_compatibility_check_if_exists"
    "tests/cli/run/test_run.py::TestScriptRunner::test_dependencies"
    "tests/cli/run/test_run.py::TestScriptRunner::test_dependencies_from_tool_config"
    "tests/cli/run/test_run.py::test_dependency_hash_checking"
    "tests/cli/run/test_run.py::test_sync_dependencies"
    "tests/cli/run/test_run.py::test_sync_project_dependencies"
    "tests/cli/run/test_run.py::test_sync_project_features"
    "tests/cli/version/test_version.py::test_no_compatibility_check_if_exists"
  ];

  passthru = {
    updateScript = nix-update-script {
      extraArgs = [
        "--version-regex"
        "hatch-v([0-9.]+)"
      ];
    };
  };

  meta = {
    description = "Modern, extensible Python project manager";
    homepage = "https://hatch.pypa.io/latest/";
    changelog = "https://github.com/pypa/hatch/releases/tag/${finalAttrs.src.tag}";
    license = lib.licenses.mit;
    maintainers = with lib.maintainers; [ onny ];
    mainProgram = "hatch";
  };
})
+9 −6
Original line number Diff line number Diff line
diff --git a/src/hatch/env/virtual.py b/src/hatch/env/virtual.py
index 72605e58..546b6ad1 100644
index 7a9b7e65..38f69fb7 100644
--- a/src/hatch/env/virtual.py
+++ b/src/hatch/env/virtual.py
@@ -108,26 +108,7 @@ class VirtualEnvironment(EnvironmentInterface):
         if self.explicit_uv_path:
             return self.explicit_uv_path
@@ -108,29 +108,7 @@ class VirtualEnvironment(EnvironmentInterface):
 
     @cached_property
     def uv_path(self) -> str:
-        if self.explicit_uv_path:
-            return self.explicit_uv_path
-
-        from hatch.env.internal import is_default_environment
-
-        env_name = "hatch-uv"
@@ -16,7 +19,7 @@ index 72605e58..546b6ad1 100644
-            or is_default_environment(env_name, self.app.project.config.internal_envs[env_name])
-        ):
-            uv_env = self.app.project.get_environment(env_name)
-            self.app.project.prepare_environment(uv_env)
-            self.app.project.prepare_environment(uv_env, keep_env=bool(os.environ.get(AppEnvVars.KEEP_ENV)))
-            with uv_env:
-                return self.platform.modules.shutil.which("uv")
-
@@ -44,7 +47,7 @@ index d8c6379e..874f8936 100644
             command.append("--system-site-packages")
 
diff --git a/tests/conftest.py b/tests/conftest.py
index 44681a10..d7e91d36 100644
index b47e90e8..542035d9 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -205,7 +205,7 @@ def python_on_path():
+19 −13
Original line number Diff line number Diff line
{
  lib,
  buildPythonPackage,
  fetchPypi,
  fetchFromGitHub,

  # build-system
  hatch,
  hatch-build-scripts,
  hatch-nodejs-version,
  hatchling,
  jupyterlab,

  # dependencies
  ipywidgets,
  numpy,
  pillow,
}:

buildPythonPackage rec {
buildPythonPackage (finalAttrs: {
  pname = "ipycanvas";
  version = "0.14.3";
  pyproject = true;

  src = fetchPypi {
    inherit pname version;
    hash = "sha256-xqU6Iu6/TWEbFouPRDQUWIPyenV1UJvZmkv8SMU4Wjk=";
  src = fetchFromGitHub {
    owner = "jupyter-widgets-contrib";
    repo = "ipycanvas";
    tag = "v${finalAttrs.version}";
    hash = "sha256-VvNCe3+zK3qSuYErO4H2UlfAClvfDmisExWHx48cjUo=";
  };

  # We relax dependencies here instead of pulling in a patch because upstream
  # has released a new version using hatch-jupyter-builder, but it is not yet
  # trivial to upgrade to that.
  #
  # _version.py is supposed to be generated by a script
  postPatch = ''
    substituteInPlace pyproject.toml \
      --replace-fail '"jupyterlab>=3,<5",' "" \
    echo '__version__ = "{${finalAttrs.version}}"' > ipycanvas/_version.py
  '';

  build-system = [
    hatch
    hatch-build-scripts
    hatch-nodejs-version
    hatchling
    jupyterlab
  ];

  env.HATCH_BUILD_NO_HOOKS = true;
@@ -49,8 +55,8 @@ buildPythonPackage rec {
  meta = {
    description = "Expose the browser's Canvas API to IPython";
    homepage = "https://ipycanvas.readthedocs.io";
    changelog = "https://github.com/jupyter-widgets-contrib/ipycanvas/releases/tag/${version}";
    changelog = "https://github.com/jupyter-widgets-contrib/ipycanvas/releases/tag/${finalAttrs.src.tag}";
    license = lib.licenses.bsd3;
    maintainers = with lib.maintainers; [ bcdarwin ];
  };
}
})
+55 −0
Original line number Diff line number Diff line
{
  lib,
  buildPythonPackage,
  fetchFromGitHub,

  # build-system
  hatch-vcs,
  hatchling,

  # dependencies
  filelock,
  platformdirs,

  # tests
  pytest-mock,
  pytestCheckHook,
}:

buildPythonPackage (finalAttrs: {
  pname = "python-discovery";
  version = "1.2.0";
  pyproject = true;

  src = fetchFromGitHub {
    owner = "tox-dev";
    repo = "python-discovery";
    tag = finalAttrs.version;
    hash = "sha256-gkyrI1nsuaFN1Njf8Faifei4qz4Cdy/YWZf8Nd0WrwY=";
  };

  build-system = [
    hatch-vcs
    hatchling
  ];

  dependencies = [
    filelock
    platformdirs
  ];

  pythonImportsCheck = [ "python_discovery" ];

  nativeCheckInputs = [
    pytest-mock
    pytestCheckHook
  ];

  meta = {
    description = "Python interpreter discovery";
    changelog = "https://github.com/tox-dev/python-discovery/releases/tag/${finalAttrs.src.tag}";
    homepage = "https://github.com/tox-dev/python-discovery";
    license = lib.licenses.mit;
    maintainers = with lib.maintainers; [ GaetanLepage ];
  };
})
Loading