[+] fix some mypy errors
This commit is contained in:
parent
528d9b1ce5
commit
57f74df865
@ -3881,16 +3881,23 @@ class Command(enum.StrEnum):
|
|||||||
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
|
||||||
|
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-m', '--mode',
|
'-m', '--mode',
|
||||||
choices=['copy_paste', 'monkey_patch'],
|
choices=[
|
||||||
|
o.value
|
||||||
|
for o in pip_resolve_t.kwargs_t.mode_t
|
||||||
|
],
|
||||||
required=True,
|
required=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
options, argv = parser.parse_known_args(args)
|
options, argv = parser.parse_known_args(args)
|
||||||
|
|
||||||
from online.fxreader.pr34.commands_typed.pip import pip_resolve
|
options.mode = pip_resolve_t.kwargs_t.mode_t(
|
||||||
|
options.mode
|
||||||
|
)
|
||||||
|
|
||||||
resolve_res = pip_resolve(
|
resolve_res = pip_resolve(
|
||||||
argv,
|
argv,
|
||||||
|
@ -1,21 +1,26 @@
|
|||||||
import contextlib
|
import contextlib
|
||||||
import pathlib
|
import pathlib
|
||||||
|
import enum
|
||||||
import dataclasses
|
import dataclasses
|
||||||
import pip._internal.commands.show
|
|
||||||
import pip._internal.commands.download
|
|
||||||
import pip._internal.cli.main_parser
|
|
||||||
import pip._internal.models.index
|
|
||||||
import pip._internal.utils.temp_dir
|
|
||||||
import pip._internal.cli.main
|
|
||||||
import pip._internal.network.download
|
|
||||||
import pip._internal.resolution.base
|
|
||||||
import pip._internal.resolution.resolvelib.resolver
|
|
||||||
import pip._internal.operations.prepare
|
|
||||||
import unittest.mock
|
import unittest.mock
|
||||||
import logging
|
import logging
|
||||||
|
import typing
|
||||||
|
|
||||||
|
if typing.TYPE_CHECKING:
|
||||||
|
import pip._internal.commands.show
|
||||||
|
import pip._internal.commands.download
|
||||||
|
import pip._internal.cli.main_parser
|
||||||
|
import pip._internal.models.index
|
||||||
|
import pip._internal.utils.temp_dir
|
||||||
|
import pip._internal.cli.main
|
||||||
|
import pip._internal.network.download
|
||||||
|
import pip._internal.resolution.base
|
||||||
|
import pip._internal.resolution.resolvelib.resolver
|
||||||
|
import pip._internal.operations.prepare
|
||||||
|
|
||||||
from typing import (
|
from typing import (
|
||||||
Literal,
|
Literal, Optional, Iterable, Any,
|
||||||
)
|
)
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@ -23,7 +28,8 @@ logger = logging.getLogger(__name__)
|
|||||||
|
|
||||||
def pip_show(
|
def pip_show(
|
||||||
argv: list[str],
|
argv: list[str],
|
||||||
) -> list[pip._internal.commands.show._PackageInfo]:
|
) -> list['pip._internal.commands.show._PackageInfo']:
|
||||||
|
import pip._internal.commands.show
|
||||||
return list(
|
return list(
|
||||||
pip._internal.commands.show.search_packages_info(
|
pip._internal.commands.show.search_packages_info(
|
||||||
argv,
|
argv,
|
||||||
@ -38,6 +44,7 @@ class pip_resolve_t:
|
|||||||
monkey_patch = "monkey_patch"
|
monkey_patch = "monkey_patch"
|
||||||
uv_pip_compile = "uv_pip_compile"
|
uv_pip_compile = "uv_pip_compile"
|
||||||
|
|
||||||
|
@dataclasses.dataclass
|
||||||
class res_t:
|
class res_t:
|
||||||
@dataclasses.dataclass
|
@dataclasses.dataclass
|
||||||
class download_info_t:
|
class download_info_t:
|
||||||
@ -67,8 +74,24 @@ 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,
|
||||||
) -> list[pip_resolve_t.res_t.download_info_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.download
|
||||||
|
import pip._internal.cli.cmdoptions
|
||||||
|
import pip._internal.cli.main_parser
|
||||||
|
import pip._internal.models.index
|
||||||
|
import pip._internal.utils.temp_dir
|
||||||
|
import pip._internal.cli.main
|
||||||
|
import pip._internal.network.download
|
||||||
|
import pip._internal.resolution.base
|
||||||
|
import pip._internal.req.req_install
|
||||||
|
import pip._internal.resolution.resolvelib.resolver
|
||||||
|
import pip._internal.operations.prepare
|
||||||
|
import pip._internal.utils.temp_dir
|
||||||
|
import pip._internal.operations.build.build_tracker
|
||||||
|
import pip._internal.models.direct_url
|
||||||
|
|
||||||
with contextlib.ExitStack() as stack:
|
with contextlib.ExitStack() as stack:
|
||||||
stack.enter_context(pip._internal.utils.temp_dir.global_tempdir_manager())
|
stack.enter_context(pip._internal.utils.temp_dir.global_tempdir_manager())
|
||||||
|
|
||||||
@ -103,12 +126,12 @@ def pip_resolve(
|
|||||||
options.check_build_deps = None
|
options.check_build_deps = None
|
||||||
options.progress_bar = True
|
options.progress_bar = True
|
||||||
options.require_hashes = None
|
options.require_hashes = None
|
||||||
options.ignore_requires_python = None
|
options.ignore_requires_python = False
|
||||||
# options.cache_dir
|
# options.cache_dir
|
||||||
pip._internal.commands.download.cmdoptions.check_dist_restriction(options)
|
pip._internal.cli.cmdoptions.check_dist_restriction(options)
|
||||||
# t1._in_main_context = True
|
# t1._in_main_context = True
|
||||||
session = t1.get_default_session(options)
|
session = t1.get_default_session(options)
|
||||||
target_python = pip._internal.commands.download.make_target_python(options)
|
target_python = pip._internal.cli.cmdoptions.make_target_python(options)
|
||||||
finder = t1._build_package_finder(
|
finder = t1._build_package_finder(
|
||||||
options=options,
|
options=options,
|
||||||
session=session,
|
session=session,
|
||||||
@ -116,7 +139,7 @@ def pip_resolve(
|
|||||||
ignore_requires_python=options.ignore_requires_python,
|
ignore_requires_python=options.ignore_requires_python,
|
||||||
)
|
)
|
||||||
build_tracker = t1.enter_context(
|
build_tracker = t1.enter_context(
|
||||||
pip._internal.commands.download.get_build_tracker()
|
pip._internal.operations.build.build_tracker.get_build_tracker()
|
||||||
)
|
)
|
||||||
reqs = t1.get_requirements(
|
reqs = t1.get_requirements(
|
||||||
[
|
[
|
||||||
@ -127,8 +150,8 @@ def pip_resolve(
|
|||||||
finder,
|
finder,
|
||||||
session,
|
session,
|
||||||
)
|
)
|
||||||
pip._internal.commands.download.check_legacy_setup_py_options(options, reqs)
|
pip._internal.req.req_install.check_legacy_setup_py_options(options, reqs)
|
||||||
directory = pip._internal.commands.download.TempDirectory(
|
directory = pip._internal.utils.temp_dir.TempDirectory(
|
||||||
delete=True, kind="download", globally_managed=True
|
delete=True, kind="download", globally_managed=True
|
||||||
)
|
)
|
||||||
preparer = t1.make_requirement_preparer(
|
preparer = t1.make_requirement_preparer(
|
||||||
@ -152,59 +175,128 @@ def pip_resolve(
|
|||||||
t1.trace_basic_info(finder)
|
t1.trace_basic_info(finder)
|
||||||
requirement_set = resolver.resolve(reqs, check_supported_wheels=True)
|
requirement_set = resolver.resolve(reqs, check_supported_wheels=True)
|
||||||
|
|
||||||
res = pip_resolve_t.res_t(
|
res = pip_resolve_t.res_t()
|
||||||
entries=[
|
|
||||||
|
res.entries = []
|
||||||
|
|
||||||
|
for k, v in requirement_set.requirements.items():
|
||||||
|
assert not v.download_info is None
|
||||||
|
assert isinstance(
|
||||||
|
v.download_info.info,
|
||||||
|
pip._internal.models.direct_url.ArchiveInfo,
|
||||||
|
)
|
||||||
|
assert not v.download_info.info.hashes is None
|
||||||
|
|
||||||
|
res.entries.append(
|
||||||
pip_resolve_t.res_t.download_info_t(
|
pip_resolve_t.res_t.download_info_t(
|
||||||
constraint=k,
|
constraint=k,
|
||||||
sha256=v.download_info.info.hashes["sha256"],
|
sha256=v.download_info.info.hashes["sha256"],
|
||||||
url=v.download_info.url,
|
url=v.download_info.url,
|
||||||
)
|
)
|
||||||
for k, v in requirement_set.requirements.items()
|
|
||||||
],
|
|
||||||
)
|
)
|
||||||
|
|
||||||
res.txt = pip_resolve_entries_to_txt(
|
res.txt = pip_resolve_entries_to_txt(
|
||||||
res.entries
|
res.entries
|
||||||
)
|
)
|
||||||
|
|
||||||
return res
|
return res
|
||||||
elif mode is pip_resolve_t.kwargs_t.mode_t.monkey_patch:
|
elif mode is pip_resolve_t.kwargs_t.mode_t.monkey_patch:
|
||||||
|
import pip._internal.commands.show
|
||||||
|
import pip._internal.commands.download
|
||||||
|
import pip._internal.cli.main_parser
|
||||||
|
import pip._internal.models.index
|
||||||
|
import pip._internal.models.link
|
||||||
|
from pip._internal.models.link import (
|
||||||
|
Link,
|
||||||
|
)
|
||||||
|
import pip._internal.utils.temp_dir
|
||||||
|
from pip._internal.metadata.base import (
|
||||||
|
BaseDistribution,
|
||||||
|
)
|
||||||
|
import pip._internal.cli.main
|
||||||
|
import pip._internal.network.download
|
||||||
|
import pip._internal.resolution.base
|
||||||
|
import pip._internal.resolution.resolvelib.resolver
|
||||||
|
import pip._internal.operations.prepare
|
||||||
|
from pip._internal.network.download import (
|
||||||
|
Downloader,
|
||||||
|
)
|
||||||
|
from pip._internal.operations.prepare import (
|
||||||
|
File,
|
||||||
|
)
|
||||||
|
from pip._internal.req.req_set import RequirementSet
|
||||||
|
from pip._internal.utils.hashes import Hashes
|
||||||
|
from pip._internal.req.req_install import InstallRequirement
|
||||||
|
|
||||||
downloader_call_def = pip._internal.network.download.Downloader.__call__
|
downloader_call_def = pip._internal.network.download.Downloader.__call__
|
||||||
|
|
||||||
def downloader_call(*args):
|
def downloader_call(
|
||||||
|
_self: pip._internal.network.download.Downloader,
|
||||||
|
link: pip._internal.models.link.Link,
|
||||||
|
location: str,
|
||||||
|
) -> tuple[str, str]:
|
||||||
logger.info(
|
logger.info(
|
||||||
dict(
|
dict(
|
||||||
url=args[1].url,
|
url=link.url,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
return downloader_call_def(*args)
|
return downloader_call_def(
|
||||||
|
_self,
|
||||||
|
link, location,
|
||||||
|
)
|
||||||
|
|
||||||
batch_downloader_call_def = (
|
batch_downloader_call_def = (
|
||||||
pip._internal.network.download.BatchDownloader.__call__
|
pip._internal.network.download.BatchDownloader.__call__
|
||||||
)
|
)
|
||||||
|
|
||||||
def batch_downloader_call(*args):
|
def batch_downloader_call(
|
||||||
|
_self: pip._internal.network.download.BatchDownloader,
|
||||||
|
links: Iterable[pip._internal.models.link.Link],
|
||||||
|
location: str,
|
||||||
|
) -> Iterable[
|
||||||
|
tuple[
|
||||||
|
pip._internal.models.link.Link,
|
||||||
|
tuple[str, str]
|
||||||
|
]
|
||||||
|
]:
|
||||||
# print(args)
|
# print(args)
|
||||||
|
|
||||||
logger.info(
|
logger.info(
|
||||||
dict(
|
dict(
|
||||||
args=args,
|
links=links,
|
||||||
|
location=location,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
return [(o, ("/dev/null", None)) for o in args[1]]
|
return [
|
||||||
|
(o, ("/dev/null", ''))
|
||||||
|
for o in links
|
||||||
|
]
|
||||||
|
|
||||||
# base_resolver_resolve_def = pip._internal.resolution.base.BaseResolver.resolve
|
# base_resolver_resolve_def = pip._internal.resolution.base.BaseResolver.resolve
|
||||||
base_resolver_resolve_def = (
|
base_resolver_resolve_def = (
|
||||||
pip._internal.resolution.resolvelib.resolver.Resolver.resolve
|
pip._internal.resolution.resolvelib.resolver.Resolver.resolve
|
||||||
)
|
)
|
||||||
|
|
||||||
result_requirements = []
|
result_requirements : list[
|
||||||
|
RequirementSet | InstallRequirement
|
||||||
|
] = []
|
||||||
|
|
||||||
def base_resolver_resolve(*args, **kwargs):
|
def base_resolver_resolve(
|
||||||
|
_self: pip._internal.resolution.resolvelib.resolver.Resolver,
|
||||||
|
root_reqs: list[
|
||||||
|
InstallRequirement,
|
||||||
|
],
|
||||||
|
check_supported_wheels: bool,
|
||||||
|
) -> RequirementSet:
|
||||||
# print(args, kwargs)
|
# print(args, kwargs)
|
||||||
|
|
||||||
res = base_resolver_resolve_def(*args, **kwargs)
|
res = base_resolver_resolve_def(
|
||||||
|
_self,
|
||||||
|
root_reqs,
|
||||||
|
check_supported_wheels
|
||||||
|
)
|
||||||
|
|
||||||
result_requirements.append(res)
|
result_requirements.append(res)
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
@ -212,7 +304,12 @@ def pip_resolve(
|
|||||||
|
|
||||||
get_http_url_def = pip._internal.operations.prepare.get_http_url
|
get_http_url_def = pip._internal.operations.prepare.get_http_url
|
||||||
|
|
||||||
def get_http_url(link, download, download_dir=None, hashes=None):
|
def get_http_url(
|
||||||
|
link: Link,
|
||||||
|
download: Downloader,
|
||||||
|
download_dir: Optional[str] = None,
|
||||||
|
hashes: Optional[Hashes] = None,
|
||||||
|
) -> File:
|
||||||
logger.info(
|
logger.info(
|
||||||
dict(
|
dict(
|
||||||
url=link.url,
|
url=link.url,
|
||||||
@ -224,23 +321,44 @@ def pip_resolve(
|
|||||||
print("blah")
|
print("blah")
|
||||||
hashes = None
|
hashes = None
|
||||||
|
|
||||||
return "/dev/null", None
|
return File(
|
||||||
|
"/dev/null",
|
||||||
|
'',
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
return get_http_url_def(link, download, download_dir, hashes)
|
return get_http_url_def(
|
||||||
|
link,
|
||||||
|
download,
|
||||||
|
download_dir,
|
||||||
|
hashes
|
||||||
|
)
|
||||||
|
|
||||||
prepare_linked_requirements_more_def = pip._internal.operations.prepare.RequirementPreparer.prepare_linked_requirements_more
|
prepare_linked_requirements_more_def = pip._internal.operations.prepare.RequirementPreparer.prepare_linked_requirements_more
|
||||||
|
|
||||||
def prepare_linked_requirements_more(_self, reqs, *args, **kwargs):
|
def prepare_linked_requirements_more(
|
||||||
result_requirements.append(reqs)
|
_self: pip._internal.resolution.resolvelib.resolver.Resolver,
|
||||||
|
reqs: Iterable[InstallRequirement],
|
||||||
|
parallel_builds: bool = False,
|
||||||
|
) -> None:
|
||||||
|
result_requirements.extend(
|
||||||
|
reqs
|
||||||
|
)
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
_complete_partial_requirements_def = pip._internal.operations.prepare.RequirementPreparer._complete_partial_requirements
|
_complete_partial_requirements_def = pip._internal.operations.prepare.RequirementPreparer._complete_partial_requirements
|
||||||
|
|
||||||
def _complete_partial_requirements(_self, reqs, *args, **kwargs):
|
def _complete_partial_requirements(
|
||||||
result_requirements.append(reqs)
|
_self: pip._internal.resolution.resolvelib.resolver.Resolver,
|
||||||
|
partially_downloaded_reqs: Iterable[InstallRequirement],
|
||||||
|
parallel_builds: bool = False,
|
||||||
|
) -> None:
|
||||||
|
result_requirements.extend(
|
||||||
|
partially_downloaded_reqs
|
||||||
|
)
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
patches = []
|
patches : list[Any] = []
|
||||||
|
|
||||||
patches.append(
|
patches.append(
|
||||||
unittest.mock.patch.object(
|
unittest.mock.patch.object(
|
||||||
pip._internal.network.download.Downloader, "__call__", downloader_call
|
pip._internal.network.download.Downloader, "__call__", downloader_call
|
||||||
|
Loading…
Reference in New Issue
Block a user