# Path: sigtools/wrappers.py
# def wrappers(obj):
#     """For introspection purposes, returns an iterable that yields each
#     wrapping function of obj(as done through `wrapper_decorator`, outermost
#     wrapper first.
# 
#     Continuing from the `wrapper_decorator` example::
# 
#         >>> list(wrappers.wrappers(as_list))
#         [<<function print_call at 0x7f28d721a950> with signature print_call(func, *args,
#          _show_return=True, **kwargs)>]
# 
#     """
#     while True:
#         try:
#             wrappers = obj._sigtools__wrappers
#         except AttributeError:
#             return
#         for wrapper in wrappers:
#             yield wrapper
#         obj = obj.__wrapped__
# 
# Path: sigtools/support.py
# def read_sig(sig_str, ret=_util.UNSET, *,
#              use_modifiers_annotate=False,
#              use_modifiers_posoargs=sys.version_info < (3, 8),
#              use_modifiers_kwoargs=False,
#     ):
# def func_code(names, return_annotation, annotations, posoarg_n,
#               kwoarg_n, params, use_modifiers_annotate,
#               pre='', name='func',
#     ):
# def make_func(source, locals=None, name='func', future_features=()):
# def f(sig_str, ret=_util.UNSET, *, pre='', locals=None, name='func', future_features=(), **kwargs):
# def s(*args, **kwargs):
# def func_from_sig(sig):
# def make_up_callsigs(sig, extra=2):
# def bind_callsig(sig, args, kwargs):
# def sort_callsigs(sig, callsigs):
# def test_func_sig_coherent(func, check_return=True, check_invalid=True):
# DEBUG_STDLIB=False
# 
# Path: sigtools/signatures.py

# 
# Path: sigtools/tests/util.py
# def conv_first_posarg(sig):
# def func_to_name(func):
# def transform_exp_sources(d, subject=None):
# def transform_real_sources(d):
#     def assertSigsEqual(self, found, expected, *args, **kwargs):
#     def assertSourcesEqual(self, found, expected, func=None, depth_order=False):
#     def downgrade_sig(self, sig):
# class SignatureTests(unittest.TestCase):


from sigtools import wrappers, support, signatures
from sigtools.tests.util import tup, Fixtures

    @tup('a, b, j, k, l', (1, 2, 3, 4, 5), {}, (1, 2, (3, 4, 5)),
         {0: 'jkl', '_deco_all':'ab', '+depths': ['_deco_all', 'func']},
         [_deco_all])
    @_deco_all
    def func(j, k, l):
        return j, k, l

    @_deco_all
    def _method(self, n, o):
        return self, n, o

    def test_bound_wrapped_repr(self):
        repr(self._method)

    def test_bound(self):
        self._test(
            self._method, 'a, b, n, o',
            (1, 2, 3, 4), {}, (1, 2, (self, 3, 4)),
            {0: 'no', '_deco_all': 'ab', '+depths': ['_deco_all', '_method']},
            [self._deco_all])

    @staticmethod
    @_deco_all
    def _static(d, e, f):
        raise NotImplementedError

    def test_wrapped_repr(self):
        repr(self._static)


# Path: sigtools/wrappers.py
# def wrappers(obj):
#     """For introspection purposes, returns an iterable that yields each
#     wrapping function of obj(as done through `wrapper_decorator`, outermost
#     wrapper first.
# 
#     Continuing from the `wrapper_decorator` example::
# 
#         >>> list(wrappers.wrappers(as_list))
#         [<<function print_call at 0x7f28d721a950> with signature print_call(func, *args,
#          _show_return=True, **kwargs)>]
# 
#     """
#     while True:
#         try:
#             wrappers = obj._sigtools__wrappers
#         except AttributeError:
#             return
#         for wrapper in wrappers:
#             yield wrapper
#         obj = obj.__wrapped__
# 
# Path: sigtools/support.py
# def read_sig(sig_str, ret=_util.UNSET, *,
#              use_modifiers_annotate=False,
#              use_modifiers_posoargs=sys.version_info < (3, 8),
#              use_modifiers_kwoargs=False,
#     ):
# def func_code(names, return_annotation, annotations, posoarg_n,
#               kwoarg_n, params, use_modifiers_annotate,
#               pre='', name='func',
#     ):
# def make_func(source, locals=None, name='func', future_features=()):
# def f(sig_str, ret=_util.UNSET, *, pre='', locals=None, name='func', future_features=(), **kwargs):
# def s(*args, **kwargs):
# def func_from_sig(sig):
# def make_up_callsigs(sig, extra=2):
# def bind_callsig(sig, args, kwargs):
# def sort_callsigs(sig, callsigs):
# def test_func_sig_coherent(func, check_return=True, check_invalid=True):
# DEBUG_STDLIB=False
# 
# Path: sigtools/signatures.py

# 
# Path: sigtools/tests/util.py
# def conv_first_posarg(sig):
# def func_to_name(func):
# def transform_exp_sources(d, subject=None):
# def transform_real_sources(d):
#     def assertSigsEqual(self, found, expected, *args, **kwargs):
#     def assertSourcesEqual(self, found, expected, func=None, depth_order=False):
#     def downgrade_sig(self, sig):
# class SignatureTests(unittest.TestCase):


# Path: sigtools/tests/test_decorator.py
from sigtools import wrappers, support, signatures
from sigtools.tests.util import tup, Fixtures


    @tup('a, b, j, k, l', (1, 2, 3, 4, 5), {}, (1, 2, (3, 4, 5)),
         {0: 'jkl', '_deco_all':'ab', '+depths': ['_deco_all', 'func']},
         [_deco_all])
    @_deco_all
    def func(j, k, l):
        return j, k, l

    @_deco_all
    def _method(self, n, o):
        return self, n, o

    def test_bound_wrapped_repr(self):
        repr(self._method)

    def test_bound(self):
        self._test(
            self._method, 'a, b, n, o',
            (1, 2, 3, 4), {}, (1, 2, (self, 3, 4)),
            {0: 'no', '_deco_all': 'ab', '+depths': ['_deco_all', '_method']},
            [self._deco_all])

    @staticmethod
    @_deco_all
    def _static(d, e, f):
        raise NotImplementedError

    def test_wrapped_repr(self):
        repr(self._static)


    @wrappers.decorator