1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
| from distutils.errors import DistutilsArgError
| from distutils.fancy_getopt import FancyGetopt
|
| from pip._internal.utils.typing import MYPY_CHECK_RUNNING
|
| if MYPY_CHECK_RUNNING:
| from typing import Dict, List
|
|
| _options = [
| ("exec-prefix=", None, ""),
| ("home=", None, ""),
| ("install-base=", None, ""),
| ("install-data=", None, ""),
| ("install-headers=", None, ""),
| ("install-lib=", None, ""),
| ("install-platlib=", None, ""),
| ("install-purelib=", None, ""),
| ("install-scripts=", None, ""),
| ("prefix=", None, ""),
| ("root=", None, ""),
| ("user", None, ""),
| ]
|
|
| # typeshed doesn't permit Tuple[str, None, str], see python/typeshed#3469.
| _distutils_getopt = FancyGetopt(_options) # type: ignore
|
|
| def parse_distutils_args(args):
| # type: (List[str]) -> Dict[str, str]
| """Parse provided arguments, returning an object that has the
| matched arguments.
|
| Any unknown arguments are ignored.
| """
| result = {}
| for arg in args:
| try:
| _, match = _distutils_getopt.getopt(args=[arg])
| except DistutilsArgError:
| # We don't care about any other options, which here may be
| # considered unrecognized since our option list is not
| # exhaustive.
| pass
| else:
| result.update(match.__dict__)
| return result
|
|