Navigation

index

modules |

next |

everyapp.bootstrap »

Table of Contents

everyapp.bootstrap

About

Features

Status

Documentation and Support

Contributing

Installing and Upgrading

Requirements

Dependencies

About Versioning

Installation

Installing With pip

Installing With easy_install

Installing From Archive

Installing From Mercurial

Upgrading

Upgrading With pip or easy_install

Upgrading From Archive

Upgrading From Mercurial

Final Steps

Usage

Basic Usage

Getting Started

New Directories

Next Steps

mkbootstrap

Synopsis

Description

Options

Examples

Files and Directories

Exit Status

bootstrap.py

Synopsis

Description

Options

Examples

Output

Files and Directories

Environment Variables

Exit Status

bootstrap.cfg

Description

Sections

Files and Directories

Frequently Asked Questions

Licence

Project Licence

Documentation Licence

Licensing of Generated Files

Contributions

Known Bugs

Related and Alternative Projects

Related Projects

Alternative Projects

Development

Development Overview

Cloning the Repository

Setting up a Development Environment

Generating the Documentation

Packaging a Release

To Do List

Documentation To Do List

API Documentation

everyapp (E)

E.bootstrap (E.B)

E.B.customize

Members

E.B.mkbootstrap

Members

Credits

Authors

Acknowledgements

Release Notes

Release 0.2.2

Release 0.2.1

Release 0.2

Release 0.1.5

Release 0.1.4

Release 0.1.3

Release 0.1.2

Release 0.1.1

Release 0.1

Appendix A: Full Licence Text

Appendix B: Default bootstrap.cfg

Glossary

Module Index

Index

© Copyright 2010-2012, Krys Lawrence. Last updated on 2012-02-22. Created using Sphinx 1.1.2.

Navigation

index

modules |

next |

previous |

everyapp.bootstrap »

everyapp.bootstrap

