Skip to content

Commit

Permalink
chore: remove dead code from whl_target_platforms (#2001)
Browse files Browse the repository at this point in the history
Remove dead code only used in tests.

Work towards #260
  • Loading branch information
aignas committed Jun 22, 2024
1 parent 0dcaa2e commit d003204
Show file tree
Hide file tree
Showing 2 changed files with 1 addition and 115 deletions.
97 changes: 0 additions & 97 deletions python/private/whl_target_platforms.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -46,63 +46,6 @@ _OS_PREFIXES = {
"win": "windows",
} # buildifier: disable=unsorted-dict-items

def _whl_priority(value):
"""Return a value for sorting whl lists.
TODO @aignas 2024-03-29: In the future we should create a repo for each
repo that matches the abi and then we could have config flags for the
preference of `any` wheels or `sdist` or `manylinux` vs `musllinux` or
`universal2`. Ideally we use `select` statements in the hub repo to do
the selection based on the config, but for now this is the best way to
get this working for the host platform.
In the future the right thing would be to have `bool_flag` or something
similar to be able to have select statements that does the right thing:
* select whls vs sdists.
* select manylinux vs musllinux
* select universal2 vs arch-specific whls
All of these can be expressed as configuration settings and included in the
select statements in the `whl` repo. This means that the user can configure
for a particular target what they need.
Returns a 4-tuple where the items are:
* bool - is it an 'any' wheel? True if it is.
* bool - is it an 'universal' wheel? True if it is. (e.g. macos universal2 wheels)
* int - the minor plaform version (e.g. osx os version, libc version)
* int - the major plaform version (e.g. osx os version, libc version)
"""
if "." in value:
value, _, _ = value.partition(".")

if "any" == value:
return (True, False, 0, 0)

if "linux" in value:
os, _, tail = value.partition("_")
if os == "linux":
# If the platform tag starts with 'linux', then return something less than what 'any' returns
minor = 0
major = 0
else:
major, _, tail = tail.partition("_") # We don't need to use that because it's the same for all candidates now
minor, _, _ = tail.partition("_")

return (False, os == "linux", int(minor), int(major))

if "mac" in value or "osx" in value:
_, _, tail = value.partition("_")
major, _, tail = tail.partition("_")
minor, _, _ = tail.partition("_")

return (False, "universal2" in value, int(minor), int(major))

if not "win" in value:
fail("BUG: only windows, linux and mac platforms are supported, but got: {}".format(value))

# Windows does not have multiple wheels for the same target platform
return (False, False, 0, 0)

def select_whls(*, whls, want_python_version = "3.0", want_abis = [], want_platforms = [], logger = None):
"""Select a subset of wheels suitable for target platforms from a list.
Expand Down Expand Up @@ -203,46 +146,6 @@ def select_whls(*, whls, want_python_version = "3.0", want_abis = [], want_platf
for key, v in candidates.items()
]

def select_whl(*, whls, want_platform):
"""Select a suitable wheel from a list.
Args:
whls(list[struct]): A list of candidates.
want_platform(str): The target platform.
Returns:
None or a struct with `url`, `sha256` and `filename` attributes for the
selected whl. If no match is found, None is returned.
"""
if not whls:
return None

# TODO @aignas 2024-05-23: once we do the selection in the hub repo using
# an actual select, then this function will be the one that is used within
# the repository context instead of `select_whl`.
whls = select_whls(
whls = whls,
want_python_version = "",
want_platforms = [want_platform],
)

candidates = {
parse_whl_name(w.filename).platform_tag: w
for w in whls
# TODO @aignas 2024-06-01: to be addressed in #1837, where we add the necessary
# config settings.
if "musllinux_" not in w.filename
}

target_whl_platform = sorted(
candidates.keys(),
key = _whl_priority,
)
if not target_whl_platform:
return None

return candidates[target_whl_platform[0]]

def whl_target_platforms(platform_tag, abi_tag = ""):
"""Parse the wheel abi and platform tags and return (os, cpu) tuples.
Expand Down
19 changes: 1 addition & 18 deletions tests/private/whl_target_platforms/select_whl_tests.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
""

load("@rules_testing//lib:test_suite.bzl", "test_suite")
load("//python/private:whl_target_platforms.bzl", "select_whl", "select_whls") # buildifier: disable=bzl-visibility
load("//python/private:whl_target_platforms.bzl", "select_whls") # buildifier: disable=bzl-visibility

WHL_LIST = [
"pkg-0.0.1-cp311-cp311-macosx_10_9_universal2.whl",
Expand Down Expand Up @@ -79,11 +79,6 @@ def _match(env, got, *want_filenames):
# Check that we pass the original structs
env.expect.that_str(got[0].other).equals("dummy")

def _select_whl(**kwargs):
"""A small wrapper to make the tests more DRY."""
got_single = select_whl(**kwargs)
return [got_single] if got_single else []

def _select_whls(whls, **kwargs):
return select_whls(
whls = [
Expand Down Expand Up @@ -214,8 +209,6 @@ def _test_match_abi_and_not_py_version(env):
"pkg-0.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"pkg-0.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl",
)
got = _select_whl(whls = got, want_platform = "linux_x86_64")
_match(env, got, "pkg-0.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl")

_tests.append(_test_match_abi_and_not_py_version)

Expand All @@ -228,8 +221,6 @@ def _test_select_filename_with_many_tags(env):
"pkg-0.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"pkg-0.0.1-cp39-cp39-musllinux_1_1_i686.whl",
)
got = _select_whl(whls = got, want_platform = "linux_x86_32")
_match(env, got, "pkg-0.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl")

_tests.append(_test_select_filename_with_many_tags)

Expand All @@ -247,8 +238,6 @@ def _test_osx_prefer_arch_specific(env):
"pkg-0.0.1-cp311-cp311-macosx_10_9_universal2.whl",
"pkg-0.0.1-cp311-cp311-macosx_10_9_x86_64.whl",
)
got = _select_whl(whls = got, want_platform = "osx_x86_64")
_match(env, got, "pkg-0.0.1-cp311-cp311-macosx_10_9_x86_64.whl")

got = _select_whls(whls = WHL_LIST, want_abis = ["cp311"], want_platforms = ["osx_aarch64"], want_python_version = "3.11")
_match(
Expand All @@ -257,8 +246,6 @@ def _test_osx_prefer_arch_specific(env):
"pkg-0.0.1-cp311-cp311-macosx_10_9_universal2.whl",
"pkg-0.0.1-cp311-cp311-macosx_11_0_arm64.whl",
)
got = _select_whl(whls = got, want_platform = "osx_aarch64")
_match(env, got, "pkg-0.0.1-cp311-cp311-macosx_11_0_arm64.whl")

_tests.append(_test_osx_prefer_arch_specific)

Expand All @@ -270,8 +257,6 @@ def _test_osx_fallback_to_universal2(env):
got,
"pkg-0.0.1-cp311-cp311-macosx_10_9_universal2.whl",
)
got = _select_whl(whls = got, want_platform = "osx_aarch64")
_match(env, got, "pkg-0.0.1-cp311-cp311-macosx_10_9_universal2.whl")

_tests.append(_test_osx_fallback_to_universal2)

Expand All @@ -286,8 +271,6 @@ def _test_prefer_manylinux_wheels(env):
"pkg-0.0.1-cp39-abi3-any.whl",
"pkg-0.0.1-py3-none-any.whl",
)
got = _select_whl(whls = got, want_platform = "linux_x86_64")
_match(env, got, "pkg-0.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl")

_tests.append(_test_prefer_manylinux_wheels)

Expand Down

0 comments on commit d003204

Please sign in to comment.