Unverified Commit 513deb76 authored by Robert Schütz's avatar Robert Schütz Committed by GitHub
Browse files

hatch: hardcode uv executable path (#337354)

parents e57e84a8 be709723
Loading
Loading
Loading
Loading
+10 −7
Original line number Diff line number Diff line
{
  lib,
  python3,
  python3Packages,
  fetchFromGitHub,
  uv,
  replaceVars,
  git,
  cargo,
  stdenv,
@@ -12,7 +12,7 @@
  hatch,
}:

python3.pkgs.buildPythonApplication rec {
python3Packages.buildPythonApplication rec {
  pname = "hatch";
  version = "1.12.0";
  pyproject = true;
@@ -24,13 +24,16 @@ python3.pkgs.buildPythonApplication rec {
    hash = "sha256-HW2vDVsFrdFRRaPNuGDg9DZpJd8OuYDIqA3KQRa3m9o=";
  };

  build-system = with python3.pkgs; [
  patches = [ (replaceVars ./paths.patch { uv = lib.getExe python3Packages.uv; }) ];

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

  dependencies = with python3.pkgs; [
  pythonRemoveDeps = [ "uv" ];

  dependencies = with python3Packages; [
    click
    hatchling
    httpx
@@ -49,7 +52,7 @@ python3.pkgs.buildPythonApplication rec {
  ];

  nativeCheckInputs =
    with python3.pkgs;
    with python3Packages;
    [
      binary
      git
+58 −0
Original line number Diff line number Diff line
diff --git a/src/hatch/env/virtual.py b/src/hatch/env/virtual.py
index 285edb32..90bd94e6 100644
--- a/src/hatch/env/virtual.py
+++ b/src/hatch/env/virtual.py
@@ -106,26 +106,7 @@ class VirtualEnvironment(EnvironmentInterface):
         if self.explicit_uv_path:
             return self.explicit_uv_path
 
-        from hatch.env.internal import is_default_environment
-
-        env_name = 'hatch-uv'
-        if not (
-            # Prevent recursive loop
-            self.name == env_name
-            # Only if dependencies have been set by the user
-            or is_default_environment(env_name, self.app.project.config.internal_envs[env_name])
-        ):
-            uv_env = self.app.get_environment(env_name)
-            self.app.prepare_environment(uv_env)
-            with uv_env:
-                return self.platform.modules.shutil.which('uv')
-
-        import sysconfig
-
-        scripts_dir = sysconfig.get_path('scripts')
-        old_path = os.environ.get('PATH', os.defpath)
-        new_path = f'{scripts_dir}{os.pathsep}{old_path}'
-        return self.platform.modules.shutil.which('uv', path=new_path)
+        return '@uv@'
 
     @staticmethod
     def get_option_types() -> dict:
diff --git a/src/hatch/venv/core.py b/src/hatch/venv/core.py
index d1303f03..e1e60871 100644
--- a/src/hatch/venv/core.py
+++ b/src/hatch/venv/core.py
@@ -131,7 +131,7 @@ class TempVirtualEnv(VirtualEnv):
 
 class UVVirtualEnv(VirtualEnv):
     def create(self, python, *, allow_system_packages=False):
-        command = [os.environ.get('HATCH_UV', 'uv'), 'venv', str(self.directory), '--python', python]
+        command = [os.environ.get('HATCH_UV', '@uv@'), 'venv', str(self.directory), '--python', python]
         if allow_system_packages:
             command.append('--system-site-packages')
 
diff --git a/tests/conftest.py b/tests/conftest.py
index e8fe663a..6066316d 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -203,7 +203,7 @@ def python_on_path():
 
 @pytest.fixture(scope='session', autouse=True)
 def uv_on_path():
-    return shutil.which('uv')
+    return '@uv@'
 
 
 @pytest.fixture(scope='session')