# Path: sigtools/signatures.py

# 
# 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/_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/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 signatures, support
from sigtools._util import funcsigs
from sigtools.tests.util import Fixtures
    hide_pos = '<b>', '<a>, <b>', 1
    hide_pos_pok = 'c', '<a>, b, c', 2

    eat_into_varargs = '*args', 'a, *args', 2

    name_pok_last = 'a, b', 'a, b, c', 0, 'c'
    name_pok = 'a, *, c', 'a, b, c', 0, 'b'
    name_pok_last_hide_va = 'a, b', 'a, b, c, *args', 0, 'c'
    name_pok_hide_va = 'a, *, c', 'a, b, c, *args', 0, 'b'

    name_kwo = 'a', 'a, *, b', 0, 'b'

    name_varkwargs = '**kwargs', '**kwargs', 0, 'a'
    name_varkwargs_hide = '', '**kwargs', 0, 'a', False, True

    hide_varargs = 'a, b, *, c', 'a, b, *args, c', 0, '', True, False
    eat_into_varargs_hide = '', 'a, *args', 2, '', True, False

    hide_varargs_absent = '', '', 0, '', True, False
    hide_varkwargs_absent = '', '', 0, '', False, True

    hide_args = '*, x', 'a, /, b, *, x', 0, '', False, False, True, False
    hide_args_starargs = (
        '*, x', 'a, /, b, *args, x', 0, '', False, False, True, False)

    hide_kwargs = (
        'a, /, *args', 'a, /, b, *args, c, **kwargs',
        0, '', False, False, False, True)



# Path: sigtools/signatures.py

# 
# 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/_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/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_mask.py
from sigtools import signatures, support
from sigtools._util import funcsigs
from sigtools.tests.util import Fixtures

    hide_pos = '<b>', '<a>, <b>', 1
    hide_pos_pok = 'c', '<a>, b, c', 2

    eat_into_varargs = '*args', 'a, *args', 2

    name_pok_last = 'a, b', 'a, b, c', 0, 'c'
    name_pok = 'a, *, c', 'a, b, c', 0, 'b'
    name_pok_last_hide_va = 'a, b', 'a, b, c, *args', 0, 'c'
    name_pok_hide_va = 'a, *, c', 'a, b, c, *args', 0, 'b'

    name_kwo = 'a', 'a, *, b', 0, 'b'

    name_varkwargs = '**kwargs', '**kwargs', 0, 'a'
    name_varkwargs_hide = '', '**kwargs', 0, 'a', False, True

    hide_varargs = 'a, b, *, c', 'a, b, *args, c', 0, '', True, False
    eat_into_varargs_hide = '', 'a, *args', 2, '', True, False

    hide_varargs_absent = '', '', 0, '', True, False
    hide_varkwargs_absent = '', '', 0, '', False, True

    hide_args = '*, x', 'a, /, b, *, x', 0, '', False, False, True, False
    hide_args_starargs = (
        '*, x', 'a, /, b, *args, x', 0, '', False, False, True, False)

    hide_kwargs = (
        'a, /, *args', 'a, /, b, *args, c, **kwargs',
        0, '', False, False, False, True)



class MaskRaiseTests(Fixtures):