]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
#15180: Clarify posixpath.join() error message when mixing str & bytes
authorHynek Schlawack <hs@ox.cx>
Sun, 15 Jul 2012 14:46:23 +0000 (16:46 +0200)
committerHynek Schlawack <hs@ox.cx>
Sun, 15 Jul 2012 14:46:23 +0000 (16:46 +0200)
1  2 
Lib/posixpath.py
Lib/test/test_posixpath.py
Misc/NEWS

index 9570a364a00398361a46aa5dbdcd6ab4fd660c09,84bcc1355f9aaf93e013179077c0300852bfaa29..ab2aefface39e55962d18f1036c23537f8be4896
@@@ -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
  
  
Simple merge
diff --cc Misc/NEWS
index 5b1845a8cfd8cf868e89e7969abd83a0c396e358,74e40387a2f93a417f102578bdb5a6ae042a7980..a01767cf011d359b7b7c78563fd4aa6559a05809
+++ 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.