1Changelog for six 2================= 3 4This file lists the changes in each six version. 5 61.9.0 7----- 8 9- Issue #106: Support the `flush` parameter to `six.print_`. 10 11- Pull request #48 and issue #15: Add the `python_2_unicode_compatible` 12 decorator. 13 14- Pull request #57 and issue #50: Add several compatibility methods for unittest 15 assertions that were renamed between Python 2 and 3. 16 17- Issue #105 and pull request #58: Ensure `six.wraps` respects the *updated* and 18 *assigned* arguments. 19 20- Issue #102: Add `raise_from` to abstract out Python 3's raise from syntax. 21 22- Issue #97: Optimize `six.iterbytes` on Python 2. 23 24- Issue #98: Fix `six.moves` race condition in multi-threaded code. 25 26- Pull request #51: Add `six.view(keys|values|itmes)`, which provide dictionary 27 views on Python 2.7+. 28 291.8.0 30----- 31 32- Issue #90: Add `six.moves.shlex_quote`. 33 34- Issue #59: Add `six.moves.intern`. 35 36- Add `six.urllib.parse.uses_(fragment|netloc|params|query|relative)`. 37 38- Issue #88: Fix add_metaclass when the class has `__slots__` containing 39 `__weakref__` or `__dict__`. 40 41- Issue #89: Make six use absolute imports. 42 43- Issue #85: Always accept *updated* and *assigned* arguments for `wraps()`. 44 45- Issue #86: In `reraise()`, instantiate the exception if the second argument is 46 `None`. 47 48- Pull request #45: Add `six.moves.email_mime_nonmultipart`. 49 50- Issue #81: Add `six.urllib.request.splittag` mapping. 51 52- Issue #80: Add `six.urllib.request.splituser` mapping. 53 541.7.3 55----- 56 57- Issue #77: Fix import six on Python 3.4 with a custom loader. 58 59- Issue #74: `six.moves.xmlrpc_server` should map to `SimpleXMLRPCServer` on Python 60 2 as documented not `xmlrpclib`. 61 621.7.2 63----- 64 65- Issue #72: Fix installing on Python 2. 66 671.7.1 68----- 69 70- Issue #71: Make the six.moves meta path importer handle reloading of the six 71 module gracefully. 72 731.7.0 74----- 75 76- Pull request #30: Implement six.moves with a PEP 302 meta path hook. 77 78- Pull request #32: Add six.wraps, which is like functools.wraps but always sets 79 the __wrapped__ attribute. 80 81- Pull request #35: Improve add_metaclass, so that it doesn't end up inserting 82 another class into the hierarchy. 83 84- Pull request #34: Add import mappings for dummy_thread. 85 86- Pull request #33: Add import mappings for UserDict and UserList. 87 88- Pull request #31: Select the implementations of dictionary iterator routines 89 at import time for a 20% speed boost. 90 911.6.1 92----- 93 94- Raise an AttributeError for six.moves.X when X is a module not available in 95 the current interpreter. 96 971.6.0 98----- 99 100- Raise an AttributeError for every attribute of unimportable modules. 101 102- Issue #56: Make the fake modules six.moves puts into sys.modules appear not to 103 have a __path__ unless they are loaded. 104 105- Pull request #28: Add support for SplitResult. 106 107- Issue #55: Add move mapping for xmlrpc.server. 108 109- Pull request #29: Add move for urllib.parse.splitquery. 110 1111.5.2 112----- 113 114- Issue #53: Make the fake modules six.moves puts into sys.modules appear not to 115 have a __name__ unless they are loaded. 116 1171.5.1 118----- 119 120- Issue #51: Hack around the Django autoreloader after recent six.moves changes. 121 1221.5.0 123----- 124 125- Removed support for Python 2.4. This is because py.test no longer supports 126 2.4. 127 128- Fix various import problems including issues #19 and #41. six.moves modules 129 are now lazy wrappers over the underlying modules instead of the actual 130 modules themselves. 131 132- Issue #49: Add six.moves mapping for tkinter.ttk. 133 134- Pull request #24: Add __dir__ special method to six.moves modules. 135 136- Issue #47: Fix add_metaclass on classes with a string for the __slots__ 137 variable. 138 139- Issue #44: Fix interpretation of backslashes on Python 2 in the u() function. 140 141- Pull request #21: Add import mapping for urllib's proxy_bypass function. 142 143- Issue #43: Add import mapping for the Python 2 xmlrpclib module. 144 145- Issue #39: Add import mapping for the Python 2 thread module. 146 147- Issue #40: Add import mapping for the Python 2 gdbm module. 148 149- Issue #35: On Python versions less than 2.7, print_ now encodes unicode 150 strings when outputing to standard streams. (Python 2.7 handles this 151 automatically.) 152 1531.4.1 154----- 155 156- Issue #32: urllib module wrappings don't work when six is not a toplevel file. 157 1581.4.0 159----- 160 161- Issue #31: Add six.moves mapping for UserString. 162 163- Pull request #12: Add six.add_metaclass, a decorator for adding a metaclass to 164 a class. 165 166- Add six.moves.zip_longest and six.moves.filterfalse, which correspond 167 respectively to itertools.izip_longest and itertools.ifilterfalse on Python 2 168 and itertools.zip_longest and itertools.filterfalse on Python 3. 169 170- Issue #25: Add the unichr function, which returns a string for a Unicode 171 codepoint. 172 173- Issue #26: Add byte2int function, which complements int2byte. 174 175- Add a PY2 constant with obvious semantics. 176 177- Add helpers for indexing and iterating over bytes: iterbytes and indexbytes. 178 179- Add create_bound_method() wrapper. 180 181- Issue #23: Allow multiple base classes to be passed to with_metaclass. 182 183- Issue #24: Add six.moves.range alias. This exactly the same as the current 184 xrange alias. 185 186- Pull request #5: Create six.moves.urllib, which contains abstractions for a 187 bunch of things which are in urllib in Python 3 and spread out across urllib, 188 urllib2, and urlparse in Python 2. 189 1901.3.0 191----- 192 193- Issue #21: Add methods to access the closure and globals of a function. 194 195- In six.iter(items/keys/values/lists), passed keyword arguments through to the 196 underlying method. 197 198- Add six.iterlists(). 199 200- Issue #20: Fix tests if tkinter is not available. 201 202- Issue #17: Define callable to be builtin callable when it is available again 203 in Python 3.2+. 204 205- Issue #16: Rename Python 2 exec_'s arguments, so casually calling exec_ with 206 keyword arguments will raise. 207 208- Issue #14: Put the six.moves package in sys.modules based on the name six is 209 imported under. 210 211- Fix Jython detection. 212 213- Pull request #4: Add email_mime_multipart, email_mime_text, and 214 email_mime_base to six.moves. 215 2161.2.0 217----- 218 219- Issue #13: Make iterkeys/itervalues/iteritems return iterators on Python 3 220 instead of iterables. 221 222- Issue #11: Fix maxsize support on Jython. 223 224- Add six.next() as an alias for six.advance_iterator(). 225 226- Use the builtin next() function for advance_iterator() where is available 227 (2.6+), not just Python 3. 228 229- Add the Iterator class for writing portable iterators. 230 2311.1.0 232----- 233 234- Add the int2byte function. 235 236- Add compatibility mappings for iterators over the keys, values, and items of a 237 dictionary. 238 239- Fix six.MAXSIZE on platforms where sizeof(long) != sizeof(Py_ssize_t). 240 241- Issue #3: Add six.moves mappings for filter, map, and zip. 242 2431.0.0 244----- 245 246- Issue #2: u() on Python 2.x now resolves unicode escapes. 247 248- Expose an API for adding mappings to six.moves. 249 2501.0 beta 1 251---------- 252 253- Reworked six into one .py file. This breaks imports. Please tell me if you 254 are interested in an import compatibility layer. 255