dataeval 1.1.1__tar.gz → 1.1.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. {dataeval-1.1.1 → dataeval-1.1.2}/PKG-INFO +1 -1
  2. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_version.py +2 -2
  3. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/models/_backends.py +22 -12
  4. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/models/_predictors.py +4 -4
  5. {dataeval-1.1.1 → dataeval-1.1.2}/.gitignore +0 -0
  6. {dataeval-1.1.1 → dataeval-1.1.2}/LICENSE +0 -0
  7. {dataeval-1.1.1 → dataeval-1.1.2}/README.md +0 -0
  8. {dataeval-1.1.1 → dataeval-1.1.2}/pyproject.toml +0 -0
  9. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/__init__.py +0 -0
  10. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_embeddings.py +0 -0
  11. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_experimental.py +0 -0
  12. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_helpers.py +0 -0
  13. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_log.py +0 -0
  14. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/__init__.py +0 -0
  15. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_aggregate.py +0 -0
  16. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_columns.py +0 -0
  17. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_deprecated.py +0 -0
  18. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_encoding.py +0 -0
  19. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_entry_legacy.py +0 -0
  20. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_filters.py +0 -0
  21. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_input.py +0 -0
  22. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_keyed.py +0 -0
  23. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_links.py +0 -0
  24. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_loading.py +0 -0
  25. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_metadata.py +0 -0
  26. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_serialize.py +0 -0
  27. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_store.py +0 -0
  28. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_structurers/__init__.py +0 -0
  29. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_structurers/_accumulator.py +0 -0
  30. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_structurers/_base.py +0 -0
  31. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_structurers/_block.py +0 -0
  32. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_structurers/_classification.py +0 -0
  33. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_structurers/_data.py +0 -0
  34. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_structurers/_dataset.py +0 -0
  35. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_structurers/_detection.py +0 -0
  36. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_structurers/_factors.py +0 -0
  37. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_structurers/_frames.py +0 -0
  38. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_structurers/_gather.py +0 -0
  39. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_structurers/_instances.py +0 -0
  40. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_structurers/_layout.py +0 -0
  41. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_structurers/_ordering.py +0 -0
  42. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_structurers/_propagation.py +0 -0
  43. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_structurers/_reporting.py +0 -0
  44. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_structurers/_reserved.py +0 -0
  45. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_structurers/_select.py +0 -0
  46. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_structurers/_source_index.py +0 -0
  47. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_metadata/_structurers/_tracking.py +0 -0
  48. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/_ontology.py +0 -0
  49. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/bias/__init__.py +0 -0
  50. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/bias/_balance.py +0 -0
  51. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/bias/_diversity.py +0 -0
  52. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/bias/_parity.py +0 -0
  53. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/config.py +0 -0
  54. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/__init__.py +0 -0
  55. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_ber.py +0 -0
  56. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_bin.py +0 -0
  57. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_calculators/__init__.py +0 -0
  58. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_calculators/_base.py +0 -0
  59. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_calculators/_cache.py +0 -0
  60. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_calculators/_dimensionstats.py +0 -0
  61. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_calculators/_hashstats.py +0 -0
  62. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_calculators/_pixelstats.py +0 -0
  63. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_calculators/_register.py +0 -0
  64. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_calculators/_registry.py +0 -0
  65. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_calculators/_visualstats.py +0 -0
  66. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_clusterer.py +0 -0
  67. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_completeness.py +0 -0
  68. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_compute_ratios.py +0 -0
  69. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_compute_stats.py +0 -0
  70. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_coverage.py +0 -0
  71. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_divergence.py +0 -0
  72. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_diversity.py +0 -0
  73. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_fast_hdbscan/_cluster_trees.py +0 -0
  74. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_fast_hdbscan/_disjoint_set.py +0 -0
  75. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_fast_hdbscan/_mst.py +0 -0
  76. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_feature_distance.py +0 -0
  77. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_hash.py +0 -0
  78. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_label_alignment.py +0 -0
  79. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_label_coverage.py +0 -0
  80. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_label_errors.py +0 -0
  81. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_label_parity.py +0 -0
  82. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_label_reconciliation.py +0 -0
  83. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_label_stats.py +0 -0
  84. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_metadata_insights.py +0 -0
  85. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_mst.py +0 -0
  86. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_mutual_info.py +0 -0
  87. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_nullmodel.py +0 -0
  88. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_ontology_validation.py +0 -0
  89. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_parity.py +0 -0
  90. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_rank.py +0 -0
  91. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_track_stats.py +0 -0
  92. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/core/_uap.py +0 -0
  93. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/data/__init__.py +0 -0
  94. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/data/_classbalance.py +0 -0
  95. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/data/_classfilter.py +0 -0
  96. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/data/_crop.py +0 -0
  97. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/data/_crops.py +0 -0
  98. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/data/_geometry.py +0 -0
  99. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/data/_indices.py +0 -0
  100. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/data/_invalidates.py +0 -0
  101. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/data/_limit.py +0 -0
  102. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/data/_merge.py +0 -0
  103. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/data/_relabel.py +0 -0
  104. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/data/_resize.py +0 -0
  105. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/data/_reverse.py +0 -0
  106. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/data/_selectchannels.py +0 -0
  107. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/data/_shuffle.py +0 -0
  108. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/data/_split.py +0 -0
  109. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/data/_torchvision.py +0 -0
  110. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/data/_tracks.py +0 -0
  111. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/data/_unzip.py +0 -0
  112. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/data/_view.py +0 -0
  113. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/exceptions.py +0 -0
  114. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/extractors/__init__.py +0 -0
  115. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/extractors/_bovw.py +0 -0
  116. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/extractors/_flatten.py +0 -0
  117. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/extractors/_geometry.py +0 -0
  118. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/extractors/_onnx.py +0 -0
  119. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/extractors/_scores.py +0 -0
  120. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/extractors/_torch.py +0 -0
  121. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/extractors/_uncertainty.py +0 -0
  122. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/flags.py +0 -0
  123. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/models/__init__.py +0 -0
  124. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/models/_input.py +0 -0
  125. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/models/_metadata.py +0 -0
  126. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/performance/__init__.py +0 -0
  127. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/performance/_aggregator.py +0 -0
  128. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/performance/_output.py +0 -0
  129. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/performance/_sufficiency.py +0 -0
  130. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/performance/schedules.py +0 -0
  131. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/protocols.py +0 -0
  132. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/py.typed +0 -0
  133. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/quality/__init__.py +0 -0
  134. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/quality/_duplicates.py +0 -0
  135. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/quality/_outliers.py +0 -0
  136. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/quality/_shared.py +0 -0
  137. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/scope/__init__.py +0 -0
  138. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/scope/_coverage.py +0 -0
  139. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/scope/_prioritize.py +0 -0
  140. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/scope/_representation.py +0 -0
  141. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/selection/__init__.py +0 -0
  142. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/shift/__init__.py +0 -0
  143. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/shift/_drift/__init__.py +0 -0
  144. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/shift/_drift/_base.py +0 -0
  145. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/shift/_drift/_chunk.py +0 -0
  146. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/shift/_drift/_domain_classifier.py +0 -0
  147. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/shift/_drift/_kneighbors.py +0 -0
  148. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/shift/_drift/_mmd.py +0 -0
  149. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/shift/_drift/_reconstruction.py +0 -0
  150. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/shift/_drift/_univariate.py +0 -0
  151. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/shift/_drift/_wasserstein.py +0 -0
  152. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/shift/_ood/__init__.py +0 -0
  153. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/shift/_ood/_base.py +0 -0
  154. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/shift/_ood/_domain_classifier.py +0 -0
  155. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/shift/_ood/_kneighbors.py +0 -0
  156. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/shift/_ood/_reconstruction.py +0 -0
  157. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/shift/_shared/__init__.py +0 -0
  158. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/shift/_shared/_domain_classifier.py +0 -0
  159. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/shift/_shared/_kneighbors.py +0 -0
  160. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/shift/_shared/_reconstruction.py +0 -0
  161. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/shift/update_strategies.py +0 -0
  162. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/types/__init__.py +0 -0
  163. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/types/_array.py +0 -0
  164. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/types/_config.py +0 -0
  165. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/types/_evaluator.py +0 -0
  166. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/types/_execution.py +0 -0
  167. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/types/_factors.py +0 -0
  168. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/types/_index.py +0 -0
  169. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/types/_ontology.py +0 -0
  170. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/types/_output.py +0 -0
  171. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/types/_schema.py +0 -0
  172. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/types/_track.py +0 -0
  173. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/utils/__init__.py +0 -0
  174. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/utils/_internal.py +0 -0
  175. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/utils/_validate.py +0 -0
  176. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/utils/data.py +0 -0
  177. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/utils/losses.py +0 -0
  178. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/utils/models.py +0 -0
  179. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/utils/onnx.py +0 -0
  180. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/utils/preprocessing.py +0 -0
  181. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/utils/thresholds.py +0 -0
  182. {dataeval-1.1.1 → dataeval-1.1.2}/src/dataeval/utils/training.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: dataeval
