refactor: move all re-exports to private/reexports.bzl (#739)
diff --git a/python/defs.bzl b/python/defs.bzl
index f3a74eb..88f28c5 100644
--- a/python/defs.bzl
+++ b/python/defs.bzl
@@ -12,16 +12,21 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-"""Core rules for building Python projects.
-
-Currently the definitions here are re-exports of the native rules, "blessed" to
-work under `--incompatible_load_python_rules_from_bzl`. As the native rules get
-migrated to Starlark, their implementations will be moved here.
+"""
+Core rules for building Python projects.
"""
load("@bazel_tools//tools/python:srcs_version.bzl", _find_requirements = "find_requirements")
load("@bazel_tools//tools/python:toolchain.bzl", _py_runtime_pair = "py_runtime_pair")
-load("//python/private:reexports.bzl", "internal_PyInfo", "internal_PyRuntimeInfo")
+load(
+ "//python/private:reexports.bzl",
+ "internal_PyInfo",
+ "internal_PyRuntimeInfo",
+ _py_binary = "py_binary",
+ _py_library = "py_library",
+ _py_runtime = "py_runtime",
+ _py_test = "py_test",
+)
# Exports of native-defined providers.
@@ -29,18 +34,6 @@
PyRuntimeInfo = internal_PyRuntimeInfo
-# The implementation of the macros and tagging mechanism follows the example
-# set by rules_cc and rules_java.
-
-_MIGRATION_TAG = "__PYTHON_RULES_MIGRATION_DO_NOT_USE_WILL_BREAK__"
-
-def _add_tags(attrs):
- if "tags" in attrs and attrs["tags"] != None:
- attrs["tags"] = attrs["tags"] + [_MIGRATION_TAG]
- else:
- attrs["tags"] = [_MIGRATION_TAG]
- return attrs
-
def _current_py_toolchain_impl(ctx):
toolchain = ctx.toolchains[ctx.attr._toolchain]
@@ -84,36 +77,6 @@
],
)
-def py_library(**attrs):
- """See the Bazel core [py_library](https://docs.bazel.build/versions/master/be/python.html#py_library) documentation.
-
- Args:
- **attrs: Rule attributes
- """
-
- # buildifier: disable=native-python
- native.py_library(**_add_tags(attrs))
-
-def py_binary(**attrs):
- """See the Bazel core [py_binary](https://docs.bazel.build/versions/master/be/python.html#py_binary) documentation.
-
- Args:
- **attrs: Rule attributes
- """
-
- # buildifier: disable=native-python
- native.py_binary(**_add_tags(attrs))
-
-def py_test(**attrs):
- """See the Bazel core [py_test](https://docs.bazel.build/versions/master/be/python.html#py_test) documentation.
-
- Args:
- **attrs: Rule attributes
- """
-
- # buildifier: disable=native-python
- native.py_test(**_add_tags(attrs))
-
def _py_import_impl(ctx):
# See https://github.com/bazelbuild/bazel/blob/0.24.0/src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonSemantics.java#L104 .
import_paths = [
@@ -164,18 +127,16 @@
},
)
-def py_runtime(**attrs):
- """See the Bazel core [py_runtime](https://docs.bazel.build/versions/master/be/python.html#py_runtime) documentation.
-
- Args:
- **attrs: Rule attributes
- """
-
- # buildifier: disable=native-python
- native.py_runtime(**_add_tags(attrs))
-
# Re-exports of Starlark-defined symbols in @bazel_tools//tools/python.
py_runtime_pair = _py_runtime_pair
find_requirements = _find_requirements
+
+py_library = _py_library
+
+py_binary = _py_binary
+
+py_test = _py_test
+
+py_runtime = _py_runtime
diff --git a/python/private/reexports.bzl b/python/private/reexports.bzl
index f827564..6ad9e0c 100644
--- a/python/private/reexports.bzl
+++ b/python/private/reexports.bzl
@@ -14,6 +14,10 @@
"""Internal re-exports of built-in symbols.
+Currently the definitions here are re-exports of the native rules, "blessed" to
+work under `--incompatible_load_python_rules_from_bzl`. As the native rules get
+migrated to Starlark, their implementations will be removed from here.
+
We want to re-export a built-in symbol as if it were defined in a Starlark
file, so that users can for instance do:
@@ -33,6 +37,18 @@
the original name.
"""
+# The implementation of the macros and tagging mechanism follows the example
+# set by rules_cc and rules_java.
+
+_MIGRATION_TAG = "__PYTHON_RULES_MIGRATION_DO_NOT_USE_WILL_BREAK__"
+
+def _add_tags(attrs):
+ if "tags" in attrs and attrs["tags"] != None:
+ attrs["tags"] = attrs["tags"] + [_MIGRATION_TAG]
+ else:
+ attrs["tags"] = [_MIGRATION_TAG]
+ return attrs
+
# Don't use underscore prefix, since that would make the symbol local to this
# file only. Use a non-conventional name to emphasize that this is not a public
# symbol.
@@ -41,3 +57,43 @@
# buildifier: disable=name-conventions
internal_PyRuntimeInfo = PyRuntimeInfo
+
+def py_library(**attrs):
+ """See the Bazel core [py_library](https://docs.bazel.build/versions/master/be/python.html#py_library) documentation.
+
+ Args:
+ **attrs: Rule attributes
+ """
+
+ # buildifier: disable=native-python
+ native.py_library(**_add_tags(attrs))
+
+def py_binary(**attrs):
+ """See the Bazel core [py_binary](https://docs.bazel.build/versions/master/be/python.html#py_binary) documentation.
+
+ Args:
+ **attrs: Rule attributes
+ """
+
+ # buildifier: disable=native-python
+ native.py_binary(**_add_tags(attrs))
+
+def py_test(**attrs):
+ """See the Bazel core [py_test](https://docs.bazel.build/versions/master/be/python.html#py_test) documentation.
+
+ Args:
+ **attrs: Rule attributes
+ """
+
+ # buildifier: disable=native-python
+ native.py_test(**_add_tags(attrs))
+
+def py_runtime(**attrs):
+ """See the Bazel core [py_runtime](https://docs.bazel.build/versions/master/be/python.html#py_runtime) documentation.
+
+ Args:
+ **attrs: Rule attributes
+ """
+
+ # buildifier: disable=native-python
+ native.py_runtime(**_add_tags(attrs))