trigger: model_decision description: rules_python-specific Bzlmod, PyPI, and rule usage invariants

rules_python Bzlmod & Rule Invariants

Unified @pypi Hub & pip.dep() Declarations (MODULE.bazel)

  • Declare pip.dep(name = "<pkg>") on the non-dev pip extension in MODULE.bazel (with "pypi" in use_repo(pip, "pypi", ...)) for every @pypi//<pkg> target referenced by non-test rules, macros, or BUILD files under python/** (directly or via alias).
  • Why: pip.dep() registers abstract PyPI package targets in the unified @pypi hub so downstream Bzlmod consumers do not fail during loading or analysis when <pkg> is absent from their pip.parse() lockfiles. Package names in pip.dep(name = "...") are normalized (hyphens and underscores map to the same name).