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