Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 31 additions & 14 deletions docs/dev/env.rst
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,10 @@ order to do this, add the following lines to your `vimrc`::
TextMate
--------

"`TextMate <http://macromates.com/>`_ brings Apple's approach to operating systems into the world of text editors. By bridging UNIX underpinnings and GUI, TextMate cherry-picks the best of both worlds to the benefit of expert scripters and novice users alike."
"`TextMate <http://macromates.com/>`_ brings Apple's approach to operating
systems into the world of text editors. By bridging UNIX underpinnings and GUI,
TextMate cherry-picks the best of both worlds to the benefit of expert
scripters and novice users alike."

Sublime Text
------------
Expand All @@ -75,15 +78,18 @@ extraordinary features."
Sublime Text has excellent support for editing Python code and uses Python for
its plugin API.

`Sublime Text 2 <http://www.sublimetext.com/blog/articles/sublime-text-2-beta>`_ is currently in beta.
`Sublime Text 2 <http://www.sublimetext.com/blog/articles/sublime-text-2-beta>`_
is currently in beta.

IDEs
::::

PyCharm / IntelliJ IDEA
-----------------------

`PyCharm <http://www.jetbrains.com/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 <http://plugins.intellij.net/plugin/?id=631/>`_.
`PyCharm <http://www.jetbrains.com/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 <http://plugins.intellij.net/plugin/?id=631/>`_.


Eclipse
Expand All @@ -95,24 +101,28 @@ The most popular Eclipse plugin for Python development is Aptana's

Komodo IDE
-----------
`Komodo IDE <http://www.activestate.com/komodo-ide>`_ is developed by ActiveState and is a commercial IDE for Windows, Mac
`Komodo IDE <http://www.activestate.com/komodo-ide>`_ is developed by
ActiveState and is a commercial IDE for Windows, Mac
and Linux.


Spyder
------

`Spyder <http://code.google.com/p/spyderlib/>`_ an IDE specifically geared toward working with scientific python libraries (namely `Scipy <http://www.scipy.org/>`_).
`Spyder <http://code.google.com/p/spyderlib/>`_ an IDE specifically geared
toward working with scientific python libraries (namely `Scipy <http://www.scipy.org/>`_).
Includes integration with pyflakes_, `pylint <http://www.logilab.org/857>`_,
and `rope <http://rope.sourceforge.net/>`_.

Spyder is open-source (free), offers code completion, syntax highlighting, class and function browser, and object inspection.
Spyder is open-source (free), offers code completion, syntax highlighting,
class and function browser, and object inspection.


WingIDE
-------

`WingIDE <http://wingware.com/>`_ a python specific IDE. Runs for Linux, Windows, and Mac (as an X11 application, which frustrates some Mac users).
`WingIDE <http://wingware.com/>`_ a python specific IDE. Runs for Linux,
Windows, and Mac (as an X11 application, which frustrates some Mac users).


Interpreter Tools
Expand All @@ -122,8 +132,10 @@ Interpreter Tools
virtualenv
----------

Virtualenv 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.
Virtualenv 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.

`virtualenv <http://www.virtualenv.org/en/latest/index.html>`_ creates
a folder which contains all the necessary executables to contain the
Expand Down Expand Up @@ -195,7 +207,8 @@ control by adding it to the ignore list.
virtualenvwrapper
-----------------

`Virtualenvwrapper <http://pypi.python.org/pypi/virtualenvwrapper>`_ makes virtualenv a pleasure to use by wrapping the command line API with a nicer CLI.
`Virtualenvwrapper <http://pypi.python.org/pypi/virtualenvwrapper>`_ makes
virtualenv a pleasure to use by wrapping the command line API with a nicer CLI.

::

Expand All @@ -208,7 +221,8 @@ Put this into your `~/.bash_profile` (Linux/Mac) file:

$ export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'

This will prevent your virtualenvs from relying on your (global) site packages directory, so that they are completely separate..
This will prevent your virtualenvs from relying on your (global) site packages
directory, so that they are completely separate..

