---------------------------
This release was a huge refactoring to enable concurrent related package
collection. In the process I switched from SQLite to the Linux file system
(augmented by memcached) because SQLite completely collapsed under concurrent
write activity (it would crap out consistently beyond a certain number of
concurrent readers and writers).
Detailed changes:
- Refactored makefile, setup script, Travis CI configuration, etc.
- Bug fix: Don't unnecessarily garbage collect cache.
- Experimented with increased concurrency using SQLite Write-Ahead Log (WAL).
- Remove redundant :py: prefixes from RST references
- Fix broken RST references logged by ``sphinx-build -n``.
- Moved ``deb_pkg_tools.utils.compact()`` to ``humanfriendly.text.compact()``.
- Fixed a broken pretty printer test.
- Implement and enforce PEP-8 and PEP-257 compliance
- Switch from SQLite to filesystem for package cache (to improve concurrency
between readers and writers). The WAL did not improve things as much as I
would have hoped...
- Document and optimize filesystem based package metadata cache
- Add some concurrency to ``deb-pkg-tools --collect`` (when more than one
archive is given, the collection of related archives is performed
concurrently for each archive given).
- Re-implement garbage collection for filesystem based cache.
- Improvements to interactive package collection:
- Don't use multiprocessing when a single archive is given because it's kind
of silly to fork subprocesses for no purpose at all.
- Restored the functionality of the optional 'cache' argument because the new
in memory / memcached / filesystem based cache is so simple it can be
passed to multiprocessing workers.
- Enable manual garbage collection (``deb-pkg-tools --garbage-collect``).
- Updated usage in readme.
- Improvements to interactive package collection:
- A single spinner is rendered during concurrent collection (instead of
multiple overlapping spinners that may not be synchronized).
- The order of the ``--collect`` and ``--yes`` options no longer matters.
- When the interactive spinner is drawn it will always be cleared, even if
the operator presses Control-C (previously it was possible for the text
cursor to remain hidden after ``deb-pkg-tools --collect`` was interrupted
by Control-C).
- Include command line interface in documentation.
.. _Release 3.0: https://github.com/xolox/python-deb-pkg-tools/compare/2.0...3.0