Skip to content

Commit

Permalink
Fix: AttributeError: module 'packaging' has no attribute 'version' (h…
Browse files Browse the repository at this point in the history
…uggingface#1660)

* fix: fix module 'packaging' has no attribute 'version'

* fix ci

---------

Co-authored-by: fxmarty <9808326+fxmarty@users.noreply.github.com>
  • Loading branch information
2 people authored and young-developer committed May 10, 2024
1 parent c8e11bf commit 1e5c291
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 16 deletions.
30 changes: 15 additions & 15 deletions optimum/utils/import_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
from typing import Tuple, Union

import numpy as np
import packaging
from packaging import version
from transformers.utils import is_torch_available


Expand All @@ -48,14 +48,14 @@ def _is_package_available(pkg_name: str, return_version: bool = False) -> Union[
import importlib.metadata as importlib_metadata


TORCH_MINIMUM_VERSION = packaging.version.parse("1.11.0")
TRANSFORMERS_MINIMUM_VERSION = packaging.version.parse("4.25.0")
DIFFUSERS_MINIMUM_VERSION = packaging.version.parse("0.18.0")
AUTOGPTQ_MINIMUM_VERSION = packaging.version.parse("0.4.99") # Allows 0.5.0.dev0
TORCH_MINIMUM_VERSION = version.parse("1.11.0")
TRANSFORMERS_MINIMUM_VERSION = version.parse("4.25.0")
DIFFUSERS_MINIMUM_VERSION = version.parse("0.18.0")
AUTOGPTQ_MINIMUM_VERSION = version.parse("0.4.99") # Allows 0.5.0.dev0


# This is the minimal required version to support some ONNX Runtime features
ORT_QUANTIZE_MINIMUM_VERSION = packaging.version.parse("1.4.0")
ORT_QUANTIZE_MINIMUM_VERSION = version.parse("1.4.0")


_onnx_available = _is_package_available("onnx")
Expand All @@ -72,7 +72,7 @@ def _is_package_available(pkg_name: str, return_version: bool = False) -> Union[

torch_version = None
if is_torch_available():
torch_version = packaging.version.parse(importlib_metadata.version("torch"))
torch_version = version.parse(importlib_metadata.version("torch"))

_is_torch_onnx_support_available = is_torch_available() and (
TORCH_MINIMUM_VERSION.major,
Expand Down Expand Up @@ -133,7 +133,7 @@ def is_sentence_transformers_available():

def is_auto_gptq_available():
if _auto_gptq_available:
version_autogptq = packaging.version.parse(importlib_metadata.version("auto_gptq"))
version_autogptq = version.parse(importlib_metadata.version("auto_gptq"))
if AUTOGPTQ_MINIMUM_VERSION < version_autogptq:
return True
else:
Expand All @@ -149,7 +149,7 @@ def check_if_pytorch_greater(target_version: str, message: str):
"""
import torch

if not packaging.version.parse(torch.__version__) >= packaging.version.parse(target_version):
if not version.parse(torch.__version__) >= version.parse(target_version):
raise ImportError(
f"Found an incompatible version of PyTorch. Found version {torch.__version__}, but only {target_version} and above are supported. {message}"
)
Expand All @@ -159,7 +159,7 @@ def check_if_pytorch_greater(target_version: str, message: str):
pass


def check_if_transformers_greater(target_version: Union[str, packaging.version.Version]) -> bool:
def check_if_transformers_greater(target_version: Union[str, version.Version]) -> bool:
"""
Checks whether the current install of transformers is greater than or equal to the target version.
Expand All @@ -172,9 +172,9 @@ def check_if_transformers_greater(target_version: Union[str, packaging.version.V
import transformers

if isinstance(target_version, str):
target_version = packaging.version.parse(target_version)
target_version = version.parse(target_version)

return packaging.version.parse(transformers.__version__) >= target_version
return version.parse(transformers.__version__) >= target_version


def check_if_diffusers_greater(target_version: str) -> bool:
Expand All @@ -190,12 +190,12 @@ def check_if_diffusers_greater(target_version: str) -> bool:
if not _diffusers_available:
return False

return packaging.version.parse(_diffusers_version) >= packaging.version.parse(target_version)
return version.parse(_diffusers_version) >= version.parse(target_version)


@contextmanager
def require_numpy_strictly_lower(version: str, message: str):
if not packaging.version.parse(np.__version__) < packaging.version.parse(version):
def require_numpy_strictly_lower(package_version: str, message: str):
if not version.parse(np.__version__) < version.parse(package_version):
raise ImportError(
f"Found an incompatible version of numpy. Found version {np.__version__}, but expected numpy<{version}. {message}"
)
Expand Down
3 changes: 2 additions & 1 deletion tests/exporters/onnx/test_onnx_config_loss.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,9 @@ def test_onnx_config_with_loss(self):
model_checkpoint = "hf-internal-testing/tiny-random-bert"
models = {
AutoModelForSequenceClassification.from_pretrained(model_checkpoint),
TFAutoModelForSequenceClassification.from_pretrained(model_checkpoint),
}
if is_tf_available():
models.add(TFAutoModelForSequenceClassification.from_pretrained(model_checkpoint))

for model in models:
with self.subTest(model=model):
Expand Down

0 comments on commit 1e5c291

Please sign in to comment.