[+] improve pip_resolve
1. add -r flag that can parse complicated requirements and format into a temp file for uv pip compile;
This commit is contained in:
parent
6ddfc7d2d7
commit
01aab0517a
@ -3880,7 +3880,9 @@ class Command(enum.StrEnum):
|
|||||||
backup = 'backup'
|
backup = 'backup'
|
||||||
pip_resolve = 'pip_resolve'
|
pip_resolve = 'pip_resolve'
|
||||||
|
|
||||||
def pip_resolve(args: list[str]) -> None:
|
def pip_resolve(
|
||||||
|
args: list[str],
|
||||||
|
) -> None:
|
||||||
from online.fxreader.pr34.commands_typed.pip import pip_resolve, pip_resolve_t
|
from online.fxreader.pr34.commands_typed.pip import pip_resolve, pip_resolve_t
|
||||||
|
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
@ -3892,9 +3894,32 @@ def pip_resolve(args: list[str]) -> None:
|
|||||||
],
|
],
|
||||||
required=True,
|
required=True,
|
||||||
)
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
'-r', '--requirement',
|
||||||
|
default=[],
|
||||||
|
dest='requirements',
|
||||||
|
type=str,
|
||||||
|
action='append',
|
||||||
|
help=r'''
|
||||||
|
requirement,
|
||||||
|
can be multiple in a single parameter,
|
||||||
|
all of them are to be split by whitespace
|
||||||
|
and printed into a temp file,
|
||||||
|
that is fed into uv pip compile
|
||||||
|
''',
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
options, argv = parser.parse_known_args(args)
|
options, argv = parser.parse_known_args(args)
|
||||||
|
|
||||||
|
requirements : Optional[list[str]] = []
|
||||||
|
|
||||||
|
for o in options.requirements:
|
||||||
|
requirements.extend(o.split())
|
||||||
|
|
||||||
|
if len(requirements) == 0:
|
||||||
|
requirements = None
|
||||||
|
|
||||||
options.mode = pip_resolve_t.kwargs_t.mode_t(
|
options.mode = pip_resolve_t.kwargs_t.mode_t(
|
||||||
options.mode
|
options.mode
|
||||||
)
|
)
|
||||||
@ -3902,6 +3927,7 @@ def pip_resolve(args: list[str]) -> None:
|
|||||||
resolve_res = pip_resolve(
|
resolve_res = pip_resolve(
|
||||||
argv,
|
argv,
|
||||||
mode=options.mode,
|
mode=options.mode,
|
||||||
|
requirements=requirements,
|
||||||
)
|
)
|
||||||
|
|
||||||
assert not resolve_res.txt is None
|
assert not resolve_res.txt is None
|
||||||
|
@ -4,6 +4,7 @@ import sys
|
|||||||
import enum
|
import enum
|
||||||
import dataclasses
|
import dataclasses
|
||||||
import subprocess
|
import subprocess
|
||||||
|
import tempfile
|
||||||
|
|
||||||
import unittest.mock
|
import unittest.mock
|
||||||
import logging
|
import logging
|
||||||
@ -77,6 +78,7 @@ def pip_resolve_entries_to_txt(
|
|||||||
def pip_resolve(
|
def pip_resolve(
|
||||||
argv: list[str],
|
argv: list[str],
|
||||||
mode: pip_resolve_t.kwargs_t.mode_t,
|
mode: pip_resolve_t.kwargs_t.mode_t,
|
||||||
|
requirements: Optional[list[str]] = None,
|
||||||
) -> pip_resolve_t.res_t:
|
) -> pip_resolve_t.res_t:
|
||||||
if mode is pip_resolve_t.kwargs_t.mode_t.copy_paste:
|
if mode is pip_resolve_t.kwargs_t.mode_t.copy_paste:
|
||||||
import pip._internal.commands.show
|
import pip._internal.commands.show
|
||||||
@ -487,6 +489,22 @@ def pip_resolve(
|
|||||||
txt=pip_compile,
|
txt=pip_compile,
|
||||||
)
|
)
|
||||||
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_compile:
|
||||||
|
with contextlib.ExitStack() as stack:
|
||||||
|
if not requirements is None:
|
||||||
|
# assert len(argv) == 0
|
||||||
|
|
||||||
|
f = stack.enter_context(
|
||||||
|
tempfile.NamedTemporaryFile(
|
||||||
|
suffix='.txt',
|
||||||
|
)
|
||||||
|
)
|
||||||
|
f.write(
|
||||||
|
('\n'.join(requirements)).encode('utf-8')
|
||||||
|
)
|
||||||
|
f.flush()
|
||||||
|
|
||||||
|
argv.append(f.name)
|
||||||
|
|
||||||
if argv[0] == '--':
|
if argv[0] == '--':
|
||||||
del argv[0]
|
del argv[0]
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user