3
- Version: 1.1.1
3
+ Version: 1.1.2
4
4
  Summary: DataEval provides a simple interface to characterize image data and its impact on model performance across classification and object-detection tasks
5
5
  Project-URL: Homepage, https://dataeval.ai/
6
6
  Project-URL: Repository, https://github.com/aria-ml/dataeval/
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '1.1.1'
22
- __version_tuple__ = version_tuple = (1, 1, 1)
21
+ __version__ = version = '1.1.2'
22
+ __version_tuple__ = version_tuple = (1, 1, 2)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -2,6 +2,7 @@
2
2
 
3
3
  __all__ = ["RuntimeBackend", "OnnxBackend", "LiteRtBackend", "make_backend"]
4
4
 
5
+ from importlib import import_module
5
6
  from pathlib import Path
6
7
  from typing import Any, Protocol, runtime_checkable
7
8
 
@@ -93,25 +94,34 @@ class OnnxBackend:
93
94
  return {name: np.asarray(arr) for name, arr in zip(self.output_names, outputs, strict=True)}
94
95
 
95
96
 
97
+ #: Interpreter providers tried in order. `ai_edge_litert` is what `dataeval[litert]`
98
+ #: installs and is the supported successor to the standalone `tflite_runtime` wheel;
99
+ #: the other two stay as fallbacks for environments that already carry them.
100
+ _LITERT_MODULES = ("ai_edge_litert.interpreter", "tflite_runtime.interpreter", "tensorflow.lite")
101
+
102
+
96
103
  def _litert_interpreter(model_path: str | Path) -> Any:
