| Richard Levasseur | 756264a | 2023-03-09 14:38:05 -0800 | [diff] [blame] | 1 | # Copyright 2023 The Bazel Authors. All rights reserved. |
| 2 | # |
| 3 | # Licensed under the Apache License, Version 2.0 (the "License"); |
| 4 | # you may not use this file except in compliance with the License. |
| 5 | # You may obtain a copy of the License at |
| 6 | # |
| 7 | # http://www.apache.org/licenses/LICENSE-2.0 |
| 8 | # |
| 9 | # Unless required by applicable law or agreed to in writing, software |
| 10 | # distributed under the License is distributed on an "AS IS" BASIS, |
| 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 12 | # See the License for the specific language governing permissions and |
| 13 | # limitations under the License. |
| 14 | |
| 15 | """Public entry point for py_library.""" |
| 16 | |
| Richard Levasseur | d8966b8 | 2023-09-25 10:39:38 -0700 | [diff] [blame] | 17 | load("@rules_python_internal//:rules_python_config.bzl", "config") |
| Richard Levasseur | 7c5e7cf | 2024-10-29 20:32:35 -0700 | [diff] [blame] | 18 | load("//python/private:py_library_macro.bzl", _starlark_py_library = "py_library") |
| Richard Levasseur | 754b26a | 2023-10-08 12:40:52 -0700 | [diff] [blame] | 19 | load("//python/private:register_extension_info.bzl", "register_extension_info") |
| Richard Levasseur | 3b9c85e | 2023-03-23 12:59:58 -0700 | [diff] [blame] | 20 | load("//python/private:util.bzl", "add_migration_tag") |
| Richard Levasseur | d8966b8 | 2023-09-25 10:39:38 -0700 | [diff] [blame] | 21 | |
| 22 | # buildifier: disable=native-python |
| 23 | _py_library_impl = _starlark_py_library if config.enable_pystar else native.py_library |
| Richard Levasseur | 756264a | 2023-03-09 14:38:05 -0800 | [diff] [blame] | 24 | |
| Richard Levasseur | 3b9c85e | 2023-03-23 12:59:58 -0700 | [diff] [blame] | 25 | def py_library(**attrs): |
| Richard Levasseur | 3b183bf | 2024-08-10 15:35:33 -0700 | [diff] [blame] | 26 | """Creates an executable Python program. |
| 27 | |
| 28 | This is the public macro wrapping the underlying rule. Args are forwarded |
| 29 | on as-is unless otherwise specified. See |
| Richard Levasseur | dd5db65 | 2024-10-15 16:33:37 -0700 | [diff] [blame] | 30 | {rule}`py_library` for detailed attribute documentation. |
| Richard Levasseur | 3b183bf | 2024-08-10 15:35:33 -0700 | [diff] [blame] | 31 | |
| 32 | This macro affects the following args: |
| 33 | * `srcs_version`: cannot be `PY2` or `PY2ONLY` |
| 34 | * `tags`: May have special marker values added, if not already present. |
| Richard Levasseur | 3b9c85e | 2023-03-23 12:59:58 -0700 | [diff] [blame] | 35 | |
| 36 | Args: |
| Richard Levasseur | dd5db65 | 2024-10-15 16:33:37 -0700 | [diff] [blame] | 37 | **attrs: Rule attributes forwarded onto {rule}`py_library`. |
| Richard Levasseur | 3b9c85e | 2023-03-23 12:59:58 -0700 | [diff] [blame] | 38 | """ |
| 39 | if attrs.get("srcs_version") in ("PY2", "PY2ONLY"): |
| 40 | fail("Python 2 is no longer supported: https://github.com/bazelbuild/rules_python/issues/886") |
| 41 | |
| Richard Levasseur | d8966b8 | 2023-09-25 10:39:38 -0700 | [diff] [blame] | 42 | _py_library_impl(**add_migration_tag(attrs)) |
| Richard Levasseur | 754b26a | 2023-10-08 12:40:52 -0700 | [diff] [blame] | 43 | |
| 44 | register_extension_info( |
| 45 | extension = py_library, |
| 46 | label_regex_for_dep = "{extension_name}", |
| 47 | ) |