@@ -28,6 +28,35 @@ class ModuleNameFilter:
2828 negative : tuple [pcre .Pattern , ...]
2929
3030
31+ def _parse_version (value : str | version .Version ) -> version .Version :
32+ """Return a normalized packaging version object."""
33+ if isinstance (value , version .Version ):
34+ return value
35+ return version .parse (value )
36+
37+
38+ def is_version_at_least (
39+ installed_version : str | version .Version ,
40+ minimum_version : str | version .Version ,
41+ ) -> bool :
42+ """Return whether a version meets a minimum, allowing same-release dev snapshots.
43+
44+ Hugging Face main-branch builds report versions like ``5.3.0-dev`` which
45+ packaging normalizes to ``5.3.0.dev0`` and orders before ``5.3.0``. Defuser
46+ treats those dev snapshots as satisfying the corresponding stable floor.
47+ """
48+ installed = _parse_version (installed_version )
49+ minimum = _parse_version (minimum_version )
50+
51+ if installed >= minimum :
52+ return True
53+
54+ if installed .is_devrelease :
55+ return version .parse (installed .base_version ) >= minimum
56+
57+ return False
58+
59+
3160def env_flag (name : str , default : str | bool | None = "0" ) -> bool :
3261 """Return ``True`` when an env var is set to a truthy value."""
3362
@@ -46,14 +75,14 @@ def is_transformers_version_greater_or_equal_5():
4675 """Cache the coarse ``transformers>=5`` capability check used by fast paths."""
4776 import transformers
4877
49- return version . parse (transformers .__version__ ) >= version . parse ( "5.0.0" )
78+ return is_version_at_least (transformers .__version__ , "5.0.0" )
5079
5180
5281def is_supported_transformers_version () -> bool :
5382 """Return whether the installed transformers version is supported by Defuser's public API."""
5483 import transformers
5584
56- return version . parse (transformers .__version__ ) >= version . parse ( MIN_SUPPORTED_TRANSFORMERS_VERSION )
85+ return is_version_at_least (transformers .__version__ , MIN_SUPPORTED_TRANSFORMERS_VERSION )
5786
5887
5988def warn_if_public_api_transformers_unsupported (api_name : str , logger ) -> bool :
0 commit comments