From 6e489bb90e5efb55182956412205f2717f18c8eb Mon Sep 17 00:00:00 2001
From: Philipp Stephani
Date: Thu, 21 Aug 2025 12:09:48 +0200
Subject: [PATCH] Create bzl_library target for the generated types.bzl
In turn, this means that users can generate bzl_library targets for their
aspects.
---
examples/demo/BUILD.bazel | 10 ++++++++++
mypy/private/types.bzl | 20 ++++++++++++++++++++
2 files changed, 30 insertions(+)
diff --git a/examples/demo/BUILD.bazel b/examples/demo/BUILD.bazel
index fd30437..91769aa 100644
--- a/examples/demo/BUILD.bazel
+++ b/examples/demo/BUILD.bazel
@@ -1,3 +1,4 @@
+load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
load("@rules_uv//uv:pip.bzl", "pip_compile")
load("@rules_uv//uv:venv.bzl", "create_venv")
@@ -11,3 +12,12 @@ create_venv(
name = "venv",
requirements_txt = "requirements.txt",
)
+
+bzl_library(
+ name = "py",
+ srcs = ["py.bzl"],
+ deps = [
+ "@pip_types//:types",
+ "@rules_mypy//mypy",
+ ],
+)
diff --git a/mypy/private/types.bzl b/mypy/private/types.bzl
index 7a58694..51a2e92 100644
--- a/mypy/private/types.bzl
+++ b/mypy/private/types.bzl
@@ -14,11 +14,31 @@ def _render_build(rctx, types):
pip_requirements = rctx.attr.pip_requirements,
)
content += """load("@rules_mypy//mypy:py_type_library.bzl", "py_type_library")\n"""
+ content += 'load({bzl_library_bzl}, "bzl_library")\n'.format(
+ bzl_library_bzl = repr(str(Label("@bazel_skylib//:bzl_library.bzl"))),
+ )
for requirement in types:
content += _PY_TYPE_LIBRARY_TEMPLATE.format(
requirement = requirement,
raw = requirement.removeprefix("types-").removesuffix("-stubs"),
) + "\n"
+ content += '''bzl_library(
+ name = "types",
+ srcs = ["types.bzl"],
+ deps = [":requirements"],
+ visibility = ["//visibility:public"],
+)
+
+bzl_library(
+ name = "requirements",
+ srcs = [{requirements_bzl}],
+ deps = [{pip_bzl}],
+ visibility = ["//visibility:private"],
+)
+'''.format(
+ requirements_bzl = repr(str(rctx.attr.pip_requirements)),
+ pip_bzl = repr(str(Label("@rules_python//python:pip_bzl"))),
+ )
return content
def _render_types_bzl(rctx, types):