|
from __future__ import annotations |
|
|
|
import typing as t |
|
|
|
from .base import ANY |
|
from .base import default_namespace |
|
from .base import NamedSignal |
|
from .base import Namespace |
|
from .base import Signal |
|
from .base import signal |
|
|
|
__all__ = [ |
|
"ANY", |
|
"default_namespace", |
|
"NamedSignal", |
|
"Namespace", |
|
"Signal", |
|
"signal", |
|
] |
|
|
|
|
|
def __getattr__(name: str) -> t.Any: |
|
import warnings |
|
|
|
if name == "__version__": |
|
import importlib.metadata |
|
|
|
warnings.warn( |
|
"The '__version__' attribute is deprecated and will be removed in" |
|
" Blinker 1.9.0. Use feature detection or" |
|
" 'importlib.metadata.version(\"blinker\")' instead.", |
|
DeprecationWarning, |
|
stacklevel=2, |
|
) |
|
return importlib.metadata.version("blinker") |
|
|
|
if name == "receiver_connected": |
|
from .base import _receiver_connected |
|
|
|
warnings.warn( |
|
"The global 'receiver_connected' signal is deprecated and will be" |
|
" removed in Blinker 1.9. Use 'Signal.receiver_connected' and" |
|
" 'Signal.receiver_disconnected' instead.", |
|
DeprecationWarning, |
|
stacklevel=2, |
|
) |
|
return _receiver_connected |
|
|
|
if name == "WeakNamespace": |
|
from .base import _WeakNamespace |
|
|
|
warnings.warn( |
|
"'WeakNamespace' is deprecated and will be removed in Blinker 1.9." |
|
" Use 'Namespace' instead.", |
|
DeprecationWarning, |
|
stacklevel=2, |
|
) |
|
return _WeakNamespace |
|
|
|
raise AttributeError(name) |
|
|