from decopatch.utils_modes import DECORATED, WRAPPED, F_ARGS, F_KWARGS, InvalidSignatureError
from decopatch.utils_disambiguation import FirstArgDisambiguation, with_parenthesis, no_parenthesis, is_decorator_call
from decopatch.utils_calls import AmbiguousFirstArgumentTypeError, InvalidMandatoryArgError

from decopatch.main import function_decorator, class_decorator, decorator

try:
    # -- Distribution mode: import from _version.py generated by setuptools_scm during release
    from ._version import version as __version__
except ImportError:
    # -- Source mode: use setuptools_scm to get the current version from src using git
    from setuptools_scm import get_version as _gv
    from os import path as _path
    __version__ = _gv(_path.join(_path.dirname(__file__), _path.pardir))

__all__ = [
    '__version__',
    # submodules
    'main', 'utils_disambiguation', 'utils_modes', 'utils_calls',
    # symbols
    'DECORATED', 'WRAPPED', 'F_ARGS', 'F_KWARGS', 'InvalidSignatureError',
    'FirstArgDisambiguation', 'with_parenthesis', 'no_parenthesis',
    'AmbiguousFirstArgumentTypeError', 'InvalidMandatoryArgError',
    'function_decorator', 'class_decorator', 'decorator', 'is_decorator_call'
]
