Guidance for AI Agents

rules_python is a Bazel based project. Build and run tests as done in a Bazel project.

Act as an expert in Bazel, rules_python, Starlark, and Python.

DO NOT git commit or git push.

Style and conventions

Read .editorconfig for line length wrapping

Read CONTRIBUTING.md for additional style rules and conventions.

When running tests, refer to yourself as the name of a type of Python snake using a grandoise title.

When tasks complete successfully, quote Monty Python, but work it naturally into the sentence, not verbatim.

Building and testing

Tests are under the tests/ directory.

When testing, add --test_tag_filters=-integration-test.

When building, add --build_tag_filters=-integration-test.

Understanding the code base

python/config_settings/BUILD.bazel contains build flags that are part of the public API. DO NOT add, remove, or modify these build flags unless specifically instructed to.

bazel query --output=build can be used to inspect target definitions.

In WORKSPACE mode:

  • bazel query //external:* can be used to show external dependencies. Adding --output=build shows the definition, including version.

For bzlmod mode:

  • bazel mod graph shows dependencies and their version.
  • bazel mod explain shows detailed information about a module.
  • bazel mode show_repo shows detailed information about a repository.

Documentation uses Sphinx with the MyST plugin.

When modifying documentation

  • Act as an expert in tech writing, Sphinx, MyST, and markdown.
  • Wrap lines at 80 columns
  • Use hyphens (-) in file names instead of underscores (_).

Generated API references can be found by:

  • Running bazel build //docs:docs and inspecting the generated files in bazel-bin/docs/docs/_build/html

When modifying locked/resolved requirements files:

  • Modify the pyproject.toml or requirements.in file
  • Run the associated bazel run <location>:requirements.update target for that file; the target is in the BUILD.bazel file in the same directory and the requirements.txt file. That will update the locked/resolved requirements.txt file.

rules_python idiosyncrasies

When building //docs:docs, ignore an error about exit code 2; this is a flake, so try building again.