Skip to content

Commit b9efaab

Browse files
committed
cleanup and delete unnecessary tests
1 parent df5fe23 commit b9efaab

File tree

6 files changed

+62
-273
lines changed

6 files changed

+62
-273
lines changed

python/private/pypi/extension.bzl

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ load(":parse_requirements.bzl", "host_platform", "parse_requirements", "select_r
2727
load(":parse_whl_name.bzl", "parse_whl_name")
2828
load(":pip_repository_attrs.bzl", "ATTRS")
2929
load(":render_pkg_aliases.bzl", "whl_alias")
30+
load(":requirements_files_by_platform.bzl", "requirements_files_by_platform")
3031
load(":simpleapi_download.bzl", "simpleapi_download")
3132
load(":whl_library.bzl", "whl_library")
3233
load(":whl_repo_name.bzl", "whl_repo_name")
@@ -184,12 +185,16 @@ def _create_whl_repos(module_ctx, pip_attr, whl_map, whl_overrides, group_map, s
184185

185186
requirements_by_platform = parse_requirements(
186187
module_ctx,
187-
requirements_by_platform = pip_attr.requirements_by_platform,
188-
requirements_linux = pip_attr.requirements_linux,
189-
requirements_lock = pip_attr.requirements_lock,
190-
requirements_osx = pip_attr.requirements_darwin,
191-
requirements_windows = pip_attr.requirements_windows,
192-
extra_pip_args = pip_attr.extra_pip_args,
188+
requirements_by_platform = requirements_files_by_platform(
189+
requirements_by_platform = pip_attr.requirements_by_platform,
190+
requirements_linux = pip_attr.requirements_linux,
191+
requirements_lock = pip_attr.requirements_lock,
192+
requirements_osx = pip_attr.requirements_darwin,
193+
requirements_windows = pip_attr.requirements_windows,
194+
extra_pip_args = pip_attr.extra_pip_args,
195+
python_version = major_minor,
196+
logger = logger,
197+
),
193198
get_index_urls = get_index_urls,
194199
python_version = major_minor,
195200
evaluate_markers = lambda requirements: evaluate_markers(
@@ -305,7 +310,7 @@ def _create_whl_repos(module_ctx, pip_attr, whl_map, whl_overrides, group_map, s
305310

306311
requirement = select_requirement(
307312
requirements,
308-
platform = repository_platform,
313+
platform = None if pip_attr.download_only else repository_platform,
309314
)
310315
if not requirement:
311316
# Sometimes the package is not present for host platform if there

python/private/pypi/parse_requirements.bzl

Lines changed: 4 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ behavior.
2929
load("//python/private:normalize_name.bzl", "normalize_name")
3030
load(":index_sources.bzl", "index_sources")
3131
load(":parse_requirements_txt.bzl", "parse_requirements_txt")
32-
load(":requirements_files_by_platform.bzl", "requirements_files_by_platform")
3332
load(":whl_target_platforms.bzl", "select_whls")
3433

3534
# This includes the vendored _translate_cpu and _translate_os from
@@ -85,10 +84,6 @@ def parse_requirements(
8584
ctx,
8685
*,
8786
requirements_by_platform = {},
88-
requirements_osx = None,
89-
requirements_linux = None,
90-
requirements_lock = None,
91-
requirements_windows = None,
9287
extra_pip_args = [],
9388
get_index_urls = None,
9489
python_version = None,
@@ -102,10 +97,6 @@ def parse_requirements(
10297
requirements_by_platform (label_keyed_string_dict): a way to have
10398
different package versions (or different packages) for different
10499
os, arch combinations.
105-
requirements_osx (label): The requirements file for the osx OS.
106-
requirements_linux (label): The requirements file for the linux OS.
107-
requirements_lock (label): The requirements file for all OSes, or used as a fallback.
108-
requirements_windows (label): The requirements file for windows OS.
109100
extra_pip_args (string list): Extra pip arguments to perform extra validations and to
110101
be joined with args fined in files.
111102
get_index_urls: Callable[[ctx, list[str]], dict], a callable to get all
@@ -135,17 +126,6 @@ def parse_requirements(
135126
136127
The second element is extra_pip_args should be passed to `whl_library`.
137128
"""
138-
requirements_by_platform, download_only = requirements_files_by_platform(
139-
requirements_by_platform = requirements_by_platform,
140-
requirements_osx = requirements_osx,
141-
requirements_linux = requirements_linux,
142-
requirements_lock = requirements_lock,
143-
requirements_windows = requirements_windows,
144-
extra_pip_args = extra_pip_args,
145-
python_version = python_version,
146-
logger = logger,
147-
)
148-
149129
options = {}
150130
requirements = {}
151131
for file, plats in requirements_by_platform.items():
@@ -209,7 +189,6 @@ def parse_requirements(
209189
requirement_line = requirement_line,
210190
target_platforms = [],
211191
extra_pip_args = extra_pip_args,
212-
download = download_only,
213192
),
214193
)
215194
for_req.target_platforms.append(target_platform)
@@ -276,7 +255,6 @@ def parse_requirements(
276255
requirement_line = r.requirement_line,
277256
target_platforms = sorted(target_platforms),
278257
extra_pip_args = r.extra_pip_args,
279-
download = r.download,
280258
whls = whls,
281259
sdist = sdist,
282260
is_exposed = is_exposed,
@@ -294,8 +272,9 @@ def select_requirement(requirements, *, platform):
294272
Args:
295273
requirements (list[struct]): The list of requirements as returned by
296274
the `parse_requirements` function above.
297-
platform (str): The host platform. Usually an output of the
298-
`host_platform` function.
275+
platform (str or None): The host platform. Usually an output of the
276+
`host_platform` function. If None, then this function will return
277+
the first requirement it finds.
299278
300279
Returns:
301280
None if not found or a struct returned as one of the values in the
@@ -305,7 +284,7 @@ def select_requirement(requirements, *, platform):
305284
maybe_requirement = [
306285
req
307286
for req in requirements
308-
if [p for p in req.target_platforms if p.endswith(platform)] or req.download
287+
if not platform or [p for p in req.target_platforms if p.endswith(platform)]
309288
]
310289
if not maybe_requirement:
311290
# Sometimes the package is not present for host platform if there

python/private/pypi/pip_repository.bzl

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ load("//python/private:text_util.bzl", "render")
2121
load(":parse_requirements.bzl", "host_platform", "parse_requirements", "select_requirement")
2222
load(":pip_repository_attrs.bzl", "ATTRS")
2323
load(":render_pkg_aliases.bzl", "render_pkg_aliases", "whl_alias")
24+
load(":requirements_files_by_platform.bzl", "requirements_files_by_platform")
2425

2526
def _get_python_interpreter_attr(rctx):
2627
"""A helper function for getting the `python_interpreter` attribute or it's default
@@ -71,11 +72,14 @@ exports_files(["requirements.bzl"])
7172
def _pip_repository_impl(rctx):
7273
requirements_by_platform = parse_requirements(
7374
rctx,
74-
requirements_by_platform = rctx.attr.requirements_by_platform,
75-
requirements_linux = rctx.attr.requirements_linux,
76-
requirements_lock = rctx.attr.requirements_lock,
77-
requirements_osx = rctx.attr.requirements_darwin,
78-
requirements_windows = rctx.attr.requirements_windows,
75+
requirements_by_platform = requirements_files_by_platform(
76+
requirements_by_platform = rctx.attr.requirements_by_platform,
77+
requirements_linux = rctx.attr.requirements_linux,
78+
requirements_lock = rctx.attr.requirements_lock,
79+
requirements_osx = rctx.attr.requirements_darwin,
80+
requirements_windows = rctx.attr.requirements_windows,
81+
extra_pip_args = rctx.attr.extra_pip_args,
82+
),
7983
extra_pip_args = rctx.attr.extra_pip_args,
8084
)
8185
selected_requirements = {}
@@ -85,6 +89,7 @@ def _pip_repository_impl(rctx):
8589
r = select_requirement(
8690
requirements,
8791
platform = repository_platform,
92+
platform = None if rctx.attr.download_only else repository_platform,
8893
)
8994
if not r:
9095
continue

python/private/pypi/requirements_files_by_platform.bzl

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -128,10 +128,8 @@ def requirements_files_by_platform(
128128
fail_fn (Callable[[str], None]): A failure function used in testing failure cases.
129129
130130
Returns:
131-
A tuple where the first item is a dict with keys as the platform names
132-
and values as requirement labels. The second item in the tuple is a
133-
boolean to signify if we are set to only download wheels for a target
134-
platform.
131+
A dict with keys as the labels to the files and values as lists of
132+
platforms that the files support.
135133
"""
136134
if not (
137135
requirements_lock or
@@ -145,7 +143,7 @@ def requirements_files_by_platform(
145143
"via 'requirements_by_platform' or an os-specific lockfiles must be specified " +
146144
"via 'requirements_*' attributes",
147145
)
148-
return None, None
146+
return None
149147

150148
platforms = _platforms_from_args(extra_pip_args)
151149
if logger:
@@ -168,7 +166,7 @@ def requirements_files_by_platform(
168166
# a single `requirements_lock` file instead of the OS specific ones as that is
169167
# the only correct way to use the API.
170168
fail_fn("only a single 'requirements_lock' file can be used when using '--platform' pip argument, consider specifying it via 'requirements_lock' attribute")
171-
return None, None
169+
return None
172170

173171
files_by_platform = [
174172
(lock_files[0], platforms),
@@ -215,7 +213,7 @@ def requirements_files_by_platform(
215213
file,
216214
),
217215
)
218-
return None, None
216+
return None
219217

220218
configured_platforms[p] = file
221219
else:
@@ -246,7 +244,7 @@ def requirements_files_by_platform(
246244
file,
247245
p,
248246
))
249-
return None, None
247+
return None
250248
requirements[p] = file
251249

252250
# Now return a dict that is similar to requirements_by_platform - where we
@@ -257,4 +255,4 @@ def requirements_files_by_platform(
257255
for plat, file in requirements.items():
258256
ret.setdefault(file, []).append(plat)
259257

260-
return ret, len(platforms) > 0
258+
return ret

0 commit comments

Comments
 (0)