示例#1
0
    class A():
        def m(self):
            pass

        w = Callable(m)
        assert w.is_barefunction is False
        assert w.is_descriptor is False
        assert w.is_membermethod is True
        assert w.is_classmethod is False

        @classmethod
        def c(cls):
            pass

        w = Callable(c)
        assert w.is_barefunction is False
        assert w.is_descriptor is True
        assert w.is_membermethod is False
        assert w.is_classmethod is True

        @staticmethod
        def s():
            pass

        w = Callable(s)
        assert w.is_barefunction is False
        assert w.is_descriptor is True
        assert w.is_membermethod is False
        assert w.is_classmethod is False
示例#2
0
def test_code():
    def f(a):
        pass  # noqa

    assert Callable(f).code.co_name == 'f'

    h = asyncio.coroutine(f)
    assert Callable(h).code.co_name == 'f'
示例#3
0
def test_annotations():
    def f(a: int, b: str, *c, d: Any = 10, **e) -> Optional[float]:
        pass

    c = Callable(f)
    assert c.annotations == {
        'a': int,
        'b': str,
        'd': Any,
        'return': Optional[float]
    }
示例#4
0
def test_empty_annotations():
    c = Callable(lambda a, *b, **c: None)
    assert c.annotations == {}
示例#5
0
def test_kwargify_exc(f, args, kwargs, exc):
    with pytest.raises(exc):
        Callable(f).kwargify(args, kwargs)
示例#6
0
def test_kwargify(f, args, kwargs, merged):
    kwargified = Callable(f).kwargify(args, kwargs)
    print(kwargified)
    print(merged)
    assert kwargified == merged
示例#7
0
def test_make_labels_exc(f, pargs, exc):
    with pytest.raises(exc):
        pargs.labels(Callable(f))
示例#8
0
def test_make_labels(f, pargs, merged):
    kwargified = pargs.labels(Callable(f))
    assert kwargified == merged