From: Hynek Schlawack Date: Sun, 15 Jul 2012 14:46:23 +0000 (+0200) Subject: #15180: Clarify posixpath.join() error message when mixing str & bytes X-Git-Tag: v3.3.0b2~198 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9ac4d8808f21869c558f2d9fd5e46cb083443ea8;p=thirdparty%2FPython%2Fcpython.git #15180: Clarify posixpath.join() error message when mixing str & bytes --- 9ac4d8808f21869c558f2d9fd5e46cb083443ea8 diff --cc Lib/posixpath.py index 9570a364a003,84bcc1355f9a..ab2aefface39 --- a/Lib/posixpath.py +++ b/Lib/posixpath.py @@@ -74,13 -74,20 +74,21 @@@ def join(a, *p) will be discarded.""" sep = _get_sep(a) path = a - for b in p: - if b.startswith(sep): - path = b - elif not path or path.endswith(sep): - path += b + try: + for b in p: + if b.startswith(sep): + path = b + elif not path or path.endswith(sep): + path += b + else: + path += sep + b + except TypeError: + strs = [isinstance(s, str) for s in (a, ) + p] + if any(strs) and not all(strs): - raise TypeError("Can't mix strings and bytes in path components.") ++ raise TypeError("Can't mix strings and bytes in path " ++ "components.") from None else: - path += sep + b + raise return path diff --cc Misc/NEWS index 5b1845a8cfd8,74e40387a2f9..a01767cf011d --- a/Misc/NEWS +++ b/Misc/NEWS @@@ -10,74 -10,87 +10,76 @@@ What's New in Python 3.3.0 Beta 2 Core and Builtins ----------------- -- Issue #15020: The program name used to search for Python's path is now - "python3" under Unix, not "python". - -- Issue #15033: Fix the exit status bug when modules invoked using -m swith, - return the proper failure return value (1). Patch contributed by Jeff Knupp. - -- Issue #12268: File readline, readlines and read() or readall() methods - no longer lose data when an underlying read system call is interrupted. - IOError is no longer raised due to a read system call returning EINTR - from within these methods. - -- Issue #15142: Fix reference leak when deallocating instances of types - created using PyType_FromSpec(). - -- Issue #10053: Don't close FDs when FileIO.__init__ fails. Loosely based on - the work by Hirokazu Yamamoto. +- Issue #15314: __main__.__loader__ is now set correctly during + interpreter startup -- Issue #14775: Fix a potential quadratic dict build-up due to the garbage - collector repeatedly trying to untrack dicts. +- Issue #15111: When a module imported using 'from import' has an ImportError + inside itself, don't mask that fact behind a generic ImportError for the + module itself. -- Issue #14494: Fix __future__.py and its documentation to note that - absolute imports are the default behavior in 3.0 instead of 2.7. - Patch by Sven Marnach. +- Issue #15293: Add GC support to the AST base node type. -- Issue #14761: Fix potential leak on an error case in the import machinery. +- Issue #15291: Fix a memory leak where AST nodes where not properly + deallocated. -- Issue #14699: Fix calling the classmethod descriptor directly. +- Issue #15110: Fix the tracebacks generated by "import xxx" to not show + the importlib stack frames. -- Issue #14433: Prevent msvcrt crash in interactive prompt when stdin - is closed. +- Issue #15020: The program name used to search for Python's path is now + "python3" under Unix, not "python". -- Issue #11603 (again): Setting __repr__ to __str__ now raises a RuntimeError - when repr() or str() is called on such an object. +- Issue #15033: Fix the exit status bug when modules invoked using -m swith, + return the proper failure return value (1). Patch contributed by Jeff Knupp. -- Issue #14658: Fix binding a special method to a builtin implementation of a - special method with a different name. +- Issue #15229: An OSError subclass whose __init__ doesn't call back + OSError.__init__ could produce incomplete instances, leading to crashes + when calling str() on them. + +Library +------- -- Issue #14630: Fix a memory access bug for instances of a subclass of int - with value 0. ++- Issue #15180: Clarify posixpath.join() error message when mixing str & bytes + -- Issue #14612: Fix jumping around with blocks by setting f_lineno. +- Issue #15343: pkgutil now includes an iter_importer_modules implementation + for importlib.machinery.FileFinder (similar to the way it already handled + zipimport.zipimporter) -- Issue #14607: Fix keyword-only arguments which started with ``__``. +- Issue #15314: runpy now sets __main__.__loader__ correctly -- Issue #13889: Check and (if necessary) set FPU control word before calling - any of the dtoa.c string <-> float conversion functions, on MSVC builds of - Python. This fixes issues when embedding Python in a Delphi app. +- Issue #15357: The import emulation in pkgutil is now deprecated. pkgutil + uses importlib internally rather than the emulation -- Issue #14474: Save and restore exception state in thread.start_new_thread() - while writing error message if the thread leaves a unhandled exception. +- Issue #15233: Python now guarantees that callables registered with + the atexit module will be called in a deterministic order. -- Issue #13019: Fix potential reference leaks in bytearray.extend(). Patch - by Suman Saha. +- Issue #15238: shutil.copystat now copies Linux "extended attributes". -- Issue #14378: Fix compiling ast.ImportFrom nodes with a "__future__" string as - the module name that was not interned. +- Issue #15230: runpy.run_path now correctly sets __package__ as described + in the documentation -- Issue #14331: Use significantly less stack space when importing modules by - allocating path buffers on the heap instead of the stack. +- Issue #15315: Support VS 2010 in distutils cygwincompiler. -- Issue #14334: Prevent in a segfault in type.__getattribute__ when it was not - passed strings. +- Issue #15294: Fix a regression in pkgutil.extend_path()'s handling of + nested namespace packages. -- Issue #1469629: Allow cycles through an object's __dict__ slot to be - collected. (For example if ``x.__dict__ is x``). +- Issue #15056: imp.cache_from_source() and source_from_cache() raise + NotImplementedError when sys.implementation.cache_tag is set to None. -- Issue #14172: Fix reference leak when marshalling a buffer-like object - (other than a bytes object). +- Issue #15256: Grammatical mistake in exception raised by imp.find_module(). -- Issue #13521: dict.setdefault() now does only one lookup for the given key, - making it "atomic" for many purposes. Patch by Filip Gruszczyński. +- Issue #5931: wsgiref environ variable SERVER_SOFTWARE will specify an + implementation specific term like Cpython, Jython instead of generic "Python" -- Issue #14471: Fix a possible buffer overrun in the winreg module. +- Issue #13248: Remove obsolete argument "max_buffer_size" of BufferedWriter + and BufferedRWPair, from the io module. -Library -------- +- Issue #13248: Remove obsolete argument "version" of argparse.ArgumentParser. -- Issue #15180: Clarify posixpath.join() error message when mixing str & bytes +- Issue #14814: implement more consistent ordering and sorting behaviour + for ipaddress objects -- Issue #15230: runpy.run_path now correctly sets __package__ as described - in the documentation +- Issue #14814: ipaddress network objects correctly return NotImplemented + when compared to arbitrary objects instead of raising TypeError - Issue #14990: Correctly fail with SyntaxError on invalid encoding declaration.