| # Gazelle Plugin |
| |
| [Gazelle][gazelle] is a build file generator for Bazel projects. It can |
| create new `BUILD` or `BUILD.bazel` files for a project that |
| follows language conventions and update existing build files to include new |
| sources, dependencies, and options. |
| |
| [gazelle]: https://github.com/bazel-contrib/bazel-gazelle |
| |
| Bazel may run Gazelle using the Gazelle rule, or Gazelle may be installed and run |
| as a command line tool. |
| |
| The {gh-path}`gazelle` directory contains a plugin for Gazelle |
| that generates `BUILD` files content for Python code. When Gazelle is |
| run as a command line tool with this plugin, it embeds a Python interpreter |
| resolved during the plugin build. The behavior of the plugin is slightly |
| different with different version of the interpreter as the Python |
| `stdlib` changes with every minor version release. Distributors of Gazelle |
| binaries should, therefore, build a Gazelle binary for each OS+CPU |
| architecture+Minor Python version combination they are targeting. |
| |
| :::{note} |
| These instructions are for when you use [bzlmod][bzlmod]. Please refer to |
| older documentation that includes instructions on how to use Gazelle |
| without using bzlmod as your dependency manager. |
| ::: |
| |
| [bzlmod]: https://bazel.build/external/module |
| |
| Gazelle is non-destructive. It will try to leave your edits to `BUILD` |
| files alone, only making updates to `py_*` targets. However it **will |
| remove** dependencies that appear to be unused, so it's a good idea to check |
| in your work before running Gazelle so you can easily revert any changes it made. |
| |
| The `rules_python` extension assumes some conventions about your Python code. |
| These are noted in the subsequent documents, and might require changes to your |
| existing code. |
| |
| Note that the `gazelle` program has multiple commands. At present, only |
| the `update` command (the default) does anything for Python code. |
| |
| |
| ```{toctree} |
| :maxdepth: 1 |
| installation_and_usage |
| directives |
| annotations |
| development |
| ``` |