Release Notes - Versions 0.12.x
Version 0.12.10
Component & Dependency Upgrades
- PIP ==20.2.3 (bundled in venv)
- added setuptools ==50.3.0 (bundled in venv)
Version 0.12.9
New Features
Version 0.12.8
Bugs Fixed
Component & Dependency Upgrades
- PIP ==20.2.2 (bundled in venv)
- wheel ==0.35.1 (bundled in venv)
- setuptools ==44.1.1 (bundled in venv)
- tblib ==1.7.0 (bundled in PyBuilder)
Version 0.12.7
Bugs Fixed
- #735 Fix remote getting too excited and classifying classes as callable methods
- #737 Multiple fixes for late injection of dependencies
Component & Dependency Upgrades
- PIP ==20.1 (bundled in venv)
- wheel ==0.34.2 (bundled in venv)
- Coverage ~=5.2
- Coveralls ~=2.1, where available
- unittest-xml-reporting ~=3.0.2, where available
Version 0.12.6
Bugs Fixed
Version 0.12.5
Bugs Fixed
Version 0.12.4
Bugs Fixed
- #704 ImportError: cannot import name ‘_register_test_and_source_path_and_return_test_dir’
- #706 Setup fails to run on pybuilder 0.12.2 or later
Version 0.12.3
Bugs Fixed
Version 0.12.2
Bugs Fixed
Version 0.12.1
Bugs Fixed
- #691 Sphinx fails on 0.12.0 + insufficient testing
- #692 ExternalCommandBuilder not backwards compatible
Known Issues
Sphinx in sphinx-plugin
has issues on Windows/Python 2.7 combination correctly interacting with symlinks that point to
non-existent paths.
Version 0.12.0
Version 0.12.0 is a major backwards-compatible release (hence the minor version bump) bringing a large number of backwards-compatible rewrites to PyBuilder.
Changes
Core
- PyBuilder now uniformly supports and tests on Linux, OSX and Windows for all OS-independent features.
- PyBuilder no longer has any direct dependencies and therefore doesn’t pollute the Python environment it is installed in.
- PyBuilder now uses multiple tiers of Python Virtual ENVironments (
venvs
) to provide dependency isolation for PyBuilder and for different stages of the build process. Thevenvs
are programmatically available to the plugins via theReactor
and are structured as follows:- system - the environment that launched the PyBuilder. Currently it is used as a seed environment for all of the
following and is otherwise never modified:
- pybuilder - this is a
venv
that is created internally inside PyBuilderReactor
during the initialization process and is located in the$basedir/.pybuilder/plugins
directory. Environments are further distinguished by Python type and version names allowing the same project to be built with multiple Python flavors and versions, e.g.:- cpython-3.8.1.final.0
- pypy-2.7.13.final.42
pybuilder venv is used to install remote plugins and plugin dependencies used by the PyBuilder project and hosts all of the tooling.
python.core
plugin is responsible for managing additional runtimevenvs
. By default PyBuilder creates the followingvenvs
in$dir_target/venv
:- build - venv that is used to deploy build-time and run-time dependencies and to run unit tests.
- test - venv that is used to deploy run-time dependencies only and is used for running integration tests.
- pybuilder - this is a
- system - the environment that launched the PyBuilder. Currently it is used as a seed environment for all of the
following and is otherwise never modified:
- The following projects were internally vendored into PyBuilder:
- PyBuilder intercepts project
build.py
descriptor module loading/import process to reduce the number ofpip install
invocations. Thus dependency installations will be batched and installed lazily as much a possible reducing total environment preparation times. - Offline mode allows PyBuilder to function in the absence of Internet connectivity, provided the PIP artifacts are
available in cache and/or otherwise already satisfied in the
venvs
. - A
Remote
framework similar to Java RMI was created for PyBuilder that allows remote method invocation and runtime data serialization with minimal boilerplate (i.e. with automatic Proxy creation) and utilizing a single communication channel with no additional threads. This dramatically simplifies writing of remote tooling for PyBuilder and guarantees that PyBuilder module loading is not affected by the remote tools and vice versa. - Windows text colorization added.
- PyBuilder now supports PEP-517, i.e.
pyproject.toml
can be both generated for the managed projects and is used to install PyBuilder itself from the source tree.
Unit Tests
All unit tests now run execute in a fresh separate process and communicate remotely with PyBuilder reporting results. This provides full test isolation and prevents non-reproducible test results if PyBuilder loads modules that are later unit tested.
Unit tests run in the build venv
which contains build-time and run-time dependencies.
Integration Tests
Integration tests run in the test venv
which contains run-time dependencies only. Integration tests now integrate
with coverage
plugin when coverage is enabled.
Cram
Cram tests now integration with coverage
plugin when coverage is enabled.
Coverage
Coverage has been completely rewritten and converted into a pluggable infrastructure for other plugins:
- Covered code modules are no longer imported by PyBuilder and therefore coverage is never affected by it.
- Unit test, integration test, and cram plugins integrate with and request coverage.
- Coverage now only reruns the tasks that request coverage as opposed to restarting entire task chains.
- Coverage is upgraded to 5.x and therefore now uses new Coverage sqlite storage format.
New Plugins
- Vendorizer plugin.
- Coveralls plugin.
Bugs Fixed
#84, #508, #529, #532, #606, #607, #620, #623, #638, #644, #649, #650, #657, #658, #660, #668, #675, #676, #685, #686
Known Issues
- While, technically, PyPy is fully supported, different versions of PyPy stall/deadlock(?) for unknown reasons.
Furthermore, PyPy has bugs related to object finalization and resultant issues with sqlite in Coverage. Your mileage with PyPy may vary. - Cram coverage registers normally but due to the way Coverage configuration is transferred between Python processes there will be no Coverage will be recorded. This will be resolved once Coverage library is modified to not require a coverage config file.
- Integration test parallelization is temporarily disabled due to threading limitations of the
Remote
framework. Sequential integration testing still works. - While PyBuilder itself no longer requires any particular version of
PIP
orsetuptools
to function, PEP-517 doesn’t honorpyproject.toml
’sbackend-path
until PIP version 20.x. If you want to install PyBuilder from the source tree you must upgradePIP
to at least version20.0.0
or usePIP
prior to version19.0.0
.