# Path: sigtools/_util.py
# def get_funcsigs():
#     def __repr__(self):
# def noop(func):
# def qualname(obj):
#     def __init__(self, *args, **kwargs):
#             def cg(func, **kwargs):
#     def __get__(self, instance, owner):
# def safe_get(obj, instance, owner):
# def iter_call(obj):
# def get_introspectable(obj, forged=True, af_hint=True, partial=True):
# def get_ast(func):
# class _Unset(object):
# class OverrideableDataDesc(object):
# UNSET = _Unset()
# 
# Path: sigtools/modifiers.py
# class _PokTranslator(_util.OverrideableDataDesc):
# class annotate(object):
#     def __new__(cls, func=None, posoargs=(), kwoargs=(), **kwargs):
#     def __init__(self, func, posoargs=(), kwoargs=(), **kwargs):
#     def _merge_other(self, other):
#     def _prepare(self):
#     def _sigtools__autoforwards_hint(self, func):
#     def __call__(self, *args, **kwargs):
#     def parameters(self):
#     def __repr__(self):
# def kwoargs(start=None, *kwoarg_names):
# def _kwoargs_start(start, _kwoargs, func, *args, **kwargs):
# def posoargs(end=None, *posoarg_names):
# def _posoargs_end(end, _posoargs, func, *args, **kwargs):
# def autokwoargs(func=None, exceptions=()):
# def _autokwoargs(exceptions, func):
#     def __init__(self, __return_annotation=_util.UNSET, **annotations):
#     def __call__(self, obj):
#     def __repr__(self):
# 
# Path: sigtools/signatures.py

# 
# Path: sigtools/_specifiers.py
# def forged_signature(obj, auto=True, args=(), kwargs={}):


from functools import partial, update_wrapper
from sigtools import _util, modifiers, signatures, _specifiers
-------------------------------------------------------------------

The ``forwards_to_*`` decorators from this module will leave a "note" on the
decorated object for `sigtools.specifiers.signature` to pick up. These "notes"
tell `signature` in which way the signature of the examinated object
should be crafted. The ``forwards_to_*`` decorators here will help you tell
introspection or documentation tools what the ``*args`` and ``**kwargs``
parameters stand for in your function if it forwards them to another callable.
This should cover most use cases, but you can use `forger_function` or
`set_signature_forger` to create your own.

.. |forwards_params| replace::
    See :ref:`forwards-pick` for more information on the parameters.

"""



__all__ = [
    'signature',
    'forwards_to_function', 'forwards_to_method',
    'forwards_to_super', 'apply_forwards_to_super',
    'forwards',
    'forger_function', 'set_signature_forger', 'as_forged'
    ]


_kwowr = modifiers.kwoargs('obj')



# Path: sigtools/_util.py
# def get_funcsigs():
#     def __repr__(self):
# def noop(func):
# def qualname(obj):
#     def __init__(self, *args, **kwargs):
#             def cg(func, **kwargs):
#     def __get__(self, instance, owner):
# def safe_get(obj, instance, owner):
# def iter_call(obj):
# def get_introspectable(obj, forged=True, af_hint=True, partial=True):
# def get_ast(func):
# class _Unset(object):
# class OverrideableDataDesc(object):
# UNSET = _Unset()
# 
# Path: sigtools/modifiers.py
# class _PokTranslator(_util.OverrideableDataDesc):
# class annotate(object):
#     def __new__(cls, func=None, posoargs=(), kwoargs=(), **kwargs):
#     def __init__(self, func, posoargs=(), kwoargs=(), **kwargs):
#     def _merge_other(self, other):
#     def _prepare(self):
#     def _sigtools__autoforwards_hint(self, func):
#     def __call__(self, *args, **kwargs):
#     def parameters(self):
#     def __repr__(self):
# def kwoargs(start=None, *kwoarg_names):
# def _kwoargs_start(start, _kwoargs, func, *args, **kwargs):
# def posoargs(end=None, *posoarg_names):
# def _posoargs_end(end, _posoargs, func, *args, **kwargs):
# def autokwoargs(func=None, exceptions=()):
# def _autokwoargs(exceptions, func):
#     def __init__(self, __return_annotation=_util.UNSET, **annotations):
#     def __call__(self, obj):
#     def __repr__(self):
# 
# Path: sigtools/signatures.py

# 
# Path: sigtools/_specifiers.py
# def forged_signature(obj, auto=True, args=(), kwargs={}):


# Path: sigtools/specifiers.py
from functools import partial, update_wrapper
from sigtools import _util, modifiers, signatures, _specifiers

-------------------------------------------------------------------

The ``forwards_to_*`` decorators from this module will leave a "note" on the
decorated object for `sigtools.specifiers.signature` to pick up. These "notes"
tell `signature` in which way the signature of the examinated object
should be crafted. The ``forwards_to_*`` decorators here will help you tell
introspection or documentation tools what the ``*args`` and ``**kwargs``
parameters stand for in your function if it forwards them to another callable.
This should cover most use cases, but you can use `forger_function` or
`set_signature_forger` to create your own.

.. |forwards_params| replace::
    See :ref:`forwards-pick` for more information on the parameters.

"""



__all__ = [
    'signature',
    'forwards_to_function', 'forwards_to_method',
    'forwards_to_super', 'apply_forwards_to_super',
    'forwards',
    'forger_function', 'set_signature_forger', 'as_forged'
    ]


_kwowr = modifiers.kwoargs('obj')



signature = _specifiers.forged_signature