[+] add uv_pip_freeze

1. uv_pip_compile
    just a raw wrapper
    around uv pip compile --generate-hashes;
  2. uv_pip_freeze
    does compile of frozen dependencies
    with generated hashes along the way;
This commit is contained in:
Siarhei Siniak 2025-01-24 21:15:28 +03:00
parent a529db106a
commit 3245d6d7e5

@ -44,6 +44,7 @@ class pip_resolve_t:
class mode_t(enum.StrEnum): class mode_t(enum.StrEnum):
copy_paste = "copy_paste" copy_paste = "copy_paste"
monkey_patch = "monkey_patch" monkey_patch = "monkey_patch"
uv_pip_freeze = "uv_pip_freeze"
uv_pip_compile = "uv_pip_compile" uv_pip_compile = "uv_pip_compile"
@dataclasses.dataclass @dataclasses.dataclass
@ -459,7 +460,9 @@ def pip_resolve(
) )
return res return res
elif mode is pip_resolve_t.kwargs_t.mode_t.uv_pip_compile: elif mode is pip_resolve_t.kwargs_t.mode_t.uv_pip_freeze:
assert len(argv) == 0
pip_freeze = subprocess.check_output( pip_freeze = subprocess.check_output(
[ [
sys.executable, sys.executable,
@ -480,6 +483,22 @@ def pip_resolve(
input=pip_freeze.encode('utf-8') input=pip_freeze.encode('utf-8')
).decode('utf-8') ).decode('utf-8')
return pip_resolve_t.res_t(
txt=pip_compile,
)
elif mode is pip_resolve_t.kwargs_t.mode_t.uv_pip_compile:
if argv[0] == '--':
del argv[0]
pip_compile = subprocess.check_output(
[
sys.executable, '-m',
'uv', 'pip', 'compile',
'--generate-hashes',
*argv,
],
).decode('utf-8')
return pip_resolve_t.res_t( return pip_resolve_t.res_t(
txt=pip_compile, txt=pip_compile,
) )