Mercurial > repos > shellac > sam_consensus_v3
comparison env/lib/python3.9/site-packages/pip/_internal/operations/build/wheel_legacy.py @ 0:4f3585e2f14b draft default tip
"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author | shellac |
---|---|
date | Mon, 22 Mar 2021 18:12:50 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4f3585e2f14b |
---|---|
1 import logging | |
2 import os.path | |
3 | |
4 from pip._internal.cli.spinners import open_spinner | |
5 from pip._internal.utils.setuptools_build import make_setuptools_bdist_wheel_args | |
6 from pip._internal.utils.subprocess import ( | |
7 LOG_DIVIDER, | |
8 call_subprocess, | |
9 format_command_args, | |
10 ) | |
11 from pip._internal.utils.typing import MYPY_CHECK_RUNNING | |
12 | |
13 if MYPY_CHECK_RUNNING: | |
14 from typing import List, Optional | |
15 | |
16 logger = logging.getLogger(__name__) | |
17 | |
18 | |
19 def format_command_result( | |
20 command_args, # type: List[str] | |
21 command_output, # type: str | |
22 ): | |
23 # type: (...) -> str | |
24 """Format command information for logging.""" | |
25 command_desc = format_command_args(command_args) | |
26 text = f'Command arguments: {command_desc}\n' | |
27 | |
28 if not command_output: | |
29 text += 'Command output: None' | |
30 elif logger.getEffectiveLevel() > logging.DEBUG: | |
31 text += 'Command output: [use --verbose to show]' | |
32 else: | |
33 if not command_output.endswith('\n'): | |
34 command_output += '\n' | |
35 text += f'Command output:\n{command_output}{LOG_DIVIDER}' | |
36 | |
37 return text | |
38 | |
39 | |
40 def get_legacy_build_wheel_path( | |
41 names, # type: List[str] | |
42 temp_dir, # type: str | |
43 name, # type: str | |
44 command_args, # type: List[str] | |
45 command_output, # type: str | |
46 ): | |
47 # type: (...) -> Optional[str] | |
48 """Return the path to the wheel in the temporary build directory.""" | |
49 # Sort for determinism. | |
50 names = sorted(names) | |
51 if not names: | |
52 msg = ( | |
53 'Legacy build of wheel for {!r} created no files.\n' | |
54 ).format(name) | |
55 msg += format_command_result(command_args, command_output) | |
56 logger.warning(msg) | |
57 return None | |
58 | |
59 if len(names) > 1: | |
60 msg = ( | |
61 'Legacy build of wheel for {!r} created more than one file.\n' | |
62 'Filenames (choosing first): {}\n' | |
63 ).format(name, names) | |
64 msg += format_command_result(command_args, command_output) | |
65 logger.warning(msg) | |
66 | |
67 return os.path.join(temp_dir, names[0]) | |
68 | |
69 | |
70 def build_wheel_legacy( | |
71 name, # type: str | |
72 setup_py_path, # type: str | |
73 source_dir, # type: str | |
74 global_options, # type: List[str] | |
75 build_options, # type: List[str] | |
76 tempd, # type: str | |
77 ): | |
78 # type: (...) -> Optional[str] | |
79 """Build one unpacked package using the "legacy" build process. | |
80 | |
81 Returns path to wheel if successfully built. Otherwise, returns None. | |
82 """ | |
83 wheel_args = make_setuptools_bdist_wheel_args( | |
84 setup_py_path, | |
85 global_options=global_options, | |
86 build_options=build_options, | |
87 destination_dir=tempd, | |
88 ) | |
89 | |
90 spin_message = f'Building wheel for {name} (setup.py)' | |
91 with open_spinner(spin_message) as spinner: | |
92 logger.debug('Destination directory: %s', tempd) | |
93 | |
94 try: | |
95 output = call_subprocess( | |
96 wheel_args, | |
97 cwd=source_dir, | |
98 spinner=spinner, | |
99 ) | |
100 except Exception: | |
101 spinner.finish("error") | |
102 logger.error('Failed building wheel for %s', name) | |
103 return None | |
104 | |
105 names = os.listdir(tempd) | |
106 wheel_path = get_legacy_build_wheel_path( | |
107 names=names, | |
108 temp_dir=tempd, | |
109 name=name, | |
110 command_args=wheel_args, | |
111 command_output=output, | |
112 ) | |
113 return wheel_path |