Other Tools
:::::::::::
Expand All @@ -233,10 +247,12 @@ It provides following features:
IPython
-------

`IPython <http://ipython.org/>`_ provides a rich toolkit to help you make the most out of using Python interactively. Its main components are:
`IPython <http://ipython.org/>`_ provides a rich toolkit to help you make the
most out of using Python interactively. Its main components are:

* Powerful Python shells (terminal- and Qt-based).
* A web-based notebook with the same core features but support for rich media, text, code, mathematical expressions and inline plots.
* A web-based notebook with the same core features but support for rich media,
text, code, mathematical expressions and inline plots.
* Support for interactive data visualization and use of GUI toolkits.
* Flexible, embeddable interpreters to load into your own projects.
* Tools for high level and interactive parallel computing.
Expand All @@ -250,7 +266,8 @@ IPython
BPython
-------

`bpython <http://bpython-interpreter.org/>`_ is an alternative interface to the Python interpreter for Unix-like operating systems. It has the following features:
`bpython <http://bpython-interpreter.org/>`_ is an alternative interface to the
Python interpreter for Unix-like operating systems. It has the following features:

* In-line syntax highlighting.
* Readline-like autocomplete with suggestions displayed as you type.
Expand Down
7 changes: 5 additions & 2 deletions docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,11 @@ The Hitchhiker's Guide to Python!

Welcome to The Hitchhiker's Guide to Python. **DON'T PANIC!**

**This guide is currently under heavy development, and is mostly a skeleton at the moment.** If you'd like to help, `fork us on GitHub <https://github.com/kennethreitz/python-guide>`_!
**This guide is currently under heavy development, and is mostly a skeleton at
the moment.** If you'd like to help, `fork us on GitHub <https://github.com/kennethreitz/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.

.. include:: contents.rst.inc
29 changes: 20 additions & 9 deletions docs/intro/community.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,30 +4,35 @@ The Community
BDFL
----

Guido van Rossum, the creator of Python, is often referred to as the BDFL — the Benevolent Dictator For Life.
Guido van Rossum, the creator of Python, is often referred to as the BDFL — the
Benevolent Dictator For Life.



Python Software Foundation
--------------------------

The mission of the Python Software Foundation is to promote, protect, and advance the Python programming language, and to support and facilitate the growth of a diverse and international community of Python programmers.
The mission of the Python Software Foundation is to promote, protect, and
advance the Python programming language, and to support and facilitate the
growth of a diverse and international community of Python programmers.

`Learn More about the PSF <http://www.python.org/psf/>`_.


PEPs
----

PEPs are *Python Enhancement Proposals*. They describe changes to Python itself, or the standards around it.
PEPs are *Python Enhancement Proposals*. They describe changes to Python itself,
or the standards around it.

There are three different types of PEPs (as defined by `PEP1 <http://www.python.org/dev/peps/pep-0001/>`_):

**Standards**
Describes a new feature or implementation.

**Informational**
Describes a design issue, general guidelines, or information to the community.
Describes a design issue, general guidelines, or information to the
community.

**Process**
Describes a process related to Python.
Expand All @@ -45,29 +50,35 @@ There are a few PEPs that could be considered required reading:
A list of 19 statements that briefly explain the philosophy behind Python.

- `PEP257 <http://www.python.org/dev/peps/pep-0257/>`_: Docstring Conventions.
Gives guidelines for semantics and conventions associated with Python docstrings.
Gives guidelines for semantics and conventions associated with Python
docstrings.

You can read more at `The PEP Index <http://www.python.org/dev/peps/>`_.

Submitting a PEP
~~~~~~~~~~~~~~~~

PEPs are peer-reviewed and accepted/rejected after much discussion. Anyone can write and submit a PEP for review.
PEPs are peer-reviewed and accepted/rejected after much discussion. Anyone
can write and submit a PEP for review.

Here's an overview of the PEP acceptance workflow:

.. image:: http://www.python.org/dev/peps/pep-0001/pep-0001-1.png


