예제 #1
0
def test_define_function_signature_validates_function_name():
    with raises(ValueError):
        define_function_signature(
            'hello world', None,
            ArgSpec(args=['a', 'b'],
                    varargs=None,
                    keywords=None,
                    defaults=None))
예제 #2
0
def test_define_function_signature_validates_function_name():
    with raises(ValueError):
        define_function_signature(
            'hello world', None,
            FullArgSpec(args=['a', 'b'],
                        varargs=None,
                        varkw=None,
                        defaults=None,
                        kwonlyargs=[],
                        kwonlydefaults=None,
                        annotations={}))
예제 #3
0
def test_define_function_signature_works_with_conflicts():
    def accepts_everything(*args, **kwargs):
        pass

    define_function_signature(
        'hello', 'A docstring for hello',
        ArgSpec(args=('f', ), varargs=None, keywords=None,
                defaults=None))(accepts_everything)(1)

    define_function_signature(
        'hello', 'A docstring for hello',
        ArgSpec(args=(), varargs='f', keywords=None,
                defaults=None))(accepts_everything)(1)

    define_function_signature(
        'hello', 'A docstring for hello',
        ArgSpec(args=(), varargs=None, keywords='f',
                defaults=None))(accepts_everything)()

    define_function_signature(
        'hello', 'A docstring for hello',
        ArgSpec(args=('f', 'f_3'),
                varargs='f_1',
                keywords='f_2',
                defaults=None))(accepts_everything)(1, 2)
예제 #4
0
def test_define_function_signature_works_with_conflicts():
    def accepts_everything(*args, **kwargs):
        pass

    define_function_signature(
        "hello",
        "A docstring for hello",
        FullArgSpec(
            args=("f", ),
            varargs=None,
            varkw=None,
            defaults=None,
            kwonlyargs=[],
            kwonlydefaults=None,
            annotations={},
        ),
    )(accepts_everything)(1)

    define_function_signature(
        "hello",
        "A docstring for hello",
        FullArgSpec(
            args=(),
            varargs="f",
            varkw=None,
            defaults=None,
            kwonlyargs=[],
            kwonlydefaults=None,
            annotations={},
        ),
    )(accepts_everything)(1)

    define_function_signature(
        "hello",
        "A docstring for hello",
        FullArgSpec(
            args=(),
            varargs=None,
            varkw="f",
            defaults=None,
            kwonlyargs=[],
            kwonlydefaults=None,
            annotations={},
        ),
    )(accepts_everything)()

    define_function_signature(
        "hello",
        "A docstring for hello",
        FullArgSpec(
            args=("f", "f_3"),
            varargs="f_1",
            varkw="f_2",
            defaults=None,
            kwonlyargs=[],
            kwonlydefaults=None,
            annotations={},
        ),
    )(accepts_everything)(1, 2)
예제 #5
0
def test_define_function_signature_validates_arguments():
    with raises(ValueError):
        define_function_signature(
            "hello_world",
            None,
            FullArgSpec(
                args=["a b"],
                varargs=None,
                varkw=None,
                defaults=None,
                kwonlyargs=[],
                kwonlydefaults=None,
                annotations={},
            ),
        )
예제 #6
0
def test_copying_preserves_argspec(f):
    af = getargspec(f)
    t = define_function_signature(
        'foo', 'docstring', getargspec(f))(universal_acceptor)
    at = getargspec(t)
    assert af.args == at.args
    assert af.varargs == at.varargs
    assert af.keywords == at.keywords
    assert len(af.defaults or ()) == len(at.defaults or ())
예제 #7
0
def test_copying_preserves_argspec(f):
    af = getfullargspec(f)
    t = define_function_signature('foo', 'docstring', af)(universal_acceptor)
    at = getfullargspec(t)
    assert af.args == at.args
    assert af.varargs == at.varargs
    assert af.varkw == at.varkw
    assert len(af.defaults or ()) == len(at.defaults or ())
    assert af.kwonlyargs == at.kwonlyargs
    assert af.kwonlydefaults == at.kwonlydefaults
    assert af.annotations == at.annotations
def test_copying_preserves_argspec(f):
    af = getfullargspec(f)
    t = define_function_signature('foo', 'docstring', af)(universal_acceptor)
    at = getfullargspec(t)
    assert af.args == at.args[:len(af.args)]
    assert af.varargs == at.varargs
    assert af.varkw == at.varkw
    assert len(af.defaults or ()) == len(at.defaults or ())
    assert af.kwonlyargs == at.kwonlyargs
    assert af.kwonlydefaults == at.kwonlydefaults
    assert af.annotations == at.annotations
예제 #9
0
def define_copy_method(name):
    target = getattr(Random, name)

    def implementation(self, **kwargs):
        result = self._hypothesis_do_random(name, kwargs)
        self._hypothesis_log_random(name, kwargs, result)
        return result

    spec = inspect.getfullargspec(STUBS.get(name, target))

    result = define_function_signature(target.__name__, target.__doc__,
                                       spec)(implementation)

    result.__module__ = __name__
    result.__qualname__ = "HypothesisRandom." + result.__name__

    setattr(HypothesisRandom, name, result)
