Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion python/private/pypi/extension.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -601,7 +601,15 @@ You cannot use both the additive_build_content and additive_build_content_file a
extra_aliases.setdefault(hub_name, {})
for whl_name, aliases in out.extra_aliases.items():
extra_aliases[hub_name].setdefault(whl_name, {}).update(aliases)
exposed_packages.setdefault(hub_name, {}).update(out.exposed_packages)
if hub_name not in exposed_packages:
exposed_packages[hub_name] = out.exposed_packages
else:
intersection = {}
for pkg in out.exposed_packages:
if pkg not in exposed_packages[hub_name]:
continue
intersection[pkg] = None
exposed_packages[hub_name] = intersection
whl_libraries.update(out.whl_libraries)

# TODO @aignas 2024-04-05: how do we support different requirement
Expand Down
110 changes: 110 additions & 0 deletions tests/pypi/extension/extension_tests.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -285,6 +285,116 @@ def _test_simple_multiple_requirements(env):

_tests.append(_test_simple_multiple_requirements)

def _test_simple_multiple_python_versions(env):
pypi = _parse_modules(
env,
module_ctx = _mock_mctx(
_mod(
name = "rules_python",
parse = [
_parse(
hub_name = "pypi",
python_version = "3.15",
requirements_lock = "requirements_3_15.txt",
),
_parse(
hub_name = "pypi",
python_version = "3.16",
requirements_lock = "requirements_3_16.txt",
),
],
),
read = lambda x: {
"requirements_3_15.txt": """
simple==0.0.1 --hash=sha256:deadbeef
old-package==0.0.1 --hash=sha256:deadbaaf
""",
"requirements_3_16.txt": """
simple==0.0.2 --hash=sha256:deadb00f
new-package==0.0.1 --hash=sha256:deadb00f2
""",
}[x],
),
available_interpreters = {
"python_3_15_host": "unit_test_interpreter_target",
"python_3_16_host": "unit_test_interpreter_target",
},
minor_mapping = {
"3.15": "3.15.19",
"3.16": "3.16.9",
},
)

pypi.exposed_packages().contains_exactly({"pypi": ["simple"]})
pypi.hub_group_map().contains_exactly({"pypi": {}})
pypi.hub_whl_map().contains_exactly({
"pypi": {
"new_package": {
"pypi_316_new_package": [
struct(
config_setting = None,
filename = None,
target_platforms = None,
version = "3.16",
),
],
},
"old_package": {
"pypi_315_old_package": [
struct(
config_setting = None,
filename = None,
target_platforms = None,
version = "3.15",
),
],
},
"simple": {
"pypi_315_simple": [
struct(
config_setting = None,
filename = None,
target_platforms = None,
version = "3.15",
),
],
"pypi_316_simple": [
struct(
config_setting = None,
filename = None,
target_platforms = None,
version = "3.16",
),
],
},
},
})
pypi.whl_libraries().contains_exactly({
"pypi_315_old_package": {
"dep_template": "@pypi//{name}:{target}",
"python_interpreter_target": "unit_test_interpreter_target",
"requirement": "old-package==0.0.1 --hash=sha256:deadbaaf",
},
"pypi_315_simple": {
"dep_template": "@pypi//{name}:{target}",
"python_interpreter_target": "unit_test_interpreter_target",
"requirement": "simple==0.0.1 --hash=sha256:deadbeef",
},
"pypi_316_new_package": {
"dep_template": "@pypi//{name}:{target}",
"python_interpreter_target": "unit_test_interpreter_target",
"requirement": "new-package==0.0.1 --hash=sha256:deadb00f2",
},
"pypi_316_simple": {
"dep_template": "@pypi//{name}:{target}",
"python_interpreter_target": "unit_test_interpreter_target",
"requirement": "simple==0.0.2 --hash=sha256:deadb00f",
},
})
pypi.whl_mods().contains_exactly({})

_tests.append(_test_simple_multiple_python_versions)

def _test_simple_with_markers(env):
pypi = _parse_modules(
env,
Expand Down