Add setup.py support to uv support

This commit is contained in:
Guilherme Espada 2024-02-29 03:39:04 +00:00
parent 976ec41435
commit aacb871ccc

View file

@ -4,6 +4,7 @@ import contextlib
import functools import functools
import os import os
import sys import sys
import tempfile
from collections.abc import Generator from collections.abc import Generator
from collections.abc import Sequence from collections.abc import Sequence
from pathlib import Path from pathlib import Path
@ -211,8 +212,12 @@ def install_environment(
python = norm_version(version) python = norm_version(version)
if python is not None: if python is not None:
venv_cmd.extend(('-p', python)) venv_cmd.extend(('-p', python))
cmd_output_b(*venv_cmd, cwd='/')
with in_env(prefix, version):
pip_cmd = None pip_cmd = None
if 'PRE_COMMIT_USE_UV' in os.environ: if 'PRE_COMMIT_USE_UV' in os.environ:
name = None
proj_file = prefix.path() / Path('pyproject.toml') proj_file = prefix.path() / Path('pyproject.toml')
if proj_file.exists(): if proj_file.exists():
with open(proj_file) as fd: with open(proj_file) as fd:
@ -230,6 +235,36 @@ def install_environment(
if name is None: if name is None:
name = try_navigate('project', 'name') name = try_navigate('project', 'name')
print(name)
if name is None:
setup = prefix.prefix_dir / Path('setup.py')
print(setup)
if setup.exists():
print('it exists')
with tempfile.TemporaryDirectory() as td:
try:
lang_base.setup_cmd(
prefix,
('uv', 'pip', 'install', 'setuptools'),
)
lang_base.setup_cmd(
prefix,
(
'python',
'setup.py',
'egg_info',
'-e',
f"{td}",
),
)
candidates = list(Path(td).glob('*.egg-info'))
if len(candidates) == 1:
name = candidates[0].name[
: (-len('.egg-info'))
]
except CalledProcessError:
pass # fallback
if name is not None: if name is not None:
pip_cmd = ( pip_cmd = (
@ -239,9 +274,6 @@ def install_environment(
f"{name} @ .", f"{name} @ .",
*additional_dependencies, *additional_dependencies,
) )
cmd_output_b(*venv_cmd, cwd='/')
with in_env(prefix, version):
if pip_cmd is not None: if pip_cmd is not None:
try: try:
lang_base.setup_cmd(prefix, pip_cmd) lang_base.setup_cmd(prefix, pip_cmd)