diff options
Diffstat (limited to 'FOSS/Python/Dependencies/future-0.18.2/docs/quickstart.rst')
| -rw-r--r-- | FOSS/Python/Dependencies/future-0.18.2/docs/quickstart.rst | 153 |
1 files changed, 153 insertions, 0 deletions
diff --git a/FOSS/Python/Dependencies/future-0.18.2/docs/quickstart.rst b/FOSS/Python/Dependencies/future-0.18.2/docs/quickstart.rst new file mode 100644 index 0000000..6042e05 --- /dev/null +++ b/FOSS/Python/Dependencies/future-0.18.2/docs/quickstart.rst @@ -0,0 +1,153 @@ +.. _quickstart-guide: + +Quick-start guide +================= + +You can use ``future`` to help to port your code from Python 2 to Python 3 +today -- and still have it run on Python 2. + +If you already have Python 3 code, you can instead use ``future`` to +offer Python 2 compatibility with almost no extra work. + +Installation +------------ + +To install the latest stable version, type:: + + pip install future + +If you would prefer the latest development version, it is available `here +<https://github.com/PythonCharmers/python-future>`_. + + +If you are writing code from scratch +------------------------------------ + +The easiest way is to start each new module with these lines:: + + from __future__ import (absolute_import, division, + print_function, unicode_literals) + from builtins import * + +Then write standard Python 3 code. The :mod:`future` package will +provide support for running your code on Python 2.7, and 3.4+ mostly +unchanged. + +- For explicit import forms, see :ref:`explicit-imports`. +- For more details, see :ref:`what-else`. +- For a cheat sheet, see :ref:`compatible-idioms`. + + +To convert existing Python 3 code +--------------------------------- + +To offer backward compatibility with Python 2 from your Python 3 code, +you can use the ``pasteurize`` script. This adds these lines at the top of each +module:: + + from __future__ import absolute_import + from __future__ import division + from __future__ import print_function + from __future__ import unicode_literals + + from builtins import open + from builtins import str + # etc., as needed + + from future import standard_library + standard_library.install_aliases() + +and converts several Python 3-only constructs (like keyword-only arguments) to a +form compatible with both Py3 and Py2. Most remaining Python 3 code should +simply work on Python 2. + +See :ref:`backwards-conversion` for more details. + + +To convert existing Python 2 code +--------------------------------- + +.. include:: futurize_overview.rst + +See :ref:`forwards-conversion-stage1` and :ref:`forwards-conversion-stage2` for more details. + +.. If you already know Python 3, start with the :ref:`automatic-conversion` page. +.. If you don't know Python 3 yet, start with :ref:`python3-essentials`. + + +.. _standard-library: + +Standard library reorganization +------------------------------- + +:mod:`future` supports the standard library reorganization (PEP 3108) via +one of several mechanisms, allowing most moved standard library modules +to be accessed under their Python 3 names and locations in Python 2:: + + from future import standard_library + standard_library.install_aliases() + + # Then these Py3-style imports work on both Python 2 and Python 3: + import socketserver + import queue + from collections import UserDict, UserList, UserString + from collections import ChainMap # even on Py2.7 + from itertools import filterfalse, zip_longest + + import html + import html.entities + import html.parser + + import http + import http.client + import http.server + import http.cookies + import http.cookiejar + + import urllib.request + import urllib.parse + import urllib.response + import urllib.error + import urllib.robotparser + + import xmlrpc.client + import xmlrpc.server + +and others. For a complete list, see :ref:`direct-imports`. + +.. _py2-dependencies: + +Python 2-only dependencies +-------------------------- + +If you have dependencies that support only Python 2, you may be able to use the +``past`` module to automatically translate these Python 2 modules to Python 3 +upon import. First, install the Python 2-only package into your Python 3 +environment:: + + $ pip3 install mypackagename --no-compile # to ignore SyntaxErrors + +(or use ``pip`` if this points to your Py3 environment.) + +Then add the following code at the top of your (Py3 or Py2/3-compatible) +code:: + + from past.translation import autotranslate + autotranslate(['mypackagename']) + import mypackagename + +This feature is experimental, and we would appreciate your feedback on +how well this works or doesn't work for you. Please file an issue `here +<https://github.com/PythonCharmers/python-future>`_ or post to the +`python-porting <https://mail.python.org/mailman/listinfo/python-porting>`_ +mailing list. + +For more information on the automatic translation feature, see :ref:`translation`. + + +Next steps +---------- +For more information about writing Py2/3-compatible code, see: + +- :ref:`compatible-idioms` +- :ref:`what-else`. |
