diff --git a/ddtrace/internal/utils/version.py b/ddtrace/internal/utils/version.py index b508c7111ad..1b0a7af4ad9 100644 --- a/ddtrace/internal/utils/version.py +++ b/ddtrace/internal/utils/version.py @@ -27,7 +27,12 @@ def parse_version(version): # version() will not raise an exception, if the version if malformed instead # we will end up with a LegacyVersion - parsed = packaging.version.parse(version) + + try: + parsed = packaging.version.parse(version) + except packaging.version.InvalidVersion: + # packaging>=22.0 raises an InvalidVersion instead of returning a LegacyVersion + return (0, 0, 0) # LegacyVersion.release will always be `None` if not parsed.release: diff --git a/riotfile.py b/riotfile.py index 34c970b2585..fc19d7ba531 100644 --- a/riotfile.py +++ b/riotfile.py @@ -324,11 +324,15 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): "DD_REMOTE_CONFIGURATION_ENABLED": "false", }, venvs=[ - Venv(pys="2.7"), + Venv(pys="2.7", pkgs={"packaging": ["==17.1", latest]}), Venv( - # FIXME[bytecode-3.11]: internal depends on bytecode, which is not python 3.11 compatible. - pys=select_pys(min_version="3.5"), - pkgs={"pytest-asyncio": latest}, + pys=select_pys(min_version="3.5", max_version="3.6"), + pkgs={"pytest-asyncio": latest, "packaging": ["==17.1", latest]}, + ), + # FIXME[bytecode-3.11]: internal depends on bytecode, which is not python 3.11 compatible. + Venv( + pys=select_pys(min_version="3.7"), + pkgs={"pytest-asyncio": latest, "packaging": ["==17.1", "==22.0", latest]}, ), ], ),