peterpeter8585 commited on
Commit
9a3d6fe
·
verified ·
1 Parent(s): 6da06d7

Upload import_utils.py

Browse files
Files changed (1) hide show
  1. import_utils.py +116 -0
import_utils.py ADDED
@@ -0,0 +1,116 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import importlib.metadata
2
+ import importlib.util
3
+ import operator as op
4
+ from typing import Union
5
+
6
+ from packaging import version
7
+
8
+ STR_OPERATION_TO_FUNC = {
9
+ ">": op.gt,
10
+ ">=": op.ge,
11
+ "==": op.eq,
12
+ "!=": op.ne,
13
+ "<=": op.le,
14
+ "<": op.lt,
15
+ }
16
+
17
+
18
+ _optimum_available = importlib.util.find_spec("optimum") is not None
19
+ _optimum_version = "N/A"
20
+ if _optimum_available:
21
+ try:
22
+ _optimum_version = importlib.metadata.version("optimum")
23
+ except importlib.metadata.PackageNotFoundError:
24
+ _optimum_available = False
25
+
26
+
27
+ _optimum_intel_available = (
28
+ _optimum_available and importlib.util.find_spec("optimum.intel") is not None
29
+ )
30
+ _optimum_intel_version = "N/A"
31
+ if _optimum_intel_available:
32
+ try:
33
+ _optimum_intel_version = importlib.metadata.version("optimum-intel")
34
+ except importlib.metadata.PackageNotFoundError:
35
+ _optimum_intel_available = False
36
+
37
+
38
+ _ipex_available = importlib.util.find_spec("intel_extension_for_pytorch") is not None
39
+
40
+ _openvino_available = importlib.util.find_spec("openvino") is not None
41
+
42
+
43
+ # This function was copied from: https://github.com/huggingface/accelerate/blob/874c4967d94badd24f893064cc3bef45f57cadf7/src/accelerate/utils/versions.py#L319
44
+ def compare_versions(
45
+ library_or_version: Union[str, version.Version],
46
+ operation: str,
47
+ requirement_version: str,
48
+ ) -> bool:
49
+ """
50
+ Compare a library version to some requirement using a given operation.
51
+
52
+ Arguments:
53
+ library_or_version (`str` or `packaging.version.Version`):
54
+ A library name or a version to check.
55
+ operation (`str`):
56
+ A string representation of an operator, such as `">"` or `"<="`.
57
+ requirement_version (`str`):
58
+ The version to compare the library version against
59
+ """
60
+ if operation not in STR_OPERATION_TO_FUNC.keys():
61
+ raise ValueError(
62
+ f"`operation` must be one of {list(STR_OPERATION_TO_FUNC.keys())}"
63
+ f", received {operation}"
64
+ )
65
+ if isinstance(library_or_version, str):
66
+ library_or_version = version.parse(
67
+ importlib.metadata.version(library_or_version)
68
+ )
69
+ return STR_OPERATION_TO_FUNC[operation](
70
+ library_or_version, version.parse(requirement_version)
71
+ )
72
+
73
+
74
+ def is_optimum_available() -> bool:
75
+ return _optimum_available
76
+
77
+
78
+ def is_optimum_intel_available() -> bool:
79
+ return _optimum_intel_available
80
+
81
+
82
+ def is_ipex_available() -> bool:
83
+ return _ipex_available
84
+
85
+
86
+ def is_openvino_available() -> bool:
87
+ return _openvino_available
88
+
89
+
90
+ def is_optimum_version(operation: str, reference_version: str) -> bool:
91
+ """
92
+ Compare the current Optimum version to a given reference with an operation.
93
+ """
94
+ if not _optimum_version:
95
+ return False
96
+ return compare_versions(
97
+ version.parse(_optimum_version), operation, reference_version
98
+ )
99
+
100
+
101
+ def is_optimum_intel_version(operation: str, reference_version: str) -> bool:
102
+ """
103
+ Compare the current Optimum Intel version to a given reference with an operation.
104
+ """
105
+ if not _optimum_intel_version:
106
+ return False
107
+ return compare_versions(
108
+ version.parse(_optimum_intel_version), operation, reference_version
109
+ )
110
+
111
+
112
+ IMPORT_ERROR = """
113
+ requires the {0} library but it was not found in your environment.
114
+ You can install it with pip: `pip install {0}`.
115
+ Please note that you may need to restart your runtime after installation.
116
+ """