diff --git a/bazel/common/proto_common.bzl b/bazel/common/proto_common.bzl index 7484bc8b9dc54..48e1ff2fa854b 100644 --- a/bazel/common/proto_common.bzl +++ b/bazel/common/proto_common.bzl @@ -337,6 +337,10 @@ def _toolchain_type(proto_lang_toolchain_info): else: return None +def _to_py_proto_name(name): + """Normalizes a proto name to be Python-safe (replacing '-' with '_' and '.' with '/').""" + return name.replace("-", "_").replace(".", "/") + proto_common = struct( compile = _compile, declare_generated_files = _declare_generated_files, @@ -344,6 +348,7 @@ proto_common = struct( experimental_should_generate_code = _experimental_should_generate_code, experimental_filter_sources = _experimental_filter_sources, get_import_path = _get_import_path, + to_py_proto_name = _to_py_proto_name, ProtoLangToolchainInfo = ProtoLangToolchainInfo, INCOMPATIBLE_ENABLE_PROTO_TOOLCHAIN_RESOLUTION = toolchains.INCOMPATIBLE_ENABLE_PROTO_TOOLCHAIN_RESOLUTION, INCOMPATIBLE_PASS_TOOLCHAIN_TYPE = True, diff --git a/bazel/private/oss/py_proto_library.bzl b/bazel/private/oss/py_proto_library.bzl index c4864307af0df..c2090d676b0fc 100644 --- a/bazel/private/oss/py_proto_library.bzl +++ b/bazel/private/oss/py_proto_library.bzl @@ -77,7 +77,7 @@ def _py_proto_aspect_impl(target, ctx): actions = ctx.actions, proto_info = proto_info, extension = "_pb2.py", - name_mapper = lambda name: name.replace("-", "_").replace(".", "/"), + name_mapper = proto_common.to_py_proto_name, ) # Generate pyi files @@ -85,7 +85,7 @@ def _py_proto_aspect_impl(target, ctx): actions = ctx.actions, proto_info = proto_info, extension = "_pb2.pyi", - name_mapper = lambda name: name.replace("-", "_").replace(".", "/"), + name_mapper = proto_common.to_py_proto_name, ) # Handles multiple repository and virtual import cases