106 lines
3.1 KiB
Python
106 lines
3.1 KiB
Python
from typing import Dict
|
|
|
|
from ..base import ToolCommandLineParser
|
|
from ..intents import ToolIntentionType
|
|
|
|
from typing import Union, Set
|
|
|
|
|
|
class PipParser(ToolCommandLineParser):
|
|
def get_tool_name(self) -> str:
|
|
return "pip"
|
|
|
|
def get_command_hierarchy(self) -> Dict[str, Union[ToolIntentionType, Dict]]:
|
|
"""
|
|
Context for command hierarchy parsing
|
|
"""
|
|
return {
|
|
"install": ToolIntentionType.ADD_PACKAGE,
|
|
"uninstall": ToolIntentionType.REMOVE_PACKAGE,
|
|
"download": ToolIntentionType.DOWNLOAD_PACKAGE,
|
|
"wheel": ToolIntentionType.DOWNLOAD_PACKAGE,
|
|
"query": ToolIntentionType.SEARCH_PACKAGES,
|
|
"index": {
|
|
"versions": ToolIntentionType.SEARCH_PACKAGES,
|
|
},
|
|
}
|
|
|
|
def get_known_flags(self) -> Dict[str, Set[str]]:
|
|
"""
|
|
Define flags that DON'T take values to avoid consuming packages
|
|
"""
|
|
return {
|
|
# Global flags (available for all commands)
|
|
"global": {
|
|
"help",
|
|
"h",
|
|
"debug",
|
|
"isolated",
|
|
"require-virtualenv",
|
|
"verbose",
|
|
"v",
|
|
"version",
|
|
"V",
|
|
"quiet",
|
|
"q",
|
|
"no-input",
|
|
"no-cache-dir",
|
|
"disable-pip-version-check",
|
|
"no-color",
|
|
# Index specific
|
|
"no-index",
|
|
},
|
|
# install-specific flags
|
|
"install": {
|
|
"no-deps",
|
|
"pre",
|
|
"dry-run",
|
|
"user",
|
|
"upgrade",
|
|
"U",
|
|
"force-reinstall",
|
|
"ignore-installed",
|
|
"I",
|
|
"ignore-requires-python",
|
|
"no-build-isolation",
|
|
"use-pep517",
|
|
"no-use-pep517",
|
|
"check-build-dependencies",
|
|
"break-system-packages",
|
|
"compile",
|
|
"no-compile",
|
|
"no-warn-script-location",
|
|
"no-warn-conflicts",
|
|
"prefer-binary",
|
|
"require-hashes",
|
|
"no-clean",
|
|
},
|
|
# uninstall-specific flags
|
|
"uninstall": {
|
|
"yes",
|
|
"y",
|
|
"break-system-packages",
|
|
},
|
|
# download-specific flags
|
|
"download": {
|
|
"no-deps",
|
|
"no-binary",
|
|
"only-binary",
|
|
"prefer-binary",
|
|
"pre",
|
|
"require-hashes",
|
|
"no-build-isolation",
|
|
"use-pep517",
|
|
"no-use-pep517",
|
|
"check-build-dependencies",
|
|
"ignore-requires-python",
|
|
"no-clean",
|
|
},
|
|
"index.versions": {
|
|
"ignore-requires-python",
|
|
"pre",
|
|
"json",
|
|
"no-index",
|
|
},
|
|
}
|