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