summaryrefslogtreecommitdiff
path: root/docs
Commit message (Collapse)AuthorAgeFilesLines
* Guarantee a stable ordering with build metadataRaphaël Barrois2022-05-261-1/+10
| | | | | | | | | | | | | 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-062-3/+3
|
* Improve documentationRaphaël Barrois2022-02-065-15/+399
| | | | | | | | | | | - The README is now a standalone document, also included as an "introduction" page; - A new "guide" section provides more details on most features; - A couple of typos were fixed. The main goal was to make the README file perfectly suitable for rendering on PyPI, while keeping its content available on the standard documentation on ReadTheDocs.
* Fix wildcard matching for SimpleSpec.Raphaël Barrois2020-04-291-0/+9
| | | | | | Including docs and tests. Closes #98.
* Correct typo in SimpleSpec descriptionJason2019-09-131-1/+1
|
* Rewrite `Spec` documentation.Raphaël Barrois2019-08-271-52/+49
| | | | Write clear, explicit rules for the `SimpleSpec` syntax.
* Deprecate support for 'partial' versions.rba/pre-2.8Raphaël Barrois2019-08-262-0/+7
| | | | | Their comparison semantics were ill-defined, and mostly an implementation detail for the old, 'native' specs.
* Adjust docs for readthedocs.Raphaël Barrois2019-08-261-3/+9
| | | | | - Use proper theme in development - Use ReadTheDocs version numbers in titles
* Add `Version.precedence_key`.Raphaël Barrois2019-08-261-0/+7
| | | | | | | | | | | | | | | | | | | 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-262-110/+141
| | | | | | | | | 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/+16
| | | | | | | | 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-2/+8
| | | | | | | | | | | | | | | | | | | | | | | 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 minor docs typo.Raphaël Barrois2019-08-241-2/+2
|
* Fix inconsistent matching behaviour.Raphaël Barrois2019-08-241-2/+2
| | | | | | | | 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/+14
| | | | This simplifies computing neighbouring versions.
* Allow Version(major=1, ...).Raphaël Barrois2019-08-241-0/+10
| | | | | | Eases the creation of version objects from existing versions. We still validate the type and structure of each component.
* Improve docs on `next_patch()`.Raphaël Barrois2018-06-181-0/+49
| | | | | | | | | | Those functions had been forgotten in the docs. Clarify that `Version('1.0.1-alpha').next_patch()` is `Version('1.0.1')`, since that version is the smallest non-prerelease version greater than `Version('1.0.1-alpha')`. Closes: #67
* Add a doc section about compatible release clausesMartin Ek2016-03-071-0/+6
|
* Cleanup and document fixes from #31.Raphaël Barrois2016-02-121-0/+6
| | | | The PR was broken through fixed in ``next_minor()`` / ``next_major()``.
* Forbid build metadata ordering (See #18)Raphaël Barrois2015-09-151-17/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | SemVer 2.0.0 states that "Build metadata SHOULD be ignored when determining version precedence". This means that, when comparing ``0.1.0+1`` to ``0.1.0+bcd``:: >>> Version('0.1.0+1') == Version('0.1.0+bcd') False >>> Version('0.1.0+1') != Version('0.1.0+bcd') True >>> Version('0.1.0+1') < Version('0.1.0+bcd') False >>> Version('0.1.0+1') > Version('0.1.0+bcd') False >>> Version('0.1.0+1') <= Version('0.1.0+bcd') False >>> Version('0.1.0+1') >= Version('0.1.0+bcd') False >>> compare(Version('0.1.0+1'), Version('0.1.0+bcd')) NotImplemented This change also has the following effects: - When including build metadata in a ``Spec``, the only valid options are ``Spec('==0.1.0+sth')`` and ``Spec('!=0.1.0+sth')`` - The meaning of ``Spec('==0.1.0+')`` is now "Only version 0.1.0 without build metadata" - ``Spec('==0.1.0')`` now matches ``Version('0.1.0+anything')``
* Accept '*' as a Spec (Closes #8).Raphaël Barrois2014-03-161-0/+4
| | | | Spec('*') will match all valid Version objects.
* Update copyrightRaphaël Barrois2014-03-081-1/+1
|
* Add CREDITS file.Raphaël Barrois2014-03-081-0/+1
|
* Normalize docs to docs/ (Closes #5).Raphaël Barrois2013-12-238-0/+1173
Also normalize the package layout. Thanks @jdowner-gb & tleach for the report.