diff options
author | Benjamin Peterson <benjamin@python.org> | 2009-10-04 14:54:52 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2009-10-04 14:54:52 (GMT) |
commit | f3d7dbe72e0cd328193b27a862ab11ee6c009781 (patch) | |
tree | 11fba4ba996c31416254673ddcb6eb3acfab5e8b /Lib | |
parent | 4fac70683366ff65cdc3acf609246bf69c8ff61b (diff) | |
download | cpython-f3d7dbe72e0cd328193b27a862ab11ee6c009781.zip cpython-f3d7dbe72e0cd328193b27a862ab11ee6c009781.tar.gz cpython-f3d7dbe72e0cd328193b27a862ab11ee6c009781.tar.bz2 |
Merged revisions 75231 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
................
r75231 | benjamin.peterson | 2009-10-04 09:49:41 -0500 (Sun, 04 Oct 2009) | 166 lines
Merged revisions 74779-74786,74793,74795,74811,74860-74861,74863,74876,74886,74896,74901,74903,74908,74912,74930,74933,74943,74946,74952-74955,75015,75019,75032,75068,75076,75095,75098,75102,75129,75139,75230 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r74779 | michael.foord | 2009-09-13 11:13:36 -0500 (Sun, 13 Sep 2009) | 1 line
Change to tutorial wording for reading text / binary files on Windows. Issue #6301.
........
r74780 | michael.foord | 2009-09-13 11:40:02 -0500 (Sun, 13 Sep 2009) | 1 line
Objects that compare equal automatically pass or fail assertAlmostEqual and assertNotAlmostEqual tests on unittest.TestCase. Issue 6567.
........
r74781 | michael.foord | 2009-09-13 11:46:19 -0500 (Sun, 13 Sep 2009) | 1 line
Note that sys._getframe is not guaranteed to exist in all implementations of Python, and a corresponding note in inspect.currentframe. Issue 6712.
........
r74782 | michael.foord | 2009-09-13 12:07:46 -0500 (Sun, 13 Sep 2009) | 1 line
Tutorial tweaks. Issue 6849.
........
r74783 | michael.foord | 2009-09-13 12:28:35 -0500 (Sun, 13 Sep 2009) | 1 line
unittest.TestLoader.loadTestsFromName honors the loader suiteClass attribute. Issue 6866.
........
r74784 | georg.brandl | 2009-09-13 13:15:07 -0500 (Sun, 13 Sep 2009) | 1 line
Typo fix.
........
r74785 | michael.foord | 2009-09-13 14:07:03 -0500 (Sun, 13 Sep 2009) | 1 line
Test discovery in unittest will only attempt to import modules that are importable; i.e. their names are valid Python identifiers. If an import fails during discovery this will be recorded as an error and test discovery will continue. Issue 6568.
........
r74786 | michael.foord | 2009-09-13 14:08:18 -0500 (Sun, 13 Sep 2009) | 1 line
Remove an extraneous space in unittest documentation.
........
r74793 | georg.brandl | 2009-09-14 09:50:47 -0500 (Mon, 14 Sep 2009) | 1 line
#6908: fix association of hashlib hash attributes.
........
r74795 | benjamin.peterson | 2009-09-14 22:36:26 -0500 (Mon, 14 Sep 2009) | 1 line
Py_SetPythonHome uses static storage #6913
........
r74811 | georg.brandl | 2009-09-15 15:26:59 -0500 (Tue, 15 Sep 2009) | 1 line
Add Armin Ronacher.
........
r74860 | benjamin.peterson | 2009-09-16 21:46:54 -0500 (Wed, 16 Sep 2009) | 1 line
kill bare except
........
r74861 | benjamin.peterson | 2009-09-16 22:18:28 -0500 (Wed, 16 Sep 2009) | 1 line
pep 8 defaults
........
r74863 | benjamin.peterson | 2009-09-16 22:27:33 -0500 (Wed, 16 Sep 2009) | 1 line
rationalize a bit
........
r74876 | georg.brandl | 2009-09-17 11:15:53 -0500 (Thu, 17 Sep 2009) | 1 line
#6932: remove paragraph that advises relying on __del__ being called.
........
r74886 | benjamin.peterson | 2009-09-17 16:33:46 -0500 (Thu, 17 Sep 2009) | 1 line
use macros
........
r74896 | georg.brandl | 2009-09-18 02:22:41 -0500 (Fri, 18 Sep 2009) | 1 line
#6936: for interactive use, quit() is just fine.
........
r74901 | georg.brandl | 2009-09-18 04:14:52 -0500 (Fri, 18 Sep 2009) | 1 line
#6905: use better exception messages in inspect when the argument is of the wrong type.
........
r74903 | georg.brandl | 2009-09-18 04:18:27 -0500 (Fri, 18 Sep 2009) | 1 line
#6938: "ident" is always a string, so use a format code which works.
........
r74908 | georg.brandl | 2009-09-18 08:57:11 -0500 (Fri, 18 Sep 2009) | 1 line
Use str.format() to fix beginner's mistake with %-style string formatting.
........
r74912 | georg.brandl | 2009-09-18 11:19:56 -0500 (Fri, 18 Sep 2009) | 1 line
Optimize optimization and fix method name in docstring.
........
r74930 | georg.brandl | 2009-09-18 16:21:41 -0500 (Fri, 18 Sep 2009) | 1 line
#6925: rewrite docs for locals() and vars() a bit.
........
r74933 | georg.brandl | 2009-09-18 16:35:59 -0500 (Fri, 18 Sep 2009) | 1 line
#6930: clarify description about byteorder handling in UTF decoder routines.
........
r74943 | georg.brandl | 2009-09-19 02:35:07 -0500 (Sat, 19 Sep 2009) | 1 line
#6944: the argument to PyArg_ParseTuple should be a tuple, otherwise a SystemError is set. Also clean up another usage of PyArg_ParseTuple.
........
r74946 | georg.brandl | 2009-09-19 03:43:16 -0500 (Sat, 19 Sep 2009) | 1 line
Update bug tracker reference.
........
r74952 | georg.brandl | 2009-09-19 05:42:34 -0500 (Sat, 19 Sep 2009) | 1 line
#6946: fix duplicate index entries for datetime classes.
........
r74953 | georg.brandl | 2009-09-19 07:04:16 -0500 (Sat, 19 Sep 2009) | 1 line
Fix references to threading.enumerate().
........
r74954 | georg.brandl | 2009-09-19 08:13:56 -0500 (Sat, 19 Sep 2009) | 1 line
Add Doug.
........
r74955 | georg.brandl | 2009-09-19 08:20:49 -0500 (Sat, 19 Sep 2009) | 1 line
Add Mark Summerfield.
........
r75015 | georg.brandl | 2009-09-22 05:55:08 -0500 (Tue, 22 Sep 2009) | 1 line
Fix encoding name.
........
r75019 | vinay.sajip | 2009-09-22 12:23:41 -0500 (Tue, 22 Sep 2009) | 1 line
Fixed a typo, and added sections on optimization and using arbitrary objects as messages.
........
r75032 | benjamin.peterson | 2009-09-22 17:15:28 -0500 (Tue, 22 Sep 2009) | 1 line
fix typos/rephrase
........
r75068 | benjamin.peterson | 2009-09-25 21:57:59 -0500 (Fri, 25 Sep 2009) | 1 line
comment out ugly xxx
........
r75076 | vinay.sajip | 2009-09-26 09:53:32 -0500 (Sat, 26 Sep 2009) | 1 line
Tidied up name of parameter in StreamHandler
........
r75095 | michael.foord | 2009-09-27 14:15:41 -0500 (Sun, 27 Sep 2009) | 1 line
Test creation moved from TestProgram.parseArgs to TestProgram.createTests exclusively. Issue 6956.
........
r75098 | michael.foord | 2009-09-27 15:08:23 -0500 (Sun, 27 Sep 2009) | 1 line
Documentation improvement for load_tests protocol in unittest. Issue 6515.
........
r75102 | skip.montanaro | 2009-09-27 21:12:27 -0500 (Sun, 27 Sep 2009) | 3 lines
Patch from Thomas Barr so that csv.Sniffer will set doublequote property.
Closes issue 6606.
........
r75129 | vinay.sajip | 2009-09-29 02:08:54 -0500 (Tue, 29 Sep 2009) | 1 line
Issue #7014: logging: Improved IronPython 2.6 compatibility.
........
r75139 | raymond.hettinger | 2009-09-29 13:53:24 -0500 (Tue, 29 Sep 2009) | 3 lines
Issue 7008: Better document str.title and show how to work around the apostrophe problem.
........
r75230 | benjamin.peterson | 2009-10-04 08:38:38 -0500 (Sun, 04 Oct 2009) | 1 line
test logging
........
................
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/csv.py | 22 | ||||
-rw-r--r-- | Lib/getpass.py | 2 | ||||
-rw-r--r-- | Lib/inspect.py | 14 | ||||
-rw-r--r-- | Lib/logging/__init__.py | 30 | ||||
-rw-r--r-- | Lib/multiprocessing/managers.py | 2 | ||||
-rwxr-xr-x | Lib/platform.py | 2 | ||||
-rw-r--r-- | Lib/test/test___all__.py | 1 | ||||
-rw-r--r-- | Lib/test/test_csv.py | 9 | ||||
-rw-r--r-- | Lib/test/test_socket.py | 2 | ||||
-rw-r--r-- | Lib/textwrap.py | 6 |
10 files changed, 59 insertions, 31 deletions
@@ -165,7 +165,7 @@ class Sniffer: Returns a dialect (or None) corresponding to the sample """ - quotechar, delimiter, skipinitialspace = \ + quotechar, doublequote, delimiter, skipinitialspace = \ self._guess_quote_and_delimiter(sample, delimiters) if not delimiter: delimiter, skipinitialspace = self._guess_delimiter(sample, @@ -179,8 +179,8 @@ class Sniffer: lineterminator = '\r\n' quoting = QUOTE_MINIMAL # escapechar = '' - doublequote = False + dialect.doublequote = doublequote dialect.delimiter = delimiter # _csv.reader won't accept a quotechar of '' dialect.quotechar = quotechar or '"' @@ -212,8 +212,8 @@ class Sniffer: break if not matches: - return ('', None, 0) # (quotechar, delimiter, skipinitialspace) - + # (quotechar, doublequote, delimiter, skipinitialspace) + return ('', False, None, 0) quotes = {} delims = {} spaces = 0 @@ -248,7 +248,19 @@ class Sniffer: delim = '' skipinitialspace = 0 - return (quotechar, delim, skipinitialspace) + # if we see an extra quote between delimiters, we've got a + # double quoted format + dq_regexp = re.compile(r"((%(delim)s)|^)\W*%(quote)s[^%(delim)s\n]*%(quote)s[^%(delim)s\n]*%(quote)s\W*((%(delim)s)|$)" % \ + {'delim':delim, 'quote':quotechar}, re.MULTILINE) + + + + if dq_regexp.search(data): + doublequote = True + else: + doublequote = False + + return (quotechar, doublequote, delim, skipinitialspace) def _guess_delimiter(self, data, delimiters): diff --git a/Lib/getpass.py b/Lib/getpass.py index 857188f..d0030ae 100644 --- a/Lib/getpass.py +++ b/Lib/getpass.py @@ -51,7 +51,7 @@ def unix_getpass(prompt='Password: ', stream=None): # If that fails, see if stdin can be controlled. try: fd = sys.stdin.fileno() - except: + except (AttributeError, ValueError): passwd = fallback_getpass(prompt, stream) input = sys.stdin if not stream: diff --git a/Lib/inspect.py b/Lib/inspect.py index 79565c1..1f1b7f9 100644 --- a/Lib/inspect.py +++ b/Lib/inspect.py @@ -398,12 +398,12 @@ def getfile(object): if ismodule(object): if hasattr(object, '__file__'): return object.__file__ - raise TypeError('arg is a built-in module') + raise TypeError('{!r} is a built-in module'.format(object)) if isclass(object): object = sys.modules.get(object.__module__) if hasattr(object, '__file__'): return object.__file__ - raise TypeError('arg is a built-in class') + raise TypeError('{!r} is a built-in class'.format(object)) if ismethod(object): object = object.__func__ if isfunction(object): @@ -414,8 +414,8 @@ def getfile(object): object = object.f_code if iscode(object): return object.co_filename - raise TypeError('arg is not a module, class, method, ' - 'function, traceback, frame, or code object') + raise TypeError('{!r} is not a module, class, method, ' + 'function, traceback, frame, or code object'.format(object)) ModuleInfo = namedtuple('ModuleInfo', 'name suffix mode module_type') @@ -747,7 +747,7 @@ def _getfullargs(co): names of the * and ** arguments or None.""" if not iscode(co): - raise TypeError('arg is not a code object') + raise TypeError('{!r} is not a code object'.format(co)) nargs = co.co_argcount names = co.co_varnames @@ -811,7 +811,7 @@ def getfullargspec(func): if ismethod(func): func = func.__func__ if not isfunction(func): - raise TypeError('arg is not a Python function') + raise TypeError('{!r} is not a Python function'.format(func)) args, varargs, kwonlyargs, varkw = _getfullargs(func.__code__) return FullArgSpec(args, varargs, varkw, func.__defaults__, kwonlyargs, func.__kwdefaults__, func.__annotations__) @@ -944,7 +944,7 @@ def getframeinfo(frame, context=1): else: lineno = frame.f_lineno if not isframe(frame): - raise TypeError('arg is not a frame or traceback object') + raise TypeError('{!r} is not a frame or traceback object'.format(frame)) filename = getsourcefile(frame) or getfile(frame) if context > 0: diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py index f932110..fecca2b 100644 --- a/Lib/logging/__init__.py +++ b/Lib/logging/__init__.py @@ -271,11 +271,14 @@ class LogRecord: else: self.thread = None self.threadName = None - if logMultiprocessing: - from multiprocessing import current_process - self.processName = current_process().name - else: + if not logMultiprocessing: self.processName = None + else: + try: + from multiprocessing import current_process + self.processName = current_process().name + except ImportError: + self.processName = None if logProcesses and hasattr(os, 'getpid'): self.process = os.getpid() else: @@ -734,16 +737,16 @@ class StreamHandler(Handler): sys.stdout or sys.stderr may be used. """ - def __init__(self, strm=None): + def __init__(self, stream=None): """ Initialize the handler. - If strm is not specified, sys.stderr is used. + If stream is not specified, sys.stderr is used. """ Handler.__init__(self) - if strm is None: - strm = sys.stderr - self.stream = strm + if stream is None: + stream = sys.stderr + self.stream = stream def flush(self): """ @@ -1113,7 +1116,11 @@ class Logger(Filterer): Find the stack frame of the caller so that we can note the source file name, line number and function name. """ - f = currentframe().f_back + f = currentframe() + #On some versions of IronPython, currentframe() returns None if + #IronPython isn't run with -X:Frames. + if f is not None: + f = f.f_back rv = "(unknown file)", 0, "(unknown function)" while hasattr(f, "f_code"): co = f.f_code @@ -1145,7 +1152,8 @@ class Logger(Filterer): """ if _srcfile: #IronPython doesn't track Python frames, so findCaller throws an - #exception. We trap it here so that IronPython can use logging. + #exception on some versions of IronPython. We trap it here so that + #IronPython can use logging. try: fn, lno, func = self.findCaller() except ValueError: diff --git a/Lib/multiprocessing/managers.py b/Lib/multiprocessing/managers.py index 40af8f0..8faf34e 100644 --- a/Lib/multiprocessing/managers.py +++ b/Lib/multiprocessing/managers.py @@ -413,7 +413,7 @@ class Server(object): self.id_to_refcount[ident] -= 1 if self.id_to_refcount[ident] == 0: del self.id_to_obj[ident], self.id_to_refcount[ident] - util.debug('disposing of obj with id %d', ident) + util.debug('disposing of obj with id %r', ident) finally: self.mutex.release() diff --git a/Lib/platform.py b/Lib/platform.py index 21e098b..13129d5 100755 --- a/Lib/platform.py +++ b/Lib/platform.py @@ -10,7 +10,7 @@ """ # This module is maintained by Marc-Andre Lemburg <mal@egenix.com>. # If you find problems, please submit bug reports/patches via the -# Python SourceForge Project Page and assign them to "lemburg". +# Python bug tracker (http://bugs.python.org) and assign them to "lemburg". # # Still needed: # * more support for WinCE diff --git a/Lib/test/test___all__.py b/Lib/test/test___all__.py index 8ebe568..a4e69b2 100644 --- a/Lib/test/test___all__.py +++ b/Lib/test/test___all__.py @@ -82,6 +82,7 @@ class AllTest(unittest.TestCase): self.check_all("keyword") self.check_all("linecache") self.check_all("locale") + self.check_all("logging") self.check_all("macpath") self.check_all("macurl2path") self.check_all("mailbox") diff --git a/Lib/test/test_csv.py b/Lib/test/test_csv.py index 95105be..75d1a91 100644 --- a/Lib/test/test_csv.py +++ b/Lib/test/test_csv.py @@ -767,7 +767,7 @@ Stonecutters Seafood and Chop House, Lemont, IL, 12/19/02, Week Back 'Harry''s':'Arlington Heights':'IL':'2/1/03':'Kimi Hayes' 'Shark City':'Glendale Heights':'IL':'12/28/02':'Prezence' 'Tommy''s Place':'Blue Island':'IL':'12/28/02':'Blue Sunday/White Crow' -'Stonecutters Seafood and Chop House':'Lemont':'IL':'12/19/02':'Week Back' +'Stonecutters ''Seafood'' and Chop House':'Lemont':'IL':'12/19/02':'Week Back' """ header = '''\ "venue","city","state","date","performers" @@ -826,6 +826,13 @@ Stonecutters Seafood and Chop House, Lemont, IL, 12/19/02, Week Back self.assertEqual(dialect.delimiter, "|") self.assertEqual(dialect.quotechar, "'") + def test_doublequote(self): + sniffer = csv.Sniffer() + dialect = sniffer.sniff(self.header) + self.assertFalse(dialect.doublequote) + dialect = sniffer.sniff(self.sample2) + self.assertTrue(dialect.doublequote) + if not hasattr(sys, "gettotalrefcount"): if support.verbose: print("*** skipping leakage tests ***") else: diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py index 8313006..0f0cb80 100644 --- a/Lib/test/test_socket.py +++ b/Lib/test/test_socket.py @@ -291,7 +291,7 @@ class GeneralModuleTests(unittest.TestCase): # On some versions, this loses a reference orig = sys.getrefcount(__name__) socket.getnameinfo(__name__,0) - except SystemError: + except TypeError: if sys.getrefcount(__name__) != orig: self.fail("socket.getnameinfo loses a reference") diff --git a/Lib/textwrap.py b/Lib/textwrap.py index 1f2e9b4..f4886a1 100644 --- a/Lib/textwrap.py +++ b/Lib/textwrap.py @@ -135,7 +135,7 @@ class TextWrapper: """_split(text : string) -> [string] Split the text to wrap into indivisible chunks. Chunks are - not quite the same as words; see wrap_chunks() for full + not quite the same as words; see _wrap_chunks() for full details. As an example, the text Look, goof-ball -- use the -b option! breaks into the following chunks: @@ -163,9 +163,9 @@ class TextWrapper: space to two. """ i = 0 - pat = self.sentence_end_re + patsearch = self.sentence_end_re.search while i < len(chunks)-1: - if chunks[i+1] == " " and pat.search(chunks[i]): + if chunks[i+1] == " " and patsearch(chunks[i]): chunks[i+1] = " " i += 2 else: |