Skip to content

Commit

Permalink
Expose nanobind's stubgen as a py_binary
Browse files Browse the repository at this point in the history
Adds `typing_extensions` as a unconditional dependency
for the stubgen target.

The plan is to wrap the py_binary into a nanobind stubgen
rule that lives in the same file as all other rules.
  • Loading branch information
nicholasjng committed Jul 18, 2024
1 parent 0656359 commit 848f539
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 1 deletion.
7 changes: 7 additions & 0 deletions BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -149,3 +149,10 @@ selects.config_setting_group(
":with_sizeopts",
],
)

py_binary(
name = "nanobind_stubgen",
srcs = ["@nanobind//:src/stubgen.py"],
main = "@nanobind//:src/stubgen.py",
deps = ["@pypi__typing_extensions//:lib"],
)
2 changes: 1 addition & 1 deletion MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ bazel_dep(name = "bazel_skylib", version = "1.6.1")

# Creates a `http_archive` for nanobind and robin-map.
internal_configure = use_extension("//:internal_configure.bzl", "internal_configure_extension")
use_repo(internal_configure, "nanobind")
use_repo(internal_configure, "nanobind", "pypi__typing_extensions")
8 changes: 8 additions & 0 deletions internal_configure.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,12 @@ def _internal_configure_extension_impl(_):
urls = ["https://github.com/wjakob/nanobind/archive/refs/tags/v%s.tar.gz" % nanobind_version],
)

typing_extensions_version = "4.12.2"
http_archive(
name = "pypi__typing_extensions",
build_file = "//:typing_extensions.BUILD",
strip_prefix = "typing_extensions-%s" % typing_extensions_version,
urls = ["https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-%s.tar.gz" % typing_extensions_version],
)

internal_configure_extension = module_extension(implementation = _internal_configure_extension_impl)
2 changes: 2 additions & 0 deletions nanobind.BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -52,3 +52,5 @@ cc_library(
"@rules_python//python/cc:current_py_cc_headers",
],
)

exports_files(["src/stubgen.py"])
38 changes: 38 additions & 0 deletions typing_extensions.BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
"""
A version of the Python sdist Bazel template found in
https://github.com/bazelbuild/rules_python/blob/main/python/private/pypi/deps.bzl ,
specialized on the ``typing_extensions`` package.

# Copyright 2023 The Bazel Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""

load("@rules_python//python:defs.bzl", "py_library")

package(default_visibility = ["//visibility:public"])

py_library(
name = "lib",
srcs = ["src/typing_extensions.py"],
data = [
"CHANGELOG.md",
"LICENSE",
"PKG-INFO",
"README.md",
"pyproject.toml",
],
# This makes the source directory a top-level in the Python import
# search path for anything that depends on this.
imports = ["src"],
)

0 comments on commit 848f539

Please sign in to comment.