Skip to content

Commit cfa4462

Browse files
Add example of different packages per python version
This is me trying to add an example of something that I was seeing not work as I expected internally and making sure it wasn't something specific to our repo. In our usecase we actually have a package interal that only works up to a specific version of python. However I keep getting this error when using py_binary or py_test. ``` ERROR: /private/var/tmp/_bazel_schuettm/e053d0eaf0a843e9f76bdb61766af4b7/external/rules_python++pip+pypi_3_10_only/flask/BUILD.bazel:5:12: configurable attribute "actual" in @@rules_python++pip+pypi_3_10_only//flask:pkg doesn't match this configuration: No matching wheel for current configuration's Python version. The current build configuration's Python version doesn't match any of the Python wheels available for this distribution. This distribution supports the following Python configuration settings: //_config:is_python_3.11 To determine the current configuration's Python version, run: `bazel config <config id>` (shown further below) and look for one of: @@rules_python+//python/config_settings:python_version @@rules_python+//python/config_settings:pip_whl @@rules_python+//python/config_settings:pip_whl_glibc_version @@rules_python+//python/config_settings:pip_whl_muslc_version @@rules_python+//python/config_settings:pip_whl_osx_arch @@rules_python+//python/config_settings:pip_whl_osx_version @@rules_python+//python/config_settings:py_freethreaded @@rules_python+//python/config_settings:py_linux_libc If the value is missing, then the default value is being used, see documentation: https://rules-python.readthedocs.io/en/latest/api/rules_python/python/config_settings This instance of @@rules_python++pip+pypi_3_10_only//flask:pkg has configuration identifier e62ee83. To inspect its configuration, run: bazel config e62ee83. For more help, see https://bazel.build/docs/configurable-attributes#faq-select-choose-condition. Use --verbose_failures to see the command lines of failed build steps. ERROR: Analysis of target '//tests:my_lib_3_10_only_test' failed; build aborted: Analysis failed INFO: Elapsed time: 0.197s, Critical Path: 0.02s INFO: 2 processes: 2 internal. ERROR: Build did NOT complete successfully //tests:test_versions NO STATUS Executed 0 out of 1 test: 1 was skipped. ``` Following the directions hasn't helped me but maybe it makes more sense to someone else.
1 parent 727ab43 commit cfa4462

File tree

8 files changed

+148
-1
lines changed

8 files changed

+148
-1
lines changed

examples/multi_python_versions/MODULE.bazel

