コード例 #1
0
def test_self_signature():
    def square(self, resource, multiplier=None):
        pass

    argspec = getfullargspec(square)
    signature = FunctionSignature.from_argspec(argspec)

    assert len(signature.args) == 1
    assert len(signature.kwargs) == 1
    assert signature.kwargs["multiplier"].name == "multiplier"
コード例 #2
0
def test_self_signature():

    def square(self, resource, multiplier=None):
        pass

    argspec = getfullargspec(square)
    signature = FunctionSignature.from_argspec(argspec)

    assert len(signature.args) == 1
    assert len(signature.kwargs) == 1
    assert signature.kwargs["multiplier"].name == "multiplier"
コード例 #3
0
def test_ignore_request_parameter():

    @annotate({"x": int, "y": int})
    def handle_request(request, x, y):
        pass

    argspec = getfullargspec(handle_request)
    signature = FunctionSignature.from_argspec(argspec)
    params = get_parameters(signature, TransmuteAttributes(),
                            arguments_to_ignore=["request"])
    for typ in ["query", "body", "header", "path"]:
        assert "request" not in getattr(params, typ)
コード例 #4
0
def test_get_signature():
    def square(self, resource, multiplier=None):
        pass

    argspec = getfullargspec(square)
    signature = FunctionSignature.from_argspec(argspec)

    arg = signature.get_argument("resource")
    assert arg.name == "resource"

    kwarg = signature.get_argument("multiplier")
    assert kwarg.name == "multiplier"
コード例 #5
0
def test_get_argument_set():
    @describe(paths="/{x}", body_parameters=["y"])
    @annotate({"x": int, "y": float, "z": int, "width": int, "height": float})
    def make_square(x, y, z, width=None, height=12):
        pass

    argspec = getfullargspec(make_square)
    signature = FunctionSignature.from_argspec(argspec)
    argument_sets = get_parameters(signature, make_square.transmute)
    assert ["y"] == list(argument_sets.body.keys())
    assert set(["x"]) == set(argument_sets.path.keys())
    assert set(["z", "width", "height"]) == set(argument_sets.query.keys())
コード例 #6
0
def test_ignore_request_parameter():

    @annotate({"x": int, "y": int})
    def handle_request(request, x, y):
        pass

    argspec = getfullargspec(handle_request)
    signature = FunctionSignature.from_argspec(argspec)
    params = get_parameters(signature, TransmuteAttributes(),
                            arguments_to_ignore=["request"])
    for typ in ["query", "body", "header", "path"]:
        assert "request" not in getattr(params, typ)
コード例 #7
0
def test_get_signature():

    def square(self, resource, multiplier=None):
        pass

    argspec = getfullargspec(square)
    signature = FunctionSignature.from_argspec(argspec)

    arg = signature.get_argument("resource")
    assert arg.name == "resource"

    kwarg = signature.get_argument("multiplier")
    assert kwarg.name == "multiplier"
コード例 #8
0
def test_get_argument_set():

    @describe(paths="/{x}", body_parameters=["y"])
    @annotate({"x": int, "y": float, "z": int, "width": int, "height": float})
    def make_square(x, y, z, width=None, height=12):
        pass

    argspec = getfullargspec(make_square)
    signature = FunctionSignature.from_argspec(argspec)
    argument_sets = get_parameters(signature, make_square.transmute)
    assert ["y"] == list(argument_sets.body.keys())
    assert set(["x"]) == set(argument_sets.path.keys())
    assert set(["z", "width", "height"]) == set(argument_sets.query.keys())
コード例 #9
0
def test_signature():
    @annotate({"x": int, "y": float, "width": int, "height": float})
    def make_square(x, y, width=None, height=12):
        pass

    argspec = getfullargspec(make_square)
    signature = FunctionSignature.from_argspec(argspec)
    assert len(signature.args) == 2
    assert signature.args[0].name == "x"
    assert signature.args[0].default == NoDefault
    assert signature.args[0].type == int
    assert len(signature.kwargs) == 2
    assert signature.kwargs["width"].name == "width"
    assert signature.kwargs["width"].default is None
    assert signature.kwargs["width"].type == int
コード例 #10
0
def test_signature_no_kwargs():
    @annotate({"x": int, "y": int, "return": int})
    def make_square(x, y):
        return x * y

    argspec = getfullargspec(make_square)
    signature = FunctionSignature.from_argspec(argspec)
    assert len(signature.args) == 2
    assert signature.args[0].name == "x"
    assert signature.args[0].default == NoDefault
    assert signature.args[0].type == int
    assert signature.args[1].name == "y"
    assert signature.args[1].default == NoDefault
    assert signature.args[1].type == int
    assert len(signature.kwargs) == 0
コード例 #11
0
def test_signature():

    @annotate({"x": int, "y": float, "width": int, "height": float})
    def make_square(x, y, width=None, height=12):
        pass

    argspec = getfullargspec(make_square)
    signature = FunctionSignature.from_argspec(argspec)
    assert len(signature.args) == 2
    assert signature.args[0].name == "x"
    assert signature.args[0].default == NoDefault
    assert signature.args[0].type == int
    assert len(signature.kwargs) == 2
    assert signature.kwargs["width"].name == "width"
    assert signature.kwargs["width"].default is None
    assert signature.kwargs["width"].type == int
コード例 #12
0
def test_signature_no_kwargs():

    @annotate({"x": int, "y": int, "return": int})
    def make_square(x, y):
        return x * y

    argspec = getfullargspec(make_square)
    signature = FunctionSignature.from_argspec(argspec)
    assert len(signature.args) == 2
    assert signature.args[0].name == "x"
    assert signature.args[0].default == NoDefault
    assert signature.args[0].type == int
    assert signature.args[1].name == "y"
    assert signature.args[1].default == NoDefault
    assert signature.args[1].type == int
    assert len(signature.kwargs) == 0