##// END OF EJS Templates
get signature from init if top-level signature fails...
Min RK -
Show More
@@ -848,20 +848,27 b' class Inspector(Colorable):'
848 except AttributeError:
848 except AttributeError:
849 init_def = None
849 init_def = None
850
850
851 if init_def:
852 out['init_definition'] = init_def
853
854 # get the __init__ docstring
851 # get the __init__ docstring
855 try:
852 try:
856 obj_init = obj.__init__
853 obj_init = obj.__init__
857 except AttributeError:
854 except AttributeError:
858 init_ds = None
855 init_ds = None
859 else:
856 else:
857 if init_def is None:
858 # Get signature from init if top-level sig failed.
859 # Can happen for built-in types (list, etc.).
860 try:
861 init_def = self._getdef(obj_init, oname)
862 except AttributeError:
863 pass
860 init_ds = getdoc(obj_init)
864 init_ds = getdoc(obj_init)
861 # Skip Python's auto-generated docstrings
865 # Skip Python's auto-generated docstrings
862 if init_ds == _object_init_docstring:
866 if init_ds == _object_init_docstring:
863 init_ds = None
867 init_ds = None
864
868
869 if init_def:
870 out['init_definition'] = init_def
871
865 if init_ds:
872 if init_ds:
866 out['init_docstring'] = init_ds
873 out['init_docstring'] = init_ds
867
874
@@ -419,15 +419,34 b' def test_pdef():'
419 def foo(): pass
419 def foo(): pass
420 inspector.pdef(foo, 'foo')
420 inspector.pdef(foo, 'foo')
421
421
422
422 def test_pinfo_nonascii():
423 def test_pinfo_nonascii():
423 # See gh-1177
424 # See gh-1177
424 from . import nonascii2
425 from . import nonascii2
425 ip.user_ns['nonascii2'] = nonascii2
426 ip.user_ns['nonascii2'] = nonascii2
426 ip._inspect('pinfo', 'nonascii2', detail_level=1)
427 ip._inspect('pinfo', 'nonascii2', detail_level=1)
427
428
429
428 def test_pinfo_magic():
430 def test_pinfo_magic():
429 with AssertPrints('Docstring:'):
431 with AssertPrints('Docstring:'):
430 ip._inspect('pinfo', 'lsmagic', detail_level=0)
432 ip._inspect('pinfo', 'lsmagic', detail_level=0)
431
433
432 with AssertPrints('Source:'):
434 with AssertPrints('Source:'):
433 ip._inspect('pinfo', 'lsmagic', detail_level=1)
435 ip._inspect('pinfo', 'lsmagic', detail_level=1)
436
437
438 def test_init_colors():
439 # ensure colors are not present in signature info
440 info = inspector.info(HasSignature)
441 init_def = info['init_definition']
442 nt.assert_not_in('[0m', init_def)
443
444
445 def test_builtin_init():
446 info = inspector.info(list)
447 init_def = info['init_definition']
448 # Python < 3.4 can't get init definition from builtins,
449 # but still exercise the inspection in case of error-raising bugs.
450 if sys.version_info >= (3,4):
451 nt.assert_is_not_none(init_def)
452
General Comments 0
You need to be logged in to leave comments. Login now