Skip to content

Commit 024b4cb

Browse files
committed
refactor: cleanup the code and reduce the number of abstractions
1 parent 4a277ec commit 024b4cb

File tree

1 file changed

+49
-61
lines changed

1 file changed

+49
-61
lines changed

python/private/pip_config_settings.bzl

Lines changed: 49 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ FLAGS = struct(
5151
f: str(Label("//python/config_settings:" + f))
5252
for f in [
5353
"python_version",
54-
"pip_whl",
5554
"pip_whl_glibc_version",
5655
"pip_whl_muslc_version",
5756
"pip_whl_osx_arch",
@@ -116,6 +115,7 @@ def pip_config_settings(
116115
]
117116

118117
alias_rule = alias_rule or native.alias
118+
config_setting_rule = config_setting_rule or _dist_config_setting
119119

120120
for version in ["default"] + python_versions:
121121
is_python = "is_python_{}".format(version)
@@ -135,22 +135,16 @@ def pip_config_settings(
135135
constraint_values.append("@platforms//cpu:" + cpu)
136136
suffix += "_" + cpu
137137

138-
_sdist_config_setting(
139-
name = "sdist" + suffix,
140-
constraint_values = constraint_values,
141-
visibility = visibility,
142-
config_setting_rule = config_setting_rule,
143-
)
144-
for python_version in python_versions:
145-
_sdist_config_setting(
146-
name = "cp{}_sdist{}".format(python_version, suffix),
138+
for python_version in [""] + python_versions:
139+
sdist = "cp{}_sdist".format(python_version) if python_version else "sdist"
140+
config_setting_rule(
141+
name = "is_{}{}".format(sdist, suffix),
147142
python_version = python_version,
143+
flag_values = {_flags.dist: ""},
144+
is_pip_whl = FLAGS.is_pip_whl_no,
148145
constraint_values = constraint_values,
149146
visibility = visibility,
150-
config_setting_rule = config_setting_rule,
151147
)
152-
153-
for python_version in [""] + python_versions:
154148
_whl_config_settings(
155149
suffix = suffix,
156150
plat_flag_values = _plat_flag_values(
@@ -162,25 +156,28 @@ def pip_config_settings(
162156
),
163157
constraint_values = constraint_values,
164158
python_version = python_version,
159+
is_pip_whl = FLAGS.is_pip_whl_only,
165160
visibility = visibility,
166161
config_setting_rule = config_setting_rule,
167162
)
168163

169-
def _whl_config_settings(*, suffix, plat_flag_values, **kwargs):
164+
def _whl_config_settings(*, suffix, plat_flag_values, config_setting_rule, **kwargs):
170165
# With the following three we cover different per-version wheels
171166
python_version = kwargs.get("python_version")
172167
py = "cp{}_py".format(python_version) if python_version else "py"
173168
pycp = "cp{}_cp3x".format(python_version) if python_version else "cp3x"
174169

175-
flag_values = {}
170+
flag_values = {
171+
_flags.dist: "",
172+
}
176173

177-
for n, f in {
178-
"{}_none_any{}".format(py, suffix): _flags.whl_py2_py3,
179-
"{}3_none_any{}".format(py, suffix): _flags.whl_py3,
180-
"{}3_abi3_any{}".format(py, suffix): _flags.whl_py3_abi3,
181-
"{}_none_any{}".format(pycp, suffix): _flags.whl_pycp3x,
182-
"{}_abi3_any{}".format(pycp, suffix): _flags.whl_pycp3x_abi3,
183-
"{}_cp_any{}".format(pycp, suffix): _flags.whl_pycp3x_abicp,
174+
for name, f in {
175+
"is_{}_none_any{}".format(py, suffix): _flags.whl_py2_py3,
176+
"is_{}3_none_any{}".format(py, suffix): _flags.whl_py3,
177+
"is_{}3_abi3_any{}".format(py, suffix): _flags.whl_py3_abi3,
178+
"is_{}_none_any{}".format(pycp, suffix): _flags.whl_pycp3x,
179+
"is_{}_abi3_any{}".format(pycp, suffix): _flags.whl_pycp3x_abi3,
180+
"is_{}_cp_any{}".format(pycp, suffix): _flags.whl_pycp3x_abicp,
184181
}.items():
185182
if f in flag_values:
186183
# This should never happen as all of the different whls should have
@@ -189,8 +186,8 @@ def _whl_config_settings(*, suffix, plat_flag_values, **kwargs):
189186
else:
190187
flag_values[f] = ""
191188

192-
_whl_config_setting(
193-
name = n,
189+
config_setting_rule(
190+
name = name,
194191
flag_values = flag_values,
195192
**kwargs
196193
)
@@ -200,13 +197,13 @@ def _whl_config_settings(*, suffix, plat_flag_values, **kwargs):
200197
for (suffix, flag_values) in plat_flag_values:
201198
flag_values = flag_values | generic_flag_values
202199

203-
for n, f in {
204-
"{}_none_{}".format(py, suffix): _flags.whl_plat,
205-
"{}3_none_{}".format(py, suffix): _flags.whl_plat_py3,
206-
"{}3_abi3_{}".format(py, suffix): _flags.whl_plat_py3_abi3,
207-
"{}_none_{}".format(pycp, suffix): _flags.whl_plat_pycp3x,
208-
"{}_abi3_{}".format(pycp, suffix): _flags.whl_plat_pycp3x_abi3,
209-
"{}_cp_{}".format(pycp, suffix): _flags.whl_plat_pycp3x_abicp,
200+
for name, f in {
201+
"is_{}_none_{}".format(py, suffix): _flags.whl_plat,
202+
"is_{}3_none_{}".format(py, suffix): _flags.whl_plat_py3,
203+
"is_{}3_abi3_{}".format(py, suffix): _flags.whl_plat_py3_abi3,
204+
"is_{}_none_{}".format(pycp, suffix): _flags.whl_plat_pycp3x,
205+
"is_{}_abi3_{}".format(pycp, suffix): _flags.whl_plat_pycp3x_abi3,
206+
"is_{}_cp_{}".format(pycp, suffix): _flags.whl_plat_pycp3x_abicp,
210207
}.items():
211208
if f in flag_values:
212209
# This should never happen as all of the different whls should have
@@ -215,8 +212,8 @@ def _whl_config_settings(*, suffix, plat_flag_values, **kwargs):
215212
else:
216213
flag_values[f] = ""
217214

218-
_whl_config_setting(
219-
name = n,
215+
config_setting_rule(
216+
name = name,
220217
flag_values = flag_values,
221218
**kwargs
222219
)
@@ -287,29 +284,23 @@ def _plat_flag_values(os, cpu, osx_versions, glibc_versions, muslc_versions):
287284

288285
return ret
289286

290-
def _whl_config_setting(*, name, flag_values, config_setting_rule = None, **kwargs):
291-
config_setting_rule = config_setting_rule or _config_setting_or
292-
config_setting_rule(
293-
name = "is_" + name,
294-
flag_values = flag_values,
295-
use_whl_flag = FLAGS.is_pip_whl_only,
296-
**kwargs
297-
)
298-
299-
def _sdist_config_setting(*, name, config_setting_rule = None, **kwargs):
300-
config_setting_rule = config_setting_rule or _config_setting_or
301-
config_setting_rule(
302-
name = "is_" + name,
303-
use_whl_flag = FLAGS.is_pip_whl_no,
304-
**kwargs
305-
)
287+
def _dist_config_setting(*, name, is_pip_whl, python_version = "", **kwargs):
288+
"""A macro to create a target that matches is_pip_whl_auto and one more value.
306289
307-
def _config_setting_or(*, name, use_whl_flag, python_version = "", **kwargs):
290+
Args:
291+
name: The name of the public target.
292+
is_pip_whl: The config setting to match in addition to
293+
`is_pip_whl_auto` when evaluating the config setting.
294+
python_version: The python version to match.
295+
**kwargs: The kwargs passed to the config_setting rule. Visibility of
296+
the main alias target is also taken from the kwargs.
297+
"""
308298
if python_version:
309299
_name = name.replace("is_cp{}".format(python_version), "_is")
310300
else:
311301
_name = "_" + name
312302

303+
# First match by the python version
313304
is_python = ":is_python_" + (python_version or "default")
314305
visibility = kwargs.get("visibility")
315306
native.alias(
@@ -326,20 +317,17 @@ def _config_setting_or(*, name, use_whl_flag, python_version = "", **kwargs):
326317
# `python_version` setting.
327318
return
328319

329-
match_name = "_{}_1".format(name)
330-
native.config_setting(
331-
name = match_name,
332-
flag_values = {
333-
_flags.dist: "",
334-
} | kwargs.pop("flag_values", {}),
335-
**kwargs
336-
)
320+
config_setting_name = "_{}_setting".format(name)
321+
native.config_setting(name = config_setting_name, **kwargs)
322+
323+
# Next match by the `pip_whl` flag value and then match by the flags that
324+
# are intrinsic to the distribution.
337325
native.alias(
338326
name = _name,
339327
actual = select({
340-
FLAGS.is_pip_whl_auto: match_name,
341-
use_whl_flag: match_name,
342-
"//conditions:default": use_whl_flag,
328+
"//conditions:default": FLAGS.is_pip_whl_auto,
329+
FLAGS.is_pip_whl_auto: config_setting_name,
330+
is_pip_whl: config_setting_name,
343331
}),
344332
visibility = visibility,
345333
)

0 commit comments

Comments
 (0)