# 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/_specifiers.py
# def forged_signature(obj, auto=True, args=(), kwargs={}):
# 
# 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):


import sys
from repeated_test import options
from sigtools import support, _specifiers
from sigtools.tests.util import Fixtures
    annotations = "a: 1", """
        def func(a: 1):
            return {'a': a}
    """

    annotations_modifiers = "a: 1", """
        @modifiers.annotate(a=1)
        def func(a):
            return {'a': a}
    """, force_modifiers

    return_annotation = "a", """
        def func(a) -> 1:
            return {'a': a}
    """, {'ret': 1}

    return_annotation_modifiers = "a", """
        @modifiers.annotate(1)
        def func(a):
            return {'a': a}
    """, {**force_modifiers, 'ret': 1}

    return_and_parameter_annotation_modifiers = "a: 2", """
        @modifiers.annotate(1, a=2)
        def func(a):
            return {'a': a}
    """, {**force_modifiers, 'ret': 1}
    kwo_after_default = "a, b=1, *args, c, d, e=4", """
        @modifiers.kwoargs('c', 'd', 'e')
        def func(a, c, d, b=1, e=4, *args):

# 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/_specifiers.py
# def forged_signature(obj, auto=True, args=(), kwargs={}):
# 
# 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_support.py
import sys
from repeated_test import options
from sigtools import support, _specifiers
from sigtools.tests.util import Fixtures

    annotations = "a: 1", """
        def func(a: 1):
            return {'a': a}
    """

    annotations_modifiers = "a: 1", """
        @modifiers.annotate(a=1)
        def func(a):
            return {'a': a}
    """, force_modifiers

    return_annotation = "a", """
        def func(a) -> 1:
            return {'a': a}
    """, {'ret': 1}

    return_annotation_modifiers = "a", """
        @modifiers.annotate(1)
        def func(a):
            return {'a': a}
    """, {**force_modifiers, 'ret': 1}

    return_and_parameter_annotation_modifiers = "a: 2", """
        @modifiers.annotate(1, a=2)
        def func(a):
            return {'a': a}
    """, {**force_modifiers, 'ret': 1}
    kwo_after_default = "a, b=1, *args, c, d, e=4", """
        @modifiers.kwoargs('c', 'd', 'e')
        def func(a, c, d, b=1, e=4, *args):

            return {'a': a, 'b': b, 'c': c, 'd': d, 'e': e, 'args': args}