Skip to content

Commit 04a803c

Browse files
authored
refactor: move PyPI related extension and repository_rule setup to its own dir (bazel-contrib#2003)
This is to ensure that future work is easier and its clear where to add tests. Now all of the unit tests can be run by just `bazel test //tests/pypi/...`. Refactor summary: - chore: add aignas to CODEOWNERS - chore: add a new directory for storing PyPI related code - move pypi_index_sources.bzl to private/pypi - chore: move parse_requirements_txt to private/pypi - move parse_whl_name to private/pypi - move whl_target_platforms to private/pypi - move parse_requirements to private/pypi - move pip_repo_name to private/pypi - remove unused file - move pip_config_settings to private/pypi - move pypi_index to pypi/private and rename - move labels.bzl to private/pypi - move generate_build_bazel to private/pypi - move render_pkg_aliases.bzl to private/pypi - move patch_whl.bzl to private/pypi - Move envsubst and render_tests to top level of tests - move pip_install_srcs to private/pypi - split and move pip_install/pip_repository.bzl to private/pypi - move the bzlmod extension to private/pypi
1 parent 0fd7b64 commit 04a803c

File tree

84 files changed

+2829
-2670
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

84 files changed

+2829
-2670
lines changed

.github/CODEOWNERS

+3-2
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,6 @@
1111
/python/private/toolchains_repo.bzl @f0rmiga
1212
/python/tests/toolchains/ @f0rmiga
1313

14-
# pip_parse related code
15-
/python/pip_install/ @hrfuller
14+
# PyPI integration related code
15+
/python/private/pypi/ @aignas
16+
/tests/pypi/ @aignas

examples/pip_parse_vendored/requirements.bzl

+45-7
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,54 @@
66
load("@rules_python//python:pip.bzl", "pip_utils")
77
load("@rules_python//python/pip_install:pip_repository.bzl", "group_library", "whl_library")
88

9-
all_requirements = ["@my_project_pip_deps_vendored_certifi//:pkg", "@my_project_pip_deps_vendored_charset_normalizer//:pkg", "@my_project_pip_deps_vendored_idna//:pkg", "@my_project_pip_deps_vendored_requests//:pkg", "@my_project_pip_deps_vendored_urllib3//:pkg"]
10-
11-
all_whl_requirements_by_package = {"certifi": "@my_project_pip_deps_vendored_certifi//:whl", "charset_normalizer": "@my_project_pip_deps_vendored_charset_normalizer//:whl", "idna": "@my_project_pip_deps_vendored_idna//:whl", "requests": "@my_project_pip_deps_vendored_requests//:whl", "urllib3": "@my_project_pip_deps_vendored_urllib3//:whl"}
9+
all_requirements = [
10+
"@my_project_pip_deps_vendored_certifi//:pkg",
11+
"@my_project_pip_deps_vendored_charset_normalizer//:pkg",
12+
"@my_project_pip_deps_vendored_idna//:pkg",
13+
"@my_project_pip_deps_vendored_requests//:pkg",
14+
"@my_project_pip_deps_vendored_urllib3//:pkg",
15+
]
16+
17+
all_whl_requirements_by_package = {
18+
"certifi": "@my_project_pip_deps_vendored_certifi//:whl",
19+
"charset_normalizer": "@my_project_pip_deps_vendored_charset_normalizer//:whl",
20+
"idna": "@my_project_pip_deps_vendored_idna//:whl",
21+
"requests": "@my_project_pip_deps_vendored_requests//:whl",
22+
"urllib3": "@my_project_pip_deps_vendored_urllib3//:whl",
23+
}
1224

1325
all_whl_requirements = all_whl_requirements_by_package.values()
1426

15-
all_data_requirements = ["@my_project_pip_deps_vendored_certifi//:data", "@my_project_pip_deps_vendored_charset_normalizer//:data", "@my_project_pip_deps_vendored_idna//:data", "@my_project_pip_deps_vendored_requests//:data", "@my_project_pip_deps_vendored_urllib3//:data"]
16-
17-
_packages = [("my_project_pip_deps_vendored_certifi", "certifi==2023.7.22 --hash=sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082 --hash=sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"), ("my_project_pip_deps_vendored_charset_normalizer", "charset-normalizer==2.1.1 --hash=sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845 --hash=sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"), ("my_project_pip_deps_vendored_idna", "idna==3.4 --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 --hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"), ("my_project_pip_deps_vendored_requests", "requests==2.28.1 --hash=sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983 --hash=sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"), ("my_project_pip_deps_vendored_urllib3", "urllib3==1.26.13 --hash=sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc --hash=sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8")]
18-
_config = {"download_only": False, "enable_implicit_namespace_pkgs": False, "environment": {}, "envsubst": ["PIP_RETRIES"], "extra_pip_args": ["--retries=${PIP_RETRIES:-5}"], "isolated": True, "pip_data_exclude": [], "python_interpreter": "python3", "python_interpreter_target": "@python39_host//:python", "quiet": True, "repo": "my_project_pip_deps_vendored", "repo_prefix": "my_project_pip_deps_vendored_", "timeout": 600}
27+
all_data_requirements = [
28+
"@my_project_pip_deps_vendored_certifi//:data",
29+
"@my_project_pip_deps_vendored_charset_normalizer//:data",
30+
"@my_project_pip_deps_vendored_idna//:data",
31+
"@my_project_pip_deps_vendored_requests//:data",
32+
"@my_project_pip_deps_vendored_urllib3//:data",
33+
]
34+
35+
_packages = [
36+
("my_project_pip_deps_vendored_certifi", "certifi==2023.7.22 --hash=sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082 --hash=sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"),
37+
("my_project_pip_deps_vendored_charset_normalizer", "charset-normalizer==2.1.1 --hash=sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845 --hash=sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"),
38+
("my_project_pip_deps_vendored_idna", "idna==3.4 --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 --hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"),
39+
("my_project_pip_deps_vendored_requests", "requests==2.28.1 --hash=sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983 --hash=sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"),
40+
("my_project_pip_deps_vendored_urllib3", "urllib3==1.26.13 --hash=sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc --hash=sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8"),
41+
]
42+
_config = {
43+
"download_only": False,
44+
"enable_implicit_namespace_pkgs": False,
45+
"environment": {},
46+
"envsubst": ["PIP_RETRIES"],
47+
"extra_pip_args": ["--retries=${PIP_RETRIES:-5}"],
48+
"isolated": True,
49+
"pip_data_exclude": [],
50+
"python_interpreter": "python3",
51+
"python_interpreter_target": "@python39_host//:python",
52+
"quiet": True,
53+
"repo": "my_project_pip_deps_vendored",
54+
"repo_prefix": "my_project_pip_deps_vendored_",
55+
"timeout": 600,
56+
}
1957
_annotations = {}
2058

2159
def requirement(name):

python/BUILD.bazel

+1-1
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ bzl_library(
101101
"//python/pip_install:requirements_bzl",
102102
"//python/private:bzlmod_enabled_bzl",
103103
"//python/private:full_version_bzl",
104-
"//python/private:render_pkg_aliases_bzl",
104+
"//python/private/pypi:render_pkg_aliases_bzl",
105105
"//python/private/whl_filegroup:whl_filegroup_bzl",
106106
],
107107
)

