Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
you do not want to include a generated version statically during packaging.
:param name: Installed package name.
:param first_choice: Callback to determine a version before checking
to see if the named package is installed.
:param third_choice: Callback to determine a version if the installed
package cannot be found by name.
:param fallback: If no other matches found, use this version.
"""
if first_choice:
first_ver = first_choice()
if first_ver:
return first_ver
try:
return Version(pkg_resources.get_distribution(name).version)
except pkg_resources.DistributionNotFound:
pass
if third_choice:
third_ver = third_choice()
if third_ver:
return third_ver
return fallback
def get_version(
name: str,
first_choice: Callable[[], Optional[Version]] = None,
third_choice: Callable[[], Optional[Version]] = None,
fallback: Version = Version("0.0.0"),
) -> Version:
"""
Check pkg_resources info or a fallback function to determine the version.
This is intended as a convenient default for setting your `__version__` if
you do not want to include a generated version statically during packaging.
:param name: Installed package name.
:param first_choice: Callback to determine a version before checking
to see if the named package is installed.
:param third_choice: Callback to determine a version if the installed
package cannot be found by name.
:param fallback: If no other matches found, use this version.
"""
if first_choice:
first_ver = first_choice()
if first_ver:
def __lt__(self, other: Any) -> bool:
if not isinstance(other, Version):
raise TypeError(
"Cannot compare Version with type {}".format(other.__class__.__qualname__)
)
return (
pkg_resources.parse_version(self.base) < pkg_resources.parse_version(other.base)
and _blank(self.stage, "") < _blank(other.stage, "")
and _blank(self.revision, 0) < _blank(other.revision, 0)
and _blank(self.distance, 0) < _blank(other.distance, 0)
and _blank(self.commit, "") < _blank(other.commit, "")
and bool(self.dirty) < bool(other.dirty)
)