File: pasteurize.rst

package info (click to toggle)
python-future 0.15.2-4
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 8,420 kB
  • ctags: 6,337
  • sloc: python: 42,496; makefile: 141; sh: 45
file content (39 lines) | stat: -rw-r--r-- 993 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
.. _backwards-conversion:

``pasteurize``: Py3 to Py2/3
----------------------------

Running ``pasteurize -w mypy3module.py`` turns this Python 3 code::
    
    import configparser
    
    class Blah:
        pass
    print('Hello', end=None)

into this code which runs on both Py2 and Py3::
    
    from __future__ import print_function
    from future import standard_library
    standard_library.install_hooks()
    
    import configparser

    class Blah(object):
        pass
    print('Hello', end=None)

Notice that both ``futurize`` and ``pasteurize`` create explicit new-style
classes that inherit from ``object`` on both Python versions, and both 
refer to stdlib modules (as well as builtins) under their Py3 names.

``pasteurize`` also handles the following Python 3 features:

- keyword-only arguments
- metaclasses (using :func:`~future.utils.with_metaclass`)
- extended tuple unpacking (PEP 3132)

To handle function annotations (PEP 3107), see :ref:`func_annotations`.