python/config_settings/BUILD.bazel

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ load(
99
"PycCollectionFlag",
1010
)
1111
load(
12-
"//python/private:pip_flags.bzl",
12+
"//python/private/pypi:flags.bzl",
1313
"INTERNAL_FLAGS",
1414
"UniversalWhlFlag",
1515
"UseWhlFlag",

python/extensions/BUILD.bazel

-2
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,6 @@ bzl_library(
3636
srcs = ["python.bzl"],
3737
visibility = ["//:__subpackages__"],
3838
deps = [
39-
"//python/private:util_bzl",
40-
"//python/private/bzlmod:bazel_features_bzl",
4139
"//python/private/bzlmod:python_bzl",
4240
],
4341
)

python/pip.bzl

+3-2
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,13 @@ symbols should not be used and they are either undocumented here or marked as
1919
for internal use only.
2020
"""
2121

22-
load("//python/pip_install:pip_repository.bzl", "pip_repository", _package_annotation = "package_annotation")
2322
load("//python/pip_install:requirements.bzl", _compile_pip_requirements = "compile_pip_requirements")
2423
load("//python/private:bzlmod_enabled.bzl", "BZLMOD_ENABLED")
2524
load("//python/private:full_version.bzl", "full_version")
2625
load("//python/private:normalize_name.bzl", "normalize_name")
27-
load("//python/private:render_pkg_aliases.bzl", "NO_MATCH_ERROR_MESSAGE_TEMPLATE")
26+
load("//python/private/pypi:package_annotation.bzl", _package_annotation = "package_annotation")
27+
load("//python/private/pypi:pip_repository.bzl", "pip_repository")
28+
load("//python/private/pypi:render_pkg_aliases.bzl", "NO_MATCH_ERROR_MESSAGE_TEMPLATE")
2829
load("//python/private/whl_filegroup:whl_filegroup.bzl", _whl_filegroup = "whl_filegroup")
2930

3031
compile_pip_requirements = _compile_pip_requirements

python/pip_install/BUILD.bazel

+5-37
Original file line numberDiff line numberDiff line change
@@ -22,23 +22,10 @@ bzl_library(
2222
name = "pip_repository_bzl",
2323
srcs = ["pip_repository.bzl"],
2424
deps = [
25-
":repositories_bzl",
26-
"//python:repositories_bzl",
27-
"//python:versions_bzl",
28-
"//python/pip_install/private:generate_group_library_build_bazel_bzl",
29-
"//python/pip_install/private:generate_whl_library_build_bazel_bzl",
30-
"//python/pip_install/private:srcs_bzl",
31-
"//python/private:bzlmod_enabled_bzl",
32-
"//python/private:envsubst_bzl",
33-
"//python/private:normalize_name_bzl",
34-
"//python/private:parse_requirements_bzl",
35-
"//python/private:parse_whl_name_bzl",
36-
"//python/private:patch_whl_bzl",
37-
"//python/private:render_pkg_aliases_bzl",
38-
"//python/private:repo_utils_bzl",
39-
"//python/private:toolchains_repo_bzl",
40-
"//python/private:whl_target_platforms_bzl",
41-
"@bazel_skylib//lib:sets",
25+
"//python/private/pypi:group_library_bzl",
26+
"//python/private/pypi:package_annotation_bzl",
27+
"//python/private/pypi:pip_repository_bzl",
28+
"//python/private/pypi:whl_library_bzl",
4229
],
4330
)
4431

@@ -51,11 +38,6 @@ bzl_library(
5138
],
5239
)
5340

54-
bzl_library(
55-
name = "requirements_parser_bzl",
56-
srcs = ["requirements_parser.bzl"],
57-
)
58-
5941
bzl_library(
6042
name = "repositories_bzl",
6143
srcs = ["repositories.bzl"],
@@ -71,7 +53,6 @@ filegroup(
7153
srcs = glob(["*.bzl"]) + [
7254
"BUILD.bazel",
7355
"pip_repository_requirements.bzl.tmpl",
74-
"//python/pip_install/private:distribution",
7556
"//python/pip_install/tools/dependency_resolver:distribution",
7657
"//python/pip_install/tools/wheel_installer:distribution",
7758
],
@@ -92,23 +73,10 @@ filegroup(
9273

9374
filegroup(
9475
name = "bzl",
95-
srcs = glob(["*.bzl"]) + [
96-
"//python/pip_install/private:bzl_srcs",
97-
],
76+
srcs = glob(["*.bzl"]),
9877
visibility = ["//:__subpackages__"],
9978
)
10079

101-
filegroup(
102-
name = "py_srcs",
103-
srcs = [
104-
"//python/pip_install/tools/dependency_resolver:py_srcs",
105-
"//python/pip_install/tools/wheel_installer:py_srcs",
106-
"//python/private:repack_whl.py",
107-
"//tools:wheelmaker.py",
108-
],
109-
visibility = ["//python/pip_install/private:__pkg__"],
110-
)
111-
11280
exports_files(
11381
glob(["*.bzl"]),
11482
visibility = ["//docs:__pkg__"],

0 commit comments

Comments
 (0)