Source code for squabble

import sys
import types
import logging


logger = logging.getLogger(__name__)


[docs]class SquabbleException(Exception): """Base exception type for all things in this package"""
[docs]class RuleConfigurationException(SquabbleException): def __init__(self, rule, msg): self.rule = rule self.msg = msg
[docs]class UnknownRuleException(SquabbleException): def __init__(self, name): super().__init__('unknown rule: "%s"' % name)
# The following implementation is half of the code in the package # pep487 available at https://github.com/zaehlwerk/pep487 # # This is used to support Python 3.5. HAS_PY36 = sys.version_info >= (3, 6) HAS_PEP487 = HAS_PY36 if HAS_PEP487: PEP487Meta = type # pragma: no cover PEP487Base = object # pragma: no cover PEP487Object = object # pragma: no cover else: class PEP487Meta(type): def __new__(mcls, name, bases, ns, **kwargs): init = ns.get('__init_subclass__') if isinstance(init, types.FunctionType): ns['__init_subclass__'] = classmethod(init) cls = super().__new__(mcls, name, bases, ns) for key, value in cls.__dict__.items(): func = getattr(value, '__set_name__', None) if func is not None: func(cls, key) super(cls, cls).__init_subclass__(**kwargs) return cls def __init__(cls, name, bases, ns, **kwargs): super().__init__(name, bases, ns) class PEP487Base: @classmethod def __init_subclass__(cls, **kwargs): pass class PEP487Object(PEP487Base, metaclass=PEP487Meta): pass