from packaging.specifiers import InvalidSpecifier, SpecifierSet from packaging.version import Version def is_allowed_version(spec: str, version: str) -> bool: """Check `spec` satisfies `version` or not. This obeys PEP-440 specifiers: https://peps.python.org/pep-0440/#version-specifiers Some examples: >>> is_allowed_version('3.3', '<=3.5') True >>> is_allowed_version('3.3', '<=3.2') False >>> is_allowed_version('3.3', '>3.2, <4.0') True """ return Version(version) in SpecifierSet(spec)