mirror of
https://github.com/astral-sh/uv.git
synced 2025-07-07 13:25:00 +00:00
Expose find_uv_bin and declare typing support (#1728)
Resolves https://github.com/astral-sh/uv/issues/1677 Signed-off-by: Bernát Gábor <bgabor8@bloomberg.net>
This commit is contained in:
parent
f7722c02c1
commit
469ccf826f
3 changed files with 45 additions and 30 deletions
|
@ -0,0 +1,35 @@
|
|||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
import sys
|
||||
import sysconfig
|
||||
|
||||
|
||||
def find_uv_bin() -> str:
|
||||
"""Return the uv binary path."""
|
||||
|
||||
uv_exe = "uv" + sysconfig.get_config_var("EXE")
|
||||
|
||||
path = os.path.join(sysconfig.get_path("scripts"), uv_exe)
|
||||
if os.path.isfile(path):
|
||||
return path
|
||||
|
||||
if sys.version_info >= (3, 10):
|
||||
user_scheme = sysconfig.get_preferred_scheme("user")
|
||||
elif os.name == "nt":
|
||||
user_scheme = "nt_user"
|
||||
elif sys.platform == "darwin" and sys._framework:
|
||||
user_scheme = "osx_framework_user"
|
||||
else:
|
||||
user_scheme = "posix_user"
|
||||
|
||||
path = os.path.join(sysconfig.get_path("scripts", scheme=user_scheme), uv_exe)
|
||||
if os.path.isfile(path):
|
||||
return path
|
||||
|
||||
raise FileNotFoundError(path)
|
||||
|
||||
|
||||
__all__ = [
|
||||
"find_uv_bin",
|
||||
]
|
|
@ -1,9 +1,10 @@
|
|||
import os
|
||||
import sys
|
||||
import sysconfig
|
||||
|
||||
from uv import find_uv_bin
|
||||
|
||||
|
||||
def detect_virtualenv() -> str:
|
||||
def _detect_virtualenv() -> str:
|
||||
"""
|
||||
Find the virtual environment path for the current Python executable.
|
||||
"""
|
||||
|
@ -21,37 +22,11 @@ def detect_virtualenv() -> str:
|
|||
|
||||
return ""
|
||||
|
||||
|
||||
def find_uv_bin() -> str:
|
||||
"""Return the uv binary path."""
|
||||
|
||||
uv_exe = "uv" + sysconfig.get_config_var("EXE")
|
||||
|
||||
path = os.path.join(sysconfig.get_path("scripts"), uv_exe)
|
||||
if os.path.isfile(path):
|
||||
return path
|
||||
|
||||
if sys.version_info >= (3, 10):
|
||||
user_scheme = sysconfig.get_preferred_scheme("user")
|
||||
elif os.name == "nt":
|
||||
user_scheme = "nt_user"
|
||||
elif sys.platform == "darwin" and sys._framework:
|
||||
user_scheme = "osx_framework_user"
|
||||
else:
|
||||
user_scheme = "posix_user"
|
||||
|
||||
path = os.path.join(sysconfig.get_path("scripts", scheme=user_scheme), uv_exe)
|
||||
if os.path.isfile(path):
|
||||
return path
|
||||
|
||||
raise FileNotFoundError(path)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
def _run() -> None:
|
||||
uv = os.fsdecode(find_uv_bin())
|
||||
|
||||
env = os.environ.copy()
|
||||
venv = detect_virtualenv()
|
||||
venv = _detect_virtualenv()
|
||||
if venv:
|
||||
env.setdefault("VIRTUAL_ENV", venv)
|
||||
|
||||
|
@ -62,3 +37,8 @@ if __name__ == "__main__":
|
|||
sys.exit(completed_process.returncode)
|
||||
else:
|
||||
os.execvpe(uv, [uv, *sys.argv[1:]], env=env)
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
_run()
|
||||
|
|
0
python/uv/py.typed
Normal file
0
python/uv/py.typed
Normal file
Loading…
Add table
Add a link
Reference in a new issue