97
- try:
98
- from tflite_runtime.interpreter import Interpreter
99
- except ImportError:
104
+ for module_name in _LITERT_MODULES:
100
105
  try:
101
- from tensorflow.lite import Interpreter # type: ignore[no-redef]
102
- except ImportError as e:
103
- raise ImportError("LiteRtBackend requires tflite-runtime or tensorflow. Install dataeval[tflite].") from e
104
- return Interpreter(model_path=str(model_path))
106
+ interpreter = import_module(module_name).Interpreter
107
+ except ImportError:
108
+ continue
109
+ return interpreter(model_path=str(model_path))
110
+ raise ImportError(
111
+ "LiteRtBackend requires a LiteRT interpreter, which is not installed. "
112
+ "Install it with: pip install 'dataeval[litert]' (or provide tflite-runtime or tensorflow)."
113
+ )
105
114
 
106
115
 
107
116
  class LiteRtBackend:
108
117
  """
109
118
  LiteRT (TensorFlow Lite) backend with NCHW input.
110
119
 
111
- Loads a ``.tflite`` model via a LiteRT interpreter (``tflite-runtime`` if
112
- available, else ``tensorflow.lite``). Accepts NCHW input and transposes to the
113
- NHWC layout LiteRT expects internally, resizing the interpreter's input tensor
114
- per batch. Implements :class:`RuntimeBackend`. Requires ``dataeval[tflite]``.
120
+ Loads a ``.tflite`` model via a LiteRT interpreter (``ai-edge-litert`` if
121
+ available, else ``tflite-runtime`` or ``tensorflow.lite``). Accepts NCHW input
122
+ and transposes to the NHWC layout LiteRT expects internally, resizing the
123
+ interpreter's input tensor per batch. Implements :class:`RuntimeBackend`.
124
+ Requires ``dataeval[litert]``.
115
125
 
116
126
  Parameters
117
127
  ----------
@@ -121,7 +131,7 @@ class LiteRtBackend:
121
131
  Raises
122
132
  ------
123
133
  ImportError
124
- If neither ``tflite-runtime`` nor ``tensorflow`` is installed.
134
+ If no LiteRT interpreter is available.
125
135
  FileNotFoundError
126
136
  If ``model_path`` does not exist.
127
137
  """
@@ -184,7 +184,7 @@ class LiteRtImageClassifier(_BaseImageClassifier):
184
184
  of CHW images to per-image class scores. Calling the instance preprocesses each
185
185
  image to the model's input contract (color layout, size, ``[0, 1]``
186
186
  normalization), runs inference, and returns one ``(nClasses,)`` float32 score
187
- array per image. Requires ``dataeval[tflite]``.
187
+ array per image. Requires ``dataeval[litert]``.
188
188
 
189
189
  Parameters
190
190
  ----------
@@ -205,7 +205,7 @@ class LiteRtImageClassifier(_BaseImageClassifier):
205
205
  ValueError
206
206
  If the metadata declares a task other than ``IMAGE_CLASSIFICATION``.
207
207
  ImportError
208
- If neither ``tflite-runtime`` nor ``tensorflow`` is installed.
208
+ If no LiteRT interpreter is available.
209
209
  FileNotFoundError
210
210
  If ``model_path`` does not exist.
211
211
 
@@ -413,7 +413,7 @@ class LiteRtObjectDetector(_BaseObjectDetector):
413
413
  to per-image detection targets. Calling the instance preprocesses each image to
414
414
  the model's input contract (color layout, size, ``[0, 1]`` normalization), runs
415
415
  inference, and returns one detection target per image. Requires
416
- ``dataeval[tflite]``.
416
+ ``dataeval[litert]``.
417
417
 
418
418
  Parameters
419
419
  ----------
@@ -436,7 +436,7 @@ class LiteRtObjectDetector(_BaseObjectDetector):
436
436
  ValueError
437
437
  If the metadata declares a task other than ``IMAGE_OBJECT_DETECTION``.
438
438
  ImportError
439
- If neither ``tflite-runtime`` nor ``tensorflow`` is installed.
439
+ If no LiteRT interpreter is available.
440
440
  FileNotFoundError
441
441
  If ``model_path`` does not exist.
442
442
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes