Sha256: 8b33a54993c6e48154c5379d9416a2058b71e411fd1bb154bb1a0e39da756d2c

Contents?: true

Size: 1.77 KB

Versions: 30

Compression:

Stored size: 1.77 KB

Contents

# PR#192, dir(func) and dir(method) returning []

def test1():
    'Test function 1'
    pass

def test2(a, b=2, c=3):
    pass

attrs = dir(test1)[:]
for attr in ['__doc__', '__name__', 'func_code', 'func_defaults',
             'func_doc', 'func_globals', 'func_name']:
    attrs.remove(attr)
assert not attrs

assert test1.__doc__ == test1.func_doc == 'Test function 1'
assert test1.__name__ == test1.func_name == 'test1'
assert test1.func_code
assert test1.func_defaults is None
assert test1.func_globals == globals()
assert test2.func_defaults == (2, 3)

co = test2.func_code
attrs = dir(co)[:]
for attr in ['co_name', 'co_argcount', 'co_varnames', 'co_filename',
             'co_firstlineno', 'co_flags']:
    attrs.remove(attr)
##assert not attrs

flags = 0x4 | 0x8

assert co.co_name == 'test2'
assert co.co_argcount == 3
assert co.co_varnames == ('a', 'b', 'c')
assert co.co_filename
assert co.co_firstlineno
assert (co.co_flags & flags) == 0

def test3(a, *args, **kw):
    pass

assert (test3.func_code.co_flags & flags) == flags

class Foo:
    def method(self):
        """This is a method"""
        pass

attrs = dir(Foo.method)[:]
for attr in ['im_self', 'im_func', 'im_class', '__doc__', '__name__']:
    attrs.remove(attr)
assert not attrs

assert Foo.method.im_self is None
assert Foo.method.im_class == Foo
assert Foo.method.im_func
assert Foo.method.im_func.__name__ == Foo.method.__name__
assert Foo.method.im_func.__doc__ == Foo.method.__doc__

f = Foo()
m = f.method
assert m.im_self == f
assert m.im_class == Foo
assert m.im_func == Foo.method.im_func
assert m.__name__ == Foo.method.__name__
assert m.__doc__ == Foo.method.__doc__

class Baz:
    pass

try:
    m.im_class = Baz
    assert 0
except TypeError:
    pass

try:
    m.im_stuff = 7
    assert 0
except AttributeError:
    pass

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
rubyfox-server-2.19.2.0 lib/rubyfox/server/data/lib/Lib/test/bugs/pr192.py
rubyfox-server-2.17.3.2 lib/rubyfox/server/data/lib/Lib/test/bugs/pr192.py
rubyfox-server-2.17.3.1 lib/rubyfox/server/data/lib/Lib/test/bugs/pr192.py
rubyfox-server-2.17.3.0 lib/rubyfox/server/data/lib/Lib/test/bugs/pr192.py
rubyfox-server-2.16.3.2 lib/rubyfox/server/data/lib/Lib/test/bugs/pr192.py
rubyfox-server-2.16.3.1 lib/rubyfox/server/data/lib/Lib/test/bugs/pr192.py
rubyfox-server-2.16.0.4 lib/rubyfox/server/data/lib/Lib/test/bugs/pr192.py
rubyfox-server-2.16.0.3 lib/rubyfox/server/data/lib/Lib/test/bugs/pr192.py
rubyfox-server-2.16.0.2 lib/rubyfox/server/data/lib/Lib/test/bugs/pr192.py
rubyfox-server-2.16.0.1 lib/rubyfox/server/data/lib/Lib/test/bugs/pr192.py
rubyfox-server-2.16.0.0 lib/rubyfox/server/data/lib/Lib/test/bugs/pr192.py
rubyfox-server-2.13.7.3 lib/rubyfox/server/data/lib/Lib/test/bugs/pr192.py
rubyfox-server-2.13.6.2 lib/rubyfox/server/data/lib/Lib/test/bugs/pr192.py
rubyfox-server-2.13.6.1 lib/rubyfox/server/data/lib/Lib/test/bugs/pr192.py
rubyfox-server-2.13.5.1 lib/rubyfox/server/data/lib/Lib/test/bugs/pr192.py
rubyfox-server-2.13.4.1 lib/rubyfox/server/data/lib/Lib/test/bugs/pr192.py
rubyfox-server-2.13.3.1 lib/rubyfox/server/data/lib/Lib/test/bugs/pr192.py
rubyfox-server-2.12.5.1 lib/rubyfox/server/data/lib/Lib/test/bugs/pr192.py
rubyfox-server-2.12.5.0 lib/rubyfox/server/data/lib/Lib/test/bugs/pr192.py
rubyfox-server-2.12.4.0 lib/rubyfox/server/data/lib/Lib/test/bugs/pr192.py