예제 #10
0
def test_define_function_signature_works_with_conflicts():
    def accepts_everything(*args, **kwargs):
        pass

    define_function_signature(
        'hello', 'A docstring for hello',
        FullArgSpec(args=('f', ),
                    varargs=None,
                    varkw=None,
                    defaults=None,
                    kwonlyargs=[],
                    kwonlydefaults=None,
                    annotations={}))(accepts_everything)(1)

    define_function_signature(
        'hello', 'A docstring for hello',
        FullArgSpec(args=(),
                    varargs='f',
                    varkw=None,
                    defaults=None,
                    kwonlyargs=[],
                    kwonlydefaults=None,
                    annotations={}))(accepts_everything)(1)

    define_function_signature(
        'hello', 'A docstring for hello',
        FullArgSpec(args=(),
                    varargs=None,
                    varkw='f',
                    defaults=None,
                    kwonlyargs=[],
                    kwonlydefaults=None,
                    annotations={}))(accepts_everything)()

    define_function_signature(
        'hello', 'A docstring for hello',
        FullArgSpec(args=('f', 'f_3'),
                    varargs='f_1',
                    varkw='f_2',
                    defaults=None,
                    kwonlyargs=[],
                    kwonlydefaults=None,
                    annotations={}))(accepts_everything)(1, 2)
예제 #11
0
def test_define_function_signature_works_with_conflicts():
    def accepts_everything(*args, **kwargs):
        pass

    define_function_signature('hello', 'A docstring for hello', FullArgSpec(
        args=('f',), varargs=None, varkw=None, defaults=None,
        kwonlyargs=[], kwonlydefaults=None, annotations={}
    ))(accepts_everything)(1)

    define_function_signature('hello', 'A docstring for hello', FullArgSpec(
        args=(), varargs='f', varkw=None, defaults=None,
        kwonlyargs=[], kwonlydefaults=None, annotations={}
    ))(accepts_everything)(1)

    define_function_signature('hello', 'A docstring for hello', FullArgSpec(
        args=(), varargs=None, varkw='f', defaults=None,
        kwonlyargs=[], kwonlydefaults=None, annotations={}
    ))(accepts_everything)()

    define_function_signature('hello', 'A docstring for hello', FullArgSpec(
        args=('f', 'f_3'), varargs='f_1', varkw='f_2', defaults=None,
        kwonlyargs=[], kwonlydefaults=None, annotations={}
    ))(accepts_everything)(1, 2)
예제 #12
0
def test_uses_varargs():
    f = define_function_signature(
        "foo", "A docstring for foo",
        getfullargspec(has_varargs))(universal_acceptor)
    assert f(1, 2) == ((1, 2), {})
예제 #13
0
def test_uses_defaults():
    f = define_function_signature(
        "foo", "A docstring for foo",
        getfullargspec(has_a_default))(universal_acceptor)
    assert f(3, 2) == ((3, 2, 1), {})
예제 #14
0
def test_copying_sets_docstring():
    f = define_function_signature(
        "foo", "A docstring for foo",
        getfullargspec(has_two_args))(universal_acceptor)
    assert f.__doc__ == "A docstring for foo"
예제 #15
0
def test_copying_sets_name():
    f = define_function_signature(
        "hello_world", "A docstring for hello_world",
        getfullargspec(has_two_args))(universal_acceptor)
    assert f.__name__ == "hello_world"
예제 #16
0
def test_copying_sets_docstring():
    f = define_function_signature(
        'foo', 'A docstring for foo',
        getfullargspec(has_two_args))(universal_acceptor)
    assert f.__doc__ == 'A docstring for foo'
예제 #17
0
def test_define_function_signature_validates_function_name():
    with raises(ValueError):
        define_function_signature('hello world', None, FullArgSpec(
            args=['a', 'b'], varargs=None, varkw=None, defaults=None,
            kwonlyargs=[], kwonlydefaults=None, annotations={}))
예제 #18
0
def test_uses_varargs():
    f = define_function_signature(
        'foo', 'A docstring for foo',
        getfullargspec(has_varargs))(universal_acceptor)
    assert f(1, 2) == ((1, 2), {})
예제 #19
0
def test_uses_defaults():
    f = define_function_signature(
        'foo', 'A docstring for foo',
        getfullargspec(has_a_default))(universal_acceptor)
    assert f(3, 2) == ((3, 2, 1), {})
예제 #20
0
def test_copying_sets_docstring():
    f = define_function_signature(
        'foo', 'A docstring for foo',
        getargspec(has_two_args))(universal_acceptor)
    assert f.__doc__ == 'A docstring for foo'
예제 #21
0
def test_copying_sets_name():
    f = define_function_signature(
        'hello_world', 'A docstring for hello_world',
        getfullargspec(has_two_args))(universal_acceptor)
    assert f.__name__ == 'hello_world'