27 lines
793 B
Python
27 lines
793 B
Python
|
"""AST triggers that are used for fine-grained dependency handling."""
|
||
|
|
||
|
from __future__ import annotations
|
||
|
|
||
|
from typing import Final
|
||
|
|
||
|
# Used as a suffix for triggers to handle "from m import *" dependencies (see also
|
||
|
# make_wildcard_trigger)
|
||
|
|
||
|
WILDCARD_TAG: Final = "[wildcard]"
|
||
|
|
||
|
|
||
|
def make_trigger(name: str) -> str:
|
||
|
return f"<{name}>"
|
||
|
|
||
|
|
||
|
def make_wildcard_trigger(module: str) -> str:
|
||
|
"""Special trigger fired when any top-level name is changed in a module.
|
||
|
|
||
|
Note that this is different from a module trigger, as module triggers are only
|
||
|
fired if the module is created, deleted, or replaced with a non-module, whereas
|
||
|
a wildcard trigger is triggered for namespace changes.
|
||
|
|
||
|
This is used for "from m import *" dependencies.
|
||
|
"""
|
||
|
return f"<{module}{WILDCARD_TAG}>"
|