[Python-checkins] python/dist/src/Lib inspect.py,1.58.2.1,1.58.2.2

jlgijsbers at users.sourceforge.net jlgijsbers at users.sourceforge.net
Sat Mar 12 17:38:42 CET 2005


Update of /cvsroot/python/python/dist/src/Lib
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3224
Modified Files:
 Tag: release24-maint
	inspect.py 
Log Message:
Backport of 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
':'. Test cases are not backported, as test_inspect.py has been
rewritten using unittest on the trunk.
Thanks Simon Percivall!
Index: inspect.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/inspect.py,v
retrieving revision 1.58.2.1
retrieving revision 1.58.2.2
diff -u -d -r1.58.2.1 -r1.58.2.2
--- inspect.py	31 Dec 2004 09:45:37 -0000	1.58.2.1
+++ inspect.py	12 Mar 2005 16:38:39 -0000	1.58.2.2
@@ -503,6 +503,7 @@
 """Provide a tokeneater() method to detect the end of a code block."""
 def __init__(self):
 self.indent = 0
+ self.islambda = False
 self.started = False
 self.passline = False
 self.last = 0
@@ -510,11 +511,8 @@
 def tokeneater(self, type, token, (srow, scol), (erow, ecol), line):
 if not self.started:
 if token in ("def", "class", "lambda"):
- lastcolon = line.rfind(":")
- if lastcolon:
- oneline = re.search(r"\w", line[lastcolon:])
- if oneline and line[-2:] != "\\\n":
- raise EndOfBlock, srow
+ if token == "lambda":
+ self.islambda = True
 self.started = True
 self.passline = True
 elif type == tokenize.NEWLINE:
@@ -522,6 +520,8 @@
 self.last = srow
 elif self.passline:
 pass
+ elif self.islambda:
+ raise EndOfBlock, self.last
 elif type == tokenize.INDENT:
 self.indent = self.indent + 1
 self.passline = True


More information about the Python-checkins mailing list

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