Commit Graph

93 Commits

Author SHA1 Message Date
Benjamin Peterson c63457b18e make inspect.isabstract() always return a boolean; add a test for it, too #7069 2009-10-15 03:06:55 +00:00
Georg Brandl b019951875 Use str.format() to fix beginner's mistake with %-style string formatting. 2009-09-18 13:57:11 +00:00
Georg Brandl 097f70881a #6905: use better exception messages in inspect when the argument is of the wrong type. 2009-09-18 09:14:52 +00:00
Mark Dickinson 9a6d6c93b4 Issue #6619: Remove duplicate 'isgenerator' function from inspect module.
Thanks Vincent Legoll.
2009-08-02 15:40:11 +00:00
Michael Foord fb0e0570f7 Issue 6581. Michael Foord 2009-07-26 21:12:14 +00:00
R. David Murray 996ba02602 Issue #4050: inspect.findsource/getsource now raise an IOError if the 'source'
file is a binary.  Patch by Brodie Rao, test by Daniel Diniz.
2009-05-13 17:14:11 +00:00
Benjamin Peterson 5e5fbb612d fix inspect.isclass() on instances with a custom __getattr__ #1225107 2009-01-17 22:27:54 +00:00
Benjamin Peterson 9109f91c6b use enumerate 2009-01-17 04:28:57 +00:00
Amaury Forgeot d'Arc b54447f31c #1162154: inspect.getmembers() now skips attributes that raise AttributeError,
e.g. a __slots__ attribute which has not been set.
2009-01-13 23:39:22 +00:00
Benjamin Peterson 6060d5e3fa simplfy code 2009-01-01 04:04:41 +00:00
Benjamin Peterson 8ad09a4f2e #4795 inspect.isgeneratorfunction() should return False instead of None 2008-12-31 23:48:39 +00:00
Benjamin Peterson 4d9b0cd409 return ArgInfo from inspect.getargvalues #4092 2008-10-21 22:18:29 +00:00
Brett Cannon 7b96f07feb Remove an unneeded import of abc.ABCMeta from 'inspect'. 2008-08-18 00:41:11 +00:00
Brett Cannon f5eb2ff100 Silence (Syntax|Deprecation)Warning for 'inspect'. Had to remove tuple
unpacking in a parameter list and set some constants by hand that were pulled
from the 'compiler' package.
2008-08-01 01:40:24 +00:00
Georg Brandl 7be19aabe2 Factor out docstring dedenting from inspect.getdoc() into inspect.cleandoc()
to ease standalone use of the algorithm.
2008-06-07 15:59:10 +00:00
Amaury Forgeot d'Arc 24f3c5c646 Prevent an error when inspect.isabstract() is called with something else than a new-style class. 2008-04-08 21:51:57 +00:00
Christian Heimes 608c1d8e87 Since abc._Abstract was replaces by a new type flags the regression test suite fails. I've added a new function inspect.isabstract(). Is the mmethod fine or should I check if object is a instance of type or subclass of object, too? 2008-03-03 18:28:04 +00:00
Facundo Batista 759bfc6207 Issue #1916. Added isgenerator() and isgeneratorfunction() to
inspect.py.  Thanks Javi Mansilla for patch review and
corrections.
2008-02-18 03:43:43 +00:00
Raymond Hettinger e896acc98c Let most inspect functions return named tuples 2008-01-11 03:04:50 +00:00
Georg Brandl bc5fbd9f8c Patch #1739696: use code.co_code only if really necessary 2007-07-12 08:11:29 +00:00
Georg Brandl b2e81e307d Bug #1550524: better heuristics to find correct class definition
in inspect.findsource().
2006-10-12 09:20:33 +00:00
Nick Coghlan c495c66ea9 Fix the speed regression in inspect.py by adding another cache to speed up getmodule(). Patch #1553314 2006-09-07 10:50:34 +00:00
Tim Peters ce70a3b306 Whitespace normalization. 2006-07-27 23:45:48 +00:00
Barry Warsaw 00decd7835 Patch #1520294: Support for getset and member descriptors in types.py,
inspect.py, and pydoc.py.  Specifically, this allows for querying the type of
an object against these built-in C types and more importantly, for getting
their docstrings printed in the interactive interpreter's help() function.

This patch includes a new built-in module called _types which provides
definitions of getset and member descriptors for use by the types.py module.
These types are exposed as types.GetSetDescriptorType and
types.MemberDescriptorType.  Query functions are provided as
inspect.isgetsetdescriptor() and inspect.ismemberdescriptor().  The
implementations of these are robust enough to work with Python implementations
other than CPython, which may not have these fundamental types.

The patch also includes documentation and test suite updates.

I commit these changes now under these guiding principles:

1. Silence is assent.  The release manager has not said "no", and of the few
   people that cared enough to respond to the thread, the worst vote was "0".

2. It's easier to ask for forgiveness than permission.

3. It's so dang easy to revert stuff in svn, that you could view this as a
   forcing function. :)

