summaryrefslogtreecommitdiff
path: root/ChangeLog
Commit message (Collapse)AuthorAgeFilesLines
* Simplify subclassing VersionHEADsubclasseablemasterRaphaël Barrois2023-02-281-0/+6
| | | | Fixes: #112
* Test and fix Version.truncate()Raphaël Barrois2023-02-281-1/+4
| | | | | | | Calling `Version.truncate("build")` should return a fresh instance, as caught in #141 Closes: #141, #142
* Back to development: 2.10.1Raphaël Barrois2022-05-261-0/+6
|
* Preparing release 2.10.02.10.0Raphaël Barrois2022-05-261-1/+1
|
* Guarantee a stable ordering with build metadataRaphaël Barrois2022-05-261-3/+7
| | | | | | | | | | | | | Sorting any permutation of Version objects should always yield the same result, even if those hold some build metadata. To that end, the "precedence_key" is now used exclusively for sorting; direct comparisons between Version objects still ignores the "build" metadata, using a different precedence key. For performance improvements, both precedence keys are cached. Closes: #132
* docs: Update reference to NPM range specificationRaphaël Barrois2022-02-061-1/+1
|
* Back to development: 2.9.1Raphaël Barrois2022-02-061-0/+6
|
* Preparing release 2.9.02.9.0Raphaël Barrois2022-02-061-1/+1
|
* Add support for Django 4.0Raphaël Barrois2021-11-081-2/+2
| | | | | | | The gettext_lazy function has a different name between Django 2.x and 4.x; use the right one according to the version. Closes #113, #121
* Add support for Python 3.9django-31Raphaël Barrois2021-03-021-1/+1
|
* Add support for Django 3.1Raphaël Barrois2021-03-021-0/+1
|
* Add support for Python 3.7 / 3.8Raphaël Barrois2021-03-021-1/+3
|
* Back to development: 2.8.6Raphaël Barrois2020-04-291-0/+6
|
* Preparing release 2.8.52.8.5Raphaël Barrois2020-04-291-1/+1
|
* Fix wildcard matching for SimpleSpec.Raphaël Barrois2020-04-291-1/+4
| | | | | | Including docs and tests. Closes #98.
* Back to development: 2.8.5Raphaël Barrois2019-12-211-0/+6
|
* Preparing release 2.8.42.8.4Raphaël Barrois2019-12-211-1/+1
|
* Properly coerce versions with leading zeroes.Raphaël Barrois2019-12-211-1/+5
| | | | | | | A leading zero is forbidden in the SemVer spec, but could be valid under other schemes; when coercing, it can easily be removed. Closes #89, thanks to Andrew Ni for the report.
* Back to development: 2.8.4Raphaël Barrois2019-11-211-0/+6
|
* Preparing release 2.8.32.8.3Raphaël Barrois2019-11-211-1/+1
|
* Fix NpmSpec prerelease-handling.Raphaël Barrois2019-11-211-1/+7
| | | | | | | | | | | | | Thanks to Nathan Walters for spotting this. Npm ranges with a `<X.Y.Z-P` component were not properly expanded: they were converted to: <X.Y.0 || (>=X.Y.0 && <X.Y.Z-P && no-prerelease) The correct expansion is: <X.Y.0 || (>=X.Y.0-* && <X.Y.Z-P) Closes #86.
* Back to development: 2.8.3Raphaël Barrois2019-09-061-0/+6
|
* Preparing release 2.8.22.8.2Raphaël Barrois2019-09-061-1/+1
|
* Fix Spec.specs for single-term ranges.maint/2.xRaphaël Barrois2019-09-061-1/+5
| | | | | | | This (deprecated) property failed when used on a `Spec` item based on a single-term range (e.g. `==0.1.2` `<2.0.0`). Closes #82.
* Back to development: 2.8.2Raphaël Barrois2019-08-291-0/+6
|
* Preparing release 2.8.12.8.1Raphaël Barrois2019-08-291-1/+1
|
* Restore `Spec.specs` [Closes #79]Raphaël Barrois2019-08-291-1/+3
| | | | This attribute wasn't meant to be removed.
* Back to development: 2.8.1Raphaël Barrois2019-08-291-0/+6
|
* Preparing release 2.8.02.8.0Raphaël Barrois2019-08-291-1/+1
|
* Restore Python2 support.rbarrois/restore-py2Raphaël Barrois2019-08-291-1/+3
|
* Back to development: 2.7.2Raphaël Barrois2019-08-281-0/+6
|
* Preparing release 2.7.12.7.1Raphaël Barrois2019-08-281-1/+1
|
* Fix NPM-style caret matching.Raphaël Barrois2019-08-281-1/+3
|
* Back to development: 2.7.1maint/v2.7Raphaël Barrois2019-08-281-0/+6
|
* Preparing release 2.7.02.7.0Raphaël Barrois2019-08-281-1/+1
|
* Describe upcoming changes.Raphaël Barrois2019-08-281-0/+11
|
* Deprecate support for 'partial' versions.rba/pre-2.8Raphaël Barrois2019-08-261-0/+1
| | | | | Their comparison semantics were ill-defined, and mostly an implementation detail for the old, 'native' specs.
* Add `Version.precedence_key`.Raphaël Barrois2019-08-261-0/+2
| | | | | | | | | | | | | | | | | | | This will be used in `sort(..., key=lambda v: v.precedence_key)`. Remove previous comparison/ordering implementation. The current implementation relies on a 4-tuple: - major, minor, patch (as integers) - natural order matches precedence rules - a tuple of identifiers for the prerelease component. The identifiers for the prerelease components are based on: - A `NumericIdentifier` class, that compares number using their natural order, and always compares lower than non-numeric identifiers - A `AlphaIdentifier` class for non-numeric identifiers; it compares versions using ASCII ordering. - A `MaxIdentifier` class, that compares higher to any other identifier; used to ensure that a non-prerelease version is greater than any of its prereleases.
* Add deprecations for Spec/SpecItem.Raphaël Barrois2019-08-261-0/+6
| | | | | | | | | The internal features from those classes will be removed in future versions: - The `Spec` class is incompatible with the support of multiple syntaxes - The `SpecItem` class was an implementation detail, but doesn't support complex `Range` combinations.
* Add support for NPM-style version ranges.Raphaël Barrois2019-08-261-0/+1
| | | | | | | | The code follows closely the specification available at https://docs.npmjs.com/misc/semver.html. Despite similarities, the matching logic is fully separate from the `native` code, since both might evolve at their own scales.
* Refactor spec/version matching.Raphaël Barrois2019-08-261-0/+5
| | | | | | | | | | | | | | | | | | | | | | | Instead of choosing the comparison on each `.match()` call, the expression is converted to a combination of `Range()` expressions (simple comparison to a semver-compliant `Version`). `Range()` objects can be combined with `And` and `Or` through the `AnyOf` and `AllOf` clauses (sticking to Python's naming scheme). Some specific flags have been provided to those range, allowing users to subtly alter the matching behaviour - thus accomodating different versioning schemes: - `<0.1.2` won't match `0.1.2-rc1`, unless the prerelease_policy flag is set to either `always` or `same-patch` - `<0.1.2` will match `0.1.1-rc1`, unless the `prerelease_policy` flag is set to `same-patch` - `==0.1.2` will always match `0.1.2+build44`, unless the `build_policy` is set to `strict`. The `Spec` item has been updated, alongside `SpecItem`. Those objects keep the original expression as attributes, but don't use them for comparisons.
* Fix inconsistent matching behaviour.Raphaël Barrois2019-08-241-0/+4
| | | | | | | | According to the stated goal of "intuitive" behaviour, we want: ``Version('0.1.1-a1') not in Spec('<0.1.1')``. Tests, code and docs have been fixed.
* Add `Version.truncate()`.Raphaël Barrois2019-08-241-0/+1
| | | | This simplifies computing neighbouring versions.
* Drop support for Python<3.4.Raphaël Barrois2019-08-241-0/+4
|
* Allow Version(major=1, ...).Raphaël Barrois2019-08-241-0/+8
| | | | | | Eases the creation of version objects from existing versions. We still validate the type and structure of each component.
* Release version 2.6.0v2.6.0Raphaël Barrois2016-09-251-2/+2
|
* Officially drop support for Django<1.7Raphaël Barrois2016-09-011-0/+4
|
* Add support for Django 1.10Raphaël Barrois2016-09-011-1/+6
| | | | | | | | | | | | | | Stop coercing fields magically: >>> a = SomeModel() >>> a.version = '0.1.0' >>> a.version '0.1.0' >>> a.full_clean() >>> a.version Version('0.1.0') Closes #43, #45
* Fix handling pre-1.0.0 caret versions (Closes #35)Raphaël Barrois2016-02-211-0/+9
| | | | Thanks to @autopulated for pointing the issue!
* Release v2.5.0Raphaël Barrois2016-02-121-2/+2
|