PyBuilder is a software build tool written in 100% pure Python, mainly targeting Python applications.
PyBuilder is based on the concept of dependency based programming, but it also comes with a powerful plugin mechanism, allowing 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.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 of 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
- python.sonarqube - Analyze your project with SonarQube.
- python.snakefood - Analyze your code dependencies with snakefood.
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".