Author: | Krys Lawrence [http://krys.ca]
Version: | everyapp.bootstrap 0.2.2
Date: | 2012-02-22
Status: | 3 - Alpha
License: | GPLv3+ [http://www.gnu.org/licenses/gpl.html]

About

everyapp.bootstrap provides an enhanced and customizable virtualenv [http://pypi.python.org/pypi/virtualenv] bootstrap script. It aims to make it easy to bootstrap a virtual environment for your project.

This project includes a tool to generate a bootstrap script that will automatically create the virtual environment when run. By placing the bootstrap script in the root of your project’s source tree and making it available on a fresh checkout/clone from your version control repository, you make it easy for anyone who wants to hack on your project (including yourself!) to work in a consistent development environment.

Additionally, this enhanced bootstrap script can read a configuration file and perform additional actions beyond just creating a bare-bones virtual environment.

Features

Easy creation of a virtualenv [http://pypi.python.org/pypi/virtualenv] bootstrap script.

Better defaults for virtualenv [http://pypi.python.org/pypi/virtualenv], like using distribute [http://pypi.python.org/pypi/distribute] instead of setuptools [http://pypi.python.org/pypi/setuptools] and always unzipping EGGs.

Easy customization of the bootstrapping process.

Automatic installation of additional distributions using pip [http://pypi.python.org/pypi/pip] and/or easy_install [http://packages.python.org/distribute/easy_install.html].

Easy customization of pip [http://pypi.python.org/pypi/pip] and easy_install [http://packages.python.org/distribute/easy_install.html] behaviour during distribution installation.

Automatic execution of additional commands after the bootstrapping is complete.

Adherence to Semantic Versioning [http://semver.org/spec/v1.0.0.html] in order to be a well behaved dependency.

Status

This project is very young and the code should be considered Alpha quality. It has been minimally tested on Linux and Windows, under Python [http://python.org] 2.6 and 2.7, but has not yet been seriously tested on any platform.

That said, it is largely just a wrapper and a few customizations on the production-grade virtualenv [http://pypi.python.org/pypi/virtualenv] project[1], so it should be reasonably stable. It should also be mostly feature complete.

Documentation and Support

Home page:

http://pypi.python.org/pypi/everyapp.bootstrap

Downloads:

http://pypi.python.org/pypi/everyapp.bootstrap#downloads

Documentation:

See the Table of Contents, or online in the following formats: HTML [http://packages.python.org/everyapp.bootstrap], EPUB [http://packages.python.org/everyapp.bootstrap/_static/everyapp.bootstrap.epub], and PDF [http://packages.python.org/everyapp.bootstrap/_static/everyapp.bootstrap.pdf].

Bug/issue tracker:

http://bitbucket.org/everyapp/bootstrap/issues

Source code repository:

http://bitbucket.org/everyapp/bootstrap

Contributing

There is always room for improvement in this project and contributions are certainly welcome. The easiest way to contribute is simply to file a bug report in the issue tracker [http://bitbucket.org/everyapp/bootstrap/issues] whenever you find a problem or want to suggest an improvement.

If you would like to participate in a more substantial way, check out the issue tracker [http://bitbucket.org/everyapp/bootstrap/issues], the list of known bugs and the To Do list to find out about the work that still needs to be done.

Note

If you submit a bug report, patch or other code, you automatically agree to licence the contribution. See the licensing information for details on contribution licensing.

See also the developer documentation for more information on developing/hacking on everyapp.bootstrap.

Footnotes

[1] | Strictly speaking, virtualenv [http://pypi.python.org/pypi/virtualenv] classifies itself as Beta quality, but many consider it to be production-grade.

© Copyright 2010-2012, Krys Lawrence. Last updated on 2012-02-22. Created using Sphinx 1.1.2.

Navigation

index

modules |

next |

previous |

everyapp.bootstrap »

Installing and Upgrading

This chapter describes the requirements, dependencies and steps necessary to install or upgrade everyapp.bootstrap.

Requirements

everyapp.bootstrap requires the follow pre-requisites in order to function:

A POSIX (Linux, Mac OS X) or Windows system

Python ≥ 2.4, < 3.0, or maybe Python 2.3 and the sub-process module

Development systems have the following additional requirements:

Mercurial [http://pypi.python.org/pypi/Mercurial] to clone the source code repository

unix2dos [http://en.wikipedia.org/wiki/Unix2dos] on POSIX systems to ensure consistent line endings

Latex [http://www.latex-project.org/] for PDF documentation generation (optional)

Dependencies

everyapp.bootstrap only depends on distribute [http://pypi.python.org/pypi/distribute] and virtualenv [http://pypi.python.org/pypi/virtualenv]. They will be installed automatically.

About Versioning

This project adheres to the Semantic Versioning 1.0.0 [http://semver.org/spec/v1.0.0.html] specification. This means, among other things, that everyapp.bootstrap will be a well-behaved dependency and that increments in the version’s patch number (the third number in the version) should never break API compatibility.

See also

The Semantic Versioning 1.0.0 [http://semver.org/spec/v1.0.0.html] specification for more information.

Installation

Installing everyapp.bootstrap is easy, but there are a few ways to do it. Just follow the instructions in one of the sections below:

Installing With pip

To install using pip [http://pypi.python.org/pypi/pip], run:

pip install everyapp.bootstrap

Installing With easy_install

To install using easy_install [http://packages.python.org/distribute/easy_install.html] (i.e. from distribute [http://pypi.python.org/pypi/distribute] or setuptools [http://pypi.python.org/pypi/setuptools]), run:

easy_install everyapp.bootstrap

Installing From Archive

To install everyapp.bootstrap the old-fashioned way, download the tarball from everyapp.bootstrap on PyPI [http://pypi.python.org/pypi/everyapp.bootstrap#downloads] and then run:

tar -zxf everyapp.bootstrap-X.Y.Z.tar.gz
cd everyapp.bootstrap
python setup.py install

Note

On Windows you can extract the archive using an appropriate archive tool like 7-Zip [http://www.7-zip.org/], WinZip [http://www.winzip.com/], or a Windows version [http://gnuwin32.sourceforge.net/packages/gtar.htm] of the tar [http://en.wikipedia.org/wiki/Tar_(file_format)] utility.

Installing From Mercurial

To install the latest development version from the Mercurial [http://pypi.python.org/pypi/Mercurial] repository, run:

hg clone https://bitbucket.org/everyapp/bootstrap everyapp.bootstrap
cd everyapp.bootstrap
python setup.py install

See also

Development for additional information on developing/hacking on the development version.

Upgrading

Upgrading everyapp.bootstrap works very similarly to installing it. Here are some general instructions for performing the upgrade:

Upgrading With pip or easy_install

Upgrading works just like installing (see above), just add the -U option before the distribution name. E.g.:

pip install -U everyapp.bootstrap

or:

easy_install -U everyapp.bootstrap

Upgrading From Archive

Upgrading from the distribution archive works exactly like installing from the archive. Just download the archive of the newer version and follow the installation instruction above.

Upgrading From Mercurial

If you do not already have a clone of the Mercurial [http://pypi.python.org/pypi/Mercurial] repository, then just follow the installation instructions above to perform the upgrade.

If you do already have the repository cloned or kept the one from the original installation, then run the following commands instead:

cd everyapp.bootstrap
hg pull -u
python setup.py install

Final Steps

Note

Once you have finished the upgrade, do not forget to regenerate your bootstrap.py script in your project. See Usage for details.

Warning

The instructions above are the bare minimum necessary to perform an upgrade. Be sure to all review the changes in Release Notes for any additional adjustments you may need to perform.

© Copyright 2010-2012, Krys Lawrence. Last updated on 2012-02-22. Created using Sphinx 1.1.2.

Navigation

index

modules |

next |

previous |

everyapp.bootstrap »

Usage

This chapter describes how to use and configure everyapp.bootstrap. It starts with some basic usage instructions and then goes on to provide full details on each of the three main components.

Contents

Basic Usage

Getting Started

New Directories

Next Steps

mkbootstrap

Synopsis

Description

Options

Examples

Files and Directories

Exit Status

bootstrap.py

Synopsis

Description

Options

Examples

Output

Files and Directories

Environment Variables

Exit Status

bootstrap.cfg

Description

Sections

Files and Directories

© Copyright 2010-2012, Krys Lawrence. Last updated on 2012-02-22. Created using Sphinx 1.1.2.

Navigation

index

modules |

next |

previous |

everyapp.bootstrap »

Usage »

Basic Usage

This section provides some basic instructions on how to get started using everyapp.bootstrap. It also includes descriptions of some of the new sub-directories that you will find in your project as a result. Finally, some pointers on what to do next are provided.

Getting Started

everyapp.bootstrap consists of one main command-line utility, called mkbootstrap, that generates a bootstrap script and a configuration file. By default, the bootstrap script is named bootstrap.py and the configuration file is named bootstrap.cfg.

You use mkbootstrap both to generate your first bootstrap files and also to upgrade your bootstrap.py when you install newer versions of everyapp.bootstrap.

So, to get started, in your project’s root directory, run the command:

mkbootstrap

This will generate the bootstrap.py and bootstrap.cfg files.

You can then edit bootstrap.cfg as desired, though this is a completely optional step. The bootstrap.cfg file lets you customize the behaviour of bootstrap.py in several ways like:

Customizing the default values for bootstrap.py‘s command-line arguments,

Specifying additional Python [http://python.org] distributions (packages) to install using either pip [http://pypi.python.org/pypi/pip] or easy_install [http://packages.python.org/distribute/easy_install.html] or both.

Specifying additional commands to run after the virtual environment has been created and the distributions have been installed.

See also

bootstrap.cfg for information on editing the bootstrap.cfg file.

Once you have bootstrap.cfg set up the way you want, you are ready to bootstrap the virtualenv [http://pypi.python.org/pypi/virtualenv] environment for your project. To do that, run the command:

python bootstrap.py

This will create the virtual environment in the current directory (i.e. the root directory for your project).

Note

If you want to use a different version of Python [http://python.org] than the default one installed on your system, just run bootstrap.py using that interpreter. Your virtual environment will then use that version of Python [http://python.org] for everything automatically.

The final step is to activate the environment. This is something you should do every time you work on your project. To do it, run the command:

source ./bin/activate

... or, if you are on Windows, run:

Scripts\activate.bat

You are now ready to start hacking on your project using an isolated Python [http://python.org] interpreter and only the distributions installed locally in this virtual environment.

Note

You will probably want to commit bootstrap.py and bootstrap.cfg to your project’s version control system (VCS). That way you can easily generate a consistent development environment each time you clone/check out your project from it’s VCS.

When you activate your environment, your PATH environment variable is altered so that you will run your local version of Python [http://python.org] and related commands by default. Also, your shell or command line prompt is altered to remind you that you are in your activated virtual environment.

There is one additional command that is useful from time to time. If you want to deactivate your virtual environment and return to your normal shell or command line, run this command:

deactivate

See also

mkbootstrap, bootstrap.py and bootstrap.cfg for more specific details on each of the three files mentioned above.

See also

The virtualenv documentation [http://pypi.python.org/pypi/virtualenv] for more information on virtualenv [http://pypi.python.org/pypi/virtualenv] environments.

New Directories

Once you have bootstrapped your virtual environment, you will find several new sub-directories in your project’s root directory. They are briefly described below:

bin or Scripts

This directory contains the executable programs that are aware of your virtual environment. On Windows the directory is named Scripts, everywhere else it is named bin. In particular you will find the python interpreter, as well as the pip and easy_install commands in this directory.

lib/pythonX.Y or Lib

This (sub-)directory contains a copy of Python [http://python.org]‘s standard library, adapted to your virtual environment. You generally won’t touch these files. On Windows the directory is named Lib, everywhere else it is named lib/pythonX.Y, where X and Y are the version numbers of the Python [http://python.org] interpreter you are using.

lib/pythonX.Y/site-packages or Lib\site-packages

This sub-directory contains the virtual environment’s locally installed packages. You can easily install additional packages using pip [http://pypi.python.org/pypi/pip] or easy_install [http://packages.python.org/distribute/easy_install.html] when your virtual environment is activated. On Windows the sub-directory is named Lib\site-packages, everywhere else it is named lib/pythonX.Y/site-packages, where X and Y are the version numbers of the Python [http://python.org] interpreter you are using.

lib64

On 64-bit POSIX systems (everything except Windows), this symlink [http://en.wikipedia.org/wiki/Symbolic_link] is created. It points to the above-mentioned lib directory. This is for compatibility.

Note

Do not commit these directories to your VCS. In fact, you should probably mark them to be ignored. They will all get re-generated every time you run bootstrap.py.

Next Steps

Now that you have your project’s development environment set up, you are free continue developing your project as desired. Just make sure to remember these few points:

Always activate your virtual environment before working on your project.

Do not forget to update your bootstrap.cfg file whenever you install or upgrade a development package.

Remember that pacakges installed via bootstrap.cfg should only be development support packages. Packages that are actually dependencies of your project should be listed in your project’s setup.py file.

Happy hacking![1]

Footnotes

[1] | This expression is most famously used by Richard M. Stallman [http://en.wikipedia.org/wiki/Richard_Stallman].

© Copyright 2010-2012, Krys Lawrence. Last updated on 2012-02-22. Created using Sphinx 1.1.2.

Navigation

index

modules |

next |

previous |

everyapp.bootstrap »

Usage »

mkbootstrap

This section provides detailed usage information for the mkbootstrap command.

Synopsis

mkbootstrap [OPTIONS]

Description

mkbootstrap is the command-line utility that generates a virtualenv [http://pypi.python.org/pypi/virtualenv] bootstrap script and configuration file for a project. It is also used to upgrade the bootstrap script whenever newer versions of everyapp.bootstrap are installed.

Options

mkbootstrap accepts several command-line options that are described below. The basic options are the ones that are used most commonly. The advanced options are intended for special situations where more advanced customization is required.

Basic Options

The following are the most commonly used options of customizing the behaviour of mkbootstrap.

--version

This option tells mkbootstrap to just show program’s version and copyright information, and then exit.

-h, --help

This option tells mkbootstrap to just show program usage information and then exit. It lists all the options described here along with simple descriptions.

-s FILE_NAME, --script-name FILE_NAME

Use this option to give the generated bootstrap script a different name or location. The default is bootstrap.py.

Note

By default, the name of the generated configuration file will also change when this option is given. Use the -c option to override this behaviour.

-c FILE_NAME, --config-name FILE_NAME

Use this option to give the generated configuration file a different name or location. The default is the same as script name but with a .cfg extension.

Note

If you specify a custom location for the configuration file, you will need to always specify it when re-generating/upgrading the bootstrap script.

-e, --etc

Use this option to generate the configuration file in an etc sub-directory instead of in the current directory. This is useful if you want to keep all your project’s configuration files in a common place and not in the project’s root directory. etc is a common convention on POSIX systems.

Note

You can combine this option with the -c option to customize the configuration file name, but then you should not specify a custom location with that option.

-n, --no-customization

This option tells tells mkbootstrap to only generate a plain vanilla virtualenv [http://pypi.python.org/pypi/virtualenv] bootstrap script, without any customizations or configuration file. The generated bootstrap script is exactly the same as if everyapp.bootstrap had never even been installed.

This option makes it easy to use everyapp.bootstrap as simply a virtualenv [http://pypi.python.org/pypi/virtualenv] script generator without adding any extra fanciness. This is arguably a bit easier than creating your own bootstrap script generator as described in the virtualenv [http://pypi.python.org/pypi/virtualenv] documentation.

Note

If you use this option, then the available command-line options of the generated bootstrap script will only be the original ones and not include the customized ones provided by this package.

Advanced Options

The options listed here are meant for more advanced customization needs. They allow you to fully customize the generated bootstrap script and configuration file.

-S FILE_NAME, --customize-script FILE_NAME

Normally, mkbootstrap includes it’s own virtualenv [http://pypi.python.org/pypi/virtualenv] customization code in the generated bootstrap script to provide it’s additional functionality. You can use this option to have your own virtualenv [http://pypi.python.org/pypi/virtualenv] customization code included instead. Just put your customization code in a file and reference it with this option. This is arguably a bit easier than creating your own bootstrap script generator as described in the virtualenv [http://pypi.python.org/pypi/virtualenv] documentation.

Additionally, if you include the $DEFAULT_CONFIG_FILE_NAME$ token in your code, it will be automatically replaced with the name of the configuration file.

See also

The virtualenv documentation [http://pypi.python.org/pypi/virtualenv] on creating custom bootstrap scripts for more information on what to put into your customization file.

-C FILE_NAME, --default-config FILE_NAME

Normally, mkbootstrap generates the configuration file from a built-in template. You can use this option, however, to use your own default configuration file instead.

Note

A new configuration file will not be generated if an existing one is already found.

Examples

The simplest and most common usage is to just run it in your project’s root directory. For example:

cd /path/to/my/project/root
mkbootstrap

This will generate a virtualenv [http://pypi.python.org/pypi/virtualenv] bootstrap script called bootstrap.py and a configuration file called bootstrap.cfg in /path/to/my/project/root (i.e. the current directory).

Here are other examples:

mkboostrap -s bootdev.py

This will generate the files bootdev.py and bootdev.cfg in the current directory.

mkboostrap -c venv.cfg

This will generate the files bootstrap.py and venv.cfg in the current directory.

cd /path/to/my/project
mkbootstrap -e

This will generate the configuration file as /path/to/my/project/etc/bootstrap.cfg.

Files and Directories

bootstrap.py

The generated enhanced virtualenv [http://pypi.python.org/pypi/virtualenv] bootstrap script

bootstrap.cfg

The configuration file for bootstrap.py

Exit Status

0

Successful program execution

1

Operational error

2

Error parsing command-line options

© Copyright 2010-2012, Krys Lawrence. Last updated on 2012-02-22. Created using Sphinx 1.1.2.

Navigation

index

modules |

next |

previous |

everyapp.bootstrap »

Usage »

bootstrap.py

This section provides detailed usage information for the bootstrap.py command.

Synopsis

python bootstrap.py [OPTIONS]

Description

bootstrap.py is an enhanced virtualenv [http://pypi.python.org/pypi/virtualenv] bootstrap script generated by the mkbootstrap command. The script creates a virtualenv [http://pypi.python.org/pypi/virtualenv] environment, installs additional packages and runs additional commands, as configured, in order to set up a development environment for the project to which it belongs.

Additional packages can be installed using either pip [http://pypi.python.org/pypi/pip], easy_install [http://packages.python.org/distribute/easy_install.html] or both. The list of packages to install, any customized command-line option defaults and the list of additional post-install commands to run are all configured in a related configuration file, usually called bootstrap.cfg.

Options

bootstrap.py accepts several command-line options that are described below. Most of the options are the same as virtualenv [http://pypi.python.org/pypi/virtualenv] itself or a standard virtualenv [http://pypi.python.org/pypi/virtualenv] bootstrap script, but some have been replaced, modified or added to enhance behaviour.

Note

All the options below can also be set in bootstrap.cfg.

Standard virtualenv Options

The following options are unchanged from their normal virtualenv [http://pypi.python.org/pypi/virtualenv] behaviour.

--version

This option tells bootstrap.py to just show program’s version and then exit.

-h, --help

This option tells bootstrap.py to just show program usage information and then exit. It lists all the options described here along with simple descriptions.

-v, --verbose

Increase the verbosity of program output. This is the opposite of the -q option. The more times this option is repeated, the higher the verbosity level.

Note

The verbosity level is not currently passed on to pip [http://pypi.python.org/pypi/pip] or easy_install [http://packages.python.org/distribute/easy_install.html].

-q, --quiet

Decrease verbosity of the program output. This is the opposite of the -v option. The more times this option is repeated, the lower the verbosity level.

Note

The verbosity level is not currently passed on to pip [http://pypi.python.org/pypi/pip] or easy_install [http://packages.python.org/distribute/easy_install.html].

-p PYTHON_EXE, --python PYTHON_EXE

Use this options to specify the Python [http://python.org] interpreter to use, e.g., --python=python2.5 will use the python2.5 interpreter to create the new environment. The default is the interpreter used to run bootstrap.py.

--clear

Use this option to clear out the lib directory of any files from previous runs of bootstrap.py.

Note

According to the virtualenv [http://pypi.python.org/pypi/virtualenv] source code, this option does not clear out the bin or any other directories, however, despite what is implied by the message provided by in --help option.

--system-site-packages

By default virtualenv [http://pypi.python.org/pypi/virtualenv] configures the virtual environment to not include access to the system’s global site-packages directory. Use this option to reverse that choice and give access to the global site-packages directory to the virtual environment.

--relocatable

Use this option to make an EXISTING virtualenv [http://pypi.python.org/pypi/virtualenv] environment relocatable. This option fixes up scripts and makes all .pth files, making paths relative.

Note

Do not use this option the first time running bootstrap.py. Call bootstrap.py a second time with this option, to achieve the desired result.

Warning

The authors of everyapp.bootstrap have not tried using this option in the context of bootstrap.py. YMMV [http://en.wiktionary.org/wiki/your_mileage_may_vary].

--extra-search-dir SEARCH_DIRS

This options sets the directory in which to look for setuptools [http://pypi.python.org/pypi/setuptools]/distribute [http://pypi.python.org/pypi/distribute]/pip [http://pypi.python.org/pypi/pip] distributions. You can add any number of additional --extra-search-dir paths. By default the latest distributions are downloaded from PyPI [http://pypi.python.org/pypi/].

--never-download

Force virtualenv [http://pypi.python.org/pypi/virtualenv] to never download anything from the network. Instead, it will fail if local distributions of setuptools [http://pypi.python.org/pypi/setuptools]/distribute [http://pypi.python.org/pypi/distribute]/pip [http://pypi.python.org/pypi/pip] are not present. You can combine this option with the --extra-search-dir to set the location of the local distributions to install.

--prompt PROMPT

Use this option to give an alternative prompt prefix for tghe virtual environment.

Customized Options

The following options have been added or customized by everyapp.bootstrap to replace some virtualenv [http://pypi.python.org/pypi/virtualenv] options and add additional functionality.

--setuptools

This is the opposite of the virtualenv [http://pypi.python.org/pypi/virtualenv] --distribute option. By default bootstrap.py enables the --distribute option, which tells virtualenv [http://pypi.python.org/pypi/virtualenv] to install distribute [http://pypi.python.org/pypi/distribute] instead of setuptools [http://pypi.python.org/pypi/setuptools] in the virtual environment. Use this option to reverse that choice so that setuptools [http://pypi.python.org/pypi/setuptools] is installed instead.

--zip-setuptools

This is the opposite of the virtualenv [http://pypi.python.org/pypi/virtualenv] --unzip-setuptools option. By default bootstrap.py enables the --unzip-setuptools option, which tells virtualenv [http://pypi.python.org/pypi/virtualenv] to unzip the distribute [http://pypi.python.org/pypi/distribute] or setuptools [http://pypi.python.org/pypi/setuptools] EGG [http://peak.telecommunity.com/DevCenter/PythonEggs] in site-packages instead of leaving it as a compressed EGG [http://peak.telecommunity.com/DevCenter/PythonEggs] file. Use this option to reverse that choice so that distribute [http://pypi.python.org/pypi/distribute] or setuptools [http://pypi.python.org/pypi/setuptools] is left compressed.

--pip-install-options OPTIONS

bootstrap.py can be configured to install additional packages using pip [http://pypi.python.org/pypi/pip]. Use this option to set additional command line options for the pip install command. (Default is "".) Set this to the string of options just as you would give on the command-line.

--easy_install-options OPTIONS

bootstrap.py can be configured to install additional packages using easy_install [http://packages.python.org/distribute/easy_install.html]. Use this option to set additional command line options for the easy_install command. (Default is "-Z", which tells easy_install [http://packages.python.org/distribute/easy_install.html] to always unzip EGG [http://peak.telecommunity.com/DevCenter/PythonEggs] files.) Set this to the string of options just as you would give on the command-line.

Examples

The simplest and most common usage is to just run bootstrap.py after a fresh checkout/clone of a project, in it’s root directory. For example:

cd /path/to/project/root
python bootstrap.py

This will create the virtualenv [http://pypi.python.org/pypi/virtualenv] environment in the project root (i.e. the current directory), install additional packages and run additional commands, as configured, necessary to set up the development environment for the project.

Output

Running bootstrap.py will result in output in several phases. They are:

Indication that a configuration file was found.

The normal output from virtualenv [http://pypi.python.org/pypi/virtualenv] creating the virtual environment.

A list of the packages that will be installed using pip [http://pypi.python.org/pypi/pip].

The normal output of pip [http://pypi.python.org/pypi/pip] installing the packages.

A list of the packages that will be installed using easy_install [http://packages.python.org/distribute/easy_install.html].

The normal output of easy_install [http://packages.python.org/distribute/easy_install.html] installing the packages.

Indication that post-setup commands will be run.

The normal output from running all the commands in sequence.

Files and Directories

bootstrap.cfg

The configuration file for bootstrap.py

bin or Scripts

The directory created by virtualenv [http://pypi.python.org/pypi/virtualenv] for commands and executables.

lib/pythonX.Y or lib

The directory created by virtualenv [http://pypi.python.org/pypi/virtualenv] for Python [http://python.org]‘s standard library.

lib/pythonX.Y/site-packages or Lib\site-packages

The directory created by virtualenv [http://pypi.python.org/pypi/virtualenv] for the virtual environment’s local packages.

lib64

A symlink [http://en.wikipedia.org/wiki/Symbolic_link] created by virtualenv [http://pypi.python.org/pypi/virtualenv] on 64-bit POSIX systems that points to the above-mentioned lib directory.

Environment Variables

Since bootstrap.py is basically a customized version of virtualenv [http://pypi.python.org/pypi/virtualenv], it uses all the same environment variables that are used by virtualenv [http://pypi.python.org/pypi/virtualenv].

See also

The virtualenv documentation [http://pypi.python.org/pypi/virtualenv] for details.

Exit Status

0

Successful program execution

1

Operational error

2

Error parsing command-line options

3

Attempt to run virtualenv [http://pypi.python.org/pypi/virtualenv] in an (obsolete) workingenv environment, or

Using a home directory that contains a space on Windows and not having pywin32 [http://pypi.python.org/pypi/pywin32] installed, or

The Python [http://python.org] executable specified with --python does not exist

100

Error running Python [http://python.org] interpreter due to it’s sys.prefix value not being what is expected

101

Attempt to run under a Python [http://python.org] version less than 2.3

200

Error parsing the configuration file

Note

Other exit codes are possible as they can come from sub-processes like installing distribute [http://pypi.python.org/pypi/distribute], etc.

© Copyright 2010-2012, Krys Lawrence. Last updated on 2012-02-22. Created using Sphinx 1.1.2.

Navigation

index

modules |

next |

previous |

everyapp.bootstrap »

Usage »

bootstrap.cfg

This section provides detailed usage information for the bootstrap.cfg configuration file.

Description

bootstrap.cfg is the configuration file used by the bootstrap.py script to customize it’s behaviour when creating a virtualenv [http://pypi.python.org/pypi/virtualenv] environment for a project. A default bootstrap.cfg is generated, along with the bootstrap.py script, by the mkbootstrap command.

bootstrap.cfg allows one to do the following:

Customize the default values of the command-line arguments to bootstrap.py,

List additional Python [http://python.org] distributions to be installed using pip [http://pypi.python.org/pypi/pip] and/or easy_install [http://packages.python.org/distribute/easy_install.html], and

List additional commands to execute once everything else has been set up.

The bootstrap.cfg file is an ASCII text file, similar in format to INI [http://en.wikipedia.org/wiki/INI_file] files in that it is separated into sections in the form of [section_name]. Each section, however, can require a different line format and is not necessarily restricted to a set of key=value pairs.

The full default generated bootstrap.cfg text can be read in Appendix B: Default bootstrap.cfg.

Sections

Each section of the configuration file is described separately below:

[options]

In this section, one can override the default values of the command-line options that bootstrap.py accepts. The accepted options and their default values are listed below.

The format for this section is key = value pairs, one pair per line.

verbose = 0

This option corresponds to the --verbose command-line argument. A higher values means more detailed output.

quiet = 0

This option corresponds to the --quiet command-line argument. A higher value means less detailed output.

python =

This option corresponds to the --python command-line argument.

clear = False

This option corresponds to the --clear command-line argument. Set to it True to enable the option.

prompt =

This option corresponds to the --prompt command-line argument.

system_site_packages = False

This option corresponds to the --system-site-packages command-line argument. Set it to True to enable the option.

use_setuptools = False

This option corresponds to the --setuptools command-line argument. Set it to True to enable the option.

zip_setuptools = False

This option corresponds to the --zip-setuptools command-line argument. Set it to True to enable the option.

pip_install_options =

This option corresponds to the --pip-install-options command-line argument.

easy_install_options = -Z

This option corresponds to the --easy_install-options command-line argument.

See also

The bootstrap.py script documentation for more information on the specific purpose of each option.

Note

Hyphens (-) in option names on the command-line are replaced with underscores (_) internally. Use underscores in bootstrap.cfg as well.

[pip]

In this section, one can list any additional Python [http://python.org] distributions to install automatically in the virtual environment using pip [http://pypi.python.org/pypi/pip]. These would normally only be the distributions needed for development support, not the dependencies of the project itself (which would go in setup.py).

The format for this section is one distribution per line, each specified either in PEP 314 [http://www.python.org/dev/peps/pep-0314]/PEP 345 [http://www.python.org/dev/peps/pep-0345] format using parentheses or in pip [http://pypi.python.org/pypi/pip]-compatible format without parentheses. For example:

pep8 (>=0.5,!=0.5.2,<0.6)

or:

pep8>=0.5,!=0.5.2,<0.6

Note

Not all distributions are compatible with pip [http://pypi.python.org/pypi/pip]. Use the [easy_install] section below for those that are not (or use it for all distributions).

[easy_install]

In this section, like in the [pip] section above, one can list any additional Python [http://python.org] distributions to install automatically in the virtual environment. However, distribution listed in this section will be installed using easy_install [http://packages.python.org/distribute/easy_install.html]. Similarly, these would normally only be the distributions needed for development support.

The format for this section is the same as that of the [pip] section above.

[commands]

This section lets one automatically execute additional commands after the virtual environment has been created and all the specified distributions have been installed.

The format for this section is one command (with any arguments) per line.

Note

One can use the $bin$ token to indicate the virtual environment’s bin/ directory, which can have a different name on some platforms (e.g. Scripts\ on Windows). The trailing slash is also included.

For example:

$bin$python setup.py develop

Files and Directories

bootstrap.cfg

The default location and name for the configuration file for bootstrap.py, relative to the project’s root directory.

etc/bootstrap.cfg

A common alternative location and name for the configuration file for bootstrap.py, relative to the project’s root directory.

© Copyright 2010-2012, Krys Lawrence. Last updated on 2012-02-22. Created using Sphinx 1.1.2.

Navigation

index

modules |

next |

previous |

everyapp.bootstrap »

Frequently Asked Questions

This chapter lists common questions that are important or have been asked repeatedly, along with their answers.

(None yet.)

© Copyright 2010-2012, Krys Lawrence. Last updated on 2012-02-22. Created using Sphinx 1.1.2.

Navigation

index

modules |

next |

previous |

everyapp.bootstrap »

Licence

This chapter describes the licensing terms for everyapp.bootstrap and it’s constituent parts. It also provides details on the licence to which contributors automatically agree when contributing copyrightable material to this project.

Project Licence

everyapp.bootstrap is licensed under the GNU General Public License version 3 [http://www.gnu.org/licenses/gpl.html] or later (GPLv3+ [http://www.gnu.org/licenses/gpl.html]). This is free software: you are free to change and redistribute it under certain conditions. There is NO WARRANTY, to the extent permitted by law. For the full licence text, see Appendix A: Full Licence Text.

Documentation Licence

The documentation source files (those documentation files included in the version control system and/or in the source distribution for this project are considered source code just like the program source code. They are, therefore, also licenced under the GPLv3+ [http://www.gnu.org/licenses/gpl.html] just like the rest of the project.

Additionally, all generated forms of everyapp.bootstrap‘s documentation, such as, but not limited to, HTML, EPUB [http://en.wikipedia.org/wiki/EPUB], latex, PDF, man pages [http://en.wikipedia.org/wiki/Man_page], etc. are also licenced under the GPLv3+ [http://www.gnu.org/licenses/gpl.html], just like the rest of the project.

Licensing of Generated Files

By default, the generated bootstrap script (typically named bootstrap.py) contains code from this project as well as code from the virtualenv [http://pypi.python.org/pypi/virtualenv] project. When this is the case, it is therefore also licensed under the GPLv3+ [http://www.gnu.org/licenses/gpl.html] as a derivative work. Further, if a project includes this file, but does not depend on it in order to function normally, then the inclusion is considered mere aggregation and does not make the project a derivative work of everyapp.bootstrap.

All copyrights and moral rights on the the bootstrap configuration file that is generated by this distribution (bootstrap.cfg, by default) are explicitly disclaimed. It is in the public domain as it is intended to be copied and modified by anyone using this distribution.

Contributions

By submitting a patch, bug report or any other copyrightable material to this project, you automatically agree to license the contribution under the Apache Software License, v. 2.0 [http://www.apache.org/licenses/LICENSE-2.0.html], and further agree that it may be re-licensed as necessary for inclusion in everyapp.bootstrap or other downstream projects.

© Copyright 2010-2012, Krys Lawrence. Last updated on 2012-02-22. Created using Sphinx 1.1.2.

Navigation

index

modules |

next |

previous |

everyapp.bootstrap »

Known Bugs

Below is a list of known general bugs. There may also be additional bugs listed in the issue tracker [http://bitbucket.org/everyapp/bootstrap/issues].

Commands and/or paths in bootstrap.cfg that contain spaces, even if quoted, could cause bootstrap.py to blow up. This needs to be tested/fixed for both Linux and Windows.

Python [http://python.org] 3.x is not yet supported.

© Copyright 2010-2012, Krys Lawrence. Last updated on 2012-02-22. Created using Sphinx 1.1.2.

Navigation

index

modules |

next |

previous |

everyapp.bootstrap »

Related and Alternative Projects

This chapter describes other projects that are related in some way to everyapp.bootstrap. It also describes alternative projects that can provide similar functionality.

Related Projects

Below is a list of other projects that are related to everyapp.bootstrap. If you like this project, you may also find these others useful as well.

virtualenv:

virtualenv [http://pypi.python.org/pypi/virtualenv] “is a tool to create isolated Python [http://python.org] environments.”

everyapp.bootstrap is really just some customizations on top of it.

Paver:

Paver [http://pypi.python.org/pypi/Paver] “is a Python [http://python.org]-based build/distribution/deployment scripting tool along the lines of Make [http://www.gnu.org/software/make/] or Rake [http://rake.rubyforge.org/].”

It includes support for creating customized virtualenv [http://pypi.python.org/pypi/virtualenv] bootstrap scripts. In fact, everyapp.bootstrap‘s creator, Krys Lawrence, has used Paver [http://pypi.python.org/pypi/Paver] very successfully for years. Paver [http://pypi.python.org/pypi/Paver] is the inspiration for creating everyapp.bootstrap.

Alternative Projects

Below is a list of other projects that provide the same or similar functionality. If everyapp.bootstrap does not meet your needs, perhaps one of these other projects will.

virtualenv:

virtualenv [http://pypi.python.org/pypi/virtualenv] “is a tool to create isolated Python [http://python.org] environments.”

While everyapp.bootstrap uses virtualenv [http://pypi.python.org/pypi/virtualenv] to create virtual environment bootstrap scripts, you can use virtualenv [http://pypi.python.org/pypi/virtualenv] directly to create your customized bootstrap scripts. What everyapp.bootstrap adds are the enhanced features like configuration file support and installation of additional packages.

Paver:

Paver [http://pypi.python.org/pypi/Paver] “is a Python [http://python.org]-based build/distribution/deployment scripting tool along the lines of Make [http://www.gnu.org/software/make/] or Rake [http://rake.rubyforge.org/].”

It includes support for creating customized virtualenv [http://pypi.python.org/pypi/virtualenv] bootstrap scripts that can install additional packages and run additional commands. However, until recently [http://www.blueskyonmars.com/2010/11/11/paver-is-now-on-github-thanks-to-almad/] (2010-11-11) Paver [http://pypi.python.org/pypi/Paver] has been only minimally maintained and has not kept up with newer virtualenv [http://pypi.python.org/pypi/virtualenv] developments. Also, Paver [http://pypi.python.org/pypi/Paver] is less flexible than everyapp.bootstrap in it’s virtualenv [http://pypi.python.org/pypi/virtualenv] customizability and it’s virtualenv [http://pypi.python.org/pypi/virtualenv] support cannot be separated from the rest of the Paver [http://pypi.python.org/pypi/Paver] tool. It was for these reasons that everyapp.bootstrap was created. That said, Paver [http://pypi.python.org/pypi/Paver] is an excellent tool and the closest alternative in spirit to everyapp.bootstrap.

pyutilib.virtualenv:

pyutilib.virtualenv [http://pypi.python.org/pypi/pyutilib.virtualenv] “includes the vpy_create script, which is used to create virtualenv [http://pypi.python.org/pypi/virtualenv] bootstrap scripts that automate the installation of virtualenv [http://pypi.python.org/pypi/virtualenv] along with other Python [http://python.org] packages.”

Like everyapp.bootstrap, it includes support for a configuration file and installing additional packages. However, it also seems more complex. It seems to create several additional directories and seems to have a greater focus on Subversion [http://subversion.apache.org/] checkouts. everyapp.bootstrap seems to be a simpler, more direct customization of virtualenv [http://pypi.python.org/pypi/virtualenv].

envbuilder:

envbuilder [http://pypi.python.org/pypi/envbuilder] “is a system for automatically building virtualenvs [http://pypi.python.org/pypi/virtualenv] in Python [http://python.org]. To do this, it uses a .env config file to define parcels, which are individual pieces of software to be checked out and installed into the virtualenv [http://pypi.python.org/pypi/virtualenv].”

envbuilder [http://pypi.python.org/pypi/envbuilder] seems like it does similar things as everyapp.bootstrap, however, it is lacking in documentation and like pyutilib.virtualenv [http://pypi.python.org/pypi/pyutilib.virtualenv], seems to have a greater focus on Subversion [http://subversion.apache.org/] checkouts. Also, the concept of parcels and the format of it’s .env files are more complex than the more direct customizations to virtualenv [http://pypi.python.org/pypi/virtualenv] that everyapp.bootstrap provides.

virtualenvwrapper.project:

virtualenvwrapper.project [http://pypi.python.org/pypi/virtualenvwrapper.project] “is a plugin [sic] for virtualenvwrapper [http://pypi.python.org/pypi/virtualenvwrapper] to extend its project-management features. Where virtualenvwrapper [http://pypi.python.org/pypi/virtualenvwrapper] is for managing virtualenv [http://pypi.python.org/pypi/virtualenv] environments, project manages your development source directories.”

Through the use of it’s template system, you could use virtualenvwrapper.project [http://pypi.python.org/pypi/virtualenvwrapper.project] to build a customized development environment for a project. However, virtualenvwrapper [http://pypi.python.org/pypi/virtualenvwrapper] does not work on Windows and building/integrating a template into your project as a bootstrap script would likely be more complicated than using everyapp.bootstrap. everyapp.bootstrap is more focused on being part of your project in order to create reproducible development environments. virtualenvwrapper.project [http://pypi.python.org/pypi/virtualenvwrapper.project] seems to have a more external-to-your-project focus.

zc.buildout:

The zc.buildout [http://pypi.python.org/pypi/zc.buildout] “project provides support for creating applications, especially Python [http://python.org] applications. It provides tools for assembling applications from multiple parts, Python [http://python.org] or otherwise. An application may actually contain multiple programs, processes, and configuration settings.”

zc.buildout [http://pypi.python.org/pypi/zc.buildout] provides an alternative to virtualenv [http://pypi.python.org/pypi/virtualenv] for creating isolated Python [http://python.org] environments. Like everyapp.bootstrap it supports using a configuration file and installing additional packages. It can also do a lot more. On the other hand, it does not use virtualenv [http://pypi.python.org/pypi/virtualenv] and is more confusing to use. It is commonly used in automated deployment scenarios, whereas everyapp.bootstrap focuses more on reproducible development environments.

rjm.recipe.venv:

rjm.recipe.venv [http://pypi.python.org/pypi/rjm.recipe.venv] “is a simple zc.buildout [http://pypi.python.org/pypi/zc.buildout] recipe that will use the virtualenv [http://pypi.python.org/pypi/virtualenv] package to turn the buildout root into a sandboxed virtual python [http://python.org] environment. It is especially useful in conjunction with gp.recipe.pip [http://pypi.python.org/pypi/gp.recipe.pip], which can then be used to install python [http://python.org] packages into the virtualenv [http://pypi.python.org/pypi/virtualenv] that has been created.”

rjm.recipe.venv [http://pypi.python.org/pypi/rjm.recipe.venv], along with gp.recipe.pip [http://pypi.python.org/pypi/gp.recipe.pip] and zc.buildout [http://pypi.python.org/pypi/zc.buildout] could be used together to achieve much of the enhanced capabilities of everyapp.bootstrap. However, that is a much more complex setup and seems redundant once you are already using zc.buildout [http://pypi.python.org/pypi/zc.buildout]. Also, not all packages can be installed with pip [http://pypi.python.org/pypi/pip], especially on Windows, which is why everyapp.bootstrap includes support for easy_install [http://packages.python.org/distribute/easy_install.html].

BPT:

BPT [http://pypi.python.org/pypi/bpt/] “is a Python [http://python.org] library (bpt) and a command line application (box) to create and manage isolated enviroments [sic], or boxes. [...] BPT [http://pypi.python.org/pypi/bpt/] is similar in some ways to virtualenv [http://pypi.python.org/pypi/virtualenv], but it is not restricted to Python [http://python.org] packages, allowing to install [sic] virtually any Unix software.”

It seems like you could use BPT [http://pypi.python.org/pypi/bpt/] to create isolated Python environments, like virtualenv [http://pypi.python.org/pypi/virtualenv] does, along with the installation of additional packages and the running of additional commands. However, BPT [http://pypi.python.org/pypi/bpt/] does not use virtualenv [http://pypi.python.org/pypi/virtualenv] and does not include support for Windows. It also seems more complex because of it’s broader scope. everyapp.bootstrap is simpler and more focused on development environments for Python [http://python.org] projects.

© Copyright 2010-2012, Krys Lawrence. Last updated on 2012-02-22. Created using Sphinx 1.1.2.

Navigation

index

modules |

next |

previous |

everyapp.bootstrap »

Development

The information below might be useful to those that want to hack on the code or contribute in some way.

Development Overview

Cloning the Repository

Setting up a Development Environment

Generating the Documentation

Packaging a Release

To Do List

Documentation To Do List

© Copyright 2010-2012, Krys Lawrence. Last updated on 2012-02-22. Created using Sphinx 1.1.2.

Navigation

index

modules |

next |

previous |

everyapp.bootstrap »

Development »

Development Overview

Developing everyapp.bootstrap can be great fun. In order to keep things manageable, the source code is stored in a Mercurial [http://pypi.python.org/pypi/Mercurial] repository and a consistent development environment has been built (using everyapp.bootstrap, of course). Additionally, the documentation, in it’s various formats, is all generated from a single set of source files that are readable in plain text form as well.

In order to get started hacking, whether it be on the code or the documentation, you need to clone the repository and bootstrap the development environment. See below for details on how to do both. After that you are free to make your changes and submit patches as desired.

Happy hacking![1]

Cloning the Repository

everyapp.bootstrap‘s source code is stored in a Mercurial [http://pypi.python.org/pypi/Mercurial] repository on Bitbucket [http://bitbucket.org]. To check out the latest revision from the repository, run:

hg clone https://bitbucket.org/everyapp/bootstrap everyapp.bootstrap

Setting up a Development Environment

Once you have cloned the repository (see above), you need to bootstrap the development environment before you can start hacking on the code effectively. To do so, run these commands:

cd everyapp.bootstrap
python bootstrap.py
source bin/activate

On Windows, replace the last line above with:

Scripts\activate.bat

Or, to just install it directly, run:

cd everyapp.bootstrap
python setup.py install

Generating the Documentation

While the plain text version of the documentation provides most of the relevant information, the full documentation is best experienced in one of the generated formats. The following generated formats are currently supported:

HTML

PDF

EPUB [http://en.wikipedia.org/wiki/EPUB]

man [http://en.wikipedia.org/wiki/Man_page]

You can view the generated documentation online, or you can generate the above formats by following the instructions below.

Note

To generate the documentation, you must first set up the development environment (virtualenv [http://pypi.python.org/pypi/virtualenv] environment with all development dependencies already installed). The instructions and code assume that you are working from within one. See above for instructions on how to set one up.

Note

In addition to the tools automatically included in the development environment, you will also need to have Latex [http://www.latex-project.org/] installed in order to generate the PDF format. See the Sphinx documentation [http://sphinx.pocoo.org/builders.html#sphinx.builders.latex.LaTeXBuilder] for details. If you do not have Latex [http://www.latex-project.org/] installed, or do not want the PDF version, just omit the latexpdf option or command from the instructions below.

On POSIX systems (Linux, Mac, etc.), run the following commands:

cd  doc/source
make clean html epub latexpdf man

On Windows systems, run the following:

cd doc\source
make clean
make html
make epub
make latexpdf
make man

On all platforms the generated documentation will be in the doc/build directory.

Packaging a Release

This project occasionally produces release distributions. These are stable versions of the code with specific version numbers. Additionally, sometimes it is useful to produce development releases. The instructions below outline how to create release distributions.

To make a release:

Update the release date and add important changes in the doc/NEWS.txt file. Commit the changes.

Proof read and spell check all source code and documentation. Commit the changes.

Tag the release using the version number as the tag. e.g. v0.3.1.

Generate the change log with:

hg log --style changelog > doc/ChangeLog.txt

If running on a POSIX machine (Linux, Mac), fix the line endings with:

unix2dos doc/ChangeLog.txt

If this is an official release and not a development release, run:

python setup.py release sdist

Otherwise, run:

python setup.py sdist

Test the generated source distribution in the dist/ directory.

Upload to PyPI by running:

python setup.py [release] sdist register upload

Delete the generated doc/ChangeLog.txt file.

Generate the documentation by following Generating the Documentation.

Copy the PDF and EPUB [http://en.wikipedia.org/wiki/EPUB] version into the HTML version by running:

cd doc/build
cp latex/everyapp.bootstrap-<version>.pdf html/_static/everyapp.bootstrap.pdf
cp epub/everyapp.bootstrap-<version>.epub html/_static/everyapp.bootstrap.epub

Or on Windows, run:

cd doc\build
copy latex\everyapp.bootstrap-<version>.pdf html\_static\everyapp.bootstrap.pdf
copy epub\everyapp.bootstrap-<version>.epub html\_static\everyapp.bootstrap.epub

Upload the documentation by running:

python setup.py upload_docs

Increase version in setup.py for the next release. Make sure this is consistent with Semantic Versioning 1.0.0 [http://semver.org/spec/v1.0.0.html].

Add a new section to doc/NEWS.txt for the next release.

Commit the changes.

Remember to push all changesets to Bitbucket.

Update your development environment by running:

python setup.py develop

Footnotes

[1] | This expression is most famously used by Richard M. Stallman [http://en.wikipedia.org/wiki/Richard_Stallman].

© Copyright 2010-2012, Krys Lawrence. Last updated on 2012-02-22. Created using Sphinx 1.1.2.

Navigation

index

modules |

next |

previous |

everyapp.bootstrap »

Development »

To Do List

Below are some of the tasks that still need to be completed. This is in addition to any bugs listed in Known Bugs and/or in the issue tracker [http://bitbucket.org/everyapp/bootstrap/issues].

Change customize.py so that it emits a warning if no config file is found, rather than saying it has found one. The presence of a config file is the normal/expected case.

Add advanced options to output the generated files to stdout instead of generating files.

Add a no-config option that suppresses the generation of the config file in all cases.

Make customize.py pass on the output verbosity to pip and easy_install when appropriate.

Create a mailing list? librelist.org?

Add a link to a zipped archive of the HTML docs.

Add build scripts. (fabric?)

Add RPM spec file, DEB config and other extra packaging support.

See about supporting the singlehtml build in Sphinx (remove unwanted artifacts).

See about generating an HTML Help project and file on Windows.

Write an extension that auto-generates autodoc module synopses from module docstrings.

Write an extension that lets autodoc include classes, functions and data separately so that they can each have their own section headers instead of just “Members”.

Add terms to the glossary.

Write tests.

Add Python 3 support, maybe by using the virtualenv3 or virtualenv5 forks.

Find and document the way to install LaTeX on Windows in order to generate the PDF documentation on Windows.

Documentation To Do List

Below is a list of To Do items related to the proper documentation of everyapp.bootstrap.

Note

This list is generated automatically. If there are no items below, then the list is currently empty.

© Copyright 2010-2012, Krys Lawrence. Last updated on 2012-02-22. Created using Sphinx 1.1.2.

Navigation

index

modules |

next |

previous |

everyapp.bootstrap »

API Documentation

This section documents the Application Programming Interface for this project.

Note

For the sake of brevity, the common parent packages of everyapp and everyapp.bootstrap are sometimes shortened to E and E.B respectively.

everyapp (E)

E.bootstrap (E.B)

E.B.customize

Members

E.B.mkbootstrap

Members

© Copyright 2010-2012, Krys Lawrence. Last updated on 2012-02-22. Created using Sphinx 1.1.2.

Navigation

index

modules |

next |

previous |

everyapp.bootstrap »

API Documentation »

everyapp (E)

Namespace package for all packages in the everyapp collection.

© Copyright 2010-2012, Krys Lawrence. Last updated on 2012-02-22. Created using Sphinx 1.1.2.

Navigation

index

modules |

next |

previous |

everyapp.bootstrap »

API Documentation »

E.bootstrap (E.B)

Provides enhanced virtualenv [http://pypi.python.org/pypi/virtualenv] environment creation facilities.

© Copyright 2010-2012, Krys Lawrence. Last updated on 2012-02-22. Created using Sphinx 1.1.2.

Navigation

index

modules |

next |

previous |

everyapp.bootstrap »

API Documentation »

E.B.customize

Customization code for virtualenv [http://pypi.python.org/pypi/virtualenv] bootstrap scripts.

This code is only useful when included in a virtualenv [http://pypi.python.org/pypi/virtualenv] bootstrap script. It uses virtualenv [http://pypi.python.org/pypi/virtualenv]‘s supported hooks to enhance and modify the script’s behaviour.

Members

everyapp.bootstrap.customize.extend_parser(parser)[source]

virtualenv [http://pypi.python.org/pypi/virtualenv] hook to extend the command-line parser.

This is also where the configuration file is read and overridden default option values are set.

Parameters: | parser (optparse.OptionParser [http://docs.python.org/library/optparse.html#optparse.OptionParser]) – The command-line parser to use.

See also

bootstrap.py for the full list of command-line options, including the new and modified ones.

See also

bootstrap.cfg for details on the configuration file and overriding default option values.

everyapp.bootstrap.customize.adjust_options(options, args)[source]

virtualenv [http://pypi.python.org/pypi/virtualenv] hook to adjust the parsed command-line options and args.

This function just sets the home directory to the current directory and maps some of the new command-line options to their original counterparts.

Parameters: | options (optparse [http://docs.python.org/library/optparse.html#optparse].Values) – The parsed command-line options. args (tuple [http://docs.python.org/library/functions.html#tuple]) – Any positional arguments from the command-line.

See also

bootstrap.py for the full list of command-line options, including the new and modified ones.

everyapp.bootstrap.customize.after_install(options, home_dir)[source]

virtualenv [http://pypi.python.org/pypi/virtualenv] hook for post-bootstrap customization.

This function is responsible for all the steps that take place after the virtual environment has been created. Specifically, this function installs all the distributions and runs all the commands specified in the configuration file.

Parameters: | options (optparse [http://docs.python.org/library/optparse.html#optparse].Values) – The parsed command-line options. home_dir (str [http://docs.python.org/library/functions.html#str]) – The home directory of the virtual environment. (This is always set to '.').

See also

bootstrap.cfg for details on how to specify what distributions to install and what commands to run.

© Copyright 2010-2012, Krys Lawrence. Last updated on 2012-02-22. Created using Sphinx 1.1.2.

Navigation

index

modules |

next |

previous |

everyapp.bootstrap »

API Documentation »

E.B.mkbootstrap

Provides the mkbootstrap command.

Members

everyapp.bootstrap.mkbootstrap.main(args=None, program_name=None)[source]

Main program for the mkbootstrap command.

This function will generate the virtualenv [http://pypi.python.org/pypi/virtualenv] bootstrap script in the current directory, and optionally a default configuration file as well.

Parameters:

args (tuple [http://docs.python.org/library/functions.html#tuple] of str [http://docs.python.org/library/functions.html#str], or None [http://docs.python.org/library/constants.html#None]) – The command-line arguments to use. If it is None [http://docs.python.org/library/constants.html#None], then sys.args[1:] will be used.

program_name (str [http://docs.python.org/library/functions.html#str], or None [http://docs.python.org/library/constants.html#None]) – The name of the program as it appears on the command-line. If it is None [http://docs.python.org/library/constants.html#None], then sys.argv[0] is used.

See also

mkbootstrap for details on the accepted command-line arguments.

© Copyright 2010-2012, Krys Lawrence. Last updated on 2012-02-22. Created using Sphinx 1.1.2.

Navigation

index

modules |

next |

previous |

everyapp.bootstrap »

Credits

This chapter provides the list of the authors of everyapp.bootstrap, as well as a list of acknowledgements to the people and organizations that the author(s) would like to thank.

Contents

Authors

Acknowledgements

© Copyright 2010-2012, Krys Lawrence. Last updated on 2012-02-22. Created using Sphinx 1.1.2.

Navigation

index

modules |

next |

previous |

everyapp.bootstrap »

Credits »

Authors

The following people have contributed to the authoring of this program.

Krys Lawrence <everyapp at krys ca>

Original author, current maintainer and sole copyright holder

© Copyright 2010-2012, Krys Lawrence. Last updated on 2012-02-22. Created using Sphinx 1.1.2.

Navigation

index

modules |

next |

previous |

everyapp.bootstrap »

Credits »

Acknowledgements

I would like to express my sincerest thanks to the people and organizations below (in no particular order), without which this project would not be what it is.

—Krys Lawrence

Guido van Rossum <guido at python org>

Python

Ian Bicking <ianb at colorstudy com>

virtualenv

Tarek Ziadé <tarek at ziade org>

distribute

The fellowship of the packaging <distutils-sig at python org>

distribute

Phillip J. Eby <distutils-sig at python org>

setuptools

Georg Brandl <georg at python org>

Sphinx

David Goodger <goodger at python org>

docutils

Sridhar Ratnakumar <srid at nearfar org>

modern-package-template

Richard M. Stallman <rms at gnu org>

Free software, GNU/Linux, GPL

Wingware <http://wingware.com>

Free licence of WingIDE Professional

Van Lindberg <van.lindberg at haynesboone com>

Licensing terms for patches and bug reports

© Copyright 2010-2012, Krys Lawrence. Last updated on 2012-02-22. Created using Sphinx 1.1.2.

Navigation

index

modules |

next |

previous |

everyapp.bootstrap »

Release Notes

Below is the list of the important changes found in each release of everyapp.bootstrap.

Release 0.2.2

Release date: 2012-02-22

Fixed a Windows bug where the virtual environment’s pip was not being used to pip install dependencies.

Release 0.2.1

Release date: 2012-02-19

Fixed a couple bugs in the documentation. No code changes in this release.

Release 0.2

Release date: 2012-02-19

Upgraded dependencies to:

distribute [http://pypi.python.org/pypi/distribute] 0.6.24

virtualenv [http://pypi.python.org/pypi/virtualenv] 1.7.1.2

pip [http://pypi.python.org/pypi/pip] 1.1

Upgraded development dependencies to:

Pygments [http://pypi.python.org/pypi/Pygments] 1.4

Jinja2 [http://pypi.python.org/pypi/Jinja2] 2.6

docutils [http://pypi.python.org/pypi/docutils] 0.8.1

Sphinx [http://pypi.python.org/pypi/Sphinx] 1.1.2

Removed these development dependencies:

pep8 [http://pypi.python.org/pypi/pep8]

pyflakes [http://pypi.python.org/pypi/pyflakes]

Added these development dependencies:

flake8 [http://pypi.python.org/pypi/flake] 1.1

Removed now-redundant --global-site-packages from bootstrap.py. Use --system-site-packages instead.

Changed the bootstrap.cfg template:

everyapp.bootstrap 0.2 is now required.

Changed the pip [http://pypi.python.org/pypi/pip] install examples.

everyapp.bootstrap is now installed using pip [http://pypi.python.org/pypi/pip] instead of easy_install.

setup.py will no longer try to replace setuptools [http://pypi.python.org/pypi/setuptools] with distribute [http://pypi.python.org/pypi/distribute] and so installation using setuptools should now be possible.

Release 0.1.5

Release date: 2010-12-08

Fixed a bug with setup.py using the wrong README.txt.

Fixed a documentation bug.

Fixed a bug where the documentation was not being included in the source distribution.

Release 0.1.4

Release date: 2010-12-08

Greatly added and expanded on the documentation.

PEP 314 [http://www.python.org/dev/peps/pep-0314]/PEP 345 [http://www.python.org/dev/peps/pep-0345] dependency listings can now accept an arbitrary amount of whitespace.

mkbootstrap -h now includes links to web resources.

Default bootstrap.cfg file now includes better help comments.

Fixed a bug where options in bootstrap.cfg with more than one equals sign (=) would cause bootstrap.py to crash.

Release 0.1.3

Release date: 2010-09-20

Upgraded to virtualenv [http://pypi.python.org/pypi/virtualenv] 1.5.1 and removed patch for virtualenv [http://pypi.python.org/pypi/virtualenv]‘s bug #60 [https://github.com/pypa/virtualenv/issues/60].

Release 0.1.2

Release date: 2010-09-18

Documentation improvements and a small change to mkbootstrap‘s help message.

Added # prompt = to the [options] section of the default bootstrap.cfg in order to indicate support for virtualenv [http://pypi.python.org/pypi/virtualenv] 1.5’s new --prompt option.

Minimal testing on Linux and Windows under Python [http://python.org/] 2.6 and 2.7.

Added an automatic patch for virtualenv [http://pypi.python.org/pypi/virtualenv]‘s bug #60 [https://github.com/pypa/virtualenv/issues/60]. This makes bootstrapping work properly under Windows.

Release 0.1.1

Release date: 2010-09-17

Upgraded virtualenv [http://pypi.python.org/pypi/virtualenv] dependency to 1.5.

Fixed an issue with the wrong version of distribute causing the bootstrapping of new projects to fail.

Release 0.1

Release date: 2010-09-17

Initial Release.

© Copyright 2010-2012, Krys Lawrence. Last updated on 2012-02-22. Created using Sphinx 1.1.2.

Navigation

index

modules |

next |

previous |

everyapp.bootstrap »

Appendix A: Full Licence Text

Below is the full text of the copyright licence for this project, it’s source code and it’s documentation.

                    GNU GENERAL PUBLIC LICENSE
                       Version 3, 29 June 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The GNU General Public License is a free, copyleft license for
software and other kinds of works.

  The licenses for most software and other practical works are designed
to take away your freedom to share and change the works.  By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.  We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors.  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.

  To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights.  Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received.  You must make sure that they, too, receive
or can get the source code.  And you must show them these terms so they
know their rights.

  Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.

  For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software.  For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.

  Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so.  This is fundamentally incompatible with the aim of
protecting users' freedom to change the software.  The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable.  Therefore, we
have designed this version of the GPL to prohibit the practice for those
products.  If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.

  Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary.  To prevent this, the GPL assures that
patents cannot be used to render the program non-free.

  The precise terms and conditions for copying, distribution and
modification follow.

                       TERMS AND CONDITIONS

  0. Definitions.

  "This License" refers to version 3 of the GNU General Public License.

  "Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.

  "The Program" refers to any copyrightable work licensed under this
License.  Each licensee is addressed as "you".  "Licensees" and
"recipients" may be individuals or organizations.

  To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy.  The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.

  A "covered work" means either the unmodified Program or a work based
on the Program.

  To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy.  Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.

  To "convey" a work means any kind of propagation that enables other
parties to make or receive copies.  Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.

  An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License.  If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.

  1. Source Code.

  The "source code" for a work means the preferred form of the work
for making modifications to it.  "Object code" means any non-source
form of a work.

  A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.

  The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form.  A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.

  The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities.  However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work.  For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.

  The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.

  The Corresponding Source for a work in source code form is that
same work.

  2. Basic Permissions.

  All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met.  This License explicitly affirms your unlimited
permission to run the unmodified Program.  The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work.  This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.

  You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force.  You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright.  Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.

  Conveying under any other circumstances is permitted solely under
the conditions stated below.  Sublicensing is not allowed; section 10
makes it unnecessary.

  3. Protecting Users' Legal Rights From Anti-Circumvention Law.

  No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.

  When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.

  4. Conveying Verbatim Copies.

  You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.

  You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.

  5. Conveying Modified Source Versions.

  You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:

    a) The work must carry prominent notices stating that you modified
    it, and giving a relevant date.

    b) The work must carry prominent notices stating that it is
    released under this License and any conditions added under section
    7.  This requirement modifies the requirement in section 4 to
    "keep intact all notices".

    c) You must license the entire work, as a whole, under this
    License to anyone who comes into possession of a copy.  This
    License will therefore apply, along with any applicable section 7
    additional terms, to the whole of the work, and all its parts,
    regardless of how they are packaged.  This License gives no
    permission to license the work in any other way, but it does not
    invalidate such permission if you have separately received it.

    d) If the work has interactive user interfaces, each must display
    Appropriate Legal Notices; however, if the Program has interactive
    interfaces that do not display Appropriate Legal Notices, your
    work need not make them do so.

  A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit.  Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.

  6. Conveying Non-Source Forms.

  You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:

    a) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by the
    Corresponding Source fixed on a durable physical medium
    customarily used for software interchange.

    b) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by a
    written offer, valid for at least three years and valid for as
    long as you offer spare parts or customer support for that product
    model, to give anyone who possesses the object code either (1) a
    copy of the Corresponding Source for all the software in the
    product that is covered by this License, on a durable physical
    medium customarily used for software interchange, for a price no
    more than your reasonable cost of physically performing this
    conveying of source, or (2) access to copy the
    Corresponding Source from a network server at no charge.

    c) Convey individual copies of the object code with a copy of the
    written offer to provide the Corresponding Source.  This
    alternative is allowed only occasionally and noncommercially, and
    only if you received the object code with such an offer, in accord
    with subsection 6b.

    d) Convey the object code by offering access from a designated
    place (gratis or for a charge), and offer equivalent access to the
    Corresponding Source in the same way through the same place at no
    further charge.  You need not require recipients to copy the
    Corresponding Source along with the object code.  If the place to
    copy the object code is a network server, the Corresponding Source
    may be on a different server (operated by you or a third party)
    that supports equivalent copying facilities, provided you maintain
    clear directions next to the object code saying where to find the
    Corresponding Source.  Regardless of what server hosts the
    Corresponding Source, you remain obligated to ensure that it is
    available for as long as needed to satisfy these requirements.

    e) Convey the object code using peer-to-peer transmission, provided
    you inform other peers where the object code and Corresponding
    Source of the work are being offered to the general public at no
    charge under subsection 6d.

  A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.

  A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling.  In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage.  For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product.  A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.

  "Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source.  The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.

  If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information.  But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).

  The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed.  Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.

  Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.

  7. Additional Terms.

  "Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law.  If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.

  When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it.  (Additional permissions may be written to require their own
removal in certain cases when you modify the work.)  You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.

  Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:

    a) Disclaiming warranty or limiting liability differently from the
    terms of sections 15 and 16 of this License; or

    b) Requiring preservation of specified reasonable legal notices or
    author attributions in that material or in the Appropriate Legal
    Notices displayed by works containing it; or

    c) Prohibiting misrepresentation of the origin of that material, or
    requiring that modified versions of such material be marked in
    reasonable ways as different from the original version; or

    d) Limiting the use for publicity purposes of names of licensors or
    authors of the material; or

    e) Declining to grant rights under trademark law for use of some
    trade names, trademarks, or service marks; or

    f) Requiring indemnification of licensors and authors of that
    material by anyone who conveys the material (or modified versions of
    it) with contractual assumptions of liability to the recipient, for
    any liability that these contractual assumptions directly impose on
    those licensors and authors.

  All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10.  If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term.  If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.

  If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.

  Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.

  8. Termination.

  You may not propagate or modify a covered work except as expressly
provided under this License.  Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).

  However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.

  Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.

  Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License.  If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.

  9. Acceptance Not Required for Having Copies.

  You are not required to accept this License in order to receive or
run a copy of the Program.  Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance.  However,
nothing other than this License grants you permission to propagate or
modify any covered work.  These actions infringe copyright if you do
not accept this License.  Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.

  10. Automatic Licensing of Downstream Recipients.

  Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License.  You are not responsible
for enforcing compliance by third parties with this License.

  An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations.  If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.

  You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License.  For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.

  11. Patents.

  A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based.  The
work thus licensed is called the contributor's "contributor version".

  A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version.  For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.

  Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.

  In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement).  To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.

  If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients.  "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.

  If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.

  A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License.  You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.

  Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.

  12. No Surrender of Others' Freedom.

  If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all.  For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.

  13. Use with the GNU Affero General Public License.

  Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work.  The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.

  14. Revised Versions of this License.

  The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

  Each version is given a distinguishing version number.  If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation.  If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.

  If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.

  Later license versions may give you additional or different
permissions.  However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.

  15. Disclaimer of Warranty.

  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. Limitation of Liability.

  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.

  17. Interpretation of Sections 15 and 16.

  If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

Also add information on how to contact you by electronic and paper mail.

  If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:

    <program>  Copyright (C) <year>  <name of author>
    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".

  You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.

  The GNU General Public License does not permit incorporating your program
into proprietary programs.  If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.  But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.

© Copyright 2010-2012, Krys Lawrence. Last updated on 2012-02-22. Created using Sphinx 1.1.2.

Navigation

index

modules |

next |

previous |

everyapp.bootstrap »

Appendix B: Default bootstrap.cfg

Below is the default bootstrap.cfg file that is generated by mkbootstrap.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112

## This is the default bootstrap.cfg file for configuring your project's
## bootstrap.py script.  This file is completely optional, but usually useful.

[options]
## In this section, you can override the default values of the command-line
## options that bootstrap.py accepts.
##
## The format for this section is "key = value" pairs, one pair per line.
##
## The options here correspond to the command-line options accepted by
## bootstrap.py.  See it's documentation for more information on the specific
## purpose of each option.
##
## Note: Hyphens (-) in option names on the command-line are replaced with
## underscores (_) internally.  Use underscores in this file as well.

# Increase the default verbosity for the program output.  A higher values means
# more detailed output.  Use the "quiet" option below to reduce the verbosity.
#verbose = 0

# Decrease the default verbosity for the program output.  Higher values means
# less detailed output.  Use the "verbose" option above to increase the
# verbosity.
#quiet = 0

# Specify the path to the default Python interpreter to use in the virtualenv
# environment.  E.g. "python2.5".  By default the interpreter used to run
# bootstrap.py is the one used for the virtual environment.
#python =

# If set to True, the the "lib" directory will be erased every time
# bootstrap.py is run.
#
# Note: According to the virtualenv source code, this option does not clear out
# the "bin" or any other directories, despite what is implied by the message
# provided by in it's --help option.
#clear = False

# Specify an alternate prompt prefix to use when the virtual environment has
# been activated.  The default is the normal virtualenv behaviour.
#prompt =

# If set to True, the virtual environment will have access to the system's
# global "site-packages" directory.  Otherwise, the virtual environment will be
# completely isolated from the system's installed packages.
#system_site_packages = False

# If set to True, setuptools will be installed instead of distribute.
#use_setuptools = False

# If set to True, distribute or setuptools will not be automatically
# uncompressed and will be left in compressed EGG format.
#zip_setuptools = False

# Default options to pass to the "pip install" command when installing
# additional Python distributions using pip.
#pip_install_options =

# Default options to pass to the "easy_install" command when installing
# additional Python distributions using easy_install.
#easy_install_options = -Z

[pip]
## In this section, you can list any additional Python distributions to install
## automatically in the virtual environment using pip.  These would normally be
## the distributions needed for development, not the dependencies of the
## project itself (which would go in setup.py).
##
## The format for this section is one distribution per line, each specified
## either in PEP314/PEP345 format using parentheses or in pip-compatible format
## without parentheses.  For example:
##
##   pep8 (>=0.5,!=0.5.2,<0.6)
##
## or:
##
##   pep8>=0.5,!=0.5.2,<0.6
##
## Note: Not all distributions are compatible with pip.  Use the
## [easy_install] section below for those that are not (or use it for all
## distributions).

everyapp.bootstrap (>=0.2,<0.2.99)
#flake8
#clonedigger (>=1.0.11,<1.1)

[easy_install]
## In this section, you can list any additional Python distributions to install
## automatically in the virtual environment using easy_install.  These would
## normally be the distributions needed for development, not the dependencies
## of the project itself (which would go in setup.py).
##
## The format for this section is the same as the [pip] section above.

#ipython

[commands]
## This section lets you automatically execute additional commands after the
## virtual environment has been created and all the specified distributions
## have been installed.
##
## The format for this section is one command (with any arguments) per line.
##
## Note: You can use the $bin$ token to indicate the virtual environment's bin/
## directory, which can have a different name on some platforms (e.g. Scripts\
## on Windows).  The trailing slash is also included.

#$bin$python setup.py develop

© Copyright 2010-2012, Krys Lawrence. Last updated on 2012-02-22. Created using Sphinx 1.1.2.

Navigation

index

modules |

previous |

everyapp.bootstrap »

Glossary

This chapter provides a glossary of terms used in the everyapp.bootstrap documentation.

(None yet.)

© Copyright 2010-2012, Krys Lawrence. Last updated on 2012-02-22. Created using Sphinx 1.1.2.

Navigation

index

modules |

everyapp.bootstrap »

Python Module Index

b | c | e | m

| b |
| everyapp.bootstrap | Provides enhanced virtualenv environment creation facilities.
| c |
| everyapp.bootstrap.customize | Customization code for virtualenv bootstrap scripts.
| e |
| everyapp | Namespace package for all packages in the everyapp collection.
| m |
| everyapp.bootstrap.mkbootstrap | Provides the mkbootstrap command.

© Copyright 2010-2012, Krys Lawrence. Last updated on 2012-02-22. Created using Sphinx 1.1.2.

Navigation

index

modules |

everyapp.bootstrap »

Index

Symbols | A | B | C | D | E | F | G | H | I | K | L | M | N | O | P | Q | R | S | T | U | V

Symbols

--clear

bootstrap.py command line option

--easy_install-options OPTIONS

bootstrap.py command line option

--extra-search-dir SEARCH_DIRS

bootstrap.py command line option

--never-download

bootstrap.py command line option

--pip-install-options OPTIONS

bootstrap.py command line option

--prompt PROMPT

bootstrap.py command line option

--relocatable

bootstrap.py command line option

--setuptools

bootstrap.py command line option

--system-site-packages

bootstrap.py command line option

--version

bootstrap.py command line option

mkbootstrap command line option

--zip-setuptools

bootstrap.py command line option

-c FILE_NAME, --config-name FILE_NAME

mkbootstrap command line option

-C FILE_NAME, --default-config FILE_NAME

mkbootstrap command line option

-e, --etc

mkbootstrap command line option

-h, --help

bootstrap.py command line option

mkbootstrap command line option

-n, --no-customization

mkbootstrap command line option

-p PYTHON_EXE, --python PYTHON_EXE

bootstrap.py command line option

-q, --quiet

bootstrap.py command line option

-S FILE_NAME, --customize-script FILE_NAME

mkbootstrap command line option

-s FILE_NAME, --script-name FILE_NAME

mkbootstrap command line option

-v, --verbose

bootstrap.py command line option

A

about

acknowledgements

adjust_options() (in module everyapp.bootstrap.customize)

after_install() (in module everyapp.bootstrap.customize)

alternative projects

api documentation

everyapp

everyapp.bootstrap

everyapp.bootstrap.customize

everyapp.bootstrap.mkbootstrap

archive

installation

upgrading

authors

B

basic usage

directories

getting started

next steps

bootstrap.cfg

default contents

description

directories

files

sections

bootstrap.py

description

directories

environment variables

examples

exit status

files

options

output

synopsis

bootstrap.py command line option

--clear

--easy_install-options OPTIONS

--extra-search-dir SEARCH_DIRS

--never-download

--pip-install-options OPTIONS

--prompt PROMPT

--relocatable

--setuptools

--system-site-packages

--version

--zip-setuptools

-h, --help

-p PYTHON_EXE, --python PYTHON_EXE

-q, --quiet

-v, --verbose

bugs

C

clone repository

contributing

licensing

credits

acknowledgements

authors

thanks

D

default bootstrap.cfg

dependencies

description

bootstrap.cfg

bootstrap.py

mkbootstrap

development

clone repository

documentation to do list

environment

overview

to do list

directories

bootstrap.cfg

bootstrap.py

mkbootstrap

documentation

api

generating

licence

to do list

E

easy_install

installation

upgrading

environment

development

environment variables

bootstrap.py

everyapp (module)

everyapp.bootstrap

about

contributing

documentation

features

status

support

everyapp.bootstrap (module)

everyapp.bootstrap.customize (module)

everyapp.bootstrap.mkbootstrap (module)

examples

bootstrap.py

mkbootstrap

exit status

bootstrap.py

mkbootstrap

extend_parser() (in module everyapp.bootstrap.customize)

F

faq

features

files

bootstrap.cfg

bootstrap.py

mkbootstrap

final steps

upgrading

frequently asked questions

full licence text

G

generated files licence generating documentation getting started | glossary GNU General Public Licence GPL

H

hacking

I

installation

archive

dependencies

easy_install

mercurial

pip

release notes

requirements

versioning

K

known bugs

L

licence

GPL

contribution

documentation

full text

generated files

project

M

main() (in module everyapp.bootstrap.mkbootstrap)

mercurial

installation

upgrading

mkbootstrap

api

description

directories

examples

exit status

files

options

synopsis

mkbootstrap command line option

--version

-C FILE_NAME, --default-config FILE_NAME

-S FILE_NAME, --customize-script FILE_NAME

-c FILE_NAME, --config-name FILE_NAME

-e, --etc

-h, --help

-n, --no-customization

-s FILE_NAME, --script-name FILE_NAME

N

news | next steps basic usage

O

options

bootstrap.py

mkbootstrap

other projects

alternatives

related

output

bootstrap.py

P

packaging a release

pip

installation

upgrading

project licence

Python Enhancement Proposals

PEP 314, [1]

PEP 345, [1]

Q

questions

R

related projects

release

notes

packaging

versioning

requirements

S

sections

bootstrap.cfg

status

support

synopsis

bootstrap.py

mkbootstrap

T

thanks | to do list documentation

U

upgrading

archive

dependencies

easy_install

final steps

mercurial

pip

release notes

requirements

versioning

usage

basic usage

bootstrap.cfg

bootstrap.py

default bootstrap.cfg

directories

getting started

mkbootstrap

next steps

V

versioning

© Copyright 2010-2012, Krys Lawrence. Last updated on 2012-02-22. Created using Sphinx 1.1.2.