# 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", )