]> granicus.if.org Git - python/commitdiff
Issue #11074: Make 'tokenize' so it can be reloaded.
authorBrett Cannon <bcannon@gmail.com>
Tue, 22 Feb 2011 03:25:12 +0000 (03:25 +0000)
committerBrett Cannon <bcannon@gmail.com>
Tue, 22 Feb 2011 03:25:12 +0000 (03:25 +0000)
The module stored away the 'open' object as found in the global namespace
(which fell through to the built-in namespace) since it defined its own 'open'.
Problem is that if you reloaded the module it then grabbed the 'open' defined
in the previous load, leading to code that infinite recursed. Switched to
simply call builtins.open directly.

Lib/tokenize.py
Misc/NEWS

index 506aa6a42f91ee8c5b2bb5f94296718d7c57228c..f575e9bc237a9258254c29391889cae3e4137572 100644 (file)
@@ -24,6 +24,7 @@ __author__ = 'Ka-Ping Yee <ping@lfw.org>'
 __credits__ = ('GvR, ESR, Tim Peters, Thomas Wouters, Fred Drake, '
                'Skip Montanaro, Raymond Hettinger, Trent Nelson, '
                'Michael Foord')
+import builtins
 import re
 import sys
 from token import *
@@ -335,13 +336,11 @@ def detect_encoding(readline):
     return default, [first, second]
 
 
-_builtin_open = open
-
 def open(filename):
     """Open a file in read only mode using the encoding detected by
     detect_encoding().
     """
-    buffer = _builtin_open(filename, 'rb')
+    buffer = builtins.open(filename, 'rb')
     encoding, lines = detect_encoding(buffer.readline)
     buffer.seek(0)
     text = TextIOWrapper(buffer, encoding, line_buffering=True)
index 25cad9ef3f72a70e5b47a5298c0f39eb8fcf69be..564f879c008f598513304d0a2cef2fcaeef9f8ca 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -27,6 +27,8 @@ Core and Builtins
 Library
 -------
 
+- Issue #11074: Make 'tokenize' so it can be reloaded.
+
 - Issue #11085: Moved collections abstract base classes into a separate
   module called collections.abc, following the pattern used by importlib.abc.
   For backwards compatibility, the names are imported into the collections