Windows build patches will follow.
2006-07-27 23:43:15 +00:00
Phillip J. Eby 1a2959cfa8 Fix SF#1516184 (again) and add a test to prevent regression.
(There was a problem with empty filenames still causing recursion)
2006-07-20 15:54:16 +00:00
Phillip J. Eby 5d86bdb3ae Fix SF#1516184 and add a test to prevent regression. 2006-07-10 19:03:29 +00:00
Georg Brandl 208badda27 Fix another problem in inspect: if the module for an object cannot be found, don't try to give its __dict__ to linecache. 2006-04-30 17:42:26 +00:00
Phillip J. Eby 72ae6c80d4 Fix infinite regress when inspecting <string> or <stdin> frames. 2006-04-30 15:59:26 +00:00
Neal Norwitz b94a368ff4 Add whitespace after comma 2006-04-11 07:17:08 +00:00
Phillip J. Eby 4703211080 Updated the warnings, linecache, inspect, traceback, site, and doctest modules
to work correctly with modules imported from zipfiles or via other PEP 302
__loader__ objects.  Tests and doc updates are included.
2006-04-11 01:07:43 +00:00
Armin Rigo dd5c023af5 some more fixes and tests for inspect.getsource(), triggered by crashes
from the PyPy project as well as the SF bug #1295909.
2005-09-25 11:45:45 +00:00
Johannes Gijsbers a5855d5ace Patch #1159931/bug #1143895: inspect.getsource failed when functions,
etc., had comments after the colon, and some other cases. This patch
take a simpler approach that doesn't rely on looking for a ':'. Thanks
Simon Percivall!
2005-03-12 16:37:11 +00:00
Raymond Hettinger a1a992c0a0 Apply itemgetter() instead of lambda. 2005-03-11 06:46:45 +00:00
Raymond Hettinger dbecd93b72 Replace list of constants with tuples of constants. 2005-02-06 06:57:08 +00:00
Johannes Gijsbers 1542f34c42 Patch #1011890: fix inspect.getsource breaking with line-continuation &
more. Thanks to Simon Percivall!

The patch makes changes to inspect.py in two places:

* the pattern to match against functions at line 436 is
modified: lambdas should be matched even if not
preceded by whitespace, as long as "lambda" isn't part
of another word.

* the BlockFinder class is heavily modified. Changes are:
- checking for "def", "class" or "lambda" names
before setting self.started to True. Then checking the
same line for word characters after the colon (if the
colon is on that line). If so, and the line does not
end with a line continuation marker, raise EndOfBlock
immediately.
- adding self.passline to show that the line is to be
included and no more checking is necessary on that
line. Since a NEWLINE token is not generated when a
line continuation marker exists, this allows getsource
to continue with these functions even if the following
line would not be indented.

Also add a bunch of
'quite-unlikely-to-occur-in-real-life-but-working-anyway' tests.
2004-12-12 16:46:28 +00:00
Raymond Hettinger 61656203cd Import no longer needed. 2004-09-20 18:08:31 +00:00
Skip Montanaro 13dea5a42b Raymond reminded me to use DSU key 2004-09-20 16:43:30 +00:00
Skip Montanaro 41f89a4f3d Sort classes by fully qualified name. In the common case where you are
displaying a set of classes from one module it doesn't matter, but if you
are displaying a large class tree from multiple modules it improves the
display to sort by module.name.
2004-09-20 15:40:38 +00:00
Johannes Gijsbers 9324526a76 Use __module__ attribute when available instead of using isclass() predicate
(functions and methods have grown the __module__ attribute too). See bug #570300.
2004-09-11 15:53:22 +00:00
Johannes Gijsbers c473c99d16 Patch #1006219: let inspect.getsource show '@' decorators and add tests for
this (which are rather ugly, but it'll have to do until test_inspect gets a
major overhaul and a conversion to unittest). Thanks Simon Percivall!
2004-08-18 12:40:31 +00:00
Matthias Klose 2e829c0214 - Bug #891637, patch #1005466: fix inspect.getargs() crash on def foo((bar)). 2004-08-15 17:04:33 +00:00
Brett Cannon b3de2e13ba 'inspect' was not listing the functions in a module properly if the module was
reached through a symlink (was comparing path of module to path to function and
were not matching because of the symlink).  os.path.realpath() is now used to
solve this discrepency.

Closes bug #570300.  Thanks Johannes Gijsbers for the fix.
2004-08-13 18:46:24 +00:00
Raymond Hettinger a050171ee9 SF bug #973092: inspect.getframeinfo bug if 'context' is to big
Make sure the start argument is not negative.
2004-06-15 11:22:53 +00:00
Andrew M. Kuchling ba8b6bc86f [Bug #954364] inspect.getframeinfo() sometimes produces incorrect traceback line #s; fix is to look at tb.tb_lineno, not tb.frame.f_lineno. Patch from Robin Becker and me. 2004-06-05 14:11:59 +00:00
Raymond Hettinger 3375fc5a3b Apply extract functions instead of lambda. 2003-12-01 20:12:15 +00:00
Raymond Hettinger 6b59f5f3fd Let library modules use the new keyword arguments for list.sort(). 2003-10-16 05:53:16 +00:00
Tim Peters 478c10554b Whitespace normalization. 2003-06-29 05:46:54 +00:00
Jeremy Hylton ab91902f6f A bit o' reformatting and removal of non-_getframe currentframe(). 2003-06-27 18:41:20 +00:00
Jeremy Hylton 6496788e7a Fix for SF bug 620190: getargspec() doesn't work with methods. 2003-06-27 18:14:39 +00:00
Brett Cannon 4a671fe634 Return None to signal that the module the object was defined in was not found when object has no __name__ attr but is needed to figure out location of object. 2003-06-15 22:33:28 +00:00