[Python-checkins] CVS: python/dist/src/Lib inspect.py,1.7,1.8

Ka-Ping Yee ping@usw-pr-cvs1.sourceforge.net
2001年3月10日 01:31:57 -0800


Update of /cvsroot/python/python/dist/src/Lib
In directory usw-pr-cvs1:/tmp/cvs-serv8232
Modified Files:
	inspect.py 
Log Message:
Fix findsource() to work for derived classes.
Index: inspect.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/inspect.py,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -r1.7 -r1.8
*** inspect.py	2001年03月02日 05:50:34	1.7
--- inspect.py	2001年03月10日 09:31:55	1.8
***************
*** 28,32 ****
 __date__ = '1 Jan 2001'
 
! import sys, os, types, string, dis, imp, tokenize
 
 # ----------------------------------------------------------- type-checking
--- 28,32 ----
 __date__ = '1 Jan 2001'
 
! import sys, os, types, string, re, dis, imp, tokenize
 
 # ----------------------------------------------------------- type-checking
***************
*** 260,267 ****
 if isclass(object):
 name = object.__name__
! matches = (['class', name], ['class', name + ':'])
 for i in range(len(lines)):
! if string.split(lines[i])[:2] in matches:
! return lines, i
 else: raise IOError, 'could not find class definition'
 
--- 260,266 ----
 if isclass(object):
 name = object.__name__
! pat = re.compile(r'^\s*class\s*' + name + r'\b')
 for i in range(len(lines)):
! if pat.match(lines[i]): return lines, i
 else: raise IOError, 'could not find class definition'
 
***************
*** 278,283 ****
 raise IOError, 'could not find function definition'
 lnum = object.co_firstlineno - 1
 while lnum > 0:
! if string.split(lines[lnum])[:1] == ['def']: break
 lnum = lnum - 1
 return lines, lnum
--- 277,283 ----
 raise IOError, 'could not find function definition'
 lnum = object.co_firstlineno - 1
+ pat = re.compile(r'^\s*def\s')
 while lnum > 0:
! if pat.match(lines[lnum]): break
 lnum = lnum - 1
 return lines, lnum

AltStyle によって変換されたページ (->オリジナル) /