diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2011-01-30 09:42:00 -0500 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2011-01-30 09:42:00 -0500 |
commit | 1973042c8cac74bcef0dadac245f9477c82f065d (patch) | |
tree | 259e51488d1ec5287a8f255f4a08f1436a320c04 | |
parent | cd2d387ab90f3f07af49f1e045bdae4d8b1f588a (diff) | |
download | python-coveragepy-git-1973042c8cac74bcef0dadac245f9477c82f065d.tar.gz |
Isolate the open/tokenize.open distinction into backward.py
-rw-r--r-- | coverage/backward.py | 10 | ||||
-rw-r--r-- | coverage/codeunit.py | 9 | ||||
-rw-r--r-- | coverage/parser.py | 6 |
3 files changed, 15 insertions, 10 deletions
diff --git a/coverage/backward.py b/coverage/backward.py index 425bcc6e..23c0a569 100644 --- a/coverage/backward.py +++ b/coverage/backward.py @@ -71,3 +71,13 @@ try: import configparser except ImportError: import ConfigParser as configparser + +# Python 3.2 provides `tokenize.open`, the best way to open source files. +try: + import tokenize + open_source = tokenize.open +except AttributeError: + def open_source(fname): + """Open a source file the best way.""" + return open(fname, "rU") + diff --git a/coverage/codeunit.py b/coverage/codeunit.py index f54bda5e..55f44a24 100644 --- a/coverage/codeunit.py +++ b/coverage/codeunit.py @@ -1,8 +1,8 @@ """Code unit (module) handling for Coverage.""" -import glob, os, tokenize +import glob, os -from coverage.backward import string_class, StringIO +from coverage.backward import open_source, string_class, StringIO from coverage.misc import CoverageException @@ -104,10 +104,7 @@ class CodeUnit(object): """Return an open file for reading the source of the code unit.""" if os.path.exists(self.filename): # A regular text file: open it. - if hasattr(tokenize, 'open'): # Python 3.2 and later - return tokenize.open(self.filename) - else: - return open(self.filename) + return open_source(self.filename) # Maybe it's in a zip file? source = self.file_locator.get_zip_data(self.filename) diff --git a/coverage/parser.py b/coverage/parser.py index 4dca5771..a71ac102 100644 --- a/coverage/parser.py +++ b/coverage/parser.py @@ -3,6 +3,7 @@ import glob, opcode, os, re, sys, token, tokenize from coverage.backward import set, sorted, StringIO # pylint: disable-msg=W0622 +from coverage.backward import open_source from coverage.bytecode import ByteCodes, CodeObjects from coverage.misc import nice_pair, CoverageException, NoSource, expensive @@ -22,10 +23,7 @@ class CodeParser(object): self.text = text if not self.text: try: - if hasattr(tokenize, 'open'): # Python 3.2 and later - sourcef = tokenize.open(self.filename) - else: - sourcef = open(self.filename, 'rU') + sourcef = open_source(self.filename) self.text = sourcef.read() sourcef.close() except IOError: |