hatch: hardcode uv executable path (#337354)

This commit is contained in:
Robert Schütz 2024-08-27 14:20:07 -07:00 committed by GitHub
commit 513deb7603
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 68 additions and 7 deletions

View File

@ -1,8 +1,8 @@
{
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

View File

@ -0,0 +1,58 @@
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')