Skip to content

Commit ca2cf4d

Browse files
authored
Merge pull request #14 from nexB/refinements
Add support for gems and improve RPM support
2 parents a52ea99 + 8b84788 commit ca2cf4d

33 files changed

Lines changed: 3146 additions & 960 deletions

README.rst

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -66,40 +66,49 @@ For each scheme, **univers** provides an implementation for:
6666
version range syntax. It can parse and convert an existing native version range
6767
strings to this unified syntax. For example, this means:
6868

69-
- converting ">1.2.3" as used in a Python package into ``vers:pypi/>1.2.3``,
69+
- converting ">=1.2.3" as used in a Python package into ``vers:pypi/>=1.2.3``,
7070

71-
- or converting "^1.0.2" as used in an npm package dependency declartion into
72-
``vers:npm/>=1.0.2,<2.0.0``
71+
- or converting "^1.0.2" as used in an npm package dependency declaration into
72+
``vers:npm/>=1.0.2|<2.0.0``
7373

7474
The supported package ecosystems versioning schemes and underlying libraries
7575
include:
7676

7777
- npm that use the "node-semver" ranges notation and the semver versions syntax
78-
This is supported in part by the `semantic_version <https://github.com/rbarrois/python-semanticversion>`_ library.
78+
This is supported in part by the `semantic_version
79+
<https://github.com/rbarrois/python-semanticversion>`_ library.
7980

80-
- pypi: handled by Python's packaging library and the standard ``packaging.version`` module.
81+
- pypi: handled by Python's packaging library and the standard
82+
``packaging.version`` module.
8183

8284
- Rubygems which use a semver-like but not-quite-semver scheme and there can be
8385
commonly more than three version segments.
8486
Gems also use a slightly different range notation from node-semver with
8587
different operators and slightly different semantics: for instance it uses "~>"
8688
as a pessimistic operator and supports exclusion with != and does not support
8789
"OR" between constraints (that it call requirements).
90+
Gem are handled by Python port of the Rubygems requirements and version
91+
handling code from the `puppeteer tool
92+
<https://github.com/nexB/univers/blob/main/src/univers/debian.py.ABOUT>`_
8893

89-
- debian: handled by the `debian-inspector <https://github.com/nexB/univers/blob/main/src/univers/debian.py.ABOUT>`_
90-
library.
94+
- debian: handled by the `debian-inspector library
95+
<https://github.com/nexB/univers/blob/main/src/univers/debian.py.ABOUT>`_.
9196

92-
- maven: handled by the embedded `pymaven <https://github.com/nexB/univers/blob/main/src/univers/pymaven.py.ABOUT>`_ library.
97+
- maven: handled by the embedded `pymaven library
98+
<https://github.com/nexB/univers/blob/main/src/univers/pymaven.py.ABOUT>`_.
9399

94-
- rpm: handled by the embedded `rpm_vercmp <https://github.com/nexB/univers/blob/main/src/univers/rpm.py.ABOUT>`_ library.
100+
- rpm: handled by the embedded `rpm_vercmp library
101+
<https://github.com/nexB/univers/blob/main/src/univers/rpm.py.ABOUT>`_.
95102

96103
- golang (using semver)
97104

98105
- PHP composer
99106

100-
- ebuild/gentoo: handled by the embedded `gentoo_vercmp <https://github.com/nexB/univers/blob/main/src/univers/gentoo.py.ABOUT>`_ module.
107+
- ebuild/gentoo: handled by the embedded `gentoo_vercmp module
108+
<https://github.com/nexB/univers/blob/main/src/univers/gentoo.py.ABOUT>`_.
101109

102-
- arch linux : handled by the embedded `arch utility borrowed from msys2 <https://github.com/nexB/univers/blob/main/src/univers/arch.py.ABOUT>`_ module.
110+
- arch linux: handled by the embedded `arch utility module borrowed from msys2
111+
<https://github.com/nexB/univers/blob/main/src/univers/arch.py.ABOUT>`_.
103112

104113
The level of support for each ecosystem may not be even for now and new schemes
105114
and support for more package types are implemented on a continuous basis.
@@ -140,7 +149,7 @@ Normalize a version range from an npm:
140149
141150
from univers.version_range import NpmVersionRange
142151
range = NpmVersionRange.from_native("^1.0.2")
143-
assert str(range) == "vers:npm/>=1.0.2,<2.0.0"
152+
assert str(range) == "vers:npm/>=1.0.2|<2.0.0"
144153
145154
146155
Test if a version is within or outside a version range:

0 commit comments

Comments
 (0)