ocebuild.versioning
#
Methods for sorting and handling versioning.
Submodules#
Package Contents#
Functions#
|
Gets the version string from a version specifier. |
|
Gets the version class from a version specifier. |
|
Compares a version to the version specifier. |
|
Resolves a version specifier. |
|
Gets the minimum required version of a library. |
|
Sorts a dependency tree by topology and version. |
Attributes#
Semantic versioning range symbols. |
|
Version comparison symbols. |
- ocebuild.versioning.COMPARISON_SYMBOLS = ('>', '<', '>=', '<=', '==', '!=')[source]#
Version comparison symbols.
- ocebuild.versioning.get_version_str(string: str) str | None [source]#
Gets the version string from a version specifier.
- Parameters:
string – The version specifier.
- Returns:
The version string.
Example
>>> get_version_string('^1.0.0') # -> '1.0.0' >>> get_version_string('1.0.0') # ->'1.0.0' >>> get_version_string('latest') # -> None
- ocebuild.versioning.get_version(string: str) packaging.version.Version | None [source]#
Gets the version class from a version specifier.
- Parameters:
string – The version class.
- Returns:
The version string.
Example
>>> get_version('^1.0.0') # -> <Version('1.0.0')> >>> get_version('1.0.0') # -> <Version('1.0.0')> >>> get_version('latest') # -> None
- ocebuild.versioning.compare_version(v1: str | packaging.version.Version, v2: str | packaging.version.Version, operator: str) bool [source]#
Compares a version to the version specifier.
- Parameters:
v1 – The version.
v2 – The version specifier.
operator – The operator.
- Returns:
True if the version satisfies the specifier.
- ocebuild.versioning.resolve_version_specifier(versions: List[str], specifier: str) str | None [source]#
Resolves a version specifier.
- Parameters:
versions – The versions.
specifier – The version specifier.
- Returns:
The resolved version (if available).
Examples
>>> resolve_version_specifier(['1.2.3', '1.2.4', '1.3.0'], '~1.2.3') # -> '1.2.4' >>> resolve_version_specifier(['1.2.3', '1.3.0', '2.0.0'], '^1.2.3') # -> '1.3.0' >>> resolve_version_specifier(['1.2.3', '1.2.4', '1.3.0'], '1.2.3') # -> '1.2.3' >>> resolve_version_specifier(['1.2.3', '1.2.4', '1.3.0'], '>1.2.3') # -> '1.3.0' >>> resolve_version_specifier(['1.2.2', '1.2.3', '1.3.0'], '<1.2.3') # -> '1.2.2' >>> resolve_version_specifier(['1.2.3', '1.2.4', '1.3.0'], '>=1.2.3') # -> '1.3.0' >>> resolve_version_specifier(['1.2.3', '1.2.4', '1.3.0'], '<=1.2.3') # -> '1.2.3' >>> resolve_version_specifier(['1.2.3', '1.2.4', '1.3.0'], '!=1.2.3') # -> '1.3.0' >>> resolve_version_specifier(['1.2.3', '1.2.4', '1.3.0'], '==1.2.3') # -> '1.2.3' >>> resolve_version_specifier(['1.2.3', '1.2.4', '1.3.0'], 'latest') # -> '1.3.0' >>> resolve_version_specifier(['1.2.3', '1.2.4', '1.3.0'], 'oldest') # -> '1.2.3' >>> resolve_version_specifier(['1.2.3', '1.2.4', '1.3.0'], '1.2.2') # -> None
- ocebuild.versioning.get_minimum_version(dependencies: Dict[str, Tuple[str, str]], library: str) Tuple[str, str | None] [source]#
Gets the minimum required version of a library.
- Parameters:
dependencies – The dependency tree.
library – The library to get the minimum version of.
- Returns:
A tuple of the library name and the minimum version.
Example
>>> dependencies = { ... 'lib1': [('lib2', '2.0.0')], ... 'lib2': [('lib3', '3.0.0')], ... 'lib3': [], ... } >>> get_minimum_version(dependencies, 'lib1') # -> ('lib1', None) >>> get_minimum_version(dependencies, 'lib2') # -> ('lib2', '^2.0.0') >>> get_minimum_version(dependencies, 'lib3') # -> ('lib3', '^3.0.0')
- ocebuild.versioning.sort_dependencies(dependencies: Dict[str, Tuple[str, str]]) Generator[Tuple[str, str], any, None] [source]#
Sorts a dependency tree by topology and version.
- Parameters:
dependencies – The dependency tree.
- Yields:
A tuple of the library name and the minimum version.
- Raises:
ValueError – If a cycle is detected in the dependency tree.
Example
>>> dependencies = { ... 'lib1': [('lib2', '2.0.0')], ... 'lib2': [('lib3', '3.0.0')], ... 'lib3': [], ... } >>> list(sort_dependencies(dependencies)) # -> [('lib3', '^3.0.0'), ('lib2', '^2.0.0'), ('lib1', None)]