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):