| OLD | NEW |
| 1 Six: Python 2 and 3 Compatibility Library | 1 Six: Python 2 and 3 Compatibility Library |
| 2 ========================================= | 2 ========================================= |
| 3 | 3 |
| 4 .. module:: six | 4 .. module:: six |
| 5 :synopsis: Python 2 and 3 compatibility | 5 :synopsis: Python 2 and 3 compatibility |
| 6 | 6 |
| 7 .. moduleauthor:: Benjamin Peterson <benjamin@python.org> | 7 .. moduleauthor:: Benjamin Peterson <benjamin@python.org> |
| 8 .. sectionauthor:: Benjamin Peterson <benjamin@python.org> | 8 .. sectionauthor:: Benjamin Peterson <benjamin@python.org> |
| 9 | 9 |
| 10 | 10 |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 225 | 225 |
| 226 | 226 |
| 227 .. function:: create_bound_method(func, obj) | 227 .. function:: create_bound_method(func, obj) |
| 228 | 228 |
| 229 Return a method object wrapping *func* and bound to *obj*. On both Python 2 | 229 Return a method object wrapping *func* and bound to *obj*. On both Python 2 |
| 230 and 3, this will return a :func:`py3:types.MethodType` object. The reason | 230 and 3, this will return a :func:`py3:types.MethodType` object. The reason |
| 231 this wrapper exists is that on Python 2, the ``MethodType`` constructor | 231 this wrapper exists is that on Python 2, the ``MethodType`` constructor |
| 232 requires the *obj*'s class to be passed. | 232 requires the *obj*'s class to be passed. |
| 233 | 233 |
| 234 | 234 |
| 235 .. function:: create_unbound_method(func, cls) |
| 236 |
| 237 Return an unbound method object wrapping *func*. In Python 2, this will |
| 238 return a :func:`py2:types.MethodType` object. In Python 3, unbound methods |
| 239 do not exist and this wrapper will simply return *func*. |
| 240 |
| 241 |
| 235 .. class:: Iterator | 242 .. class:: Iterator |
| 236 | 243 |
| 237 A class for making portable iterators. The intention is that it be subclassed | 244 A class for making portable iterators. The intention is that it be subclassed |
| 238 and subclasses provide a ``__next__`` method. In Python 2, :class:`Iterator` | 245 and subclasses provide a ``__next__`` method. In Python 2, :class:`Iterator` |
| 239 has one method: ``next``. It simply delegates to ``__next__``. An alternate | 246 has one method: ``next``. It simply delegates to ``__next__``. An alternate |
| 240 way to do this would be to simply alias ``next`` to ``__next__``. However, | 247 way to do this would be to simply alias ``next`` to ``__next__``. However, |
| 241 this interacts badly with subclasses that override | 248 this interacts badly with subclasses that override |
| 242 ``__next__``. :class:`Iterator` is empty on Python 3. (In fact, it is just | 249 ``__next__``. :class:`Iterator` is empty on Python 3. (In fact, it is just |
| 243 aliased to :class:`py3:object`.) | 250 aliased to :class:`py3:object`.) |
| 244 | 251 |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 376 | 383 |
| 377 A "fake" unicode literal. *text* should always be a normal string literal. | 384 A "fake" unicode literal. *text* should always be a normal string literal. |
| 378 In Python 2, :func:`u` returns unicode, and in Python 3, a string. Also, in | 385 In Python 2, :func:`u` returns unicode, and in Python 3, a string. Also, in |
| 379 Python 2, the string is decoded with the ``unicode-escape`` codec, which | 386 Python 2, the string is decoded with the ``unicode-escape`` codec, which |
| 380 allows unicode escapes to be used in it. | 387 allows unicode escapes to be used in it. |
| 381 | 388 |
| 382 | 389 |
| 383 .. note:: | 390 .. note:: |
| 384 | 391 |
| 385 In Python 3.3, the ``u`` prefix has been reintroduced. Code that only | 392 In Python 3.3, the ``u`` prefix has been reintroduced. Code that only |
| 386 supports Python 3 versions greater than 3.3 thus does not need | 393 supports Python 3 versions of 3.3 and higher thus does not need |
| 387 :func:`u`. | 394 :func:`u`. |
| 388 | 395 |
| 389 .. note:: | 396 .. note:: |
| 390 | 397 |
| 391 On Python 2, :func:`u` doesn't know what the encoding of the literal | 398 On Python 2, :func:`u` doesn't know what the encoding of the literal |
| 392 is. Each byte is converted directly to the unicode codepoint of the same | 399 is. Each byte is converted directly to the unicode codepoint of the same |
| 393 value. Because of this, it's only safe to use :func:`u` with strings of | 400 value. Because of this, it's only safe to use :func:`u` with strings of |
| 394 ASCII data. | 401 ASCII data. |
| 395 | 402 |
| 396 | 403 |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 563 | ``email_mime_nonmultipart`` | :mod:`py2:email.MIMENonMultipart` | :mod:`py3
:email.mime.nonmultipart` | | 570 | ``email_mime_nonmultipart`` | :mod:`py2:email.MIMENonMultipart` | :mod:`py3
:email.mime.nonmultipart` | |
| 564 +------------------------------+-------------------------------------+----------
---------------------------+ | 571 +------------------------------+-------------------------------------+----------
---------------------------+ |
| 565 | ``email_mime_text`` | :mod:`py2:email.MIMEText` | :mod:`py3
:email.mime.text` | | 572 | ``email_mime_text`` | :mod:`py2:email.MIMEText` | :mod:`py3
:email.mime.text` | |
| 566 +------------------------------+-------------------------------------+----------
---------------------------+ | 573 +------------------------------+-------------------------------------+----------
---------------------------+ |
| 567 | ``email_mime_base`` | :mod:`py2:email.MIMEBase` | :mod:`py3
:email.mime.base` | | 574 | ``email_mime_base`` | :mod:`py2:email.MIMEBase` | :mod:`py3
:email.mime.base` | |
| 568 +------------------------------+-------------------------------------+----------
---------------------------+ | 575 +------------------------------+-------------------------------------+----------
---------------------------+ |
| 569 | ``filter`` | :func:`py2:itertools.ifilter` | :func:`py
3:filter` | | 576 | ``filter`` | :func:`py2:itertools.ifilter` | :func:`py
3:filter` | |
| 570 +------------------------------+-------------------------------------+----------
---------------------------+ | 577 +------------------------------+-------------------------------------+----------
---------------------------+ |
| 571 | ``filterfalse`` | :func:`py2:itertools.ifilterfalse` | :func:`py
3:itertools.filterfalse` | | 578 | ``filterfalse`` | :func:`py2:itertools.ifilterfalse` | :func:`py
3:itertools.filterfalse` | |
| 572 +------------------------------+-------------------------------------+----------
---------------------------+ | 579 +------------------------------+-------------------------------------+----------
---------------------------+ |
| 580 | ``getcwd`` | :func:`py2:os.getcwdu` | :func:`py
3:os.getcwd` | |
| 581 +------------------------------+-------------------------------------+----------
---------------------------+ |
| 582 | ``getcwdb`` | :func:`py2:os.getcwd` | :func:`py
3:os.getcwdb` | |
| 583 +------------------------------+-------------------------------------+----------
---------------------------+ |
| 573 | ``http_cookiejar`` | :mod:`py2:cookielib` | :mod:`py3
:http.cookiejar` | | 584 | ``http_cookiejar`` | :mod:`py2:cookielib` | :mod:`py3
:http.cookiejar` | |
| 574 +------------------------------+-------------------------------------+----------
---------------------------+ | 585 +------------------------------+-------------------------------------+----------
---------------------------+ |
| 575 | ``http_cookies`` | :mod:`py2:Cookie` | :mod:`py3
:http.cookies` | | 586 | ``http_cookies`` | :mod:`py2:Cookie` | :mod:`py3
:http.cookies` | |
| 576 +------------------------------+-------------------------------------+----------
---------------------------+ | 587 +------------------------------+-------------------------------------+----------
---------------------------+ |
| 577 | ``html_entities`` | :mod:`py2:htmlentitydefs` | :mod:`py3
:html.entities` | | 588 | ``html_entities`` | :mod:`py2:htmlentitydefs` | :mod:`py3
:html.entities` | |
| 578 +------------------------------+-------------------------------------+----------
---------------------------+ | 589 +------------------------------+-------------------------------------+----------
---------------------------+ |
| 579 | ``html_parser`` | :mod:`py2:HTMLParser` | :mod:`py3
:html.parser` | | 590 | ``html_parser`` | :mod:`py2:HTMLParser` | :mod:`py3
:html.parser` | |
| 580 +------------------------------+-------------------------------------+----------
---------------------------+ | 591 +------------------------------+-------------------------------------+----------
---------------------------+ |
| 581 | ``http_client`` | :mod:`py2:httplib` | :mod:`py3
:http.client` | | 592 | ``http_client`` | :mod:`py2:httplib` | :mod:`py3
:http.client` | |
| 582 +------------------------------+-------------------------------------+----------
---------------------------+ | 593 +------------------------------+-------------------------------------+----------
---------------------------+ |
| 583 | ``BaseHTTPServer`` | :mod:`py2:BaseHTTPServer` | :mod:`py3
:http.server` | | 594 | ``BaseHTTPServer`` | :mod:`py2:BaseHTTPServer` | :mod:`py3
:http.server` | |
| 584 +------------------------------+-------------------------------------+----------
---------------------------+ | 595 +------------------------------+-------------------------------------+----------
---------------------------+ |
| 585 | ``CGIHTTPServer`` | :mod:`py2:CGIHTTPServer` | :mod:`py3
:http.server` | | 596 | ``CGIHTTPServer`` | :mod:`py2:CGIHTTPServer` | :mod:`py3
:http.server` | |
| 586 +------------------------------+-------------------------------------+----------
---------------------------+ | 597 +------------------------------+-------------------------------------+----------
---------------------------+ |
| 587 | ``SimpleHTTPServer`` | :mod:`py2:SimpleHTTPServer` | :mod:`py3
:http.server` | | 598 | ``SimpleHTTPServer`` | :mod:`py2:SimpleHTTPServer` | :mod:`py3
:http.server` | |
| 588 +------------------------------+-------------------------------------+----------
---------------------------+ | 599 +------------------------------+-------------------------------------+----------
---------------------------+ |
| 589 | ``input`` | :func:`py2:raw_input` | :func:`py
3:input` | | 600 | ``input`` | :func:`py2:raw_input` | :func:`py
3:input` | |
| 590 +------------------------------+-------------------------------------+----------
---------------------------+ | 601 +------------------------------+-------------------------------------+----------
---------------------------+ |
| 591 | ``intern`` | :func:`py2:intern` | :func:`py
3:sys.intern` | | 602 | ``intern`` | :func:`py2:intern` | :func:`py
3:sys.intern` | |
| 592 +------------------------------+-------------------------------------+----------
---------------------------+ | 603 +------------------------------+-------------------------------------+----------
---------------------------+ |
| 593 | ``map`` | :func:`py2:itertools.imap` | :func:`py
3:map` | | 604 | ``map`` | :func:`py2:itertools.imap` | :func:`py
3:map` | |
| 594 +------------------------------+-------------------------------------+----------
---------------------------+ | 605 +------------------------------+-------------------------------------+----------
---------------------------+ |
| 595 | ``queue`` | :mod:`py2:Queue` | :mod:`py3
:queue` | | 606 | ``queue`` | :mod:`py2:Queue` | :mod:`py3
:queue` | |
| 596 +------------------------------+-------------------------------------+----------
---------------------------+ | 607 +------------------------------+-------------------------------------+----------
---------------------------+ |
| 597 | ``range`` | :func:`py2:xrange` | :func:`py
3:range` | | 608 | ``range`` | :func:`py2:xrange` | :func:`py
3:range` | |
| 598 +------------------------------+-------------------------------------+----------
---------------------------+ | 609 +------------------------------+-------------------------------------+----------
---------------------------+ |
| 599 | ``reduce`` | :func:`py2:reduce` | :func:`py
3:functools.reduce` | | 610 | ``reduce`` | :func:`py2:reduce` | :func:`py
3:functools.reduce` | |
| 600 +------------------------------+-------------------------------------+----------
---------------------------+ | 611 +------------------------------+-------------------------------------+----------
---------------------------+ |
| 601 | ``reload_module`` | :func:`py2:reload` | :func:`py
3:imp.reload` | | 612 | ``reload_module`` | :func:`py2:reload` | :func:`py
3:imp.reload`, | |
| 613 | | | :func:`py
3:importlib.reload` | |
| 614 | | | on Python
3.4+ | |
| 602 +------------------------------+-------------------------------------+----------
---------------------------+ | 615 +------------------------------+-------------------------------------+----------
---------------------------+ |
| 603 | ``reprlib`` | :mod:`py2:repr` | :mod:`py3
:reprlib` | | 616 | ``reprlib`` | :mod:`py2:repr` | :mod:`py3
:reprlib` | |
| 604 +------------------------------+-------------------------------------+----------
---------------------------+ | 617 +------------------------------+-------------------------------------+----------
---------------------------+ |
| 605 | ``shlex_quote`` | :mod:`py2:pipes.quote` | :mod:`py3
:shlex.quote` | | 618 | ``shlex_quote`` | :mod:`py2:pipes.quote` | :mod:`py3
:shlex.quote` | |
| 606 +------------------------------+-------------------------------------+----------
---------------------------+ | 619 +------------------------------+-------------------------------------+----------
---------------------------+ |
| 607 | ``socketserver`` | :mod:`py2:SocketServer` | :mod:`py3
:socketserver` | | 620 | ``socketserver`` | :mod:`py2:SocketServer` | :mod:`py3
:socketserver` | |
| 608 +------------------------------+-------------------------------------+----------
---------------------------+ | 621 +------------------------------+-------------------------------------+----------
---------------------------+ |
| 609 | ``_thread`` | :mod:`py2:thread` | :mod:`py3
:_thread` | | 622 | ``_thread`` | :mod:`py2:thread` | :mod:`py3
:_thread` | |
| 610 +------------------------------+-------------------------------------+----------
---------------------------+ | 623 +------------------------------+-------------------------------------+----------
---------------------------+ |
| 611 | ``tkinter`` | :mod:`py2:Tkinter` | :mod:`py3
:tkinter` | | 624 | ``tkinter`` | :mod:`py2:Tkinter` | :mod:`py3
:tkinter` | |
| (...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 819 modules in Python 2 and 3. *old_mod* is the name of the Python 2 module. | 832 modules in Python 2 and 3. *old_mod* is the name of the Python 2 module. |
| 820 *new_mod* is the name of the Python 3 module. | 833 *new_mod* is the name of the Python 3 module. |
| 821 | 834 |
| 822 | 835 |
| 823 .. class:: MovedAttribute(name, old_mod, new_mod, old_attr=None, new_attr=None) | 836 .. class:: MovedAttribute(name, old_mod, new_mod, old_attr=None, new_attr=None) |
| 824 | 837 |
| 825 Create a mapping for :mod:`six.moves` called *name* that references different | 838 Create a mapping for :mod:`six.moves` called *name* that references different |
| 826 attributes in Python 2 and 3. *old_mod* is the name of the Python 2 module. | 839 attributes in Python 2 and 3. *old_mod* is the name of the Python 2 module. |
| 827 *new_mod* is the name of the Python 3 module. If *new_attr* is not given, it | 840 *new_mod* is the name of the Python 3 module. If *new_attr* is not given, it |
| 828 defaults to *old_attr*. If neither is given, they both default to *name*. | 841 defaults to *old_attr*. If neither is given, they both default to *name*. |
| OLD | NEW |