From 315eba8d79c241829622059e5981bf63e5c43a20 Mon Sep 17 00:00:00 2001
From: Tony Narlock
Date: Fri, 20 Mar 2015 11:25:41 -0700
Subject: [PATCH 001/671] Add ptpython to other tools
https://github.com/jonathanslenders/ptpython/
---
docs/dev/env.rst | 22 +++++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)
diff --git a/docs/dev/env.rst b/docs/dev/env.rst
index 0503e9010..9977d74df 100644
--- a/docs/dev/env.rst
+++ b/docs/dev/env.rst
@@ -278,7 +278,6 @@ most out of using Python interactively. Its main components are:
$ pip install ipython
-
BPython
-------
@@ -298,3 +297,24 @@ features:
.. code-block:: console
$ pip install bpython
+
+ptpython
+--------
+
+`ptpython `_ is a REPL build
+on top of the `prompt_toolkit `_
+library. It is considered to be an alternative to BPython_. Features include:
+
+* Syntax highlighting
+* Autocompletion
+* Multiline editing
+* Emacs and VIM Mode
+* Embedding REPL inside of your code
+* Syntax Validation
+* Tab pages
+* Support for integrating with IPython_'s shell, by installing IPython
+ ``pip install ipython`` and running ``ptipython``.
+
+.. code-block:: console
+
+ $ pip install ptpython
From 6f8082d1b6079ccbe84f5c2671ade1bf602418bd Mon Sep 17 00:00:00 2001
From: Andy Smith
Date: Sun, 16 Aug 2015 20:58:12 +0100
Subject: [PATCH 002/671] reflect unification of python in emacs.
---
docs/dev/env.rst | 4 ----
1 file changed, 4 deletions(-)
diff --git a/docs/dev/env.rst b/docs/dev/env.rst
index d9a6fce4e..6aca3b71c 100644
--- a/docs/dev/env.rst
+++ b/docs/dev/env.rst
@@ -100,10 +100,6 @@ it can be some work to wire up correctly. A good start if you're already an
Emacs user is `Python Programming in Emacs`_ at EmacsWiki.
1. Emacs itself comes with a Python mode.
-2. Python ships with an alternate version:
- `python-mode.el `_
-3. Fabián Ezequiel Gallina's `python.el `_
- provides nice functionality and behavior out of the box
.. _Python Programming in Emacs: http://emacswiki.org/emacs/PythonProgrammingInEmacs
From 1a79ec73c223059372d6bd2a9b4d4af1cfd8ee0d Mon Sep 17 00:00:00 2001
From: Jonathan Hartley
Date: Fri, 21 Aug 2015 13:27:33 +0100
Subject: [PATCH 003/671] Intro paras for Freezing and Packaging Your Code
I've tried to describe why you would choose one method over
another, and what the relative advantages and disadvantages
are of each method.
I'm painfully aware that I haven't covered the combo of
freezing an application *then* creating a Linux distro
package of it, but maybe that's a battle for another day.
My intent is to add more content on the Freezing page
once this commit is accepted, so I can hear your feedback
before doing any further work.
Thanks.
---
docs/shipping/freezing.rst | 32 ++++++++++++++----
docs/shipping/packaging.rst | 67 +++++++++++++++++++++++++++++++++++--
2 files changed, 90 insertions(+), 9 deletions(-)
diff --git a/docs/shipping/freezing.rst b/docs/shipping/freezing.rst
index 9eb559ec0..668bdeb09 100644
--- a/docs/shipping/freezing.rst
+++ b/docs/shipping/freezing.rst
@@ -1,17 +1,35 @@
+.. _freezing-your-code-ref:
+
+==================
Freezing Your Code
==================
-An alternative to shipping your code is freezing it — shipping it as an
-executable with a bundled Python interpreter.
+To 'Freeze' your code is to distribute to end-users as an executable which
+includes a bundled Python interpreter.
-Many applications you use every day do this:
+Applications such as 'Dropbox', BitTorrent clients, 'Eve Online' and
+'Civilisation IV' do this.
-- Dropbox
-- BitTorrent
-- ...
+The advantage of distributing this way is that your application will work even
+if the user doesn't already have the required version of Python installed. On
+Windows, and even on many Linux distributions and OSX versions, the right
+version of Python will not already be installed.
-.. todo:: Fill in "Freezing Your Code" stub
+One disadvantage is that it will bloat your distribution by about 2Mb.
+Another problem is that your application, once downloaded by a user, will
+not receive any security updates to the version of Python it uses.
+
+Alternatives to Freezing
+------------------------
+:ref:`Packaging your code ` is for distributing
+libraries or tools to other developers.
+
+On Linux, an alternative to freezing is to
+:ref:`create a Linux distro package `
+(e.g. a .deb file for Debian or Ubuntu.)
+
+.. todo:: Fill in "Freezing Your Code" stub
Comparison
diff --git a/docs/shipping/packaging.rst b/docs/shipping/packaging.rst
index 482a18c84..d854c0d01 100644
--- a/docs/shipping/packaging.rst
+++ b/docs/shipping/packaging.rst
@@ -1,13 +1,43 @@
+.. _packaging-your-code-ref:
+
+===================
Packaging Your Code
===================
-Packaging your code is important.
+Package your code to share it with other developers. For example
+to share a library for other developers to use in their application,
+or for development tools like 'py.test'.
+
+An advantage of this method of distribution is its well established ecosystem
+of tools such as PyPI and pip, which make it easy for other developers to
+download and install your package either for casual experiments, or as part of
+large, professional systems.
-You'll need to package your code first before sharing it with other developers.
+It is a well-established convention for Python code to be shared this way.
+If your code isn't packaged on PyPI, then it will be harder
+for other developers to find it, and to use it as part of their existing
+process. They will regard such projects with substantial suspicion of being
+either badly managed or abandoned.
+
+The downside of distributing code like this is that it relies on the
+recipient understanding how to install the required version of Python,
+and being able and willing to use tools such as pip to install your code's
+other dependencies. This is fine when distributing to other developers, but
+makes this method unsuitable for distributing applications to end-uers.
The `Python Packaging Guide `_
provides an extensive guide on creating and maintaining Python packages.
+Alternatives to Packaging
+:::::::::::::::::::::::::
+
+To distribute applications to end-users, you should
+:ref:`freeze your application `.
+
+On Linux, you may also want to consider
+:ref:`creating a Linux distro package `
+(e.g. a .deb file for Debian or Ubuntu.)
+
For Python Developers
:::::::::::::::::::::
@@ -106,9 +136,42 @@ prerequisite for this is that you have an Amazon AWS account with an S3 bucket.
* You can now install your package with :code:`pip install --index-url=http://your-s3-bucket/packages/simple/ YourPackage`
+.. _packaging-for-linux-distributions-ref:
+
For Linux Distributions
::::::::::::::::::::::::
+Creating a Linux distro package is arguably the "right way" to distribute code
+on Linux.
+
+Because a distribution package doesn't include the Python interpreter, it
+makes the download and install about 2Mb smaller than
+:ref:`freezing your application `.
+
+Also, if a distribution releases a new security update for Python, then your
+application will automatically start using that new version of Python.
+
+However, creating and maintaining the different configurations required for
+each distribution's format (e.g. .deb for Debian/Ubuntu, .rpm for Red
+Hat/Fedora, etc) is a fair amount of work. If your code is an application that
+you plan to distribute on other platforms, then you'll also have to create and
+maintain the separate config required to freeze your application for Windows
+and OSX. It would be much less work to simply create and maintain a single
+config for one of the cross platform :ref:`freezing tools
+`, which will produce stand-alone executables for all
+distributions of Linux, as well as Windows and OSX.
+
+Creating a distribution package is also problematic if your code is for a
+version of Python that isn't currently supported by a distribution.
+Having to tell *some versions* of Ubuntu end-users that they need to add `the
+'dead-snakes' PPA `_
+using `sudo apt-repository` commands before they can install your .deb file
+makes for an extremely hostile user experience. Not only that, but you'd have
+to maintain a custom equivalent of these instructions for every distribution,
+and worse, have your users read, understand, and act on them.
+
+Having said all that, here's how to do it:
+
* `Fedora `_
* `Debian and Ubuntu `_
* `Arch `_
From 5587288b81412cb18f30408bbf160afcfc0d4536 Mon Sep 17 00:00:00 2001
From: Jonathan Hartley
Date: Fri, 21 Aug 2015 13:30:50 +0100
Subject: [PATCH 004/671] Freezing: clarify how it affects Python security
updates
---
docs/shipping/freezing.rst | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/docs/shipping/freezing.rst b/docs/shipping/freezing.rst
index 668bdeb09..cdea1e661 100644
--- a/docs/shipping/freezing.rst
+++ b/docs/shipping/freezing.rst
@@ -16,8 +16,9 @@ Windows, and even on many Linux distributions and OSX versions, the right
version of Python will not already be installed.
One disadvantage is that it will bloat your distribution by about 2Mb.
-Another problem is that your application, once downloaded by a user, will
-not receive any security updates to the version of Python it uses.
+Another problem is that your application will not receive any security updates
+to the version of Python it uses unless you freeze a new version and get
+users to download it.
Alternatives to Freezing
------------------------
From 2914f721881a6387b6ddbc783b2ccb1348a73ba1 Mon Sep 17 00:00:00 2001
From: Jonathan Hartley
Date: Fri, 21 Aug 2015 14:54:53 +0100
Subject: [PATCH 005/671] Megabyte is abbreviated 'MB', according to wikipedia
---
docs/shipping/freezing.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/shipping/freezing.rst b/docs/shipping/freezing.rst
index cdea1e661..2d8b0e3ce 100644
--- a/docs/shipping/freezing.rst
+++ b/docs/shipping/freezing.rst
@@ -15,7 +15,7 @@ if the user doesn't already have the required version of Python installed. On
Windows, and even on many Linux distributions and OSX versions, the right
version of Python will not already be installed.
-One disadvantage is that it will bloat your distribution by about 2Mb.
+One disadvantage is that it will bloat your distribution by about 2MB.
Another problem is that your application will not receive any security updates
to the version of Python it uses unless you freeze a new version and get
users to download it.
From 72e00459bb202f188423f59c6b45e6838269771c Mon Sep 17 00:00:00 2001
From: Jonathan Hartley
Date: Fri, 21 Aug 2015 14:56:41 +0100
Subject: [PATCH 006/671] Megabyte is abbreviated 'MB', according to wikipedia
---
docs/shipping/packaging.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/shipping/packaging.rst b/docs/shipping/packaging.rst
index d854c0d01..40486c153 100644
--- a/docs/shipping/packaging.rst
+++ b/docs/shipping/packaging.rst
@@ -145,7 +145,7 @@ Creating a Linux distro package is arguably the "right way" to distribute code
on Linux.
Because a distribution package doesn't include the Python interpreter, it
-makes the download and install about 2Mb smaller than
+makes the download and install about 2MB smaller than
:ref:`freezing your application `.
Also, if a distribution releases a new security update for Python, then your
From 04e38e9e8ba14439896023791793c9fc1ad50e6b Mon Sep 17 00:00:00 2001
From: Paulius Labanauskis
Date: Sun, 23 Aug 2015 09:02:59 +0300
Subject: [PATCH 007/671] Fixed a broken PEP acceptance workflow link.
---
docs/intro/community.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/intro/community.rst b/docs/intro/community.rst
index f54caffea..ff65aabff 100644
--- a/docs/intro/community.rst
+++ b/docs/intro/community.rst
@@ -65,7 +65,7 @@ Submitting a PEP
Here's an overview of the PEP acceptance workflow:
- .. image:: http://www.python.org/dev/peps/pep-0001/pep-0001-1.png
+ .. image:: https://www.python.org/m/dev/peps/pep-0001/pep-0001-1.png
Python Conferences
From c0b377e84dda2d27f249b77f77c6ed3adef3543c Mon Sep 17 00:00:00 2001
From: Jonathan Hartley
Date: Fri, 28 Aug 2015 11:01:00 +0100
Subject: [PATCH 008/671] also mention .rpm as an example Linux package
---
docs/shipping/freezing.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/shipping/freezing.rst b/docs/shipping/freezing.rst
index 2d8b0e3ce..e333f6976 100644
--- a/docs/shipping/freezing.rst
+++ b/docs/shipping/freezing.rst
@@ -28,7 +28,7 @@ libraries or tools to other developers.
On Linux, an alternative to freezing is to
:ref:`create a Linux distro package `
-(e.g. a .deb file for Debian or Ubuntu.)
+(e.g. .deb files for Debian or Ubuntu, or .rpm files for Red Hat and SuSE.)
.. todo:: Fill in "Freezing Your Code" stub
From df345c0ca098b1ab33d528fc731582274b26e152 Mon Sep 17 00:00:00 2001
From: Jonathan Hartley
Date: Fri, 28 Aug 2015 11:21:43 +0100
Subject: [PATCH 009/671] add mention of bdist_rpm
---
docs/shipping/packaging.rst | 3 +++
1 file changed, 3 insertions(+)
diff --git a/docs/shipping/packaging.rst b/docs/shipping/packaging.rst
index 40486c153..18d8fd450 100644
--- a/docs/shipping/packaging.rst
+++ b/docs/shipping/packaging.rst
@@ -151,6 +151,9 @@ makes the download and install about 2MB smaller than
Also, if a distribution releases a new security update for Python, then your
application will automatically start using that new version of Python.
+[Producing an RPM file using the bdist_rpm command](https://docs.python.org/3/distutils/builtdist.html#creating-rpm-packages)
+for use by distributions like Red Hat or SuSE is trivially easy.
+
However, creating and maintaining the different configurations required for
each distribution's format (e.g. .deb for Debian/Ubuntu, .rpm for Red
Hat/Fedora, etc) is a fair amount of work. If your code is an application that
From 62282e47e8a1724dae7708f71851f46cac51c24d Mon Sep 17 00:00:00 2001
From: Jonathan Hartley
Date: Fri, 28 Aug 2015 11:33:55 +0100
Subject: [PATCH 010/671] fix markup
---
docs/shipping/packaging.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/shipping/packaging.rst b/docs/shipping/packaging.rst
index 18d8fd450..064e6a9e2 100644
--- a/docs/shipping/packaging.rst
+++ b/docs/shipping/packaging.rst
@@ -151,7 +151,7 @@ makes the download and install about 2MB smaller than
Also, if a distribution releases a new security update for Python, then your
application will automatically start using that new version of Python.
-[Producing an RPM file using the bdist_rpm command](https://docs.python.org/3/distutils/builtdist.html#creating-rpm-packages)
+The `Producing an RPM file using the bdist_rpm command
Date: Fri, 28 Aug 2015 11:35:21 +0100
Subject: [PATCH 011/671] fix markup again
---
docs/shipping/packaging.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/shipping/packaging.rst b/docs/shipping/packaging.rst
index 064e6a9e2..020baed79 100644
--- a/docs/shipping/packaging.rst
+++ b/docs/shipping/packaging.rst
@@ -151,7 +151,7 @@ makes the download and install about 2MB smaller than
Also, if a distribution releases a new security update for Python, then your
application will automatically start using that new version of Python.
-The `Producing an RPM file using the bdist_rpm command `_
for use by distributions like Red Hat or SuSE is trivially easy.
However, creating and maintaining the different configurations required for
From b4f393c83ab4b34b202cfd0c0656312e6899eb4b Mon Sep 17 00:00:00 2001
From: Jonathan Hartley
Date: Fri, 28 Aug 2015 11:36:35 +0100
Subject: [PATCH 012/671] fix grammar typos
---
docs/shipping/packaging.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/shipping/packaging.rst b/docs/shipping/packaging.rst
index 020baed79..2fa1ca7ab 100644
--- a/docs/shipping/packaging.rst
+++ b/docs/shipping/packaging.rst
@@ -151,7 +151,7 @@ makes the download and install about 2MB smaller than
Also, if a distribution releases a new security update for Python, then your
application will automatically start using that new version of Python.
-The `Producing an RPM file using the bdist_rpm command `_
+The bdist_rpm command makes `producing an RPM file `_
for use by distributions like Red Hat or SuSE is trivially easy.
However, creating and maintaining the different configurations required for
From ee19ef65c846cd33e59f51cbeecc3844bd6cef0a Mon Sep 17 00:00:00 2001
From: SeongHoon Ryu
Date: Thu, 3 Sep 2015 00:19:15 +0900
Subject: [PATCH 013/671] serif failback
---
docs/_themes/kr/static/flasky.css_t | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/_themes/kr/static/flasky.css_t b/docs/_themes/kr/static/flasky.css_t
index c86b80b4f..690a11696 100644
--- a/docs/_themes/kr/static/flasky.css_t
+++ b/docs/_themes/kr/static/flasky.css_t
@@ -14,7 +14,7 @@
/* -- page layout ----------------------------------------------------------- */
body {
- font-family: 'goudy old style', 'minion pro', 'bell mt', Georgia, 'Hiragino Mincho Pro';
+ font-family: 'goudy old style', 'minion pro', 'bell mt', Georgia, 'Hiragino Mincho Pro' , serif;
font-size: 17px;
background-color: white;
color: #000;
@@ -532,4 +532,4 @@ a:hover tt {
.revsys-inline {
display: none!important;
-}
\ No newline at end of file
+}
From 4c84110606283600009a3ff12ed4bf6cbffde069 Mon Sep 17 00:00:00 2001
From: Brett Cannon
Date: Wed, 9 Sep 2015 09:16:58 -0700
Subject: [PATCH 014/671] Point to the Python 3 porting HOWTO
Kept up-to-date unlike Armin's blog post on the subject.
---
docs/starting/which-python.rst | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/starting/which-python.rst b/docs/starting/which-python.rst
index 2b633b8c9..29146d889 100644
--- a/docs/starting/which-python.rst
+++ b/docs/starting/which-python.rst
@@ -58,8 +58,8 @@ software you're depending on will block your adoption of Python 3.
`Further Reading `_
-It is possible to `write code that works on Python 2.6, 2.7, and 3.3
-`_. This
+It is possible to `write code that works on Python 2.6, 2.7, and Python 3
+`_. This
ranges from trivial to hard depending upon the kind of software
you are writing; if you're a beginner there are far more important things to
worry about.
From 2187540f9d97b937a7f1ca29e1eca53f0a82bf5b Mon Sep 17 00:00:00 2001
From: Markus Hackspacher
Date: Wed, 16 Sep 2015 21:40:40 +0200
Subject: [PATCH 015/671] pyside link
---
docs/scenarios/gui.rst | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/docs/scenarios/gui.rst b/docs/scenarios/gui.rst
index 55959fabd..19e888d1c 100644
--- a/docs/scenarios/gui.rst
+++ b/docs/scenarios/gui.rst
@@ -49,7 +49,9 @@ PySide
------
PySide is a Python binding of the cross-platform GUI toolkit Qt.
-http://developer.qt.nokia.com/wiki/PySideDownloads/
+ pip install pyside
+
+https://wiki.qt.io/Category:LanguageBindings::PySide::Downloads
PyQt
----
From 4b6bbd5efbe91c67b159f16d6fe7626278a26f43 Mon Sep 17 00:00:00 2001
From: i-rme
Date: Wed, 30 Sep 2015 20:53:53 +0200
Subject: [PATCH 016/671] quick start is written wrong
---
docs/intro/learning.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/intro/learning.rst b/docs/intro/learning.rst
index 10fdca00c..ba4a95965 100644
--- a/docs/intro/learning.rst
+++ b/docs/intro/learning.rst
@@ -9,7 +9,7 @@ The Python Tutorial
This is the official tutorial. It covers all the basics, and offers a tour of
the language and the standard library. Recommended for those who need a
-quickstart guide to the language.
+quick-start guide to the language.
`The Python Tutorial `_
From e88dad2dc0a5ced43d9c1f2727ec70f842036519 Mon Sep 17 00:00:00 2001
From: "Rajath Kumar M.P"
Date: Thu, 1 Oct 2015 02:45:41 +0530
Subject: [PATCH 017/671] Minor Edit
Latest is El Capitan
---
docs/starting/install/osx.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/starting/install/osx.rst b/docs/starting/install/osx.rst
index 367be136f..28b1800e6 100644
--- a/docs/starting/install/osx.rst
+++ b/docs/starting/install/osx.rst
@@ -3,7 +3,7 @@
Installing Python on Mac OS X
=============================
-The latest version of Mac OS X, Yosemite, **comes with Python 2.7 out of the box**.
+The latest version of Mac OS X, El Capitan, **comes with Python 2.7 out of the box**.
You do not need to install or configure anything else to use Python. Having
said that, I would strongly recommend that you install the tools and libraries
From 04cf7b2f51b35bed44f253c0a0367e9b6724689a Mon Sep 17 00:00:00 2001
From: George Gognadze
Date: Thu, 1 Oct 2015 02:19:10 +0400
Subject: [PATCH 018/671] Update the Readme.rst
f should be capitalized.
---
Readme.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Readme.rst b/Readme.rst
index bf7f1838b..56c7a7ac1 100644
--- a/Readme.rst
+++ b/Readme.rst
@@ -20,7 +20,7 @@ Topics include:
- Py2app, Py2exe, bbfreeze, pyInstaller
- Pip
- Virtualenv
-- fabric
+- Fabric
- Exhaustive module recommendations, grouped by topic/purpose
- Which libraries to use for what
- Server configurations & tools for various web frameworks
From 258bc91c537657574e4d8e087d82c21a1b137ac4 Mon Sep 17 00:00:00 2001
From: Anuj Pahuja
Date: Thu, 1 Oct 2015 12:56:08 +0530
Subject: [PATCH 019/671] Contribute link on sidebar fixed
---
docs/_templates/sidebarintro.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/_templates/sidebarintro.html b/docs/_templates/sidebarintro.html
index 0bfc69a02..216c94065 100644
--- a/docs/_templates/sidebarintro.html
+++ b/docs/_templates/sidebarintro.html
@@ -23,7 +23,7 @@ Contributors
This guide is the result of the collaboration of
135+ people
around the world, and your contributions
- are welcome!
+ are welcome!
From a35561efc9d19687297d00e19ca8e0fdbcf8d2a6 Mon Sep 17 00:00:00 2001
From: "Rajath Kumar M.P"
Date: Thu, 1 Oct 2015 18:39:55 +0530
Subject: [PATCH 020/671] IPython install edit
Installs dependencies for notebook.
---
docs/dev/env.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/dev/env.rst b/docs/dev/env.rst
index 391f230ce..3c33b1338 100644
--- a/docs/dev/env.rst
+++ b/docs/dev/env.rst
@@ -268,7 +268,7 @@ most out of using Python interactively. Its main components are:
.. code-block:: console
- $ pip install ipython
+ $ pip install ipython[all]
BPython
From 0e48f6cc3d06557ff342e761003b0deea6ba99ca Mon Sep 17 00:00:00 2001
From: Aaron Critchley
Date: Thu, 1 Oct 2015 23:19:20 +0100
Subject: [PATCH 021/671] Un-hypenating best practice
---
Readme.rst | 2 +-
docs/_templates/sidebarintro.html | 2 +-
docs/_templates/sidebarlogo.html | 2 +-
docs/index.rst | 2 +-
docs/intro/duction.rst | 2 +-
5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/Readme.rst b/Readme.rst
index 56c7a7ac1..17fb855c5 100644
--- a/Readme.rst
+++ b/Readme.rst
@@ -9,7 +9,7 @@ Hitchhiker's Guide to Python
be done.**
This guide is currently under heavy development. This opinionated guide
-exists to provide both novice and expert Python developers a best-practice
+exists to provide both novice and expert Python developers a best practice
handbook to the installation, configuration, and usage of Python on a daily
basis.
diff --git a/docs/_templates/sidebarintro.html b/docs/_templates/sidebarintro.html
index 0bfc69a02..1d745dbcd 100644
--- a/docs/_templates/sidebarintro.html
+++ b/docs/_templates/sidebarintro.html
@@ -1,6 +1,6 @@
Python Guide.
- This opinionated guide exists to provide both novice and expert Python developers a best-practice handbook to the installation, configuration, and usage of Python on a daily basis.
+ This opinionated guide exists to provide both novice and expert Python developers a best practice handbook to the installation, configuration, and usage of Python on a daily basis.
Get Updates
diff --git a/docs/_templates/sidebarlogo.html b/docs/_templates/sidebarlogo.html
index 70a9b3d4e..67650e89f 100644
--- a/docs/_templates/sidebarlogo.html
+++ b/docs/_templates/sidebarlogo.html
@@ -1,6 +1,6 @@
- This opinionated guide exists to provide both novice and expert Python developers a best-practice handbook to the installation, configuration, and usage of Python on a daily basis.
+ This opinionated guide exists to provide both novice and expert Python developers a best practice handbook to the installation, configuration, and usage of Python on a daily basis.
Get Updates
diff --git a/docs/index.rst b/docs/index.rst
index 3e34d33f0..0371c6373 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -12,7 +12,7 @@ Welcome to The Hitchhiker's Guide to Python.
`fork us on GitHub `_!
This *opinionated* guide exists to provide both novice and expert Python
-developers a best-practice handbook to the installation, configuration, and
+developers a best practice handbook to the installation, configuration, and
usage of Python on a daily basis.
.. include:: contents.rst.inc
diff --git a/docs/intro/duction.rst b/docs/intro/duction.rst
index 5930d7f64..e18d146c2 100644
--- a/docs/intro/duction.rst
+++ b/docs/intro/duction.rst
@@ -61,7 +61,7 @@ Purpose
~~~~~~~
The Hitchhiker's Guide to Python exists to provide both novice and expert
-Python developers a best-practice handbook to the installation, configuration,
+Python developers a best practice handbook for the installation, configuration,
and usage of Python on a daily basis.
From 8f18bcecec854533b36e7d3c062824a793a42534 Mon Sep 17 00:00:00 2001
From: "L. Caputo"
Date: Thu, 1 Oct 2015 21:02:18 -0400
Subject: [PATCH 022/671] Corrected typo.
Standardized spelling to match Oxford spelling throughout the rest of the text. Changed 'recognised' to 'recognized'.
---
docs/writing/style.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/writing/style.rst b/docs/writing/style.rst
index ae37cf6e3..5e661516c 100644
--- a/docs/writing/style.rst
+++ b/docs/writing/style.rst
@@ -6,7 +6,7 @@ Code Style
If you ask Python programmers what they like most in Python, they will
often say its high readability. Indeed, a high level of readability
is at the heart of the design of the Python language, following the
-recognised fact that code is read much more often than it is written.
+recognized fact that code is read much more often than it is written.
One reason for Python code to be easily read and understood is its relatively
complete set of Code Style guidelines and "Pythonic" idioms.
From 4a40fe3a22650924a3a1f3ed39e4d91624a2e0e0 Mon Sep 17 00:00:00 2001
From: "Rajath Kumar M.P"
Date: Fri, 2 Oct 2015 12:34:28 +0530
Subject: [PATCH 023/671] updated
---
docs/dev/env.rst | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/docs/dev/env.rst b/docs/dev/env.rst
index 3c33b1338..ee5e6bb21 100644
--- a/docs/dev/env.rst
+++ b/docs/dev/env.rst
@@ -268,8 +268,13 @@ most out of using Python interactively. Its main components are:
.. code-block:: console
- $ pip install ipython[all]
+ $ pip install ipython
+To download and install IPython with all it's main optional dependencies for the notebook, qtconsole, tests, and other functionalities
+
+.. code-block:: console
+
+ $pip install ipython[all]
BPython
-------
From 510b3c61da591fd696c10a3a0ed361236a9423de Mon Sep 17 00:00:00 2001
From: "Rajath Kumar M.P"
Date: Fri, 2 Oct 2015 19:20:07 +0530
Subject: [PATCH 024/671] update - 2
---
docs/dev/env.rst | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/dev/env.rst b/docs/dev/env.rst
index ee5e6bb21..dae86e4cd 100644
--- a/docs/dev/env.rst
+++ b/docs/dev/env.rst
@@ -270,11 +270,11 @@ most out of using Python interactively. Its main components are:
$ pip install ipython
-To download and install IPython with all it's main optional dependencies for the notebook, qtconsole, tests, and other functionalities
+To download and install IPython with all it's optional dependencies for the notebook, qtconsole, tests, and other functionalities
.. code-block:: console
- $pip install ipython[all]
+ $ pip install ipython[all]
BPython
-------
From a829c6e9baa489e4bef5ec2608832a501d5b55f6 Mon Sep 17 00:00:00 2001
From: Varun Agrawal
Date: Fri, 2 Oct 2015 14:32:04 +0000
Subject: [PATCH 025/671] PIL installation link fix
---
docs/scenarios/imaging.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/scenarios/imaging.rst b/docs/scenarios/imaging.rst
index 5d4e25bfb..f0f18bde8 100644
--- a/docs/scenarios/imaging.rst
+++ b/docs/scenarios/imaging.rst
@@ -21,7 +21,7 @@ Installation
Before installing Pillow, you'll have to install Pillow's prerequisites. Find
the instructions for your platform
-`here `_.
+`here `_.
After that, it's straightforward:
From 1f0a62a8f896d81927939dad0d25df9faa94b936 Mon Sep 17 00:00:00 2001
From: Varun Agrawal
Date: Fri, 2 Oct 2015 14:51:18 +0000
Subject: [PATCH 026/671] updated virtualenv sectio to remove duplicates
---
docs/dev/env.rst | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/docs/dev/env.rst b/docs/dev/env.rst
index 391f230ce..9405e258a 100644
--- a/docs/dev/env.rst
+++ b/docs/dev/env.rst
@@ -223,13 +223,7 @@ Interpreter Tools
Virtual Environments
--------------------
-A Virtual Environment is a tool to keep the dependencies required by different
-projects in separate places, by creating virtual Python environments for them.
-It solves the "Project X depends on version 1.x but, Project Y needs 4.x"
-dilemma, and keeps your global site-packages directory clean and manageable.
-
-For example, you can work on a project which requires Django 1.3 while also
-maintaining a project which requires Django 1.0.
+Virtual Environments provide a powerful way to isolate project package dependencies. This means that you can use packages particular to a Python project without installing them system wide and thus avoiding potential version conflicts.
To start using and see more information:
`Virtual Environments `_ docs.
From 45c01b0955e5ee27dcd6de3073eecd04d9e262e9 Mon Sep 17 00:00:00 2001
From: Ryan Sandridge
Date: Fri, 2 Oct 2015 14:32:57 -0400
Subject: [PATCH 027/671] Fixing typo. Singular object, not plural.
---
docs/writing/structure.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/writing/structure.rst b/docs/writing/structure.rst
index 98be4bf11..f99c53eb0 100644
--- a/docs/writing/structure.rst
+++ b/docs/writing/structure.rst
@@ -213,7 +213,7 @@ can be somewhat misleading and needs to be clarified.
In Python, everything is an object, and can be handled as such. This is what is
meant when we say, for example, that functions are first-class objects.
Functions, classes, strings, and even types are objects in Python: like any
-objects, they have a type, they can be passed as function arguments, they may
+object, they have a type, they can be passed as function arguments, they may
have methods and properties. In this understanding, Python is an
object-oriented language.
From e79bbce25520d4032044fc77755be7906bf1799c Mon Sep 17 00:00:00 2001
From: Ryan Sandridge
Date: Fri, 2 Oct 2015 14:37:44 -0400
Subject: [PATCH 028/671] Adding conjunction "and" after the serial comma.
---
docs/writing/structure.rst | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/writing/structure.rst b/docs/writing/structure.rst
index f99c53eb0..05a90e816 100644
--- a/docs/writing/structure.rst
+++ b/docs/writing/structure.rst
@@ -213,8 +213,8 @@ can be somewhat misleading and needs to be clarified.
In Python, everything is an object, and can be handled as such. This is what is
meant when we say, for example, that functions are first-class objects.
Functions, classes, strings, and even types are objects in Python: like any
-object, they have a type, they can be passed as function arguments, they may
-have methods and properties. In this understanding, Python is an
+object, they have a type, they can be passed as function arguments, and they
+may have methods and properties. In this understanding, Python is an
object-oriented language.
However, unlike Java, Python does not impose object-oriented programming as the
From c16bc50cb815b35b573411322deea05ff1feed6d Mon Sep 17 00:00:00 2001
From: George Gognadze
Date: Fri, 2 Oct 2015 22:47:07 +0400
Subject: [PATCH 029/671] Update README.md
---
docs/_templates/sidebarintro.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/_templates/sidebarintro.html b/docs/_templates/sidebarintro.html
index 3c6c7c227..65ca51e33 100644
--- a/docs/_templates/sidebarintro.html
+++ b/docs/_templates/sidebarintro.html
@@ -21,7 +21,7 @@ Donate
Contributors
This guide is the result of the collaboration of
- 135+ people
+ hundreds of people
around the world, and your contributions
are welcome!
From 680f7d83d9948e944c4286f689da078124bc9dbb Mon Sep 17 00:00:00 2001
From: emilydolson
Date: Fri, 2 Oct 2015 17:22:14 -0400
Subject: [PATCH 030/671] Resolved issue #174 by subdividing list idioms and
replacing dict w/ set
---
docs/writing/style.rst | 45 ++++++++++++++++++++++++++++++++----------
1 file changed, 35 insertions(+), 10 deletions(-)
diff --git a/docs/writing/style.rst b/docs/writing/style.rst
index ae37cf6e3..fdfa79e25 100644
--- a/docs/writing/style.rst
+++ b/docs/writing/style.rst
@@ -351,6 +351,8 @@ Instead, use a list comprehension:
four_lists = [[] for __ in xrange(4)]
+Create a string from a list
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A common idiom for creating strings is to use :py:meth:`str.join` on an empty
string.
@@ -363,30 +365,53 @@ string.
This will set the value of the variable *word* to 'spam'. This idiom can be
applied to lists and tuples.
+Searching for an item in a collection
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
Sometimes we need to search through a collection of things. Let's look at two
-options: lists and dictionaries.
+options: lists and sets.
Take the following code for example:
.. code-block:: python
- d = {'s': [], 'p': [], 'a': [], 'm': []}
+ s = set(['s', 'p', 'a', 'm'])
l = ['s', 'p', 'a', 'm']
- def lookup_dict(d):
+ def lookup_set(s):
return 's' in d
def lookup_list(l):
return 's' in l
-Even though both functions look identical, because *lookup_dict* is utilizing
-the fact that dictionaries in Python are hashtables, the lookup performance
-between the two is very different. Python will have to go through each item
-in the list to find a matching case, which is time consuming. By analysing
-the hash of the dictionary, finding keys in the dictionary can be done very
-quickly. For more information see this
+Even though both functions look identical, because *lookup_set* is utilizing
+the fact that sets in Python are hashtables, the lookup performance
+between the two is very different. To determine whether an item is in a list,
+Python will have to go through each item until it finds a matching item.
+This is time consuming, especially for long lists. In a set, on the other
+hand, the hash of the item will tell Python where in the set to look for
+a matching item. As a result, the search can be done quickly, even if the
+set is large. Searching in dictionaries works the same way. For
+more information see this
`StackOverflow `_
-page.
+page. For detailed information on the amount of time various common operations
+take on each of these data structures, see
+`this page `_.
+
+Because of these differences in performance, it is often a good idea to use
+sets or dictionaries instead of lists in cases where:
+
+* The collection will contain a large number of items
+
+* You will be repeatedly searching for items in the collection
+
+* You do not have duplicate items.
+
+For small collections, or collections which you will not frequently be
+searching through, the additional time and memory required to set up the
+hashtable will often be greater than the time saved by the improved search
+speed.
+
Zen of Python
-------------
From b0896e8468082ededfbfba4109080336e9141b6a Mon Sep 17 00:00:00 2001
From: Cadel Watson
Date: Sat, 3 Oct 2015 08:27:13 +1000
Subject: [PATCH 031/671] Added usage instructions for autopep8
---
docs/writing/style.rst | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/docs/writing/style.rst b/docs/writing/style.rst
index ae37cf6e3..bb970a9f1 100644
--- a/docs/writing/style.rst
+++ b/docs/writing/style.rst
@@ -452,6 +452,23 @@ Then run it on a file or series of files to get a report of any violations.
optparse.py:472:29: E221 multiple spaces before operator
optparse.py:544:21: W601 .has_key() is deprecated, use 'in'
+The program `autopep8 `_ can be used to
+automatically reformat code in the PEP 8 style. Install the program with:
+
+.. code-block:: console
+
+ $ pip install autopep8
+
+Use it to format a file in-place with:
+
+.. code-block:: console
+
+ $ autopep8 --in-place optparse.py
+
+Excluding the ``--in-place`` flag will cause the program to output the modified
+code directly to the console for review. The ``--aggressive`` flag will perform
+more substantial changes and can be applied multiple times for greater effect.
+
Conventions
----------------
From 139a9671db9219a8ea989b3efb0e02e1208cd35a Mon Sep 17 00:00:00 2001
From: Tobias Schmidt
Date: Sat, 3 Oct 2015 00:50:20 +0200
Subject: [PATCH 032/671] fixed a few typos
---
docs/intro/documentation.rst | 2 +-
docs/scenarios/admin.rst | 4 ++--
docs/scenarios/gui.rst | 2 +-
docs/shipping/freezing.rst | 2 +-
docs/shipping/packaging.rst | 2 +-
docs/starting/pip-virtualenv.rst | 6 +++---
docs/writing/documentation.rst | 2 +-
docs/writing/style.rst | 2 +-
8 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/docs/intro/documentation.rst b/docs/intro/documentation.rst
index dd5053ff7..1db5bcedb 100644
--- a/docs/intro/documentation.rst
+++ b/docs/intro/documentation.rst
@@ -23,7 +23,7 @@ both popular and exotic.
pydoc
-----
-:program:`pydoc` is a utlity that is installed when you install Python.
+:program:`pydoc` is a utility that is installed when you install Python.
It allows you to quickly retrieve and search for documentation from your
shell. For example, if you needed a quick refresher on the
:mod:`time` module, pulling up documentation would be as simple as
diff --git a/docs/scenarios/admin.rst b/docs/scenarios/admin.rst
index 172e1289d..954e1f6ad 100644
--- a/docs/scenarios/admin.rst
+++ b/docs/scenarios/admin.rst
@@ -255,8 +255,8 @@ system. `Puppet Forge `_ is a repository for
modules written by the community for Open Source and Enterprise Puppet.
Puppet Agents are installed on nodes whose state needs to be monitored or
-changed. A desginated server known as the Puppet Master is responsible for
-orchastrating the agent nodes.
+changed. A designated server known as the Puppet Master is responsible for
+orchestrating the agent nodes.
Agent nodes send basic facts about the system such as to the operating system,
kernel, architecture, ip address, hostname etc. to the Puppet Master.
diff --git a/docs/scenarios/gui.rst b/docs/scenarios/gui.rst
index 19e888d1c..466dec066 100644
--- a/docs/scenarios/gui.rst
+++ b/docs/scenarios/gui.rst
@@ -15,7 +15,7 @@ and the mailing list https://groups.google.com/forum/#!forum/project-camelot
Cocoa
-----
-.. note:: The Cocoa framework is only available on OS X. Don't pick this if you're writing a cross-platform application!
+.. note:: The Cocoa framework is only available on OSX. Don't pick this if you're writing a cross-platform application!
GTk
---
diff --git a/docs/shipping/freezing.rst b/docs/shipping/freezing.rst
index e333f6976..64c0780b3 100644
--- a/docs/shipping/freezing.rst
+++ b/docs/shipping/freezing.rst
@@ -107,7 +107,7 @@ Prerequisite is to have installed :ref:`Python, Setuptools and pywin32 dependenc
- `Manual `_
-OS X
+OSX
----
diff --git a/docs/shipping/packaging.rst b/docs/shipping/packaging.rst
index 2fa1ca7ab..1c659610f 100644
--- a/docs/shipping/packaging.rst
+++ b/docs/shipping/packaging.rst
@@ -23,7 +23,7 @@ The downside of distributing code like this is that it relies on the
recipient understanding how to install the required version of Python,
and being able and willing to use tools such as pip to install your code's
other dependencies. This is fine when distributing to other developers, but
-makes this method unsuitable for distributing applications to end-uers.
+makes this method unsuitable for distributing applications to end-users.
The `Python Packaging Guide `_
provides an extensive guide on creating and maintaining Python packages.
diff --git a/docs/starting/pip-virtualenv.rst b/docs/starting/pip-virtualenv.rst
index fedcbe120..51927e689 100644
--- a/docs/starting/pip-virtualenv.rst
+++ b/docs/starting/pip-virtualenv.rst
@@ -6,7 +6,7 @@ Further Configuration of Pip and Virtualenv
Requiring an active virtual environment for ``pip``
---------------------------------------------------
-By now it should be clear that using virtual envirtonments is a great way to
+By now it should be clear that using virtual environments is a great way to
keep your development environment clean and keeping different projects'
requirements separate.
@@ -71,7 +71,7 @@ add the following lines to this new file:
You will of course need to install some packages globally (usually ones that
-you use across different projects consistenly) and this can be accomplished by
+you use across different projects consistently) and this can be accomplished by
adding the following to your :file:`~/.bashrc` file:
.. code-block:: console
@@ -94,7 +94,7 @@ that you use. For example, you may be using the ``requests`` library in a lot
of different projects.
It is surely unnecessary to re-download the same packages/libraries each time
-you start working on a new project (and in a new virtual environmen as a result).
+you start working on a new project (and in a new virtual environment as a result).
Fortunately, you can configure pip in such a way that it tries to reuse already
installed packages.
diff --git a/docs/writing/documentation.rst b/docs/writing/documentation.rst
index 85f48de42..58a3107c4 100644
--- a/docs/writing/documentation.rst
+++ b/docs/writing/documentation.rst
@@ -141,7 +141,7 @@ comment block is a programmer's note. The docstring describes the
"""Returns the square root of self times self."""
...
-.. seealso:: Further reading on docstrings: :pep:`257`
+.. see also:: Further reading on docstrings: :pep:`257`
Other Tools
diff --git a/docs/writing/style.rst b/docs/writing/style.rst
index ae37cf6e3..5e661516c 100644
--- a/docs/writing/style.rst
+++ b/docs/writing/style.rst
@@ -6,7 +6,7 @@ Code Style
If you ask Python programmers what they like most in Python, they will
often say its high readability. Indeed, a high level of readability
is at the heart of the design of the Python language, following the
-recognised fact that code is read much more often than it is written.
+recognized fact that code is read much more often than it is written.
One reason for Python code to be easily read and understood is its relatively
complete set of Code Style guidelines and "Pythonic" idioms.
From 13078ff627024529dfc0a048172947e9a6d80b89 Mon Sep 17 00:00:00 2001
From: Ann Paul
Date: Fri, 2 Oct 2015 21:50:48 -0700
Subject: [PATCH 033/671] Fix link to pip vs easy_install comparison
---
docs/starting/install/osx.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/starting/install/osx.rst b/docs/starting/install/osx.rst
index 28b1800e6..fdf76dd1a 100644
--- a/docs/starting/install/osx.rst
+++ b/docs/starting/install/osx.rst
@@ -73,7 +73,7 @@ software over a network (usually the Internet) with a single command
capability to your own Python software with very little work.
``pip`` is a tool for easily installing and managing Python packages,
-that is recommended over ``easy_install``. It is superior to ``easy_install`` in `several ways `_,
+that is recommended over ``easy_install``. It is superior to ``easy_install`` in `several ways `_,
and is actively maintained.
From c95f0d010b64570203c9e57bc54ffd5d5ac4c791 Mon Sep 17 00:00:00 2001
From: Mahan Marwat
Date: Sat, 3 Oct 2015 10:38:14 +0500
Subject: [PATCH 034/671] PyGObject section added
PyGObject (Python GTK+ 3 bindings) section has been added.
---
docs/scenarios/gui.rst | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/docs/scenarios/gui.rst b/docs/scenarios/gui.rst
index 19e888d1c..47e3d825d 100644
--- a/docs/scenarios/gui.rst
+++ b/docs/scenarios/gui.rst
@@ -25,6 +25,13 @@ PyGTK only currently supports the Gtk-2.X API (NOT Gtk-3.0). It is currently
recommended that PyGTK not be used for new projects and that existing
applications be ported from PyGTK to PyGObject.
+PyGObject aka (PyGi)
+--------------------
+`PyGObject `_ provides Python bindings, which gives access to the entire GNOME software platform.
+It is fully compatible with GTK+ 3. Here is a tutorial to get started with `Python GTK+ 3 Tutorial `_.
+
+`API Reference `_
+
Kivy
----
`Kivy `_ is a Python library for development of multi-touch
From df255faa642bf1bcbbea08b3dcddc098c8ffb1fe Mon Sep 17 00:00:00 2001
From: emilydolson
Date: Sat, 3 Oct 2015 13:50:42 -0400
Subject: [PATCH 035/671] Fixed typo + formatting
---
docs/writing/style.rst | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/docs/writing/style.rst b/docs/writing/style.rst
index fdfa79e25..cc98f9933 100644
--- a/docs/writing/style.rst
+++ b/docs/writing/style.rst
@@ -352,7 +352,7 @@ Instead, use a list comprehension:
four_lists = [[] for __ in xrange(4)]
Create a string from a list
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
A common idiom for creating strings is to use :py:meth:`str.join` on an empty
string.
@@ -366,7 +366,7 @@ This will set the value of the variable *word* to 'spam'. This idiom can be
applied to lists and tuples.
Searching for an item in a collection
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sometimes we need to search through a collection of things. Let's look at two
options: lists and sets.
@@ -379,7 +379,7 @@ Take the following code for example:
l = ['s', 'p', 'a', 'm']
def lookup_set(s):
- return 's' in d
+ return 's' in s
def lookup_list(l):
return 's' in l
From bb5b1e60da2bc5ac29b80327fd92aef1a439f633 Mon Sep 17 00:00:00 2001
From: Jonathan
Date: Sat, 3 Oct 2015 19:00:09 +0100
Subject: [PATCH 036/671] Add information on pyenv
---
docs/dev/env.rst | 27 ++++++++++++++++++++++++++-
1 file changed, 26 insertions(+), 1 deletion(-)
diff --git a/docs/dev/env.rst b/docs/dev/env.rst
index dae86e4cd..ec8a8033f 100644
--- a/docs/dev/env.rst
+++ b/docs/dev/env.rst
@@ -232,7 +232,32 @@ For example, you can work on a project which requires Django 1.3 while also
maintaining a project which requires Django 1.0.
To start using and see more information:
-`Virtual Environments `_ docs.
+`Virtual Environments `_ docs.
+
+
+pyenv
+-----
+
+`pyenv `_ is a tool to allow multiple versions
+of the Python interpreter to be installed at the same time. This solves the
+problem of having different projects requiring different versions of Python.
+For example, it becomes very easy to install Python 2.7 for compatibility in
+an one project, whilst still using Python 3.4 as the default interpreter.
+pyenv isn't just limited to the CPython versions - it will also install PyPy,
+anaconda, miniconda, stackless, jython, and ironpython interpreters.
+
+pyenv works by filling a ``shims`` directory with fake versions of the Python
+interpreter (plus other tools like ``pip`` and ``2to3``). When the system
+looks for a program named ``python``, it looks inside the ``shims`` directory
+first, and uses the fake version, which in turn passes the command on to
+pyenv. pyenv then works out which version of Python should be run based on
+environment variables, ``.python-version`` files, and the global default.
+
+pyenv isn't a tool for managing virtual environments, but there is a plugin
+`pyenv-virtualenv `_ which automates
+the creation of different environments, and also makes it possible to use the
+existing pyenv tools to switch to different environments based on environment
+variables or ``.python-version`` files.
Other Tools
:::::::::::
From 766c5d4a551e686c2c7c282574c6a290caf5e794 Mon Sep 17 00:00:00 2001
From: Jonathan
Date: Sat, 3 Oct 2015 20:16:17 +0100
Subject: [PATCH 037/671] Sounds more gramatically correct
---
docs/dev/env.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/dev/env.rst b/docs/dev/env.rst
index ec8a8033f..ebe6e48d2 100644
--- a/docs/dev/env.rst
+++ b/docs/dev/env.rst
@@ -253,7 +253,7 @@ first, and uses the fake version, which in turn passes the command on to
pyenv. pyenv then works out which version of Python should be run based on
environment variables, ``.python-version`` files, and the global default.
-pyenv isn't a tool for managing virtual environments, but there is a plugin
+pyenv isn't a tool for managing virtual environments, but there is the plugin
`pyenv-virtualenv `_ which automates
the creation of different environments, and also makes it possible to use the
existing pyenv tools to switch to different environments based on environment
From a3a96b2ee04e5faeecedffe085446737366bd186 Mon Sep 17 00:00:00 2001
From: Ann Paul
Date: Sat, 3 Oct 2015 14:16:51 -0700
Subject: [PATCH 038/671] Change to link to point to "dev" version of
documentation in Django docs
---
docs/scenarios/db.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/scenarios/db.rst b/docs/scenarios/db.rst
index c89f02d81..35a51420d 100644
--- a/docs/scenarios/db.rst
+++ b/docs/scenarios/db.rst
@@ -31,7 +31,7 @@ The Django ORM is the interface used by `Django `_
to provide database access.
It's based on the idea of
-`models `_,
+`models `_,
an abstraction that makes it easier to manipulate data in Python.
The basics:
From 9ef5f97bfbe0ebd6c6ee92f66aaf4cc9bc299bf5 Mon Sep 17 00:00:00 2001
From: Matthias Bussonnier
Date: Sat, 3 Oct 2015 15:32:53 -0700
Subject: [PATCH 039/671] explicitely state EOL year
---
docs/starting/which-python.rst | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/docs/starting/which-python.rst b/docs/starting/which-python.rst
index 29146d889..a5ae2ed05 100644
--- a/docs/starting/which-python.rst
+++ b/docs/starting/which-python.rst
@@ -15,7 +15,7 @@ The basic gist of the state of things is as follows:
1. Python 2.7 has been the standard for a *long* time.
2. Python 3 introduced major changes to the language, which many developers are unhappy with.
-3. Python 2.7 will receive necessary security updates for a few years.
+3. Python 2.7 will receive necessary security updates until 2020 [#pep373_eol].
4. Python 3 is continually evolving, like Python 2 did in years past.
So, you can now see why this is not such an easy decision.
@@ -151,3 +151,5 @@ PythonNet supports from Python 2.3 up to Python 2.7. [#pythonnet_ver]_
.. [#iron_ver] http://ironpython.codeplex.com/releases/view/81726
.. [#pythonnet_ver] http://pythonnet.github.io/readme.html
+
+.. [#pep373_eol] https://www.python.org/dev/peps/pep-0373/#id2
From 00999cd2c998b778c082b1c4aa8c2b1667cf0d93 Mon Sep 17 00:00:00 2001
From: avi
Date: Mon, 5 Oct 2015 20:12:05 +0530
Subject: [PATCH 040/671] Update `gotchas.rst` to make the sentence simpler
---
docs/writing/gotchas.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/writing/gotchas.rst b/docs/writing/gotchas.rst
index b12fbd5f1..1f661f0f3 100644
--- a/docs/writing/gotchas.rst
+++ b/docs/writing/gotchas.rst
@@ -6,7 +6,7 @@ avoids surprises. However, there are a few cases that can be confusing to
newcomers.
Some of these cases are intentional but can be potentially surprising. Some
-could arguably be considered language warts. In general though, what follows
+could arguably be considered language warts. In general, what follows
is a collection of potentially tricky behavior that might seem strange at first
glance, but is generally sensible once you're aware of the underlying cause for
the surprise.
From 8583bf55ef8b7a98184a554793ae2b867b60976f Mon Sep 17 00:00:00 2001
From: katmutua
Date: Tue, 6 Oct 2015 12:42:22 +0300
Subject: [PATCH 041/671] Add practical reference for ansible
---
docs/scenarios/admin.rst | 2 ++
1 file changed, 2 insertions(+)
diff --git a/docs/scenarios/admin.rst b/docs/scenarios/admin.rst
index 954e1f6ad..689303205 100644
--- a/docs/scenarios/admin.rst
+++ b/docs/scenarios/admin.rst
@@ -231,6 +231,8 @@ To run the playbook:
The Ansible playbook will ping all of the servers in the :file:`hosts.yml` file.
You can also select groups of servers using Ansible. For more information
about Ansible, read the `Ansible Docs `_.
+`An Ansible tutorial `_ is also
+great and detailed introduction to getting started with Ansible.
Chef
From f8708694403f47e69dab5a280d03a11b3ce33921 Mon Sep 17 00:00:00 2001
From: katmutua
Date: Tue, 6 Oct 2015 13:19:36 +0300
Subject: [PATCH 042/671] Include preliminery content on chef
---
docs/scenarios/admin.rst | 18 ++++++++++++++----
1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/docs/scenarios/admin.rst b/docs/scenarios/admin.rst
index 689303205..be8ac9bda 100644
--- a/docs/scenarios/admin.rst
+++ b/docs/scenarios/admin.rst
@@ -231,17 +231,27 @@ To run the playbook:
The Ansible playbook will ping all of the servers in the :file:`hosts.yml` file.
You can also select groups of servers using Ansible. For more information
about Ansible, read the `Ansible Docs `_.
-`An Ansible tutorial `_ is also
+`An Ansible tutorial `_ is also a
great and detailed introduction to getting started with Ansible.
Chef
----
+`Chef `_ is a systems and cloud infrastructure automation
+framework that makes it easy to deploy servers and applications to any physical,
+virtual, or cloud location. Chef works by using custom recipes which can simply be defined
+as configuration elements which implement your polices.
+These custom recipes are usually stored in your Chef server.
-.. todo:: Write about Chef
+Chef clients run on every server that is part of your infrastructure and these regularly
+check with your Chef server to ensure your system is always aligned and represents the
+desired state. Since each individual server has its own distinct Chef client, each server
+configures itself and this distributed approach makes Chef a scalable automation platform.
+
+`Getting started with Chef `_
+is a good starting point for Chef Beginners and many community maintained cookbooks that can
+serve as a good reference can be found at the `Chef Supermarket `_.
- `Chef Documentation
- `_
Puppet
------
From c39415e082b8febe22ca642e031515632968c105 Mon Sep 17 00:00:00 2001
From: katmutua
Date: Tue, 6 Oct 2015 13:24:53 +0300
Subject: [PATCH 043/671] Make grammar changes to last commit
---
docs/scenarios/admin.rst | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/docs/scenarios/admin.rst b/docs/scenarios/admin.rst
index be8ac9bda..d198ca3fa 100644
--- a/docs/scenarios/admin.rst
+++ b/docs/scenarios/admin.rst
@@ -250,7 +250,8 @@ configures itself and this distributed approach makes Chef a scalable automation
`Getting started with Chef `_
is a good starting point for Chef Beginners and many community maintained cookbooks that can
-serve as a good reference can be found at the `Chef Supermarket `_.
+serve as a good reference or tweaked to server your infrustructure connfiguration needs can be
+found at the `Chef Supermarket `_.
Puppet
From eb5d3da8fc4b08020b00501bb95b6bd62bd3bc44 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Alex=20Gr=C3=B6nholm?=
Date: Thu, 8 Oct 2015 13:42:16 +0300
Subject: [PATCH 044/671] PyInstaller is py3 compatible now
---
docs/shipping/freezing.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/shipping/freezing.rst b/docs/shipping/freezing.rst
index 64c0780b3..13454298c 100644
--- a/docs/shipping/freezing.rst
+++ b/docs/shipping/freezing.rst
@@ -43,7 +43,7 @@ Solution Windows Linux OS X Python 3 License One-file mode Zipfile import Egg
=========== ======= ===== ==== ======== ======= ============= ============== ==== =====================
bbFreeze yes yes yes no MIT no yes yes yes
py2exe yes no no yes MIT yes yes no no
-pyInstaller yes yes yes no GPL yes no yes no
+pyInstaller yes yes yes yes GPL yes no yes no
cx_Freeze yes yes yes yes PSF no yes yes no
py2app no no yes yes MIT no yes yes yes
=========== ======= ===== ==== ======== ======= ============= ============== ==== =====================
From 51336710fa578c485725e399ba4531aba073d648 Mon Sep 17 00:00:00 2001
From: Terence Eden
Date: Thu, 8 Oct 2015 12:11:58 +0100
Subject: [PATCH 045/671] Improve documentation for Linux Installation
* Removes redundant language.
* Helps user understand which version of Python & pip are installed.
* Link to modern way of installing pip & setuptools
Fixes #589
---
docs/starting/install/linux.rst | 31 +++++++++++++++++--------------
1 file changed, 17 insertions(+), 14 deletions(-)
diff --git a/docs/starting/install/linux.rst b/docs/starting/install/linux.rst
index 3266dc72c..86d0735fb 100644
--- a/docs/starting/install/linux.rst
+++ b/docs/starting/install/linux.rst
@@ -6,6 +6,13 @@ Installing Python on Linux
The latest versions of Ubuntu and Fedora **come with Python 2.7 out of the box**.
The latest versions of Redhat Enterprise (RHEL) and CentOS come with Python 2.6.
+
+To see which version of Python you have installed, open a command prompt and run
+
+.. code-block:: console
+
+ $ python --version
+
Some older versions of RHEL and CentOS come with Python 2.4 which is
unacceptable for modern Python development. Fortunately, there are
`Extra Packages for Enterprise Linux`_ which include high
@@ -18,32 +25,28 @@ side-by-side with the system's Python 2.4 installation.
You do not need to install or configure anything else to use Python. Having
said that, I would strongly recommend that you install the tools and libraries
described in the next section before you start building Python applications
-for real-world use. In particular, you should always install Setuptools, as
+for real-world use. In particular, you should always install Setuptools and pip, as
it makes it much easier for you to use other third-party Python libraries.
Setuptools & Pip
----------------
-The most crucial third-party Python software of all is Setuptools, which
-extends the packaging and installation facilities provided by the distutils
-in the standard library. Once you add Setuptools to your Python system you can
-download and install any compliant Python software product with a single
-command. It also enables you to add this network installation capability to
-your own Python software with very little work.
+The two most crucial third-party Python packages are `setuptools `_ and `pip `_.
-To obtain the latest version of Setuptools for Linux, refer to the documentation
-available here: `unix-setuptools `_
+Once installed, you can download, install & uninstall any compliant Python software
+product with a single command. It also enables you to add this network installation
+capability to your own Python software with very little work.
-The new ``easy_install`` command you have available is considered by many to be
-deprecated, so we will install its replacement: **pip**. Pip allows for
-uninstallation of packages, and is actively maintained, unlike easy_install.
+Python 2.7.9 and later (on the python2 series), and Python 3.4 and later include
+pip by default.
-To install pip, simply open a command prompt and run
+To see if pip is installed, open a command prompt and run
.. code-block:: console
- $ easy_install pip
+ $ pip --version
+To install pip, `follow the official pip installation guide `_ - this will automatically install the latest version of setuptools.
Virtual Environments
--------------------
From 02e1586b232e6b5129b6dca7094a39f5c05682df Mon Sep 17 00:00:00 2001
From: Terence Eden
Date: Thu, 8 Oct 2015 12:38:16 +0100
Subject: [PATCH 046/671] Add link to EOL date
Creates a link to the official page stating 2020 as EOL.
Fixes #588
(Sorry if this appears twice - my git-fu is weak.)
---
docs/starting/which-python.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/starting/which-python.rst b/docs/starting/which-python.rst
index a5ae2ed05..cea417c60 100644
--- a/docs/starting/which-python.rst
+++ b/docs/starting/which-python.rst
@@ -15,7 +15,7 @@ The basic gist of the state of things is as follows:
1. Python 2.7 has been the standard for a *long* time.
2. Python 3 introduced major changes to the language, which many developers are unhappy with.
-3. Python 2.7 will receive necessary security updates until 2020 [#pep373_eol].
+3. Python 2.7 `will receive necessary security updates until 2020 `_.
4. Python 3 is continually evolving, like Python 2 did in years past.
So, you can now see why this is not such an easy decision.
From bdd0c0c0277b3576623a330d3296ce21da816b1e Mon Sep 17 00:00:00 2001
From: Terence Eden
Date: Thu, 8 Oct 2015 14:15:31 +0100
Subject: [PATCH 047/671] Updated as per feedback.
---
docs/starting/install/linux.rst | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/starting/install/linux.rst b/docs/starting/install/linux.rst
index 86d0735fb..cde40875e 100644
--- a/docs/starting/install/linux.rst
+++ b/docs/starting/install/linux.rst
@@ -33,7 +33,7 @@ Setuptools & Pip
The two most crucial third-party Python packages are `setuptools `_ and `pip `_.
-Once installed, you can download, install & uninstall any compliant Python software
+Once installed, you can download, install and uninstall any compliant Python software
product with a single command. It also enables you to add this network installation
capability to your own Python software with very little work.
@@ -44,7 +44,7 @@ To see if pip is installed, open a command prompt and run
.. code-block:: console
- $ pip --version
+ $ command -v pip
To install pip, `follow the official pip installation guide `_ - this will automatically install the latest version of setuptools.
From 77bf0ad5e274f527cf74f2885e8eb7d5f755eb74 Mon Sep 17 00:00:00 2001
From: Terence Eden
Date: Thu, 8 Oct 2015 14:17:00 +0100
Subject: [PATCH 048/671] Updated as per feedback.
---
docs/starting/which-python.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/starting/which-python.rst b/docs/starting/which-python.rst
index cea417c60..b07b634f0 100644
--- a/docs/starting/which-python.rst
+++ b/docs/starting/which-python.rst
@@ -15,7 +15,7 @@ The basic gist of the state of things is as follows:
1. Python 2.7 has been the standard for a *long* time.
2. Python 3 introduced major changes to the language, which many developers are unhappy with.
-3. Python 2.7 `will receive necessary security updates until 2020 `_.
+3. Python 2.7 will receive necessary security updates until 2020 [#pep373_eol]_.
4. Python 3 is continually evolving, like Python 2 did in years past.
So, you can now see why this is not such an easy decision.
From ecb5860d275334f225ce6a1a2edcfed6d049bbc8 Mon Sep 17 00:00:00 2001
From: poll0rz
Date: Mon, 12 Oct 2015 01:37:15 +0200
Subject: [PATCH 049/671] Add Diamond python project - Metrics collector
---
docs/writing/reading.rst | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/docs/writing/reading.rst b/docs/writing/reading.rst
index 738d851d0..910e2752d 100644
--- a/docs/writing/reading.rst
+++ b/docs/writing/reading.rst
@@ -23,6 +23,13 @@ reading. Each one of these projects is a paragon of Python coding.
It's intended for getting started very quickly and was developed with
best intentions in mind.
+- `Diamond `_
+ Diamond is a python daemon that collects metrics
+ and publishes them to Graphite or other backends.
+ It is capable of collecting cpu, memory, network, i/o, load and disk metrics.
+ Additionally, it features an API for implementing custom collectors
+ for gathering metrics from almost any source.
+
- `Werkzeug `_
Werkzeug started as simple collection of various utilities for WSGI
applications and has become one of the most advanced WSGI utility modules.
From 681c7a34a746f57bf118e19155c37e80f0254c97 Mon Sep 17 00:00:00 2001
From: Ananya W Cleetus
Date: Mon, 12 Oct 2015 11:58:14 -0400
Subject: [PATCH 050/671] Update Readme.rst
---
Readme.rst | 1 +
1 file changed, 1 insertion(+)
diff --git a/Readme.rst b/Readme.rst
index 17fb855c5..540740df6 100644
--- a/Readme.rst
+++ b/Readme.rst
@@ -19,6 +19,7 @@ Topics include:
- Platform- and version-specific installations
- Py2app, Py2exe, bbfreeze, pyInstaller
- Pip
+- Numpy, scipy, statpy, pylot, matlib
- Virtualenv
- Fabric
- Exhaustive module recommendations, grouped by topic/purpose
From c3de9df0fffe696eeee67febd6e8566b2478c3fb Mon Sep 17 00:00:00 2001
From: bhchance
Date: Mon, 12 Oct 2015 21:41:30 -0500
Subject: [PATCH 051/671] Update gotchas.rst
Previous test block did not show code blocks in markdown view.
---
docs/writing/gotchas.rst | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/writing/gotchas.rst b/docs/writing/gotchas.rst
index 1f661f0f3..b38a9127c 100644
--- a/docs/writing/gotchas.rst
+++ b/docs/writing/gotchas.rst
@@ -23,7 +23,7 @@ Python's treatment of mutable default arguments in function definitions.
What You Wrote
~~~~~~~~~~~~~~
-.. testcode::
+.. code-block:: python
def append_to(element, to=[]):
to.append(element)
@@ -32,7 +32,7 @@ What You Wrote
What You Might Have Expected to Happen
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.. testcode::
+.. code-block:: python
my_list = append_to(12)
print my_list
From 20bcb0bd02eadb731bff609ccd1092141cce3791 Mon Sep 17 00:00:00 2001
From: Andrew Martin
Date: Sat, 17 Oct 2015 14:24:00 -0400
Subject: [PATCH 052/671] add note about XCode commandline tools
Installing XCode isn't enough - minus the commandline tools, you'll get c compiler errors when you `brew install python`.
---
docs/starting/install/osx.rst | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/docs/starting/install/osx.rst b/docs/starting/install/osx.rst
index fdf76dd1a..8ada42f50 100644
--- a/docs/starting/install/osx.rst
+++ b/docs/starting/install/osx.rst
@@ -32,6 +32,10 @@ package.
In combination, the software can cause issues that are difficult to
diagnose.
+.. note::
+ If you perform a fresh install of XCode, you will also need to add the
+ commandline tools by running `xcode-select --install` on the terminal.
+
While OS X comes with a large number of UNIX utilities, those familiar with
Linux systems will notice one key component missing: a decent package manager.
`Homebrew `_ fills this void.
From d7c17e02ec230194bbe7db51bd87678106ddbb79 Mon Sep 17 00:00:00 2001
From: Andrew Martin
Date: Sun, 18 Oct 2015 23:34:28 -0400
Subject: [PATCH 053/671] double backticks
---
docs/starting/install/osx.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/starting/install/osx.rst b/docs/starting/install/osx.rst
index 8ada42f50..0de724f1d 100644
--- a/docs/starting/install/osx.rst
+++ b/docs/starting/install/osx.rst
@@ -34,7 +34,7 @@ package.
.. note::
If you perform a fresh install of XCode, you will also need to add the
- commandline tools by running `xcode-select --install` on the terminal.
+ commandline tools by running ``xcode-select --install`` on the terminal.
While OS X comes with a large number of UNIX utilities, those familiar with
Linux systems will notice one key component missing: a decent package manager.
From 8b291c16af7b73c165a0150dab97bdb6f639364b Mon Sep 17 00:00:00 2001
From: Dave Forgac
Date: Mon, 19 Oct 2015 00:00:57 -0400
Subject: [PATCH 054/671] Update list of distros that come with 2.7
---
docs/starting/install/linux.rst | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/docs/starting/install/linux.rst b/docs/starting/install/linux.rst
index cde40875e..d5c842140 100644
--- a/docs/starting/install/linux.rst
+++ b/docs/starting/install/linux.rst
@@ -3,9 +3,7 @@
Installing Python on Linux
==========================
-The latest versions of Ubuntu and Fedora **come with Python 2.7 out of the box**.
-
-The latest versions of Redhat Enterprise (RHEL) and CentOS come with Python 2.6.
+The latest versions of CentOS, Fedora, Redhat Enterprise (RHEL) and Ubuntu **come with Python 2.7 out of the box**.
To see which version of Python you have installed, open a command prompt and run
From a2029ce880111574d8995e2de851ef1a899379a1 Mon Sep 17 00:00:00 2001
From: Dave Forgac
Date: Mon, 19 Oct 2015 00:14:58 -0400
Subject: [PATCH 055/671] Fix line length
---
docs/starting/install/linux.rst | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/docs/starting/install/linux.rst b/docs/starting/install/linux.rst
index d5c842140..9c2c7a276 100644
--- a/docs/starting/install/linux.rst
+++ b/docs/starting/install/linux.rst
@@ -3,7 +3,8 @@
Installing Python on Linux
==========================
-The latest versions of CentOS, Fedora, Redhat Enterprise (RHEL) and Ubuntu **come with Python 2.7 out of the box**.
+The latest versions of CentOS, Fedora, Redhat Enterprise (RHEL) and Ubuntu **
+come with Python 2.7 out of the box**.
To see which version of Python you have installed, open a command prompt and run
From 7ceece2afca9c79075f1b4dbaf7121a005d182bf Mon Sep 17 00:00:00 2001
From: Dave Forgac
Date: Mon, 19 Oct 2015 00:17:41 -0400
Subject: [PATCH 056/671] Fix wrapped bold formatting
---
docs/starting/install/linux.rst | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/starting/install/linux.rst b/docs/starting/install/linux.rst
index 9c2c7a276..a42106de0 100644
--- a/docs/starting/install/linux.rst
+++ b/docs/starting/install/linux.rst
@@ -3,8 +3,8 @@
Installing Python on Linux
==========================
-The latest versions of CentOS, Fedora, Redhat Enterprise (RHEL) and Ubuntu **
-come with Python 2.7 out of the box**.
+The latest versions of CentOS, Fedora, Redhat Enterprise (RHEL) and Ubuntu
+**come with Python 2.7 out of the box**.
To see which version of Python you have installed, open a command prompt and run
From 080782b2438e49dd81867e5188827b2f955c5818 Mon Sep 17 00:00:00 2001
From: MDS
Date: Tue, 20 Oct 2015 00:45:21 +1300
Subject: [PATCH 057/671] Added Transforming Code into Beautiful, Idiomatic
Python
---
docs/intro/learning.rst | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/docs/intro/learning.rst b/docs/intro/learning.rst
index ba4a95965..46b44a83c 100644
--- a/docs/intro/learning.rst
+++ b/docs/intro/learning.rst
@@ -219,6 +219,17 @@ formal, but rather focuses on explaining the underlying intuition and shows
how to implement the algorithms in Python.
`Programming Collective Intelligence `_
+
+
+Transforming Code into Beautiful, Idiomatic Python
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Transforming Code into Beautiful, Idiomatic Python is a video by Raymond Hettinger.
+Learn to take better advantage of Python's best features and improve existing code
+through a series of code transformations, "When you see this, do that instead."
+
+ `Transforming Code into Beautiful, Idiomatic Python `_
+
References
----------
@@ -271,3 +282,5 @@ way to write it and the "Idiomatic" way.
`For Python 2.7.3+ `_
`For Python 3.3+ `_
+
+
From 2b12a3c99d135bf4e1618527c5584d196b65bb9f Mon Sep 17 00:00:00 2001
From: Gordon Senesac Jr
Date: Mon, 12 Oct 2015 20:53:52 -0500
Subject: [PATCH 058/671] Added in examples and link to tutorial for
imaging.rst.
---
docs/scenarios/imaging.rst | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/docs/scenarios/imaging.rst b/docs/scenarios/imaging.rst
index f0f18bde8..421793a6a 100644
--- a/docs/scenarios/imaging.rst
+++ b/docs/scenarios/imaging.rst
@@ -28,3 +28,32 @@ After that, it's straightforward:
.. code-block:: console
$ pip install Pillow
+
+Example
+~~~~~~~
+
+.. code-block:: python
+
+ from PIL import Image, ImageFilter
+ #Read image
+ im = Image.open( 'image.jpg' )
+ #Display image
+ im.show()
+
+ #Applying a filter to the image
+ im_sharp = im.filter( ImageFilter.SHARPEN )
+ #Saving the filtered image to a new file
+ im_sharp.save( 'image_sharpened.jpg', 'JPEG' )
+
+ #Splitting the image into its respective bands, i.e. Red, Green,
+ #and Blue for RGB
+ r,g,b = im_sharp.split()
+
+ #Viewing EXIF data embedded in image
+ exif_data = im._getexif()
+ exif_data
+
+There are more examples of the Pillow library
+`here `_.
+
+
From bad501ace45ed0d5d21936880fc611a7c7499de0 Mon Sep 17 00:00:00 2001
From: Sidhant Bhavnani
Date: Wed, 21 Oct 2015 02:43:02 +0530
Subject: [PATCH 059/671] Added Online Python Tutor
I found this tool helpful when I started to learn how to code and I thought that this should be on the list.
---
docs/intro/learning.rst | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/docs/intro/learning.rst b/docs/intro/learning.rst
index ba4a95965..fa9170426 100644
--- a/docs/intro/learning.rst
+++ b/docs/intro/learning.rst
@@ -30,7 +30,13 @@ If you want a more traditional book, *Python For You and Me* is an excellent
resource for learning all aspects of the language.
`Python for You and Me `_
+Online Python Tutor: a basic understanding of how your code will run
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+pythontutor.com is an easy way to get introduced to Python and programming in general.
+In Python Tutor you will see a visual step by step representation of how your program runs.
+Python Tutor helps people overcome a fundamental barrier to learning programming by understanding what happens as the computer executes each line of a program's source code.
+ `Online Python Tutor `_
Invent Your Own Computer Games with Python
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
From 94f1e45754e852fdf8d40bb8c8b15852e1646071 Mon Sep 17 00:00:00 2001
From: bhchance
Date: Tue, 20 Oct 2015 18:44:26 -0500
Subject: [PATCH 060/671] Update learning.rst
Added description of Effective Python, copying format of other book writeups.
---
docs/intro/learning.rst | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/docs/intro/learning.rst b/docs/intro/learning.rst
index ba4a95965..f918e1509 100644
--- a/docs/intro/learning.rst
+++ b/docs/intro/learning.rst
@@ -139,6 +139,15 @@ A Codeacademy course for the absolute Python beginner. This free and interactive
Advanced
--------
+Effective Python
+~~~~~~~~~~~~~~~~
+
+This book contains 59 specific ways to improve writing Pythonic code. At 227
+pages, it is a very brief overview of some of the most commons adapations
+programmers need to make to become efficient intermediate level Python
+programmers.
+
+ `Effective Python `_
Pro Python
~~~~~~~~~~
From ce9601115dcaffb5ec2f4e51599c004fd3e81695 Mon Sep 17 00:00:00 2001
From: MDS
Date: Wed, 21 Oct 2015 13:09:47 +1300
Subject: [PATCH 061/671] Removed extra new lines
---
docs/intro/learning.rst | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/docs/intro/learning.rst b/docs/intro/learning.rst
index 46b44a83c..6798f5ba2 100644
--- a/docs/intro/learning.rst
+++ b/docs/intro/learning.rst
@@ -281,6 +281,4 @@ way to write it and the "Idiomatic" way.
`For Python 2.7.3+ `_
- `For Python 3.3+ `_
-
-
+ `For Python 3.3+ `_
\ No newline at end of file
From 28518b1ada62ca45bfa547b0a5e14305bc14c1b9 Mon Sep 17 00:00:00 2001
From: Mark van Lent
Date: Tue, 20 Oct 2015 21:05:09 +0200
Subject: [PATCH 062/671] Replace the "non breaking space" unicode character
with a normal space.
---
docs/scenarios/gui.rst | 2 +-
docs/shipping/freezing.rst | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/scenarios/gui.rst b/docs/scenarios/gui.rst
index 466dec066..da2944750 100644
--- a/docs/scenarios/gui.rst
+++ b/docs/scenarios/gui.rst
@@ -15,7 +15,7 @@ and the mailing list https://groups.google.com/forum/#!forum/project-camelot
Cocoa
-----
-.. note:: The Cocoa framework is only available on OSX. Don't pick this if you're writing a cross-platform application!
+.. note:: The Cocoa framework is only available on OS X. Don't pick this if you're writing a cross-platform application!
GTk
---
diff --git a/docs/shipping/freezing.rst b/docs/shipping/freezing.rst
index 13454298c..80f53358f 100644
--- a/docs/shipping/freezing.rst
+++ b/docs/shipping/freezing.rst
@@ -107,7 +107,7 @@ Prerequisite is to have installed :ref:`Python, Setuptools and pywin32 dependenc
- `Manual `_
-OSX
+OS X
----
From 25c0331da8a9ca79a005180916186ba6ce1a1bea Mon Sep 17 00:00:00 2001
From: Mark van Lent
Date: Tue, 20 Oct 2015 21:06:04 +0200
Subject: [PATCH 063/671] Fix underlines that were too short.
---
docs/intro/learning.rst | 2 +-
docs/intro/news.rst | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/intro/learning.rst b/docs/intro/learning.rst
index ba4a95965..397165821 100644
--- a/docs/intro/learning.rst
+++ b/docs/intro/learning.rst
@@ -130,7 +130,7 @@ no previous programming experience.
Learn to Program in Python with Codeacademy
-~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A Codeacademy course for the absolute Python beginner. This free and interactive course provides and teaches the basics (and beyond) of Python programming whilst testing the user's knowledge in between progress.
diff --git a/docs/intro/news.rst b/docs/intro/news.rst
index b48e8bd11..429749016 100644
--- a/docs/intro/news.rst
+++ b/docs/intro/news.rst
@@ -41,7 +41,7 @@ Python News is the news section in the official Python web site
`Python News `_
Import Python Weekly
-~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~
Weekly Python Newsletter containing Python Articles, Projects, Videos, Tweets
delivered in your inbox. Keep Your Python Programming Skills Updated.
From d8b6a22f5854f70f9b8420584ef36de196a93035 Mon Sep 17 00:00:00 2001
From: Mark van Lent
Date: Tue, 20 Oct 2015 21:09:25 +0200
Subject: [PATCH 064/671] Fix duplicate target name "here".
---
docs/scenarios/imaging.rst | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/docs/scenarios/imaging.rst b/docs/scenarios/imaging.rst
index 421793a6a..7ae952d37 100644
--- a/docs/scenarios/imaging.rst
+++ b/docs/scenarios/imaging.rst
@@ -20,8 +20,8 @@ Installation
~~~~~~~~~~~~
Before installing Pillow, you'll have to install Pillow's prerequisites. Find
-the instructions for your platform
-`here `_.
+the instructions for your platform in the
+`Pillow installation instructions `_.
After that, it's straightforward:
@@ -53,7 +53,5 @@ Example
exif_data = im._getexif()
exif_data
-There are more examples of the Pillow library
-`here `_.
-
-
+There are more examples of the Pillow library in the
+`Pillow tutorial `_.
From 1f68a425ddcf2791d068919cc8752654bfb632c1 Mon Sep 17 00:00:00 2001
From: Mark van Lent
Date: Tue, 20 Oct 2015 21:12:42 +0200
Subject: [PATCH 065/671] Fix duplicate target name "uwsgi".
---
docs/scenarios/web.rst | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/scenarios/web.rst b/docs/scenarios/web.rst
index 14080f341..9a5c7603b 100644
--- a/docs/scenarios/web.rst
+++ b/docs/scenarios/web.rst
@@ -167,8 +167,8 @@ programming languages and protocols - including Python and WSGI. uWSGI can
either be run as a stand-alone web router, or be run behind a full web
server (such as Nginx or Apache). In the latter case, a web server can
configure uWSGI and an application's operation over the
-`uwsgi `_
-protocol. uWSGI's web server support allows for dynamically configuring
+`uwsgi protocol `_.
+uWSGI's web server support allows for dynamically configuring
Python, passing environment variables and further tuning. For full details,
see `uWSGI magic
variables `_.
From 36faeccf6a2a34c1b1f25b7c9b01734956821ed0 Mon Sep 17 00:00:00 2001
From: Mark van Lent
Date: Tue, 20 Oct 2015 21:15:05 +0200
Subject: [PATCH 066/671] Fix "Literal block expected; none found." warning.
---
docs/shipping/freezing.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/shipping/freezing.rst b/docs/shipping/freezing.rst
index 80f53358f..8b01d647e 100644
--- a/docs/shipping/freezing.rst
+++ b/docs/shipping/freezing.rst
@@ -75,7 +75,7 @@ Prerequisite is to install :ref:`Python on Windows `.
1. Download and install http://sourceforge.net/projects/py2exe/files/py2exe/
-2. Write :file:`setup.py` (`List of configuration options `_)::
+2. Write :file:`setup.py` (`List of configuration options `_):
.. code-block:: python
From 6897ba37cd381e7fbe63a1940ab2ff1fce186f09 Mon Sep 17 00:00:00 2001
From: Sidhant Bhavnani
Date: Wed, 21 Oct 2015 15:25:33 +0530
Subject: [PATCH 067/671] Made edits to Online Python Tutor
---
docs/intro/learning.rst | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/docs/intro/learning.rst b/docs/intro/learning.rst
index fa9170426..475e43f72 100644
--- a/docs/intro/learning.rst
+++ b/docs/intro/learning.rst
@@ -30,12 +30,16 @@ If you want a more traditional book, *Python For You and Me* is an excellent
resource for learning all aspects of the language.
`Python for You and Me `_
-Online Python Tutor: a basic understanding of how your code will run
+
+Online Python Tutor
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-pythontutor.com is an easy way to get introduced to Python and programming in general.
-In Python Tutor you will see a visual step by step representation of how your program runs.
-Python Tutor helps people overcome a fundamental barrier to learning programming by understanding what happens as the computer executes each line of a program's source code.
+Online Python Tutor gives you a visual step by step
+representation of how your program runs. Python Tutor
+helps people overcome a fundamental barrier to learning
+programming by understanding what happens as the computer
+executes each line of a program's source code.
+
`Online Python Tutor `_
Invent Your Own Computer Games with Python
From 7d7c535993a19aaf47d0c7e1d19dd32b1dc5eb3f Mon Sep 17 00:00:00 2001
From: Gabriel SoHappy
Date: Wed, 21 Oct 2015 22:03:39 +0800
Subject: [PATCH 068/671] update spyder IDE and rope links in dev ide section
---
docs/dev/env.rst | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/dev/env.rst b/docs/dev/env.rst
index 574c1c0a7..92265e270 100644
--- a/docs/dev/env.rst
+++ b/docs/dev/env.rst
@@ -170,11 +170,11 @@ alternative.
Spyder
------
-`Spyder `_ is an IDE specifically geared
+`Spyder `_ is an IDE specifically geared
toward working with scientific Python libraries (namely
`Scipy `_). It includes integration with pyflakes_,
`pylint `_ and
-`rope `_.
+`rope `_.
Spyder is open-source (free), offers code completion, syntax highlighting,
a class and function browser, and object inspection.
From 8ffa72be72c1996eb42312032d0c064b6ebe19fc Mon Sep 17 00:00:00 2001
From: Sidhant Bhavnani
Date: Thu, 22 Oct 2015 03:41:00 +0530
Subject: [PATCH 069/671] Added Enthought Canopy
---
docs/dev/env.rst | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/docs/dev/env.rst b/docs/dev/env.rst
index 92265e270..37f09af65 100644
--- a/docs/dev/env.rst
+++ b/docs/dev/env.rst
@@ -111,6 +111,14 @@ TextMate
GUI, TextMate cherry-picks the best of both worlds to the benefit of expert
scripters and novice users alike.
+Enthought Canopy
+--------
+ Enthought Canopy is a comprehensive Python analysis environment that provides
+ easy installation of the core scientific analytic and scientific Python packages.
+`Enthought Canopy `_ is a Python
+IDE which is focused towards Scientists and Engineers as it provides pre
+installed libraries for data analysis.
+
Sublime Text
------------
From 877ad38540665d73ba2eaf1ae74a73f5e362531e Mon Sep 17 00:00:00 2001
From: Ian Cordasco
Date: Wed, 21 Oct 2015 17:24:29 -0500
Subject: [PATCH 070/671] Match title underlining length to title length
---
docs/intro/learning.rst | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/docs/intro/learning.rst b/docs/intro/learning.rst
index ccaa60b6d..12a1326f3 100644
--- a/docs/intro/learning.rst
+++ b/docs/intro/learning.rst
@@ -32,7 +32,7 @@ resource for learning all aspects of the language.
`Python for You and Me `_
Online Python Tutor
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~
Online Python Tutor gives you a visual step by step
representation of how your program runs. Python Tutor
@@ -262,7 +262,7 @@ of the language.
`The Python Language Reference `_
Python Pocket Reference
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~
Python Pocket Reference, written by Mark Lutz, is an easy to use reference to
the core language, with descriptions of commonly used modules and toolkits. It
@@ -271,7 +271,7 @@ covers Python 3 and 2.6 versions.
`Python Pocket Reference `_
Python Cookbook
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~
Python Cookbook, written by David Beazley and Brian K. Jones, is packed with
practical recipes. This book covers the core python language as well as tasks
@@ -291,4 +291,4 @@ way to write it and the "Idiomatic" way.
`For Python 2.7.3+ `_
- `For Python 3.3+ `_
\ No newline at end of file
+ `For Python 3.3+ `_
From 92532d485e61e2400c2df06f8a808e9addc75f82 Mon Sep 17 00:00:00 2001
From: Sidhant Bhavnani
Date: Thu, 22 Oct 2015 04:31:33 +0530
Subject: [PATCH 071/671] Made the fixes
Removed the indentation, underlining to the length of the title and put my subsection under IDEs.
---
docs/dev/env.rst | 13 +++++--------
1 file changed, 5 insertions(+), 8 deletions(-)
diff --git a/docs/dev/env.rst b/docs/dev/env.rst
index 37f09af65..33aa821fa 100644
--- a/docs/dev/env.rst
+++ b/docs/dev/env.rst
@@ -111,14 +111,6 @@ TextMate
GUI, TextMate cherry-picks the best of both worlds to the benefit of expert
scripters and novice users alike.
-Enthought Canopy
---------
- Enthought Canopy is a comprehensive Python analysis environment that provides
- easy installation of the core scientific analytic and scientific Python packages.
-`Enthought Canopy `_ is a Python
-IDE which is focused towards Scientists and Engineers as it provides pre
-installed libraries for data analysis.
-
Sublime Text
------------
@@ -158,6 +150,11 @@ features can be brought to IntelliJ with the free
versions of PyCharm: Professional Edition (Free 30-day trial) and Community
Edition(Apache 2.0 License) with fewer features.
+Enthought Canopy
+----------------
+`Enthought Canopy `_ is a Python
+IDE which is focused towards Scientists and Engineers as it provides pre
+installed libraries for data analysis.
Eclipse
-------
From a5510abc65fdd41d5e6851ba54132dc47c7a8f31 Mon Sep 17 00:00:00 2001
From: Sidhant Bhavnani
Date: Thu, 22 Oct 2015 21:27:36 +0530
Subject: [PATCH 072/671] Added Web.py and Web2py
---
docs/scenarios/web.rst | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/docs/scenarios/web.rst b/docs/scenarios/web.rst
index 9a5c7603b..29093d9a6 100644
--- a/docs/scenarios/web.rst
+++ b/docs/scenarios/web.rst
@@ -78,6 +78,22 @@ already exist to suit your needs.
email to flask@librelist.com and reply to the confirmation email.
+Web.py
+------
+`Web.py `_ web.py is a web framework for Python that is as
+simple as it is powerful. You won't find wizards or boilerplate websites
+in Web.py and will have to build from scratch. Web.py provides no administration
+utility. Web.py is the brainchild of Aaron Swartz, who developed it while working
+on Reddit.com.
+
+
+Web2py
+------
+A full stack web framework and platform focused in the ease of use. It focuses on
+rapid development, favors convention over configuration approach and follows a
+model–view–controller (MVC) architectural pattern.
+
+
Werkzeug
--------
From 5ce9c8a445c60f3f1da21bd340ab99857d3f0a31 Mon Sep 17 00:00:00 2001
From: Gordon Senesac Jr
Date: Thu, 22 Oct 2015 20:22:57 -0500
Subject: [PATCH 073/671] Added serialization.rst file to scenarios.
---
docs/scenarios/serialization.rst | 40 ++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)
create mode 100644 docs/scenarios/serialization.rst
diff --git a/docs/scenarios/serialization.rst b/docs/scenarios/serialization.rst
new file mode 100644
index 000000000..ac0494f14
--- /dev/null
+++ b/docs/scenarios/serialization.rst
@@ -0,0 +1,40 @@
+==================
+Data Serialization
+==================
+
+What is data serialization?
+---------------------------
+
+Data serialization is the concept of converting structured data into a format
+that allows it to be shared or stored in such a way that its original
+structure to be recovered. In some cases, the secondary intention of data
+serialization is to minimize the size of the serialized data which then
+minimizes disk space or bandwidth requirements.
+
+Pickle
+------
+
+The native data serialization module for Python is called `Pickle
+`_.
+
+Here's an example:
+
+.. code-block:: python
+
+ import pickle
+
+ #Here's an example dict
+ grades = { 'Alice': 89, 'Bob': 72, 'Charles': 87 }
+
+ #Use dumps to convert the object to a serialized string
+ serial_grades = pickle.dumps( grades )
+
+ #Use loads to de-serialize an object
+ received_grades = pickle.loads( serial_grades )
+
+Protobuf
+--------
+
+If you're looking for a serialization module that has support in multiple
+languages, Google's `Protobuf
+`_ library is an option.
From 77cf4f478d4effec4833e211e6bb76ff54960cef Mon Sep 17 00:00:00 2001
From: sirMackk
Date: Thu, 22 Oct 2015 07:55:18 +0200
Subject: [PATCH 074/671] Adds context manager section to structure.rst
---
docs/writing/structure.rst | 69 ++++++++++++++++++++++++++++++++++++++
1 file changed, 69 insertions(+)
diff --git a/docs/writing/structure.rst b/docs/writing/structure.rst
index 05a90e816..7d9a06274 100644
--- a/docs/writing/structure.rst
+++ b/docs/writing/structure.rst
@@ -316,6 +316,75 @@ expensive function in a table and use them directly instead of recomputing
them when they have already been computed. This is clearly not part
of the function logic.
+Context Managers
+----------------
+
+A context manager is a Python object that provides extra contextual information
+to an action. This extra information takes the form of running a function upon
+initiating the context using the ``with`` statement as well as running a function
+upon completing all the code inside the ``with`` block. The most well known
+example of using a context manager is operating on a file:
+
+.. code-block:: python
+
+ with open('file.txt') as f:
+ contents = f.read()
+
+Anyone familiar with this pattern knows that invoking ``open`` in this fashion
+ensures that ``f``'s ``close`` method will be called at some point. This reduces
+a developer's cognitive load and makes code easier to read.
+
+There are two easy ways to implement this functionality yourself: using a class
+or using a generator. Let's implement the above functionality ourselves, starting
+with the class approach:
+
+.. code-block:: python
+
+ class CustomOpen(object):
+ def __init__(self, filename):
+ self.file = open(filename)
+
+ def __enter__(self):
+ return self.file
+
+ def __exit__(self, ctx_type, ctx_value, ctx_traceback):
+ self.file.close()
+
+ with CustomOpen('file') as f:
+ contents = f.read()
+
+This is just a regular Python object with two extra methods that are used
+by the ``with`` statement. CustomOpen is first instantiated and then its
+``__enter__`` method is called and whatever ``__enter__`` returns is assigned to
+``f`` in the ``as f`` part of the statement. When the contents of the ``with`` block
+is finished executing, the ``__exit__`` method is then called.
+
+And now the generator approach using Python's own
+`contextlib `_:
+
+.. code-block:: python
+
+ from contextlib import contextmanager
+
+ @contextmanager
+ def custom_open(filename):
+ f = open(filename)
+ yield f
+ f.close()
+
+ with custom_open('file') as f:
+ contents = f.read()
+
+This works in exactly the same way as the class example above, albeit it's
+more terse. The ``custom_open`` function executes until it reaches the ``yield``
+statement. It then gives control back to the ``with`` statement, which assigns
+whatever was ``yield``'ed to `f` in the ``as f`` portion.
+
+Since the two approaches appear the same, we should follow the Zen of Python
+to decide when to use which. The class approach might be better if there's
+a considerable amount of logic to encapsulate. The function approach
+might be better for situations where we're dealing with a simple action.
+
Dynamic typing
--------------
From 4b370757a3e252f742fe5844025731f5df8937d7 Mon Sep 17 00:00:00 2001
From: Navdeep Singh
Date: Sat, 24 Oct 2015 19:53:48 +0530
Subject: [PATCH 075/671] Add a missing space in the Puppet Admin section
---
docs/scenarios/admin.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/scenarios/admin.rst b/docs/scenarios/admin.rst
index 954e1f6ad..8ca87e2af 100644
--- a/docs/scenarios/admin.rst
+++ b/docs/scenarios/admin.rst
@@ -290,7 +290,7 @@ Here is an example of 'Hello World' in Puppet.
#the notification message by default.
}
-Here is another example with system based logic. Note how the operatingsystem
+Here is another example with system based logic. Note how the operating system
fact is being used as a variable prepended with the ``$`` sign. Similarly, this
holds true for other facts such as hostname which can be referenced by
``$hostname``
From 88a46531da1252bc16a49ca80947e448edb1fb49 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=2E=20Crist=C3=B3bal=20L=C3=B3pez?=
Date: Fri, 23 Oct 2015 01:21:20 +0200
Subject: [PATCH 076/671] List installed packages with "pip list"
---
docs/dev/virtualenvs.rst | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/docs/dev/virtualenvs.rst b/docs/dev/virtualenvs.rst
index e7f3d0ed1..06b653cdc 100644
--- a/docs/dev/virtualenvs.rst
+++ b/docs/dev/virtualenvs.rst
@@ -100,9 +100,10 @@ the current state of the environment packages. To do this, run
This will create a :file:`requirements.txt` file, which contains a simple
list of all the packages in the current environment, and their respective
-versions. Later it will be easier for a different developer (or you, if you
-need to re-create the environment) to install the same packages using the
-same versions:
+versions. You can see the list of installed packages without the requirements
+format using "pip list". Later it will be easier for a different developer
+(or you, if you need to re-create the environment) to install the same packages
+using the same versions:
.. code-block:: console
From 6bd780457739cdaff52273f21a98842b7c34f256 Mon Sep 17 00:00:00 2001
From: Aditya
Date: Sun, 25 Oct 2015 15:25:50 +0530
Subject: [PATCH 077/671] Update the link for latest available Python 2.7
release for Windows
---
docs/starting/install/win.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/starting/install/win.rst b/docs/starting/install/win.rst
index 20208cd87..a0f37c530 100644
--- a/docs/starting/install/win.rst
+++ b/docs/starting/install/win.rst
@@ -3,7 +3,7 @@
Installing Python on Windows
============================
-First, download the `latest version `_
+First, download the `latest version `_
of Python 2.7 from the official Website. If you want to be sure you are installing a fully
up-to-date version then use the "Windows Installer" link from the home page of the
`Python.org web site `_ .
From 699255b72a82f6807d30eec8e5b43b7be22a2ba2 Mon Sep 17 00:00:00 2001
From: katmutua
Date: Tue, 6 Oct 2015 13:24:53 +0300
Subject: [PATCH 078/671] More notes on chef for configuration management
---
docs/scenarios/admin.rst | 20 +++++++++++++++-----
1 file changed, 15 insertions(+), 5 deletions(-)
diff --git a/docs/scenarios/admin.rst b/docs/scenarios/admin.rst
index d198ca3fa..41ae97df3 100644
--- a/docs/scenarios/admin.rst
+++ b/docs/scenarios/admin.rst
@@ -231,6 +231,7 @@ To run the playbook:
The Ansible playbook will ping all of the servers in the :file:`hosts.yml` file.
You can also select groups of servers using Ansible. For more information
about Ansible, read the `Ansible Docs `_.
+
`An Ansible tutorial `_ is also a
great and detailed introduction to getting started with Ansible.
@@ -239,19 +240,28 @@ Chef
----
`Chef `_ is a systems and cloud infrastructure automation
framework that makes it easy to deploy servers and applications to any physical,
-virtual, or cloud location. Chef works by using custom recipes which can simply be defined
-as configuration elements which implement your polices.
-These custom recipes are usually stored in your Chef server.
+virtual, or cloud location. In case this is your choice for configuration management,
+you will primarily use Ruby to write your infrastructure code.
Chef clients run on every server that is part of your infrastructure and these regularly
check with your Chef server to ensure your system is always aligned and represents the
desired state. Since each individual server has its own distinct Chef client, each server
configures itself and this distributed approach makes Chef a scalable automation platform.
+Chef works by using custom recipes (configuration elements), implemented in cookbooks. Cookbooks, which are basically
+packages for infrastructure choices, are usually stored in your Chef server.
+Read the `Digital Ocean tutorial series `_ on chef to learn how to create a simple Chef Server.
+
+To create a simple cookbook the `knife `_ command is used:
+
+.. code-block:: console
+
+ knife cookbook create cookbook_name
+
`Getting started with Chef `_
is a good starting point for Chef Beginners and many community maintained cookbooks that can
-serve as a good reference or tweaked to server your infrustructure connfiguration needs can be
-found at the `Chef Supermarket `_.
+serve as a good reference or tweaked to serve your infrustructure configuration needs can be
+found on the `Chef Supermarket `_.
Puppet
From 0e643b28d80364684f26ff0284e1c5736a8ce0b8 Mon Sep 17 00:00:00 2001
From: Baptiste Mille-Mathias
Date: Sun, 25 Oct 2015 18:54:22 +0100
Subject: [PATCH 079/671] Update link documentation for chef
Documentation moved elsewhere
---
docs/scenarios/admin.rst | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/docs/scenarios/admin.rst b/docs/scenarios/admin.rst
index 1eabb4305..b99372d86 100644
--- a/docs/scenarios/admin.rst
+++ b/docs/scenarios/admin.rst
@@ -250,7 +250,9 @@ configures itself and this distributed approach makes Chef a scalable automation
Chef works by using custom recipes (configuration elements), implemented in cookbooks. Cookbooks, which are basically
packages for infrastructure choices, are usually stored in your Chef server.
-Read the `Digital Ocean tutorial series `_ on chef to learn how to create a simple Chef Server.
+Read the `Digital Ocean tutorial series
+`_
+on chef to learn how to create a simple Chef Server.
To create a simple cookbook the `knife `_ command is used:
@@ -263,6 +265,7 @@ is a good starting point for Chef Beginners and many community maintained cookbo
serve as a good reference or tweaked to serve your infrustructure configuration needs can be
found on the `Chef Supermarket `_.
+- `Chef Documentation `_
Puppet
------
From bbead84641fde56daa6e7c5fad5a2ada076bb019 Mon Sep 17 00:00:00 2001
From: jxu093
Date: Sun, 25 Oct 2015 22:39:16 -0400
Subject: [PATCH 080/671] Add misc learning resource
fullstackpython for web development
---
docs/intro/learning.rst | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/docs/intro/learning.rst b/docs/intro/learning.rst
index 12a1326f3..b84ae268d 100644
--- a/docs/intro/learning.rst
+++ b/docs/intro/learning.rst
@@ -241,6 +241,21 @@ through a series of code transformations, "When you see this, do that instead."
`Transforming Code into Beautiful, Idiomatic Python `_
+Fullstack Python
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Fullstack Python offers a complete top-to-bottom resource for web development
+using Python.
+
+From setting up the webserver, to designing the front-end, choosing a database,
+optimizing/scaling, etc.
+
+As the name suggests, it covers everything you need to build and run a complete
+web app from scratch.
+
+ `Fullstack Python `_
+
+
References
----------
From 65d286180937e8ef864891794809b3e7d4af91b8 Mon Sep 17 00:00:00 2001
From: SanketDG
Date: Sun, 25 Oct 2015 23:17:34 +0530
Subject: [PATCH 081/671] added info for virtualenv-burrito
with virtualenv-burrito, we can have a virtualenv + virtualenvwrapper
environment by typing out a single command.
https://github.com/brainsik/virtualenv-burrito
---
docs/dev/virtualenvs.rst | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/docs/dev/virtualenvs.rst b/docs/dev/virtualenvs.rst
index 06b653cdc..266faeb72 100644
--- a/docs/dev/virtualenvs.rst
+++ b/docs/dev/virtualenvs.rst
@@ -206,6 +206,12 @@ Other useful commands
`Full list of virtualenvwrapper commands `_.
+virtualenv-burrito
+------------------
+
+With `virtualenv-burrito `_, you
+can have a working virtualenv + virtualenvwrapper environment in a single command.
+
autoenv
-------
When you ``cd`` into a directory containing a :file:`.env`, `autoenv `_
From 92cfb70e877c1dc3813d6706766a95d9c501ed91 Mon Sep 17 00:00:00 2001
From: SanketDG
Date: Mon, 26 Oct 2015 13:35:10 +0530
Subject: [PATCH 082/671] add Mako to templating section
http://www.makotemplates.org/
Mako is the default templating language included in the pyramid
and pylons web frameworks. This includes a short info on how to
get started writing templates in Mako.
---
docs/scenarios/web.rst | 37 +++++++++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)
diff --git a/docs/scenarios/web.rst b/docs/scenarios/web.rst
index 9a5c7603b..ae79fb20e 100644
--- a/docs/scenarios/web.rst
+++ b/docs/scenarios/web.rst
@@ -473,6 +473,43 @@ you can replace it with a more terse and readable syntax that uses the pattern
But keep in mind that the full `Default Text`
syntax also allows for default content in the unrendered template.
+Mako
+----
+`Mako `_ is a template language that compiles to Python
+for maximum performance. Its syntax and api is borrowed from the best parts of other
+templating languages like Django and Jinja2 templates. It is the default template
+language included with the `Pylons and Pyramid `_ web
+frameworks.
+
+An example template in Mako looks like:
+
+.. code-block:: html
+
+ <%inherit file="base.html"/>
+ <%
+ rows = [[v for v in range(0,10)] for row in range(0,10)]
+ %>
+
+ % for row in rows:
+ ${makerow(row)}
+ % endfor
+
+
+ <%def name="makerow(row)">
+
+ % for name in row:
+ ${name} | \
+ % endfor
+
+ %def>
+
+To render a very basic template, you can do the following:
+
+.. code-block:: python
+
+ from mako.template import Template
+ print(Template("hello ${data}!").render(data="world"))
+
.. rubric:: References
.. [1] `The mod_python project is now officially dead `_
From 44ca0b19a64e2ad9d591a62bd156790e5761cb8e Mon Sep 17 00:00:00 2001
From: aaron
Date: Mon, 26 Oct 2015 23:42:56 -0500
Subject: [PATCH 083/671] Added clib interface file; populated ctypes
---
docs/scenarios/clibs.rst | 42 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 42 insertions(+)
create mode 100644 docs/scenarios/clibs.rst
diff --git a/docs/scenarios/clibs.rst b/docs/scenarios/clibs.rst
new file mode 100644
index 000000000..b3d80bead
--- /dev/null
+++ b/docs/scenarios/clibs.rst
@@ -0,0 +1,42 @@
+Interfacing with C/C++ Libraries
+================================
+
+
+ctypes
+------
+
+`ctypes `_ is the de facto
+library for interfacing with C/C++, and it provides not only full access to
+the native C interface of most major operating systems (e.g., kernel32 on
+Windows, or libc on *nix), but also provides support for loading and
+interfacing with dynamic libraries, such as DLLs or shared objects at runtime.
+It does bring along with it a whole host of types for interacting with system
+APIs, and allows you to rather easily define your own complex types, such
+as structs and unions, and allows you to modify things such as padding and
+alignment, if needed. It can be a bit crufty to use, but in conjunction with
+the `struct `_ module, you
+are essentially provided full control over how your data types get translated
+into something something usable by a C(++).
+
+Struct Equivalents
+~~~~~~~~~~~~~~~~~~
+
+:file:`MyStruct.h`
+
+.. code-block:: c
+ :linenos:
+
+ struct my_struct {
+ int a;
+ int b;
+ };
+
+:file:`MyStruct.py`
+
+.. code-block:: python
+ :linenos:
+
+ import ctypes
+ class my_struct(ctypes.Structure):
+ _fields_ = [("a", c_int),
+ ("b", c_int)]
From 2dea4bc5eecd603ac6332d45eb711078a0fbf767 Mon Sep 17 00:00:00 2001
From: aaron
Date: Mon, 26 Oct 2015 23:45:11 -0500
Subject: [PATCH 084/671] Added sections for SWIG and boost.python
---
docs/scenarios/clibs.rst | 64 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 64 insertions(+)
diff --git a/docs/scenarios/clibs.rst b/docs/scenarios/clibs.rst
index b3d80bead..f2e75d3ef 100644
--- a/docs/scenarios/clibs.rst
+++ b/docs/scenarios/clibs.rst
@@ -40,3 +40,67 @@ Struct Equivalents
class my_struct(ctypes.Structure):
_fields_ = [("a", c_int),
("b", c_int)]
+
+SWIG
+----
+
+`SWIG `_, though not strictly Python focused (it supports a
+large number of scripting languages), is a tool for generating bindings for
+interpreted languages from C/C++ header files. It is extremely simple to use:
+the consumer simply needs to define an interface file (detailed in the
+tutorial and documentations), include the requisite C/C++ headers, and run
+the build tool against them. While it does have some limits, (it currently
+seems to have issues with a small subset of newer C++ features, and getting
+template-heavy code to work can be a bit verbose), it provides a great deal
+of power and exposes lots of features to Python with little effort.
+Additionally, you can easily extend the bindings SWIG creates (in the
+interface file) to overload operators and built-in methods, effectively re-
+cast C++ exceptions to be catchable by Python, etc.
+
+Example: Overloading __repr__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+:file:`MyClass.h`
+
+.. code-block:: c++
+ :linenos:
+
+ #include
+ class MyClass {
+ private:
+ std::string name;
+ public:
+ std::string getName();
+ };
+
+:file:`myclass.i`
+
+.. code-block:: c++
+ :linenos:
+
+ %include "string.i"
+
+ %module myclass
+ %{
+ #include
+ #include "MyClass.h"
+ %}
+
+ %extend MyClass {
+ std::string __repr__()
+ {
+ return $self->getName();
+ }
+ }
+
+ %include "MyClass.h"
+
+
+Boost.Python
+------------
+
+`Boost.Python `_
+requires a bit more manual work to expose C++ object functionality, but
+it is capable of providing all the same features SWIG does, and then some,
+to include providing wrappers to access PyObjects in C++, extracting SWIG-
+wrapper objects, and even embedding bits of Python into your C++ code.
From b1b5f95cdf20f0f912088dc1a824912c80a2d66f Mon Sep 17 00:00:00 2001
From: aaron
Date: Mon, 26 Oct 2015 23:46:19 -0500
Subject: [PATCH 085/671] Added new file to list of scenarios
---
docs/contents.rst.inc | 1 +
1 file changed, 1 insertion(+)
diff --git a/docs/contents.rst.inc b/docs/contents.rst.inc
index b312ee3e6..17cf00346 100644
--- a/docs/contents.rst.inc
+++ b/docs/contents.rst.inc
@@ -62,6 +62,7 @@ different scenarios.
scenarios/xml
scenarios/json
scenarios/crypto
+ scenarios/clibs
Shipping Great Code
From 599200c023b59fbe86a364ff4d450b1113426563 Mon Sep 17 00:00:00 2001
From: aaron
Date: Mon, 26 Oct 2015 23:52:03 -0500
Subject: [PATCH 086/671] Edited for typos
---
docs/scenarios/clibs.rst | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/scenarios/clibs.rst b/docs/scenarios/clibs.rst
index f2e75d3ef..5d20fa481 100644
--- a/docs/scenarios/clibs.rst
+++ b/docs/scenarios/clibs.rst
@@ -16,7 +16,7 @@ as structs and unions, and allows you to modify things such as padding and
alignment, if needed. It can be a bit crufty to use, but in conjunction with
the `struct `_ module, you
are essentially provided full control over how your data types get translated
-into something something usable by a C(++).
+into something usable by a pure C(++) method.
Struct Equivalents
~~~~~~~~~~~~~~~~~~
@@ -101,6 +101,6 @@ Boost.Python
`Boost.Python `_
requires a bit more manual work to expose C++ object functionality, but
-it is capable of providing all the same features SWIG does, and then some,
+it is capable of providing all the same features SWIG does and then some,
to include providing wrappers to access PyObjects in C++, extracting SWIG-
wrapper objects, and even embedding bits of Python into your C++ code.
From dd2399abe97f3c2f45970646a5954d94544f3167 Mon Sep 17 00:00:00 2001
From: Victor Adam
Date: Tue, 27 Oct 2015 13:58:10 +0100
Subject: [PATCH 087/671] env.rst: fix typo
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
“in an one project” didn’t make sense. It should either be “in any project” or “in one project”.
---
docs/dev/env.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/dev/env.rst b/docs/dev/env.rst
index 33aa821fa..169140636 100644
--- a/docs/dev/env.rst
+++ b/docs/dev/env.rst
@@ -241,7 +241,7 @@ pyenv
of the Python interpreter to be installed at the same time. This solves the
problem of having different projects requiring different versions of Python.
For example, it becomes very easy to install Python 2.7 for compatibility in
-an one project, whilst still using Python 3.4 as the default interpreter.
+one project, whilst still using Python 3.4 as the default interpreter.
pyenv isn't just limited to the CPython versions - it will also install PyPy,
anaconda, miniconda, stackless, jython, and ironpython interpreters.
From e602c5f4a9ba0150b375e217ee520506b0ffc2d3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jorge=20Puente-Sarr=C3=ADn?=
Date: Tue, 20 Oct 2015 00:48:56 -0500
Subject: [PATCH 088/671] Fix typo Beazleys -> Beazley's
---
docs/scenarios/speed.rst | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/scenarios/speed.rst b/docs/scenarios/speed.rst
index 8bd4cb5b8..6050c98f5 100644
--- a/docs/scenarios/speed.rst
+++ b/docs/scenarios/speed.rst
@@ -4,7 +4,7 @@ Speed
CPython, the most commonly used implementation of Python, is slow for CPU bound
tasks. `PyPy`_ is fast.
-Using a slightly modified version of `David Beazleys`_ CPU bound test code
+Using a slightly modified version of `David Beazley's`_ CPU bound test code
(added loop for multiple tests), you can see the difference between CPython
and PyPy's processing.
@@ -247,4 +247,4 @@ Multiprocessing
.. _`guide`: http://www.dabeaz.com/python/UnderstandingGIL.pdf
.. _`New GIL`: http://www.dabeaz.com/python/NewGIL.pdf
.. _`Special care`: http://docs.python.org/c-api/init.html#threads
-.. _`David Beazleys`: http://www.dabeaz.com/GIL/gilvis/measure2.py
+.. _`David Beazley's`: http://www.dabeaz.com/GIL/gilvis/measure2.py
From 7c6848beb6575790a5f28d7be83ca3ddc9269f8a Mon Sep 17 00:00:00 2001
From: Steven Bock
Date: Tue, 27 Oct 2015 21:53:06 -0700
Subject: [PATCH 089/671] Added Codecademy description
Elaborated on the Codecademy description so it specifies that the user's code is interpreted in-browser for feedback on the user's work. This part wasn't specified very well in the previous description.
---
docs/intro/learning.rst | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/docs/intro/learning.rst b/docs/intro/learning.rst
index 12a1326f3..67a19aa29 100644
--- a/docs/intro/learning.rst
+++ b/docs/intro/learning.rst
@@ -30,7 +30,7 @@ If you want a more traditional book, *Python For You and Me* is an excellent
resource for learning all aspects of the language.
`Python for You and Me `_
-
+
Online Python Tutor
~~~~~~~~~~~~~~~~~~~
@@ -143,6 +143,7 @@ Learn to Program in Python with Codeacademy
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A Codeacademy course for the absolute Python beginner. This free and interactive course provides and teaches the basics (and beyond) of Python programming whilst testing the user's knowledge in between progress.
+This course also features a built in interpreter for receiving instant feedback on your learning.
`Learn to Program in Python with Codeacademy `_
From 3bfafa47d31c23b82fb1ff02c0f517e3918013aa Mon Sep 17 00:00:00 2001
From: dshendler
Date: Wed, 28 Oct 2015 23:48:10 -0500
Subject: [PATCH 090/671] updated location of windows install from python.org
home page
---
docs/starting/install/win.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/starting/install/win.rst b/docs/starting/install/win.rst
index a0f37c530..d50c96422 100644
--- a/docs/starting/install/win.rst
+++ b/docs/starting/install/win.rst
@@ -5,7 +5,7 @@ Installing Python on Windows
First, download the `latest version `_
of Python 2.7 from the official Website. If you want to be sure you are installing a fully
-up-to-date version then use the "Windows Installer" link from the home page of the
+up-to-date version, click the Downloads > Windows link from the home page of the
`Python.org web site `_ .
The Windows version is provided as an MSI package. To install it manually, just
From 3a234de2a88cc4bd072b09e8268fd2382c605919 Mon Sep 17 00:00:00 2001
From: Udit Vasu
Date: Wed, 28 Oct 2015 11:07:30 +0530
Subject: [PATCH 091/671] Capitalize few terms
---
docs/writing/documentation.rst | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/writing/documentation.rst b/docs/writing/documentation.rst
index 58a3107c4..a325f029c 100644
--- a/docs/writing/documentation.rst
+++ b/docs/writing/documentation.rst
@@ -13,7 +13,7 @@ to both users and maintainers of a project. It should be raw text or
written in some very easy to read markup, such as :ref:`reStructuredText-ref`
or Markdown. It should contain a few lines explaining the purpose of the
project or library (without assuming the user knows anything about the
-project), the url of the main source for the software, and some basic credit
+project), the URL of the main source for the software, and some basic credit
information. This file is the main entry point for readers of the code.
An :file:`INSTALL` file is less necessary with Python. The installation
@@ -158,7 +158,7 @@ Pycco_
.. _Docco: http://jashkenas.github.com/docco
Ronn_
- Ronn builds unix manuals. It converts human readable textfiles to roff
+ Ronn builds UNIX manuals. It converts human readable textfiles to roff
for terminal display, and also to HTML for the web.
.. _Ronn: https://github.com/rtomayko/ronn
From dc7ee74d739f6398d634cdb1843ce912c1b4a9e6 Mon Sep 17 00:00:00 2001
From: Udit Vasu
Date: Fri, 30 Oct 2015 19:15:36 +0530
Subject: [PATCH 092/671] Changed to Unix
---
docs/writing/documentation.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/writing/documentation.rst b/docs/writing/documentation.rst
index a325f029c..8b5701f1b 100644
--- a/docs/writing/documentation.rst
+++ b/docs/writing/documentation.rst
@@ -158,7 +158,7 @@ Pycco_
.. _Docco: http://jashkenas.github.com/docco
Ronn_
- Ronn builds UNIX manuals. It converts human readable textfiles to roff
+ Ronn builds Unix manuals. It converts human readable textfiles to roff
for terminal display, and also to HTML for the web.
.. _Ronn: https://github.com/rtomayko/ronn
From b636a0cd49cb3b59c38de68dce4ff233e1e8142b Mon Sep 17 00:00:00 2001
From: Zach Wernberg
Date: Fri, 30 Oct 2015 21:53:47 -0500
Subject: [PATCH 093/671] updated pycharm plugin url
---
docs/dev/env.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/dev/env.rst b/docs/dev/env.rst
index 169140636..41ec2d70e 100644
--- a/docs/dev/env.rst
+++ b/docs/dev/env.rst
@@ -146,7 +146,7 @@ PyCharm / IntelliJ IDEA
`PyCharm `_ is developed by JetBrains, also
known for IntelliJ IDEA. Both share the same code base and most of PyCharm's
features can be brought to IntelliJ with the free
-`Python Plug-In `_. There are two
+`Python Plug-In `_. There are two
versions of PyCharm: Professional Edition (Free 30-day trial) and Community
Edition(Apache 2.0 License) with fewer features.
From 21838251015bb3dc3ef2400590d44510172c701e Mon Sep 17 00:00:00 2001
From: Ian Cordasco
Date: Fri, 30 Oct 2015 22:33:17 -0500
Subject: [PATCH 094/671] Update Travis CI config
---
.travis.yml | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index bce400b9a..0852b330b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,6 +1,7 @@
+sudo: false
language: python
install: pip install sphinx
script:
- - make doctest
- - make html
-
+- make doctest
+- make html
+- sphinx -E -c docs -b html docs docs/_build/html
From 318eef3ee49197e9e4e0f4b72dfb09eadd6169ce Mon Sep 17 00:00:00 2001
From: Ian Cordasco
Date: Fri, 30 Oct 2015 22:34:21 -0500
Subject: [PATCH 095/671] Fix typo in sphinx command
---
.travis.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.travis.yml b/.travis.yml
index 0852b330b..4a5ac7dc2 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -4,4 +4,4 @@ install: pip install sphinx
script:
- make doctest
- make html
-- sphinx -E -c docs -b html docs docs/_build/html
+- sphinx-build -E -c docs -b html docs docs/_build/html
From b1859afa2cffc10a291f408033396fca6a8279c7 Mon Sep 17 00:00:00 2001
From: Ian Cordasco
Date: Fri, 30 Oct 2015 22:36:07 -0500
Subject: [PATCH 096/671] Make warnings in the docs fail the build
---
.travis.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.travis.yml b/.travis.yml
index 4a5ac7dc2..b107f1293 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -4,4 +4,4 @@ install: pip install sphinx
script:
- make doctest
- make html
-- sphinx-build -E -c docs -b html docs docs/_build/html
+- sphinx-build -E -W -c docs -b html docs docs/_build/html
From 4426806372d6587f038380f68eddf7332becd4a0 Mon Sep 17 00:00:00 2001
From: Ian Cordasco
Date: Fri, 30 Oct 2015 22:51:20 -0500
Subject: [PATCH 097/671] Fix up travis build
---
docs/_static/pep-0001-1.png | Bin 0 -> 20813 bytes
docs/conf.py | 5 ++++-
docs/contents.rst.inc | 2 ++
docs/{starting => dev}/pip-virtualenv.rst | 0
docs/intro/community.rst | 8 ++++----
docs/starting/installation.rst | 5 ++---
6 files changed, 12 insertions(+), 8 deletions(-)
create mode 100644 docs/_static/pep-0001-1.png
rename docs/{starting => dev}/pip-virtualenv.rst (100%)
diff --git a/docs/_static/pep-0001-1.png b/docs/_static/pep-0001-1.png
new file mode 100644
index 0000000000000000000000000000000000000000..51eb2b25826c3f97b38a4fa17425a86d27c0d962
GIT binary patch
literal 20813
zcma%@1ymg0w&n}>;7)*GA-D#2_u%gC5Q2pOjRYrHaEIXT?(V@oKyVKpe2V|Q_szUn
zZ`PV#D@li{ZmLh6v(Mh&_uC!%K~V|~nFtvG05lnCaTNf7h6kVTAVPzGzX@8>1OI`w
z6j2ZXfJNAq>Lu{UEt}ZWyx{O!|Pyyxz
zxK8kid?7>~8a|-QsMIL_pCj~I)Gx>Tku{JAP~iir{Qv(BBL?vYOzi41Bmg*Yo5-Kf
zVZjeRQf)=~Y5mN@L-f0mUk3jju?;Sa(<&kzWf8Gh32bOp?UxfcgchqLa#zjn_R
zlg`e;19%OjH)s;dg}&q%h_KLyBfoKAEErsFPV`Bmf)C)Ur?SvG8G~3Sr2li`7s1Sd
zO{A})3Ffz71P{h`Rs4=9_t#
za+CFDKSG&R#6AQ6DsM6o40e4P?NSe0ud&dC!_WOU$!_oIEMh0IY2=eIUf9pO^gbvVRspzJVf;
z++wcwes}Y|ff@#Q3NC&CGe0=yqPeU`hzhBIaG6F6iE@eh@UT4qc$%Y~mdRn?(~bP<
zhnrSWUzyOQSvw@DSU1?RdR(ewbnUYN0N1nf{JM88)Ll#;jIz))X8?f9wRYZmf$Qdr
zfdB*E$jzFskoVoEH5y`;%g>xZBjy`m-hmzX>G|p2@#)b0;c^)n+*C-1WJ5$JBVbL%DLjOasq$Sr_tww-q&c2k08!
zmPG6JNK^GbCDT^4ZZ0cHKTmte88W3Fa>fc|)r$J)0NS$K`}47PfYH%$>%+7?`CD1+
zP2pvq)@*H<8|gUJxZl)3r&UFUfa^)Ht~Vwo%Nw5rI|qt`ZNj>F=I7k<4`_hX;j?Ya
z0x2%%STUQjtMD|&m9)vj-W~yO*XG$P5^f{5hfy<;*~$4pztkm;dS$0@YBcuKuW$}
z#AlD;?*vt1o7D|@CR0aWfJTp}FJ5X9UBXg*g0U=%8k7-jj0F?5tBo+gO|Pu#?%O6e
zs))AZf)2a(VlD}B`G~gN0h`^;H(~NLB^4DDgM(SLvL&-8zuLTRPFC41MhC~n#)gNH
zT?14uA<&AxZ8e7pP!1~7*fb~rWYR#*FxxMUP9b8Z-uKMBCLjGIH2sNef@)c_#;HK)-TBc#kLSU70eM`)mEWf|M
zuXyutIj!V-IVlAnU>uG0Io(vs9%@*^U~ag&`Qx&e)6EoT9d&sHRZD#JYmND4(uBkk
z`@|a(1}C49^C|e{*=Dw)!$Wv&k>uv!dIR6Nx+h3&?c(R!t1OoTa>u>O3Z|K&YJM(H
ztC5d$DJdy;_lD;K_>tb=WnEocw&azBpSyj3
z2=sA_F{X0n%FACNG=IAOEvge_lUg3{)yFn)KyJHNtq~y7i#SrvFq?t~1jv;^Sh|}r
z>*@Sv7Xm{_kZfH&>z6AOHFQoXt|ymE^RzUMDV}_%`MSR>4ZVAUg8@|1#O7$g`x)Wvu
zPafVb8o?Fvvg541a-AF8oKn~56{xMUdSsXS-ts3I^N*e#qe%Giov*TRF|b0nuI3Ge
ze4koXksg&%CkVFEMXgJMwtK&}lC)7P?r5#axn->K(H~@KC(NQ!NNTxV76w*wkU#+t
za*CzqZJR_!q2;=Rp}h*hcgcyi3-|pi>~8^br6M0&5fhT>WfczJYei0B^Q(qaMj4Hn
z{VB!af*&P-8Fj&T;!Fwx3`B<$9hSTgaO8~pHjCVT`B2i%EX^UO?f2y$XmOCgQpC`*
zv0*(%hP*s5kiY&w^Ai?sHvRLcI87ZYo|7vTC3v&qvOAt$v*vq$ZEwaTt*AIYGNM~=
zx7g^sDd}N&hoZ5jYTcDkI|L1cB&QnE(KD$*sad|h@0p^0k6rO3s-Qu=^gSV+_j_V2
zIg8EmI6YUzV;B{b@cm?}_FRwWcJNar+Z)NOwqJ9VUM^y=NWc;bnR(90cAmYuBb794
z#P#obJ?kp0@3&;N3_{VPZ5q}x%R>)VDRYlM%2)NZ^vd8rShhEo>@IWBhBbTo%zyX%
z3VfLQseU;M8wSs&VwdSu-VMdQTN7|%(Zj4^?n$`NYs3+{Z
z2VhjrC3v5eK3$`!rlFA&YWwrZVz2JpqgBLzS-awk`su$`woDw2z~klgTcwOo0wUmg
zU#zj5$Pjp0??XdKuISWW9fs+L8%IIqZPv~v+<&gi`_RiZp*y#iaUfb4P%K#lgbLS`
zN}m*^udzN4!|zd>X->Aw~2nd;hirfLKnRDK@?SF5-O-+TF~+vAK(;Yds}EV~RZQNFXCL;X|EsdrkX
zS7!S9;K!=ATFDi|tw@-;bxOWfig`;}(a10d!?KQrK%VfTxo@^yJTYmH*R&rs1%(MX
zG8o8hu-0Ag>Y8VvT+#cg(;B0BZm?wU8Aa?S7FB95jEJ|J2)fz=$(`G-#B7%jiwwC7
ztvoYY*BbQ60YEv70s)MP^$qnTk6Y_q>9PROczzMhO6@>|31vQ=ufQDh#FBWAifK_`t0rLc{@Pn+iJi3{?s9?=}F=pS97smX89*U
zkv4nHX-S-ViwpFGgq?9$_Jh(6H^N!}Soe>sXtM09nq}_a`2^VJuNu7(rZ?uOM;gBG
z(qD8bY$-o0?d(Kpmb%B_%9u6%AcX>yZ&uL(;5^aX*#VgwTBE`sl16d&;CLS@zrB_}<7RGD*-=hluAC7Sft=ijqAK
z?p7IVCro3|#0}ZKPnFNFvz;du^7)b_7bv>X{S~FAx|)rRje>%r_5Mh=#JxG3t}Ylw
zmy#@r4(>zGjEsYjT`Z0q)C>@J;_8()wbJ~xe#_JIhL4neg+u-uQ6;>`Z)(|n2W>}j
zx{1`|q}DDYkH1h*fEI4KitVK{gQ|~@VCICBTi@W|Ab3G!b7-1sbhFpT%d4cZ(o_|#
z=dxgYh*J{WzxW~*I4%x@Do4Fg@z9Jps_y>s&jDKX_BxM2&0me%
z+FMn0^unf-9JS{(R>0r=%6Q`_!M`oT1HlqbP}i$^H+0Mc|2kzy_@q1!>wTdb
z-Bz$oN8G?>US3`{Mm-oJ{mNf+MqsjHO=a6){-_BKsA{O$Df_;ktRcZjU#7=lR){q1
ziPbh3s~V~6f<;9UThb=>9xhkFhVdITK@fQTcYC=}Y1cw$z1Y4Fn`A95ElL^u$*HM)
zD&Bz8)q-L4q_jp#A_*m4=rLyK=B^{1=qsLh+<^+{5X(GD6#MPF*xYim%)c>jV?-Kw
z-5)0vxyW`sSZ!MAFTxH;&}~z%k8PVA=69pM?fK64UzZj2fi-eE+hn%=>4&$JxgQRS
zyY&i&W-iksaXA@Lg^zM+>&0%b9a=meyQ$RBobN8J-+Hr{_D38qH@LgI=VH`XWuZ$_
zNp^=tYaj*JC)%yG!&Mmvm^crQ4$4ed*J}%K{_sQ)TK>-ei7ob2UD?mmKE(
zHbp0e$kxqX<_*p0$e6%I-0HF>>Ft)d-0p12F{3LzMS<>S@kKp@lby?!w&;kAdShU5
zx}f*xE`K;_GHI$l`BG9Y?J@GqS}*W
zNFN%pIqa^&B~+Hq+QL<%1Jmm!s@&%ppPtPzU91%z8Y>ah5;D9_cs@me<0LF1;ujZi
zyG~7_VL-%0KFIU8lT<%`jI5|syQkVNxEgWA*!4JTDQu-LC#UM
z(#vdL=@TZ^-Uthvh1c6GDdG;j?hv!CckO3W?w)hxEErC|5_Mb39qgr)(Xd(~N@GeK
zLa|A0nWIAEUQgB3Syu44{PS})dwtj`!`
zI8%7Yt);VG+|)anZTpEEETxT&H%@(@?``MHU-P*!fHiCcsyOD}q!hZ|I$|)k^weEG
z&U(zc5uy2+VT^lK)?@gnQg|Hsc_=Ia*{lAO0Q@ff{3#nwz`BOQTu*R>8J~}^*5g>$$6{gLx
zO~clVz?~DCaR>og#O%j2{x&6|$^KNH)ne)1-rn=m>9fyXcJRqcld871=kEAxoH81`
zaPThh8F#}*N~#(dl+Pc=_!et1Xwc$-$?k6EOWpb$aSdkq6*_fc#Pro#49CaEl*wCk
zovxH0Jg6n1QA9Ax%E}D9a=*^B{l$$DpJKj(H3?mAn$=^%8VHe8HOhgZh}q-nxK*f>
zV?`A=8Om}LqY5RIuR?lx9;QTv5n>uth;K3^Tyu!h8w+6qF2QN~aapxM@v-9hjyX@I
z$$SLw-i6d--EX!;)AxGOvg3aB^yo$@jobO^V79KV4qSz`YtQ|}j#+4=QM+q0=sma<
zz0z8&Zfel*?8OVU*4QE#{G^T#f6tg(|3Cu_y7ltp7%NRK2!K`sZg?NK(IEq^59cEs
z3WuLGTAH;O4C?I&0S5i%%ahd>-t?1~+6z<#0=)Q=FrZ3cQ9&g$Cs>gBhgQ8^a+@;%
z^hXjm*v!&tZbGye+=$h*_NO|(lVA^n3L@d*-p^7TO;Pi%
z<4$()H1GoPhtJ1o=y93oh31u9KWOS}6Wvc0pt
z{SGJ0Z(M}lGP@%DzF&09)KnXfaixD2tyVsD(T+4SjxZ2UPj}3Rkn@zTzgWGb*QCmE
z6RW$y!Q)h#R~XQcsd9h7lJia|j;nP5oBJ)b#WPsGA7gAJu^R+#h!XzgFgxI<)Wj
zpX*i(UnQ7}iO^@6Wc_xogI-k&@x9Ik?gz#H
zU2lt^Jm*ZYjV49jA(KeA#!`i5@XUWd%W?Qi$@J#Sp(HsqBokEDKnXU>Q~9SCE+VY-
ztP`>j3%X*F8gyq2r4%%VY3K<(OR>Y?@Ia90qZ$fXfyrG@_+vh_^I&Cfhcstc!08yxQD=?UW1w|8wJ=t!K1u8Dc;>1uIQPnSQD-_meEE
zxvQGtfDiers9>gJmDZ>Qdtj?K`HILfQh6VQF4Wz%hs+siLzm0I`$|1j{QN}~6Ndg9
z8Z(2Yl$(g;FMN*Tim#O*(S-c9yRfhj6UWEu6`A0u{qt3YuY%&Wk@FZP1XLn#;ND+}
z#cq*%I>R7k=c8k+Br3&H(NXC%y<6BO!sbpk7cDjsUYLsn-$I#XGj86sM>W1PIW)R>
zR}ESw)<@rV$cp0$e9LX0x!GC!wf5ICDnfp0(3unHokS`bTjoNruWi=&5o`jS#I&qx
zkv27dPVexZQ4$(l(;I7YIjprmE?Q=`T~5hu@NG^@9|TF!K`mx`yeIQyBCgafZDnXg
zAQAlX7fg9U`L)5p8%#*U@tLm;zongD9C~|Z;BzG%UE+x%kVaWnX*HgpGyn|!72G`d
zA5}WTe>~tM0vp;~pzc*^JxvqPRcYK4WR%z^2TrvhV{YhF#7)VhuIKR-gjXa^OEtdF
zPl*PfhkSX0zGKsAl8)z1tVx`|QdD-%L$h)2$5UMEzz1iOALY>jyiUO0csk$4Vc_tF
z#Ofal8nyCCH;eZZpiERq%EEwL
zVRaWez^Xt8lK;|ub99gF^SjdzraVEaX7S6Pb&+RtA|`u6)PBvCcJF&7-@CZBuXyYh
zNIX5Y0{7R)#B)BV@SAX8gfTWS_ytB9f+PPx*e7CbBotA1r1XS@gzIa!hTs{SE1{>e
zC~&^{{Nm6^X!FoOLR%6`-IxrjmDF;qy!OX@NBB{|m591mbxTobmY4rexi%B;y
zO4xu2!o#lbQ-L&zN&tLh73N|ekl!6HEQw}j46cYGqUH&>1i0Ct*x!7s3=XN
zvz`*Q|81#GU2%2w$Jt`_E+%PdmX{Yedk}u5bh-n8lcrr#K)B|^o3cu$jqaCmy}bO(
zEDXg?mCX~-O#mg}nYrKygOLb9!UvV#4R9nWVnU`7j8u^}`y<7KVl>EQrYfM2linD!
zia-P4D$+T_V2!=u?l0RV@DiPLQq$DbG&G#phiUkcpYQW@y9*}D$XZ1#Nzu?{?jtOy
z1;kp8UUsG{pHF%T$h5)RFqtQp_!4%zuArcs-qbZTfO_%YO2ET|5F76~2GLmosk)
zyx#~KG88mv^~0KI@mv3qnf2%dS0FXGeVDObU0s3k
zGRPQQ<(s1h3;YA6R}c569hyaIihKw}+R8<0YrfCkSz&k_m9m{i-B_SU!;660lf@Z%
zY*|KzXZoJW`0jH5>({S}I$g(uVX}FjFUGhElrl+wp2NYEVzDGu!oGtk_l4lCZtAH8
z_i1I!T7szx3O>`PWBP?$l_ESQy`TF9O)4m*-bzCgHUtNQ%R
z5NwOtQ&x=wj0gs7cB9p$h)tS4v3*1@k}JaiwV9DQJRe{G?kt1l)Vo0d3uU}6P@l{33s+ZDkV|4k&@$sy@q(>d4jgc6yLaWt7Z1W03
zoi<2U69CrpyYR8!FE#WBm7p#yEgeb84t&%TwX?I+(IJvhPSa@gx?#G(--ijynVOn1
zF*Oa)n}a~qyBEIx%N60_xdpe)7Eo*ZFpOdR$jn?JprxVn{cWO-JMH}LQ
zeL=NO(Te9@IQe0dA7-wvS#))W^JYIdClb@rzHIiRd1k|svS#lZk+8X=*fP>`e~
z0!1>X-3Yi!S%T?7vugJ>@0;U>wU=ZM97Qcn&H4Fx{J@Wc_!WB9Usm(WaHZOhZD>XA
z)xO5}uvN-?+ORH3#|mzZRI|>fcCSRw&d-C>wgFra!K9z}Uf$?t)!m#;yAlOgl>hnR
z0xJ~OPGNTH^lfuH
zURqdK7#$tGyZfB|!2|R{O3~B6;$5r#3(rzM?EzRu08ZyyGC$A(qucXs(QFp0Z4`z#
z_-!Pg`q%$d|D)(j*;9bl+l#p8bv>HI`r=N3))WhkT8l;F*>#!U1p9S;n&7nC<||+Y
zn_eM3lWL=wCHMI61`%2(e=GszK}XL2Wk9$q6M$l-rb1ad5rCl>qL9Wz&&mX^uTy2B
z;=>7iaep%LLjB1hE)Yw=e9dppQs0o~@U&BmL_yQv_te<2)KkDJ3QB;=`uc5-Ywe(b
z`)!$!kWkyu@Kl2=VzCkSTUuHgc&(@(IUwdp?+qsU{(`0t5deCy?l^c$dXAS!z&-4(f-2%
z;C=X`1>KK)K+kOr7v6`37!Z3NFpJz5h8u2)6?1W3rm*kNSfN8Q5zW2`SBO=;!VGQJOxkNsBUVSl-x~$0L$b^ocPlv|N=x>2wED@J`He)Bjyj
zyv-qVvfhaS-`^0&jz>2zu7kCQ_w9BfC{3MkoOY8x!t`o=lUpY!q-UvbMxA_Yi-#XD6J&WGivy=JqILgBgFPS
zTFYJxqdyv(i$(~0wUrs)>;xfxbS9LDUtOs)lFddI)|r~Ec7|4fi8iTv`;IuuVHLs=
z#L@Eb$3UW$07&XTmQz7Nm|-{gQ{nq~*c*y1n|J=QuW!|YwaFc5)4963f*(0NGEyJ(
zPye26f)ny_Bbe-?fg~tRTXmp^;~RjX6dweOZ4rR@AD&hhmT`uNXSBqJM-URCs>u_m25QKxs^>Pidh>0WuIsh?Uej?DHe+k
zB`&e0@;%kOu1!}<8fYWcHmR!x#gX9Q9NH9fFU9zUsrky3nmGpZJb?gwB?AY?eL`OI
z^s?FyGuuvYu$bCeN!q}fMztTwXKQXwJyH$MCWo6Sb5JZz%aDFqD%H3VJjhicUGHp&S2leJjWPTd9L=c@*pKkS|8t@0-uzwmB)`7v;
zGMD?Ur}PICtd1^rCvJWuviLqdyp(?p4ft1BKV<<>`<*?!x^4?(Z4m{e6crV{z1yZU
z$m6N4jN&om`=iKSDp=SSoJVk<0yVo90je131ZKmGxVVd6Y^A?~rmsH$6e6RsWdrfi
z3~TxDkWp)D{UZ%3m3OO*CHgX;!t349QwJZgv4Nm>z?#=&ex)0`yUk+&1f>QIDMMrR
zssNmwKfENyHPQQjzHe
z8h(8wl0&R(#z$t*sg8ObhhVX7lV8zId^C;6Wju|C&+X{%^4e29m`G#4Ra{u^Rfe5g
zryL~!K&J}~IlHaO18UsR2-n=*K;tw5=;AC?nS$Qr4Y(C0fW~>JBc+3>YkZyB;l;O{
zqHh$rAH4L`lXRy~$RDo$kxF
znEk*O9WVLoDDwknK$q||M+)^aY3`(!u5M~fOxNy3ZcYw-sCG{!Lkl?Wz{?G(MyC$Sd3>j>F2_rC5aJL3=pE!7aHWA${@wDvN;lnbDhCci(1)oY))a@D
zi2HrkjaD;M9}56vszs;gK5P+C)5PJ=ymv2?!GZxout3U!XFH9?tUw?P`uaDXJ)f>a
z1?~^)D8)-!bBsKDha+CE%1(udlm+@V0_Q6XYDsa7E+Qsx0AF&sU%OyP)Ch8Y5D8ylW%cqbT?X(Q(Wu<6%#86Us
zB?0~CmnT0d@wmQyX5R`d%-oz_zy|S0Fx8KE6=A4$B&9n^RX*E=z{wM!A6A7Zf&l_u
zPX&h@Apww0ES6lrG@W9K_Y}iy;&ZQeIB5VOWs*FNU?w^MD?*MrW{-;GChBS-kH#E@
zCthTWo@2Z+rJ5INY&Fzn^aW92nkFtZ-3PaXE?ne4p<)C#0`
zcBmF=|6&s
zKfPhz0plTumJ!FqFB}=|wLXcl?8?lZRga51Wv4SzQcPzxLl4W~W@HX+SPrPbMZ>w^
zpp;_xRemLRmW7raxsjd*;jY5t#7zwl9k)rzkTUw9PRBexcJ>9AfAkL+?=}TiAh<+>Sjb;tMOaXKb}yu~T{t;5&OE4O
zK)uON7}7c}Kq88YFV6u-4h>-R;kRn)@Rwi!mz4D-fwcae>mm|`U>3%TuzMY9Q4
z#o&cY(Bhome%ZQ&|4VpB$PtRB(hq81T0fNM=*Yg3ujeKTm
z3JG%+->0*JWyoA%mNn5}VQ_(bC?>k#F_Ozw_oBls?s2M<)C;felP!ZY10zbZPUU&SFW1f}LPs6y{yG{=vE
zP6W?>8Sl9=gy@13ZyXG~H+&jz19Xah2Y#L`zP%=uddZR*@SBPm4$lILZ!!6+E}M6`accJ4Ns@^Dn`?q2Lz{Yy{m|BC
zl8WD-)~G%BmSujEQqLgGSYL!%BrkZCpt7$rZ1fToD8FLM4Ep;$nLMD~)G9OkO=EPG
zziJmRD=jZAt)E7KD-)nTb34{L{u)&pmop-_%mLCnwUYWEQSf2M_ooS&IXR>C;r{-~
ziG!^J?U3a3PBFXT$}FGooTvG)!|SnXwL_6ZklVUSoD6yrjZ`3$9#O1QW{^`Qx>}@b
zy7Y;K1&*a0b*@CL#fZnM8RQz?$pL_{wu%cBkW}J&QFih?V|yQ5
zrJpn!^yaQJd0nRhSXn`^Ls43B`OEsJCK3Rc`5Mg3D^(D)NmgdFSE$usRjmbpTX!>b
zItu38#@fhR^z6u~nz!?LR3QK?h0O1jG|Dv%s!$+8lPFq1#>Yut2bv`!#xGE!q?C8#
z=d%sejI1r!4`ENW7_6vzIP4SepDhJjs+Ir5tRv1`1|wwbPs1hgVdBoGea+@m^0+|Z
zoRW%sK3&3soq+s}`k|4_KS}N3vAze1WZu7N38+qSK0f*I-_sv|Ljkq(%ew8{I_=No
zv42bsMa%CTpUR(mfy)h|F0K;|d5iH((wefbZ`vVYP5NR55
zk#k-e=b^J#=I0zuL;xMT99wfelW6Ss7hGZd`|kGYsYlsHzVXKy$hp0fuhPzExwDkT
zWfFua`|*k`7}Y$$CW&{bY#J-C#k|f%X4|voHHtY40jZBL0C?{;sMrQZhbYy+ym%hi
z2O+=lIXS-bCmEmu%Ug%rDU?H40LELY>?%`FWo?OSuLhNy8oYfkFZj{YhO=)kqpU%;)kYx#`&$iUq}*vDEF;dnL9?gP`Hsg6c&O$7%Mwo)*ZA+2
z_^CJ_Xo-ioI25iu;oEet-T89Wg2;khKv}rcjg4gi9{E`xgBt4Wd(Tf{IXmL2a&o2$
zeF-@J3+~G3{;(2Fbsw~+b8(k#Q$X1(YR*pihq#j57_MPBu=Msw&QMRECwE
zb<@v}DqqEBMKNEt&_LR_=~wF83KM0pkgJ;c$CeY}SSn9V7tbpY*#un89h$`|AtAMi
zj>9XT3I?m8ue`$bsMmX?$Y4G|7rNwO3r1g03>51LDK!~<*0?!dNviD`&aplRS?c0p
z26f;3aBFxV7RQ&tv2a`y8c@UIg=dkEzyOmzTzA^kf+2PAG*NZhzLE`tms`guJ$0~x
zy)k8>Fz7jdAcQ>I@z}u#kpE*RhizSt7nA=x_ak!JdtXsopZY`|!}pCX;u`>Itj!6+
zvL&_Q+=^f5CIHOfh_QNse;d_2=Eze=Qg3sd4*y9kJ!3YF!LV*0{1JCp6{n+6dEU9Q
zw(|@O1gxl1|JmuS=yr?}O&CNm
zU{f3t?n9xISd%bcnj)|h{*~~#q1Z1~G=@6U@Gih1V*k)hm*KDZ(DCCrW@Zx))61K*IYWI$>}wzW~v?a3=LvEnjN?9ZQNcX<w+&?NDLccSHF`maoP}fqe@TP9FCd
ze}2bbPu7M;UOT>-YG>8z+$=7G(%N!0gFjPg1Z{Vl-8R&Ko~O-mY_D17_n%N~Ga7Y7
z)a3WLu?mQaipKHljz?sC!NF0l!Oza|U;O1Q3wS5r;dgh_^f)t$_bP
z`d8O-3d;*!Sn?{d?RppQ#6c^ub;ZXb<*-0VvZjAz#4sEmz`ifU5k`xSb;{Idn@?@e
z*%^%-nB_97;xY%5e;gqYP>&t~%{%g0xmc>tJB1r3#srj4`DuhrtW2%ZLuLctUXOqj
z+&>s%qBIpKC`=3udHxQ4+p5S8219F~IwGUpgo$4|)kVJDEXSIB?!~Va%a{Zn2ez%<
zEWa3h8Hx`m7hNBos8A|j2@eJM
zOs^q7TmcU`9XGU#f=UT0l)}2_qnK2Vkw5L*G_1F|6Xt&NM7X#z#PqobY{s}7*(v#~
zD&E_>;N?^5Cb;BzTd*vw_?@QTul~_PtOouhhNgg~Pws_>7w|e*L2tODpfD1BU|3uc
zX9ZZ6+^%q8gw>8Hk=$-smr4%k8wStN-}Wz$?m8SiV`Y$ytC#I#hg-imlC9
zbN_%H;VzSIbcx1dym;}El{U`A6-z{9%UnS@nH_G)2w6o&odI0*>d!Q7LEUl2-gy0A
z5BH4;*87LAl_qTG)TmINn(XH6I00c9^p-`M@nlLz#i3GIh#jXZM7N=B``Kaw
z7Rd%G(%TKt0P;A$;qsa4*dXTj1z)|qBBzn5WUyfUKEY_f`*jVO?KWlgD;5&aOVf)>
zN-mw&YB9W6cge|BRaGFz^azqh0`dy64`9-fC1N1}dF=cs(nW#<@lf=0l_*Nj^qxfl
zI%}WvFoyba%vX}wWdsocfCB3PCryxmpbi<>@`S68uberzrq;CIIm~B7xx4aHqe*OG
zvW7E*9j@eERU`w1Z;o}Zmgig240!IxcyqaL1F#4I0LS->h^@esms>bz$w9{#=h^0I
z59fwsQp0pF!%MY8hj?URx`~klZC|_sNB$+AnX({+FM?#+EPLtZ|=pHjR}4)&2BWWN4`8-F^W`UG9JG{(~la9WbgHm(c4BGqO!@
z26hzs9o2DGvXcSG^c{L!?oCg2j9A%=+ZBzU^PxL`vxU*MG}(527sZ9t{wOiugiV1b
z?=z`HksK79y(;+5joGRD?7+#Y-!37NM(|I4&@Ml9t{RN{?hNSEbNq7Mr54|E1Y|wf
z%@@DT?YR44W>9W?O6)R`20-}p?#kdoo#h?nCLb30W`X$Gwe|+HUnRC#TA<72J`7jP#o2un>?o@=W*N#lgpi=>#<|Y)C7p$b0*?
z6)KC1i}!-WyYZj9X%G-cOpL$T(w2W&TQW<83J>nh&NMUYvgTc|7|g$LNadU?KocLxn%?)<
zkA`$#VS$*$Zhc~>@tT}gjm4NzXg|OCYcq}Qi9|W&IGzd?mygecaf$dlxR&bBgE+|0w
zL~+hbd^5o^Mlc#zz0R68H8hlXFzMkS0s8&|e3cA^^Jjx1F}lUC6aB{4QAo<*w)Q_M
z^S|w-T~_GdPxAwI9>>=B+O!@!b!aP5M|3wZBMu=!8~sUrf?;~<@s6hswIgerW=Z35
zpyCuApJua?5=V|1gIOS@+bb2yyt5P(Eys?vx?n3FI+3sxlT8+ZV)((ERN0*ub)-cRQJ
z&TQdZt~i(+v#Ufi2`H6!h@1@fsvFLK_k&vQVGa$XWnP_tCOJsjgMk12-JPTfIZ;GX
z!TVh(0LRY98e+UT#GK83J~!&(9<*sUZ?b5su_^Do)4D(9dCRB1nt?}M-Y6Ez|EwPW
z_55-M%nZidUI`oycv`3_Uy1|32TcnFato|299syKT7hEfd+%rSOUnItSLrTXd!6o~
zC)it^AGFBtJ8Za`U(qbXv(G4^(y$oCv*d$72MB9`zVbNOg&=7`P6VrbV4DY=<4&M8
zLOVRTR15*bI7JQ$M}?M{#>DoKy0yo4O>IL4Dc5`Av9;Gi6oXG3(y8Wed54?-cd5fE
zu0Ud6_Y{q(3;<5P-)m&vl^2RxA3_(3XnauV)ebdNpLptSCS-S%BL&Plc-IvF%Eiv(
zLJ42nq8y`{{vfy&=J6o$BUl{{FyUW^Ao0T<+HVb(RJ4Cy@AP{i6Sbx
zyLXFysO(EV>gtmFFn8suW^_EZsovApdb3N)D9c1=fEKWPf2$~_L7IvhlbNsccO
z1|{a8HG@c^w4X;|O7%?)KB8SyiTCsp&z~H$v%y~GFywC$5fNcwVId*pGFW5IJ8^m}
zrWpUumMJF@L?o%cVZxc`!Nl|`mZE^7dOcGNRloW=ZVw;V@d
zZe0)6C@e330vrC`DyDJ&_BRIAYnq=PKd{6pV&rM$WMr!5k;_eyK=Mqh>7zM7F%KSx
z-$dtsZD7#!aeFM4%bbm{02dV=<_6#H&ggeH&uu@tOVC$6XHJyXb;=%sD=T5SvB3S%9Ki`Z81jpXxQbbjx;lAX(T_e^xnvP1i_Sc
zS}Ynn;bDlmwx6(3l~$nWo6Ly@Ee3FaDvt*zz#0V*9!{c?A&mkp4QFO3cF~{$u%%!F
zu1c$P{!kxX0AwXVb0{-P_A3%GcNwUhh+s%_8JS}cq{+K!5gJL3|4|b)Gux^*A9;G%
z6>1^v*2t|wwaNV0ljZ91Ca>2y!VrogShB6W;G4#o_WCbDZ|GDO+h;J
zm*wF9a$xQ0cuhq`r7^Rqsi~d*-#*DRxevh@~?0+{VqsMR-{gT|IK~f2QP^BZ;|Q
z0b3t$1Cg-5=uo{d&aeo~>Y^Yh2)1HC=|;X-I5-=5vH%3cXAnSOylFS%!r1y{?qiF$
zY9fIcAtMu$Bz76Nn!q!KQ3=%pbGHHzQwaSl`+SYxev)s5Y)fK@DE)F}G*cqr-6EJ!
z!eBu32c>|$$eb)HPy^V2P9W}r9zwg%T-k!ofLLZDT7#Wz+IR|Ny$V4Qb)c|B2pcyP
z*b9fhcH)`E2Y!h{Bw`*ts`a3g1;Lyy5Rk=i9m|4?k5t_jiMXdq~(c;!=_)%~?14Ro=putMLBhh@#Gu+*3cepB-@OgI3#E2^#c-s=ktg
z9b!C_#78->#13aJwSK7Mqy~p;2L1*W@Ic*?XNOLih6X6{Nna4XYD-KYCv_NBSl%xB
zN_SEaL+bbO4Cddgo*z7c2ttroj20R=Ryk$MpehU$AFDH3r^b3GR91Q4A8Pjtlji0~>I!S?al7`?we+{I5FBJRGWpkKF5)qQ@Yh$mmri^Ns36aW{EwV>+WgCP@ma@EOy7#?r?|q(o
z{yEQcmOsvUp0oUZpYP`fpl3hVnO2XauJ0C7v?sO~y&E4;r=sAiFJ+~HmZf@DKabGJ
zZbhZ)&d<0RJAKG(NI!NUuXZ)hB_Scql=T5bPrt^ydFBu!__J^EY4p1n+AMg25b>;m
z3$4s=A~&GGdOT766QD0_clO+VcpfGia~^oWwjfK`v7obAWinOg>lchJ(7P6SDo-Zt
z>{!Ih!VKpX&n`si2upi~8b+ukeRLI#`xHvcaK}7i1xau2?XnwUoPMxx1XA