Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

hatch: hardcode uv executable path #337354

Merged
merged 2 commits into from
Aug 27, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 10 additions & 7 deletions pkgs/by-name/ha/hatch/package.nix
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
lib,
python3,
python3Packages,
fetchFromGitHub,
uv,
replaceVars,
git,
cargo,
stdenv,
Expand All @@ -12,7 +12,7 @@
hatch,
}:

python3.pkgs.buildPythonApplication rec {
python3Packages.buildPythonApplication rec {
pname = "hatch";
version = "1.12.0";
pyproject = true;
Expand All @@ -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
Expand All @@ -49,7 +52,7 @@ python3.pkgs.buildPythonApplication rec {
];

nativeCheckInputs =
with python3.pkgs;
with python3Packages;
[
binary
git
Expand Down
58 changes: 58 additions & 0 deletions pkgs/by-name/ha/hatch/paths.patch
Original file line number Diff line number Diff line change
@@ -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')