PyBuilder is a software build tool written in 100% pure Python and mainly targets Python applications.
PyBuilder is based on the concept of dependency based programming but also comes along with powerful plugin mechanism that allows the construction of build life cycles similar to those known from other famous (Java) build tools.
PyBuilder is running on the following versions of Python: 2.6, 2.7, 3.2, 3.3, 3.4 and PyPy.
See the Travis Build for version specific output.
PyBuilder is available using pip:
$ pip install pybuilder
See the Cheeseshop page for more information.
PyBuilder emphasizes simplicity. If you want to build a pure Python project and use the recommended directory layout, all you have to do is create a file build.py with the following content:
from pybuilder.core import use_plugin
use_plugin("python.core")
use_plugin("python.unittest")
use_plugin("python.coverage")
use_plugin("python.distutils")
default_task = "publish"
See the PyBuilder homepage for more details.
PyBuilder provides a lot of plugins out ot the box that utilize tools and libraries commonly used in Python projects:
- python.coverage - Uses the standard coverage module to calculate unit test line coverage.
- python.distutils - Provides support to generate and use setup.py files.
- python.django - Provides support for developing Django applications.
- python.frosted - Lint source files with frosted
- python.flake8 - Provides support for flake8
- python.pep8 - Provides support for pep8
- python.install_dependencies - Installs the projects build and runtime dependencies using
pip
- python.pychecker - Provides support for pychecker
- python.Pydev - Generates project files to import projects into Eclipse PyDev
- python.PyCharm - Generates project files to import projects into Jetbrains PyCharm
- python.pylint - Executes pylint on your sources.
- python.pymetrics - Calculates several metrics using pymetrics
- python.unittest - Executes unittest test cases
- python.integrationtest - Executes python scripts as integrations tests
- python.pytddmon - Provides visual feedback about unit tests through pytddmon
- python.cram - Runs cram tests
- python.sphinx - Build your documentation with sphinx
In addition, a few common plugins are provided:
- copy_resources - Copies files.
- filter_resources - Filters files by replacing tokens with configuration values.
- source_distribution - Bundles a source distribution for shipping.
External plugins:
- pybuilder_header_plugin - ensure all your source files have the expected file header
- pybuilder_release_plugin - release a new version of your project to PyPI
The release notes can be found here. There will also be a git tag with each release. Please note that we do not currently promote tags to GitHub "releases".