summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcelo Trylesinski <marcelotryle@gmail.com>2022-06-03 08:43:36 +0200
committerGitHub <noreply@github.com>2022-06-03 08:43:36 +0200
commit1a7b9c490ba9a8ab0daa3dbecb22908799d9bfc7 (patch)
tree6e46d5edcfd182f22bce9a87625837a99d519c37
parentc4829754db0f0a5b10265309d327875694d33ab4 (diff)
downloadkombu-1a7b9c490ba9a8ab0daa3dbecb22908799d9bfc7.tar.gz
Annotate `matcher.py` (#1532)
-rw-r--r--kombu/matcher.py31
-rw-r--r--setup.cfg1
2 files changed, 21 insertions, 11 deletions
diff --git a/kombu/matcher.py b/kombu/matcher.py
index 583fdc4d..498b443d 100644
--- a/kombu/matcher.py
+++ b/kombu/matcher.py
@@ -4,10 +4,13 @@ from __future__ import annotations
from fnmatch import fnmatch
from re import match as rematch
+from typing import Callable, Dict, Optional, cast
from .utils.compat import entrypoints
from .utils.encoding import bytes_to_str
+MatcherFunction = Callable[[str, str], bool]
+
class MatcherNotInstalled(Exception):
"""Matcher not installed/found."""
@@ -19,15 +22,15 @@ class MatcherRegistry:
MatcherNotInstalled = MatcherNotInstalled
matcher_pattern_first = ["pcre", ]
- def __init__(self):
- self._matchers = {}
- self._default_matcher = None
+ def __init__(self) -> None:
+ self._matchers: Dict[str, MatcherFunction] = {}
+ self._default_matcher: Optional[MatcherFunction] = None
- def register(self, name, matcher):
+ def register(self, name: str, matcher: MatcherFunction) -> None:
"""Add matcher by name to the registry."""
self._matchers[name] = matcher
- def unregister(self, name):
+ def unregister(self, name: str) -> None:
"""Remove matcher by name from the registry."""
try:
self._matchers.pop(name)
@@ -36,7 +39,7 @@ class MatcherRegistry:
f'No matcher installed for {name}'
)
- def _set_default_matcher(self, name):
+ def _set_default_matcher(self, name: str) -> None:
"""Set the default matching method.
:param name: The name of the registered matching method.
@@ -53,7 +56,13 @@ class MatcherRegistry:
f'No matcher installed for {name}'
)
- def match(self, data, pattern, matcher=None, matcher_kwargs=None):
+ def match(
+ self,
+ data: bytes,
+ pattern: bytes,
+ matcher: Optional[str] = None,
+ matcher_kwargs: Optional[Dict[str, str]] = None
+ ) -> bool:
"""Call the matcher."""
if matcher and not self._matchers.get(matcher):
raise self.MatcherNotInstalled(
@@ -99,7 +108,7 @@ match = registry.match
.. function:: register(name, matcher):
Register a new matching method.
- :param name: A convience name for the mathing method.
+ :param name: A convenient name for the mathing method.
:param matcher: A method that will be passed data and pattern.
"""
register = registry.register
@@ -113,14 +122,14 @@ register = registry.register
unregister = registry.unregister
-def register_glob():
+def register_glob() -> None:
"""Register glob into default registry."""
registry.register('glob', fnmatch)
-def register_pcre():
+def register_pcre() -> None:
"""Register pcre into default registry."""
- registry.register('pcre', rematch)
+ registry.register('pcre', cast(MatcherFunction, rematch))
# Register the base matching methods.
diff --git a/setup.cfg b/setup.cfg
index 590a8935..fd0b96db 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -41,6 +41,7 @@ files =
kombu/transport/__init__.py,
kombu/transport/virtual/__init__.py,
kombu/utils/__init__.py,
+ kombu/matcher.py,
kombu/asynchronous/semaphore.py