Python Conferences
Python Conferences
--------------------------

The major events for the Python community are developer conferences. The two most notable conferences are PyCon, which is held in the US, and its European sibling, EuroPython.
The major events for the Python community are developer conferences. The two
most notable conferences are PyCon, which is held in the US, and its European
sibling, EuroPython.

A comprehensive list of conferences is maintained `at pycon.org <http://www.pycon.org/>`_.


Python User Groups
--------------------------

User Groups are where a bunch of Python developers meet to present or talk about Python topics of interest. A list of local user groups is maintained at the `Python Software Foundation Wiki <http://wiki.python.org/moin/LocalUserGroups>`_.
User Groups are where a bunch of Python developers meet to present or talk
about Python topics of interest. A list of local user groups is maintained at
the `Python Software Foundation Wiki <http://wiki.python.org/moin/LocalUserGroups>`_.
3 changes: 2 additions & 1 deletion docs/intro/documentation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ The official Python Language and Library documentation can be found here:
Read the Docs
-------------

Read the Docs is a popular community project, providing a single location for all documentation of popular and even more exotic Python modules.
Read the Docs is a popular community project, providing a single location for
all documentation of popular and even more exotic Python modules.

`Read the Docs <http://readthedocs.org/>`_

Expand Down
53 changes: 31 additions & 22 deletions docs/intro/learning.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,62 +7,70 @@ Beginner
Learn Python Interactive Tutorial
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Learnpython.org is an easy non-intimidating way to get introduced to python. The website takes the same approach used on the popular `Try Ruby <http://tryruby.org/>`_ website, it has an interactive python interpreter built into the site that allows you to go through the lessons without having to install Python locally.
Learnpython.org is an easy non-intimidating way to get introduced to python.
The website takes the same approach used on the popular `Try Ruby <http://tryruby.org/>`_
website, it has an interactive python interpreter built into the site that
allows you to go through the lessons without having to install Python locally.

`Learn Python <http://www.learnpython.org/>`_

Learn Python the Hard Way
~~~~~~~~~~~~~~~~~~~~~~~~~

This is an excellent beginner programmer's guide to Python. It covers "hello world" from the console to the web.
This is an excellent beginner programmer's guide to Python. It covers "hello
world" from the console to the web.

`Learn Python the Hard Way <http://learnpythonthehardway.org/book/>`_


Crash into Python
~~~~~~~~~~~~~~~~~

Also known as *Python for Programmers with 3 Hours*, this guide gives experienced developers from other languages a crash course on Python.
Also known as *Python for Programmers with 3 Hours*, this guide gives
experienced developers from other languages a crash course on Python.

`Crash into Python <http://stephensugden.com/crash_into_python/>`_


Dive Into Python 3
~~~~~~~~~~~~~~~~~~

Dive Into Python 3 is a good book for those ready to jump in to Python 3. It's a
good read if you are moving from Python 2 to 3 or if you already have some
Dive Into Python 3 is a good book for those ready to jump in to Python 3. It's
a good read if you are moving from Python 2 to 3 or if you already have some
experience programming in another language.

`Dive Into Python 3 <http://diveintopython3.ep.io/>`_

Think Python: How to Think Like a Computer Scientist
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Think Python attempts to give an introduction to basic concepts in computer science through the
use of the python language. The focus was to create a book with plenty of exercises, minimal jargon and
a section in each chapter devoted to the subject of debugging.
Think Python attempts to give an introduction to basic concepts in computer
science through the use of the python language. The focus was to create a book
with plenty of exercises, minimal jargon and a section in each chapter devoted
to the subject of debugging.

While exploring the various features available in the python language the author weaves in various design
patterns and best practices.
While exploring the various features available in the python language the
author weaves in various design patterns and best practices.

The book also includes several case studies which have the reader explore the topics discussed in the book
in greater detail by applying those topics to real-world examples. Case studies include assignments in GUI
and Markov Analysis.
The book also includes several case studies which have the reader explore the
topics discussed in the book in greater detail by applying those topics to
real-world examples. Case studies include assignments in GUI and Markov
Analysis.