+6
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ use_repo(
3636

3737
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
3838
use_repo(pip, "pypi")
39+
use_repo(pip, "pypi_3_10_only")
3940
pip.parse(
4041
hub_name = "pypi",
4142
python_version = "3.8",
@@ -56,6 +57,11 @@ pip.parse(
5657
python_version = "3.11",
5758
requirements_lock = "//requirements:requirements_lock_3_11.txt",
5859
)
60+
pip.parse(
61+
hub_name = "pypi_3_10_only",
62+
python_version = "3.11",
63+
requirements_lock = "//requirements:requirements_lock_3_10_only.txt",
64+
)
5965

6066
# example test dependencies
6167
bazel_dep(name = "rules_shell", version = "0.2.0", dev_dependency = True)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
load("@pypi_3_10_only//:requirements.bzl", "requirement")
2+
load("@rules_python//python:py_library.bzl", "py_library")
3+
4+
py_library(
5+
name = "my_310_only_lib",
6+
srcs = ["__init__.py"],
7+
visibility = ["@//tests:__pkg__"],
8+
deps = [
9+
requirement("flask")
10+
],
11+
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Copyright 2023 The Bazel Authors. All rights reserved.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
import flask
16+
17+
18+
# def flask_is_for_python_version(sanitized_version_check):
19+
# return f"pypi_{sanitized_version_check}_flask" in websockets.__file__

examples/multi_python_versions/libs/my_lib/BUILD.bazel

+3-1
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,7 @@ py_library(
55
name = "my_lib",
66
srcs = ["__init__.py"],
77
visibility = ["@//tests:__pkg__"],
8-
deps = [requirement("websockets")],
8+
deps = [
9+
requirement("websockets")
10+
],
911
)

examples/multi_python_versions/requirements/BUILD.bazel

+6
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,12 @@ compile_pip_requirements_3_10(
2121
requirements_txt = "requirements_lock_3_10.txt",
2222
)
2323

24+
compile_pip_requirements_3_10(
25+
name = "requirements_3_10_only",
26+
src = "requirements_3_10_only.in",
27+
requirements_txt = "requirements_lock_3_10_only.txt",
28+
)
29+
2430
compile_pip_requirements_3_11(
2531
name = "requirements_3_11",
2632
src = "requirements.in",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
flask
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
#
2+
# This file is autogenerated by pip-compile with Python 3.10
3+
# by the following command:
4+
#
5+
# bazel run //requirements:requirements_3_10_only.update
6+
#
7+
blinker==1.9.0 \
8+
--hash=sha256:b4ce2265a7abece45e7cc896e98dbebe6cead56bcf805a3d23136d145f5445bf \
9+
--hash=sha256:ba0efaa9080b619ff2f3459d1d500c57bddea4a6b424b60a91141db6fd2f08bc
10+
# via flask
11+
click==8.1.8 \
12+
--hash=sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2 \
13+
--hash=sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a
14+
# via flask
15+
flask==3.1.0 \
16+
--hash=sha256:5f873c5184c897c8d9d1b05df1e3d01b14910ce69607a117bd3277098a5836ac \
17+
--hash=sha256:d667207822eb83f1c4b50949b1623c8fc8d51f2341d65f72e1a1815397551136
18+
# via -r requirements/requirements_3_10_only.in
19+
itsdangerous==2.2.0 \
20+
--hash=sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef \
21+
--hash=sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173
22+
# via flask
23+
jinja2==3.1.5 \
24+
--hash=sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb \
25+
--hash=sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb
26+
# via flask
27+
markupsafe==3.0.2 \
28+
--hash=sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4 \
29+
--hash=sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30 \
30+
--hash=sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0 \
31+
--hash=sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9 \
32+
--hash=sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396 \
33+
--hash=sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13 \
34+
--hash=sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028 \
35+
--hash=sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca \
36+
--hash=sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557 \
37+
--hash=sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832 \
38+
--hash=sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0 \
39+
--hash=sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b \
40+
--hash=sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579 \
41+
--hash=sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a \
42+
--hash=sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c \
43+
--hash=sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff \
44+
--hash=sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c \
45+
--hash=sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22 \
46+
--hash=sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094 \
47+
--hash=sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb \
48+
--hash=sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e \
49+
--hash=sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5 \
50+
--hash=sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a \
51+
--hash=sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d \
52+
--hash=sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a \
53+
--hash=sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b \
54+
--hash=sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8 \
55+
--hash=sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225 \
56+
--hash=sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c \
57+
--hash=sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144 \
58+
--hash=sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f \
59+
--hash=sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87 \
60+
--hash=sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d \
61+
--hash=sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93 \
62+
--hash=sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf \
63+
--hash=sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158 \
64+
--hash=sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84 \
65+
--hash=sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb \
66+
--hash=sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48 \
67+
--hash=sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171 \
68+
--hash=sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c \
69+
--hash=sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6 \
70+
--hash=sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd \
71+
--hash=sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d \
72+
--hash=sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1 \
73+
--hash=sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d \
74+
--hash=sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca \
75+
--hash=sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a \
76+
--hash=sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29 \
77+
--hash=sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe \
78+
--hash=sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798 \
79+
--hash=sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c \
80+
--hash=sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8 \
81+
--hash=sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f \
82+
--hash=sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f \
83+
--hash=sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a \
84+
--hash=sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178 \
85+
--hash=sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0 \
86+
--hash=sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79 \
87+
--hash=sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430 \
88+
--hash=sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50
89+
# via
90+
# jinja2
91+
# werkzeug
92+
werkzeug==3.1.3 \
93+
--hash=sha256:54b78bf3716d19a65be4fceccc0d1d7b89e608834989dfae50ea87564639213e \
94+
--hash=sha256:60723ce945c19328679790e3282cc758aa4a6040e4bb330f53d30fa546d44746
95+
# via flask

examples/multi_python_versions/tests/BUILD.bazel

+7
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,13 @@ py_test_3_10(
7878
deps = ["//libs/my_lib"],
7979
)
8080

81+
py_test_3_10(
82+
name = "my_lib_3_10_only_test",
83+
srcs = ["my_lib_test.py"],
84+
main = "my_lib_test.py",
85+
deps = ["//libs/my_310_only_lib"],
86+
)
87+
8188
py_test_3_11(
8289
name = "my_lib_3_11_test",
8390
srcs = ["my_lib_test.py"],

0 commit comments

Comments
 (0)