------------------
This release brings a couple of significant changes:
- Allow to define several range description syntaxes (``SimpleSpec``, ``NpmSpec``, ...)
- Fix bugs and unexpected behaviours in the ``SimpleSpec`` implementation.
Backwards compatibility has been kept, but users should adjust their code for the new features:
- Use ``SimpleSpec`` instead of ``Spec``
- Replace calls to ``Version('1.2', partial=True)`` with ``SimpleSpec('~1.2')``
- ``iter(some_spec)`` is deprecated.
*New:*
* Allow creation of a ``Version`` directly from parsed components, as keyword arguments
(``Version(major=1, minor=2, patch=3)``)
* Add ``Version.truncate()`` to build a truncated copy of a ``Version``
* Add ``NpmSpec(...)``, following strict NPM matching rules (https://github.com/npm/node-semver#ranges)
* Add ``Spec.parse('xxx', syntax='<syntax>')`` for simpler multi-syntax support
* Add ``Version().precedence_key``, for use in ``sort(versions, key=lambda v: v.precedence_key)`` calls.
The contents of this attribute is an implementation detail.
*Bugfix:*
* Fix inconsistent behaviour regarding versions with a prerelease specification.
*Deprecated:*
* Deprecate the ``Spec`` class (Removed in 3.1); use the ``SimpleSpec`` class instead
* Deprecate the internal ``SpecItem`` class (Removed in 3.0).
* Deprecate the ``partial=True`` form of ``Version``; use ``SimpleSpec`` instead.
*Removed:*
* Remove support for Python2 (End of life 4 months after this release)
*Refactor:*
* Switch spec computation to a two-step process: convert the spec to a combination
of simple comparisons with clear semantics, then use those.