`Think Python <http://greenteapress.com/thinkpython/html/index.html>`_


Python Koans
Python Koans
~~~~~~~~~~~~

Python Koans is a port of Edgecase's Ruby Koans. It uses a test-driven approach, q.v. TEST DRIVEN DESIGN SECTION
to provide an interactive
tutorial teaching basic python concepts. By fixing assertion statements that fail in a test script, this
provides sequential steps to learning python.
Python Koans is a port of Edgecase's Ruby Koans. It uses a test-driven
approach, q.v. TEST DRIVEN DESIGN SECTION to provide an interactive tutorial
teaching basic python concepts. By fixing assertion statements that fail in a
test script, this provides sequential steps to learning python.

For those used to languages and figuring out puzzles on their own, this can be a fun, attractive option.
For those new to python and programming, having an additional resource or reference will be helpful.
For those used to languages and figuring out puzzles on their own, this can be
a fun, attractive option. For those new to python and programming, having an
additional resource or reference will be helpful.

`Python Koans <http://bitbucket.org/gregmalcolm/python_koans>`_

Expand Down Expand Up @@ -102,5 +110,6 @@ References
Python in a Nutshell
~~~~~~~~~~~~~~~~~~~~

Python in a Nutshell, written by Alex Martelli, covers most cross-platform python's usage,
from its syntax to built-in libraries to advanced topics such as writing C extensions.
Python in a Nutshell, written by Alex Martelli, covers most cross-platform
python's usage, from its syntax to built-in libraries to advanced topics such
as writing C extensions.
34 changes: 24 additions & 10 deletions docs/scenarios/ci.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,29 @@ Continuous Integration
Why?
----

Martin Fowler, who first wrote about `Continuous Integration <http://martinfowler.com/articles/continuousIntegration.html>`_ (short: CI) together with Kent Beck, describes the CI as follows:
Martin Fowler, who first wrote about `Continuous Integration <http://martinfowler.com/articles/continuousIntegration.html>`_
(short: CI) together with Kent Beck, describes the CI as follows:

Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly.
Continuous Integration is a software development practice where members of
a team integrate their work frequently, usually each person integrates at
least daily - leading to multiple integrations per day. Each integration is
verified by an automated build (including test) to detect integration errors
as quickly as possible. Many teams find that this approach leads to
significantly reduced integration problems and allows a team to develop
cohesive software more rapidly.

Jenkins
-------

`Jenkins CI <http://jenkins-ci.org>`_ is an extensible continuous integration engine. Use it.
`Jenkins CI <http://jenkins-ci.org>`_ is an extensible continuous integration
engine. Use it.



Buildbot
--------
`Buildbot <http://buildbot.net/buildbot/docs/current>`_ is a Python system to automate the compile/test cycle to validate code changes.
`Buildbot <http://buildbot.net/buildbot/docs/current>`_ is a Python system to
automate the compile/test cycle to validate code changes.


Mule?
Expand All @@ -29,12 +38,17 @@ Mule?
Tox
---

`tox <https://bitbucket.org/hpk42/tox>`_ is an automation tool providing packaging, testing and deployment of Python software right from the console or CI server.
It is a generic virtualenv management and test command line tool which provides the following features:

* Checking that packages install correctly with different Python versions and interpreters
* Running tests in each of the environments, configuring your test tool of choice
* Acting as a frontend to Continuous Integration servers, reducing boilerplate and merging CI and shell-based testing.
`tox <https://bitbucket.org/hpk42/tox>`_ is an automation tool providing
packaging, testing and deployment of Python software right from the console or
CI server. It is a generic virtualenv management and test command line tool
which provides the following features:

* Checking that packages install correctly with different Python versions and
interpreters
* Running tests in each of the environments, configuring your test tool of
choice
* Acting as a frontend to Continuous Integration servers, reducing boilerplate
and merging CI and shell-based testing.


Travis-CI
Expand Down
Loading