Skip to content

Commit e626d88

Browse files
committed
revert too many symbol removal
1 parent e2725b5 commit e626d88

4 files changed

Lines changed: 133 additions & 85 deletions

File tree

python/BUILD.bazel

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,6 @@ bzl_library(
214214
deps = [
215215
"//python/private:is_standalone_interpreter_bzl",
216216
"//python/private:py_repositories_bzl",
217-
"//python/private:python_register_multi_toolchains_bzl",
218217
"//python/private:python_register_toolchains_bzl",
219218
"//python/private:python_repository_bzl",
220219
],

python/private/python_register_multi_toolchains.bzl

Lines changed: 0 additions & 79 deletions
This file was deleted.

python/private/toolchains_repo.bzl

Lines changed: 133 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,18 @@ py_toolchain_suite(
4545
)
4646
""".lstrip()
4747

48+
_WORKSPACE_TOOLCHAINS_BUILD_TEMPLATE = """
49+
# Generated by python/private/toolchains_repo.bzl
50+
#
51+
# These can be registered in the workspace file or passed to --extra_toolchains
52+
# flag. By default all these toolchains are registered by the
53+
# python_register_toolchains macro so you don't normally need to interact with
54+
# these targets.
55+
56+
load("@@{rules_python}//python/private:py_toolchain_suite.bzl", "py_toolchain_suite")
57+
58+
""".lstrip()
59+
4860
_TOOLCHAIN_ALIASES_BUILD_TEMPLATE = """
4961
# Generated by python/private/toolchains_repo.bzl
5062
load("@rules_python//python/private:toolchain_aliases.bzl", "toolchain_aliases")
@@ -62,6 +74,42 @@ toolchain_aliases(
6274
)
6375
""".lstrip()
6476

77+
_TOOLCHAIN_ALIASES_DEFS_TEMPLATE = """
78+
# Generated by python/private/toolchains_repo.bzl
79+
80+
load("@@{rules_python}//python:pip.bzl", _compile_pip_requirements = "compile_pip_requirements")
81+
load("@@{rules_python}//python/private:deprecation.bzl", "with_deprecation")
82+
load("@@{rules_python}//python/private:text_util.bzl", "render")
83+
load("@@{rules_python}//python:py_binary.bzl", _py_binary = "py_binary")
84+
load("@@{rules_python}//python:py_test.bzl", _py_test = "py_test")
85+
load(
86+
"@@{rules_python}//python/entry_points:py_console_script_binary.bzl",
87+
_py_console_script_binary = "py_console_script_binary",
88+
)
89+
90+
def _with_deprecation(kwargs, *, name):
91+
kwargs["python_version"] = "{python_version}"
92+
return with_deprecation.symbol(
93+
kwargs,
94+
symbol_name = name,
95+
old_load = "@{name}//:defs.bzl",
96+
new_load = "@rules_python//python:{{}}.bzl".format(name),
97+
snippet = render.call(name, **{{k: repr(v) for k,v in kwargs.items()}})
98+
)
99+
100+
def py_binary(**kwargs):
101+
return _py_binary(**_with_deprecation(kwargs, name = "py_binary"))
102+
103+
def py_console_script_binary(**kwargs):
104+
return _py_console_script_binary(**_with_deprecation(kwargs, name = "py_console_script_binary"))
105+
106+
def py_test(**kwargs):
107+
return _py_test(**_with_deprecation(kwargs, name = "py_test"))
108+
109+
def compile_pip_requirements(**kwargs):
110+
return _compile_pip_requirements(**_with_deprecation(kwargs, name = "compile_pip_requirements"))
111+
""".lstrip()
112+
65113
_HOST_TOOLCHAIN_BUILD_CONTENT = """
66114
# Generated by python/private/toolchains_repo.bzl
67115
@@ -83,6 +131,58 @@ assert want_python == got_python, \
83131
)
84132
""".lstrip()
85133

134+
_MULTI_TOOLCHAIN_ALIASES_DEFS_TEMPLATE = """
135+
# Generated by python/private/toolchains_repo.bzl
136+
137+
load("@@{rules_python}//python:pip.bzl", _compile_pip_requirements = "compile_pip_requirements")
138+
load("@@{rules_python}//python/private:deprecation.bzl", "with_deprecation")
139+
load("@@{rules_python}//python/private:text_util.bzl", "render")
140+
load("@@{rules_python}//python:py_binary.bzl", _py_binary = "py_binary")
141+
load("@@{rules_python}//python:py_test.bzl", _py_test = "py_test")
142+
load(
143+
"@@{rules_python}//python/entry_points:py_console_script_binary.bzl",
144+
_py_console_script_binary = "py_console_script_binary",
145+
)
146+
147+
def _with_deprecation(kwargs, *, name):
148+
kwargs["python_version"] = "{python_version}"
149+
return with_deprecation.symbol(
150+
kwargs,
151+
symbol_name = name,
152+
old_load = "@{name}//{python_version}:defs.bzl",
153+
new_load = "@rules_python//python:{{}}.bzl".format(name),
154+
snippet = render.call(name, **{{k: repr(v) for k,v in kwargs.items()}})
155+
)
156+
157+
def py_binary(**kwargs):
158+
return _py_binary(**_with_deprecation(kwargs, name = "py_binary"))
159+
160+
def py_console_script_binary(**kwargs):
161+
return _py_console_script_binary(**_with_deprecation(kwargs, name = "py_console_script_binary"))
162+
163+
def py_test(**kwargs):
164+
return _py_test(**_with_deprecation(kwargs, name = "py_test"))
165+
166+
def compile_pip_requirements(**kwargs):
167+
return _compile_pip_requirements(**_with_deprecation(kwargs, name = "compile_pip_requirements"))
168+
""".lstrip()
169+
170+
_MULTI_TOOLCHAIN_ALIASES_PIP_TEMPLATE = """
171+
# Generated by python/private/toolchains_repo.bzl
172+
173+
load("@@{rules_python}//python:pip.bzl", "pip_parse", _multi_pip_parse = "multi_pip_parse")
174+
175+
def multi_pip_parse(name, requirements_lock, **kwargs):
176+
return _multi_pip_parse(
177+
name = name,
178+
python_versions = {python_versions},
179+
requirements_lock = requirements_lock,
180+
minor_mapping = {minor_mapping},
181+
**kwargs
182+
)
183+
184+
""".lstrip()
185+
86186
def python_toolchain_build_file_content(
87187
prefix,
88188
python_version,
@@ -168,7 +268,7 @@ toolchains_repo = repository_rule(
168268
"python_version": attr.string(doc = "The Python version."),
169269
"set_python_version_constraint": attr.bool(doc = "if target_compatible_with for the toolchain should set the version constraint"),
170270
"user_repository_name": attr.string(doc = "what the user chose for the base name"),
171-
"_rules_python_workspace": attr.label(default = Label("//:MODULE.bazel")),
271+
"_rules_python_workspace": attr.label(default = Label("//:WORKSPACE")),
172272
},
173273
)
174274

@@ -204,7 +304,7 @@ actions.""",
204304
mandatory = True,
205305
doc = "The base name for all created repositories, like 'python38'.",
206306
),
207-
"_rules_python_workspace": attr.label(default = Label("//:MODULE.bazel")),
307+
"_rules_python_workspace": attr.label(default = Label("//:WORKSPACE")),
208308
},
209309
environ = [REPO_DEBUG_ENV_VAR],
210310
)
@@ -352,7 +452,37 @@ Major.Minor.Micro format. Keyed by index in `platforms`.
352452
""",
353453
),
354454
"_rule_name": attr.string(default = "host_compatible_python_repo"),
355-
"_rules_python_workspace": attr.label(default = Label("//:MODULE.bazel")),
455+
"_rules_python_workspace": attr.label(default = Label("//:WORKSPACE")),
456+
},
457+
)
458+
459+
def _multi_toolchain_aliases_impl(rctx):
460+
rules_python = rctx.attr._rules_python_workspace.repo_name
461+
462+
for python_version, repository_name in rctx.attr.python_versions.items():
463+
file = "{}/defs.bzl".format(python_version)
464+
rctx.file(file, content = _MULTI_TOOLCHAIN_ALIASES_DEFS_TEMPLATE.format(
465+
repository_name = repository_name,
466+
name = rctx.attr.name,
467+
python_version = python_version,
468+
rules_python = rules_python,
469+
))
470+
rctx.file("{}/BUILD.bazel".format(python_version), "")
471+
472+
pip_bzl = _MULTI_TOOLCHAIN_ALIASES_PIP_TEMPLATE.format(
473+
python_versions = rctx.attr.python_versions.keys(),
474+
minor_mapping = render.indent(render.dict(rctx.attr.minor_mapping), indent = " " * 8).lstrip(),
475+
rules_python = rules_python,
476+
)
477+
rctx.file("pip.bzl", content = pip_bzl)
478+
rctx.file("BUILD.bazel", "")
479+
480+
multi_toolchain_aliases = repository_rule(
481+
_multi_toolchain_aliases_impl,
482+
attrs = {
483+
"minor_mapping": attr.string_dict(doc = "The mapping between `X.Y` and `X.Y.Z` python version values"),
484+
"python_versions": attr.string_dict(doc = "The Python versions."),
485+
"_rules_python_workspace": attr.label(default = Label("//:WORKSPACE")),
356486
},
357487
)
358488

python/repositories.bzl

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,10 @@ load(
2121
_is_standalone_interpreter = "is_standalone_interpreter",
2222
)
2323
load("//python/private:py_repositories.bzl", _py_repositories = "py_repositories")
24-
load("//python/private:python_register_multi_toolchains.bzl", _python_register_multi_toolchains = "python_register_multi_toolchains")
2524
load("//python/private:python_register_toolchains.bzl", _python_register_toolchains = "python_register_toolchains")
2625
load("//python/private:python_repository.bzl", _python_repository = "python_repository")
2726

2827
py_repositories = _py_repositories
29-
python_register_multi_toolchains = _python_register_multi_toolchains
3028
python_register_toolchains = _python_register_toolchains
3129

3230
# Useful for documentation, but is not intended for public use - the python

0 commit comments

Comments
 (0)