Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix: AttributeError: module 'packaging' has no attribute 'version' #1660

Merged
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
28 changes: 14 additions & 14 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):
if not version.parse(np.__version__) < version.parse(version):
raise ImportError(
f"Found an incompatible version of numpy. Found version {np.__version__}, but expected numpy<{version}. {message}"
)
Expand Down