| # This file replaces the WORKSPACE file when using bzlmod. |
| |
| # module declares certain properties of the Bazel module represented by the current Bazel repo. |
| # These properties are either essential metadata of the module (such as the name and version), |
| # or affect behavior of the current module and its dependents. |
| module( |
| name = "example_bzlmod_build_file_generation", |
| version = "0.0.0", |
| compatibility_level = 1, |
| ) |
| |
| # The following stanza defines the dependency rules_python. |
| # For typical setups you set the version. |
| # See the releases page for available versions. |
| # https://github.com/bazelbuild/rules_python/releases |
| bazel_dep(name = "rules_python", version = "0.0.0") |
| |
| # The following loads rules_python from the file system. |
| # For usual setups you should remove this local_path_override block. |
| local_path_override( |
| module_name = "rules_python", |
| path = "../..", |
| ) |
| |
| # The following stanza defines the dependency rules_python_gazelle_plugin. |
| # For typical setups you set the version. |
| # See the releases page for available versions. |
| # https://github.com/bazelbuild/rules_python/releases |
| bazel_dep(name = "rules_python_gazelle_plugin", version = "0.0.0") |
| |
| # The following starlark loads the gazelle plugin from the file system. |
| # For usual setups you should remove this local_path_override block. |
| local_path_override( |
| module_name = "rules_python_gazelle_plugin", |
| path = "../../gazelle", |
| ) |
| |
| # The following stanza defines the dependency for gazelle |
| # See here https://github.com/bazelbuild/bazel-gazelle/releases/ for the |
| # latest version. |
| bazel_dep(name = "gazelle", version = "0.30.0", repo_name = "bazel_gazelle") |
| |
| # The following stanze returns a proxy object representing a module extension; |
| # its methods can be invoked to create module extension tags. |
| python = use_extension("@rules_python//python/extensions:python.bzl", "python") |
| |
| # We next initialize the python toolchain using the extension. |
| # You can set different Python versions in this block. |
| python.toolchain( |
| configure_coverage_tool = True, |
| is_default = True, |
| python_version = "3.9", |
| ) |
| |
| # Use the extension, pip.parse, to call the `pip_repository` rule that invokes |
| # `pip`, with `incremental` set. The pip call accepts a locked/compiled |
| # requirements file and installs the dependencies listed within. |
| # Those dependencies become available in a generated `requirements.bzl` file. |
| # You can instead check this `requirements.bzl` file into your repo. |
| # Because this project has different requirements for windows vs other |
| # operating systems, we have requirements for each. |
| pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip") |
| pip.parse( |
| hub_name = "pip", |
| # The interpreter_target attribute points to the interpreter to |
| # use for running pip commands to download the packages in the |
| # requirements file. |
| # As a best practice, we use the same interpreter as the toolchain |
| # that was configured above; this ensures the same Python version |
| # is used for both resolving dependencies and running tests/binaries. |
| # If this isn't specified, then you'll get whatever is locally installed |
| # on your system. |
| python_version = "3.9", |
| requirements_lock = "//:requirements_lock.txt", |
| requirements_windows = "//:requirements_windows.txt", |
| ) |
| |
| # Imports the pip toolchain generated by the given module extension into the scope of the current module. |
| use_repo(pip, "pip") |
| |
| # This project includes a different module that is on the local file system. |
| # Add the module to this parent project. |
| bazel_dep(name = "other_module", version = "", repo_name = "our_other_module") |
| local_path_override( |
| module_name = "other_module", |
| path = "other_module", |
| ) |