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