trigger.py 793 B

1234567891011121314151617181920212223242526
  1. """AST triggers that are used for fine-grained dependency handling."""
  2. from __future__ import annotations
  3. from typing import Final
  4. # Used as a suffix for triggers to handle "from m import *" dependencies (see also
  5. # make_wildcard_trigger)
  6. WILDCARD_TAG: Final = "[wildcard]"
  7. def make_trigger(name: str) -> str:
  8. return f"<{name}>"
  9. def make_wildcard_trigger(module: str) -> str:
  10. """Special trigger fired when any top-level name is changed in a module.
  11. Note that this is different from a module trigger, as module triggers are only
  12. fired if the module is created, deleted, or replaced with a non-module, whereas
  13. a wildcard trigger is triggered for namespace changes.
  14. This is used for "from m import *" dependencies.
  15. """
  16. return f"<{module}{WILDCARD_TAG}>"