Source code for pook.matchers.api

from .base import BaseMatcher
from .body import BodyMatcher
from .headers import HeaderExistsMatcher, HeadersMatcher
from .json import JSONMatcher
from .json_schema import JSONSchemaMatcher
from .method import MethodMatcher
from .path import PathMatcher
from .query import QueryMatcher, QueryParameterExistsMatcher
from .url import URLMatcher
from .xml import XMLMatcher

# Explicit symbols to export
__all__ = (
    "init",
    "add",
    "get",
    "matchers",
    "BaseMatcher",
    "MethodMatcher",
    "URLMatcher",
    "HeadersMatcher",
    "QueryMatcher",
    "PathMatcher",
    "BodyMatcher",
    "XMLMatcher",
    "JSONMatcher",
    "JSONSchemaMatcher",
    "QueryMatcher",
)

# List of built-in matchers
# This is intended to be mutable.
matchers = [
    MethodMatcher,
    URLMatcher,
    HeadersMatcher,
    HeaderExistsMatcher,
    QueryMatcher,
    PathMatcher,
    BodyMatcher,
    XMLMatcher,
    JSONMatcher,
    JSONSchemaMatcher,
    QueryMatcher,
    QueryParameterExistsMatcher,
]


[docs] def add(*matcher): """ Registers one or multiple matchers to be used by default from mocking engine. Arguments: *matcher (list[pook.BaseMatcher]): variadic matchers to add. """ [matchers.append(m) for m in matcher]
[docs] def get(name): """ Returns a matcher instance by class or alias name. Arguments: name (str): matcher class name or alias. Returns: matcher: found matcher instance, otherwise ``None``. """ for matcher in matchers: if matcher.__name__ == name or getattr(matcher, "name", None) == name: return matcher
[docs] def init(name, *args, **kwargs): """ Initializes a matcher instance passing variadic arguments to its constructor. Acts as a delegator proxy. Arguments: name (str): matcher class name or alias to execute. *args (mixed): variadic argument **kwargs (dict): key word arguments Returns: matcher: matcher instance. Raises: ValueError: if matcher was not found. """ matcher = get(name) if not matcher: raise ValueError(f"Cannot find matcher: {name}") return matcher(*args, **kwargs)