dataeval 0.69.1__py3-none-any.whl → 0.69.2__py3-none-any.whl

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.
dataeval/__init__.py CHANGED
@@ -1,4 +1,4 @@
1
- __version__ = "0.69.1"
1
+ __version__ = "0.69.2"
2
2
 
3
3
  from importlib.util import find_spec
4
4
 
@@ -35,6 +35,8 @@ class DriftBaseOutput(OutputMetadata):
35
35
 
36
36
  is_drift: bool
37
37
  threshold: float
38
+ p_val: float
39
+ distance: float
38
40
 
39
41
 
40
42
  @dataclass(frozen=True)
@@ -60,6 +62,8 @@ class DriftOutput(DriftBaseOutput):
60
62
 
61
63
  # is_drift: bool
62
64
  # threshold: float
65
+ # p_val: float
66
+ # distance: float
63
67
  feature_drift: NDArray[np.bool_]
64
68
  feature_threshold: float
65
69
  p_vals: NDArray[np.float32]
@@ -462,4 +466,6 @@ class BaseDriftUnivariate(BaseDrift):
462
466
 
463
467
  feature_drift = (p_vals < self.p_val).astype(np.bool_)
464
468
  drift_pred, threshold = self._apply_correction(p_vals)
465
- return DriftOutput(drift_pred, threshold, feature_drift, self.p_val, p_vals, dist)
469
+ return DriftOutput(
470
+ drift_pred, threshold, float(np.mean(p_vals)), float(np.mean(dist)), feature_drift, self.p_val, p_vals, dist
471
+ )
@@ -42,8 +42,8 @@ class DriftMMDOutput(DriftBaseOutput):
42
42
 
43
43
  # is_drift: bool
44
44
  # threshold: float
45
- p_val: float
46
- distance: float
45
+ # p_val: float
46
+ # distance: float
47
47
  distance_threshold: float
48
48
 
49
49
 
@@ -119,7 +119,7 @@ class Outliers:
119
119
 
120
120
  Specifying an outlier method and threshold:
121
121
 
122
- >>> outliers = Outliers(outlier_method="zscore", outlier_threshold=2.5)
122
+ >>> outliers = Outliers(outlier_method="zscore", outlier_threshold=2.75)
123
123
  """
124
124
 
125
125
  def __init__(
@@ -167,8 +167,8 @@ class Outliers:
167
167
  Evaluate the dataset:
168
168
 
169
169
  >>> outliers.evaluate(images)
170
- OutliersOutput(issues={18: {'brightness': 0.78}, 25: {'brightness': 0.98}})
171
- """
170
+ OutliersOutput(issues={10: {'blurriness': 1.26, 'contrast': 1.06, 'zeros': 0.05}, 12: {'blurriness': 1.51, 'contrast': 1.06, 'zeros': 0.05}})
171
+ """ # noqa: E501
172
172
  stats, dataset_steps = combine_stats(data)
173
173
 
174
174
  if isinstance(stats, StatsOutput):
@@ -15,6 +15,7 @@ class ImageStat(IntFlag):
15
15
  # HASHES
16
16
  XXHASH = auto()
17
17
  PCHASH = auto()
18
+
18
19
  # PROPERTIES
19
20
  WIDTH = auto()
20
21
  HEIGHT = auto()
@@ -22,11 +23,15 @@ class ImageStat(IntFlag):
22
23
  ASPECT_RATIO = auto()
23
24
  CHANNELS = auto()
24
25
  DEPTH = auto()
26
+
25
27
  # VISUALS
26
28
  BRIGHTNESS = auto()
27
29
  BLURRINESS = auto()
30
+ CONTRAST = auto()
31
+ DARKNESS = auto()
28
32
  MISSING = auto()
29
- ZERO = auto()
33
+ ZEROS = auto()
34
+
30
35
  # PIXEL STATS
31
36
  MEAN = auto()
32
37
  STD = auto()
@@ -36,11 +41,13 @@ class ImageStat(IntFlag):
36
41
  ENTROPY = auto()
37
42
  PERCENTILES = auto()
38
43
  HISTOGRAM = auto()
44
+
39
45
  # JOINT FLAGS
40
46
  ALL_HASHES = XXHASH | PCHASH
41
47
  ALL_PROPERTIES = WIDTH | HEIGHT | SIZE | ASPECT_RATIO | CHANNELS | DEPTH
42
- ALL_VISUALS = BRIGHTNESS | BLURRINESS | MISSING | ZERO
48
+ ALL_VISUALS = BRIGHTNESS | BLURRINESS | CONTRAST | DARKNESS | MISSING | ZEROS
43
49
  ALL_PIXELSTATS = MEAN | STD | VAR | SKEW | KURTOSIS | ENTROPY | PERCENTILES | HISTOGRAM
50
+ ALL_CHANNEL_STATS = BRIGHTNESS | CONTRAST | DARKNESS | ZEROS | ALL_PIXELSTATS
44
51
  ALL_STATS = ALL_PROPERTIES | ALL_VISUALS | ALL_PIXELSTATS
45
52
  ALL = ALL_HASHES | ALL_STATS
46
53
 
@@ -24,43 +24,47 @@ class StatsOutput(OutputMetadata):
24
24
  xxHash hash of the images as a hex string
25
25
  pchash : List[str]
26
26
  Perception hash of the images as a hex string
27
- width: NDArray[np.uint16]
27
+ width : NDArray[np.uint16]
28
28
  Width of the images in pixels
29
- height: NDArray[np.uint16]
29
+ height : NDArray[np.uint16]
30
30
  Height of the images in pixels
31
- channels: NDArray[np.uint8]
31
+ channels : NDArray[np.uint8]
32
32
  Channel count of the images in pixels
33
- size: NDArray[np.uint32]
33
+ size : NDArray[np.uint32]
34
34
  Size of the images in pixels
35
- aspect_ratio: NDArray[np.float16]
35
+ aspect_ratio : NDArray[np.float16]
36
36
  Aspect ratio of the images (width/height)
37
- depth: NDArray[np.uint8]
37
+ depth : NDArray[np.uint8]
38
38
  Color depth of the images in bits
39
- brightness: NDArray[np.float16]
39
+ brightness : NDArray[np.float16]
40
40
  Brightness of the images
41
- blurriness: NDArray[np.float16]
41
+ blurriness : NDArray[np.float16]
42
42
  Blurriness of the images
43
- missing: NDArray[np.float16]
43
+ contrast : NDArray[np.float16]
44
+ Image contrast ratio
45
+ darkness : NDArray[np.float16]
46
+ Darkness of the images
47
+ missing : NDArray[np.float16]
44
48
  Percentage of the images with missing pixels
45
- zero: NDArray[np.float16]
49
+ zeros : NDArray[np.float16]
46
50
  Percentage of the images with zero value pixels
47
- mean: NDArray[np.float16]
51
+ mean : NDArray[np.float16]
48
52
  Mean of the pixel values of the images
49
- std: NDArray[np.float16]
53
+ std : NDArray[np.float16]
50
54
  Standard deviation of the pixel values of the images
51
- var: NDArray[np.float16]
55
+ var : NDArray[np.float16]
52
56
  Variance of the pixel values of the images
53
- skew: NDArray[np.float16]
57
+ skew : NDArray[np.float16]
54
58
  Skew of the pixel values of the images
55
- kurtosis: NDArray[np.float16]
59
+ kurtosis : NDArray[np.float16]
56
60
  Kurtosis of the pixel values of the images
57
- percentiles: NDArray[np.float16]
61
+ percentiles : NDArray[np.float16]
58
62
  Percentiles of the pixel values of the images with quartiles of (0, 25, 50, 75, 100)
59
- histogram: NDArray[np.uint32]
63
+ histogram : NDArray[np.uint32]
60
64
  Histogram of the pixel values of the images across 256 bins scaled between 0 and 1
61
- entropy: NDArray[np.float16]
65
+ entropy : NDArray[np.float16]
62
66
  Entropy of the pixel values of the images
63
- ch_idx_map: Dict[int, List[int]]
67
+ ch_idx_map : Dict[int, List[int]]
64
68
  Per-channel mapping of indices for each metric
65
69
  """
66
70
 
@@ -74,8 +78,10 @@ class StatsOutput(OutputMetadata):
74
78
  depth: NDArray[np.uint8]
75
79
  brightness: NDArray[np.float16]
76
80
  blurriness: NDArray[np.float16]
81
+ contrast: NDArray[np.float16]
82
+ darkness: NDArray[np.float16]
77
83
  missing: NDArray[np.float16]
78
- zero: NDArray[np.float16]
84
+ zeros: NDArray[np.float16]
79
85
  mean: NDArray[np.float16]
80
86
  std: NDArray[np.float16]
81
87
  var: NDArray[np.float16]
@@ -111,27 +117,33 @@ IMAGESTATS_FN_MAP: dict[ImageStat, Callable[[NDArray], Any]] = {
111
117
  ImageStat.SIZE: lambda x: np.uint32(np.prod(x.shape[-2:])),
112
118
  ImageStat.ASPECT_RATIO: lambda x: np.float16(x.shape[-1] / x.shape[-2]),
113
119
  ImageStat.DEPTH: lambda x: np.uint8(get_bitdepth(x).depth),
114
- ImageStat.BRIGHTNESS: lambda x: np.float16(np.mean(x)),
120
+ ImageStat.BRIGHTNESS: lambda x: x[-2],
115
121
  ImageStat.BLURRINESS: lambda x: np.float16(np.std(edge_filter(np.mean(x, axis=0)))),
122
+ ImageStat.CONTRAST: lambda x: np.float16((np.max(x) - np.min(x)) / np.mean(x)),
123
+ ImageStat.DARKNESS: lambda x: x[1],
116
124
  ImageStat.MISSING: lambda x: np.float16(np.sum(np.isnan(x)) / np.prod(x.shape[-2:])),
117
- ImageStat.ZERO: lambda x: np.float16(np.count_nonzero(x == 0) / np.prod(x.shape[-2:])),
125
+ ImageStat.ZEROS: lambda x: np.float16(np.count_nonzero(x == 0) / np.prod(x.shape[-2:])),
118
126
  ImageStat.MEAN: lambda x: np.float16(np.mean(x)),
119
127
  ImageStat.STD: lambda x: np.float16(np.std(x)),
120
128
  ImageStat.VAR: lambda x: np.float16(np.var(x)),
121
129
  ImageStat.SKEW: lambda x: np.float16(skew(x.ravel())),
122
130
  ImageStat.KURTOSIS: lambda x: np.float16(kurtosis(x.ravel())),
123
- ImageStat.PERCENTILES: lambda x: np.float16(np.percentile(x, q=QUARTILES)),
131
+ ImageStat.PERCENTILES: lambda x: np.float16(np.nanpercentile(x, q=QUARTILES)),
124
132
  ImageStat.HISTOGRAM: lambda x: np.uint32(np.histogram(x, 256, (0, 1))[0]),
125
133
  ImageStat.ENTROPY: lambda x: np.float16(entropy(x)),
126
134
  }
127
135
 
128
136
  CHANNELSTATS_FN_MAP: dict[ImageStat, Callable[[NDArray], Any]] = {
137
+ ImageStat.BRIGHTNESS: lambda x: np.float16((np.max(x, axis=1) - np.mean(x, axis=1)) / np.var(x, axis=1)),
138
+ ImageStat.CONTRAST: lambda x: np.float16((np.max(x, axis=1) - np.min(x, axis=1)) / np.mean(x, axis=1)),
139
+ ImageStat.DARKNESS: lambda x: np.float16((np.mean(x, axis=1) - np.min(x, axis=1)) / np.var(x, axis=1)),
140
+ ImageStat.ZEROS: lambda x: np.float16(np.count_nonzero(x == 0, axis=(1, 2)) / np.prod(x.shape[-2:])),
129
141
  ImageStat.MEAN: lambda x: np.float16(np.mean(x, axis=1)),
130
142
  ImageStat.STD: lambda x: np.float16(np.std(x, axis=1)),
131
143
  ImageStat.VAR: lambda x: np.float16(np.var(x, axis=1)),
132
144
  ImageStat.SKEW: lambda x: np.float16(skew(x, axis=1)),
133
145
  ImageStat.KURTOSIS: lambda x: np.float16(kurtosis(x, axis=1)),
134
- ImageStat.PERCENTILES: lambda x: np.float16(np.percentile(x, q=QUARTILES, axis=1).T),
146
+ ImageStat.PERCENTILES: lambda x: np.float16(np.nanpercentile(x, q=QUARTILES, axis=1).T),
135
147
  ImageStat.HISTOGRAM: lambda x: np.uint32(np.apply_along_axis(lambda y: np.histogram(y, 256, (0, 1))[0], 1, x)),
136
148
  ImageStat.ENTROPY: lambda x: np.float16(entropy(x, axis=1)),
137
149
  }
@@ -195,15 +207,20 @@ def run_stats(
195
207
  normalized = normalize_image_shape(image)
196
208
  scaled = None
197
209
  hist = None
210
+ percentiles = None
198
211
  output: dict[str, NDArray] = {}
199
212
  for flag, stat in flag_dict.items():
200
- if flag & (ImageStat.ALL_PIXELSTATS | ImageStat.BRIGHTNESS):
213
+ if flag & (ImageStat.ALL_PIXELSTATS | ImageStat.BRIGHTNESS | ImageStat.CONTRAST | ImageStat.DARKNESS):
201
214
  if scaled is None:
202
215
  scaled = rescale(normalized).reshape(image.shape[0], -1) if flatten else rescale(normalized)
203
216
  if flag & (ImageStat.HISTOGRAM | ImageStat.ENTROPY):
204
217
  if hist is None:
205
218
  hist = fn_map[ImageStat.HISTOGRAM](scaled)
206
219
  output[stat] = hist if flag & ImageStat.HISTOGRAM else fn_map[flag](hist)
220
+ elif flag & (ImageStat.BRIGHTNESS | ImageStat.DARKNESS | ImageStat.PERCENTILES):
221
+ if percentiles is None:
222
+ percentiles = fn_map[ImageStat.PERCENTILES](scaled)
223
+ output[stat] = percentiles if flag & ImageStat.PERCENTILES else fn_map[flag](percentiles)
207
224
  else:
208
225
  output[stat] = fn_map[flag](scaled)
209
226
  else:
@@ -236,6 +253,10 @@ def imagestats(images: Iterable[ArrayLike], flags: ImageStat = ImageStat.ALL_STA
236
253
  to the names of the statistics (e.g., 'mean', 'std'), and the values are lists of results for
237
254
  each image or numpy arrays when the results are multi-dimensional.
238
255
 
256
+ See Also
257
+ --------
258
+ ImageStat, channelstats, Outliers, Duplicates
259
+
239
260
  Notes
240
261
  -----
241
262
  - All metrics in the ImageStat.ALL_PIXELSTATS flag are scaled based on the perceived bit depth
@@ -256,7 +277,7 @@ def imagestats(images: Iterable[ArrayLike], flags: ImageStat = ImageStat.ALL_STA
256
277
  0.56152344 0.58837891 0.61230469 0.63671875 0.65771484 0.68505859
257
278
  0.70947266 0.73388672 0.75488281 0.78271484 0.80712891 0.83203125
258
279
  0.85302734 0.88134766 0.90625 0.93115234]
259
- >>> print(results.zero)
280
+ >>> print(results.zeros)
260
281
  [0.12561035 0. 0. 0. 0.11730957 0.
261
282
  0. 0. 0.10986328 0. 0. 0.
262
283
  0.10266113 0. 0. 0. 0.09570312 0.
@@ -279,7 +300,7 @@ def imagestats(images: Iterable[ArrayLike], flags: ImageStat = ImageStat.ALL_STA
279
300
 
280
301
 
281
302
  @set_metadata("dataeval.metrics")
282
- def channelstats(images: Iterable[ArrayLike], flags=ImageStat.ALL_PIXELSTATS) -> StatsOutput:
303
+ def channelstats(images: Iterable[ArrayLike], flags=ImageStat.ALL_CHANNEL_STATS) -> StatsOutput:
283
304
  """
284
305
  Calculates pixel statistics for each image per channel
285
306
 
@@ -291,9 +312,9 @@ def channelstats(images: Iterable[ArrayLike], flags=ImageStat.ALL_PIXELSTATS) ->
291
312
  ----------
292
313
  images : ArrayLike
293
314
  Images to run statistical tests on
294
- flags: ImageStat, default ImageStat.ALL_PIXELSTATS
315
+ flags: ImageStat, default ImageStat.ALL_CHANNEL_STATS
295
316
  Metric(s) to calculate for each image per channel.
296
- Only flags within the ``ImageStat.ALL_PIXELSTATS`` category are supported.
317
+ Only flags within the ``ImageStat.ALL_CHANNEL_STATS`` category are supported.
297
318
 
298
319
  Returns
299
320
  -------
@@ -302,9 +323,14 @@ def channelstats(images: Iterable[ArrayLike], flags=ImageStat.ALL_PIXELSTATS) ->
302
323
  correspond to the names of the statistics (e.g., 'mean', 'variance'), and the values are numpy arrays
303
324
  with results for each channel of each image.
304
325
 
326
+ See Also
327
+ --------
328
+ ImageStat, imagestats, Outliers, Duplicates
329
+
305
330
  Notes
306
331
  -----
307
- - All metrics in the ImageStat.ALL_PIXELSTATS flag are scaled based on the perceived bit depth
332
+ - All metrics in the ImageStat.ALL_PIXELSTATS flag along with ImageStat.Brightness,
333
+ ImageStat.Contrast and ImageStat.Darkness are scaled based on the perceived bit depth
308
334
  (which is derived from the largest pixel value) to allow for better comparison
309
335
  between images stored in different formats and different resolutions.
310
336
 
@@ -351,7 +377,6 @@ def channelstats(images: Iterable[ArrayLike], flags=ImageStat.ALL_PIXELSTATS) ->
351
377
  dtype=float16)}
352
378
  """
353
379
  stats = run_stats(images, flags, CHANNELSTATS_FN_MAP, True)
354
-
355
380
  output = {}
356
381
  for i, results in enumerate(stats):
357
382
  for stat, result in results.items():
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dataeval
3
- Version: 0.69.1
3
+ Version: 0.69.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
  Home-page: https://dataeval.ai/
6
6
  License: MIT
@@ -1,11 +1,11 @@
1
- dataeval/__init__.py,sha256=3SifrN4Hxbq4UYefNks33s3-BeHPMBOYDR4DfK-GY-o,590
1
+ dataeval/__init__.py,sha256=NUQixSNyEc0GiI7YgbfY9IL0OEkIN9kdbrOGAB041Ig,590
2
2
  dataeval/_internal/detectors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  dataeval/_internal/detectors/clusterer.py,sha256=hJwELUeAdZZ3OVLIfwalw2P7Zz13q2ZqrV6gx90s44E,20695
4
4
  dataeval/_internal/detectors/drift/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- dataeval/_internal/detectors/drift/base.py,sha256=_VhfFluyztcHLGOvbTb01panHJXb_wqAa0XIkoWgaPI,15784
5
+ dataeval/_internal/detectors/drift/base.py,sha256=XSX1VVUxvFFKVFQVsc2WWeaRRmIxuYaIgD_c5H4OraA,15930
6
6
  dataeval/_internal/detectors/drift/cvm.py,sha256=xiyZlf0rAQGG8Z6ZBLPVri805aPRkERrUySwRN8cTZQ,4010
7
7
  dataeval/_internal/detectors/drift/ks.py,sha256=aoDx7ps-5vrSI8Q9ii6cwmKnAyaD8tjG69wI-7R3MVQ,4098
8
- dataeval/_internal/detectors/drift/mmd.py,sha256=xUMQDaLOcqc3Uq2xDvNR7hbt3WnmCR2etZlGCwYlu2c,7489
8
+ dataeval/_internal/detectors/drift/mmd.py,sha256=j85bwzCiFLNS27WlUFlgpHDMD9yga41ILt-yAr-LABc,7493
9
9
  dataeval/_internal/detectors/drift/torch.py,sha256=YhIN85MbUV3C4IJcRvqYdXSWLj5lUeEOb05T5DgB3xo,11552
10
10
  dataeval/_internal/detectors/drift/uncertainty.py,sha256=Ot8L42AnFbkij4J3Tis7VzXLv3hfBxoOWBP4UoCEnVs,5125
11
11
  dataeval/_internal/detectors/duplicates.py,sha256=qkzbdWuJuUozFLqpnD6CYAGXQb7-aWw2mHr_cxXAfPo,4922
@@ -17,8 +17,8 @@ dataeval/_internal/detectors/ood/base.py,sha256=Pw34uFEWOJZiG4ciM0ArUkqhiM8WCGl2
17
17
  dataeval/_internal/detectors/ood/llr.py,sha256=tCo8G7V8VaVuIZ09rg0ZXZmdE0N_zGm7vCfFUnGbGvo,10102
18
18
  dataeval/_internal/detectors/ood/vae.py,sha256=WbQugS-bBUTTqQ9PRLHBmSUtk7O2_PN4PBLJE9ieMjw,2921
19
19
  dataeval/_internal/detectors/ood/vaegmm.py,sha256=pVUSlVF2jo8uokyks2QzfBJnNtcFWmcF8EQl-azs2Bg,2832
20
- dataeval/_internal/detectors/outliers.py,sha256=tzIraHkooPA4gSb8lG0O3koVK-9fOQg8EPo3xvgL1Y4,7533
21
- dataeval/_internal/flags.py,sha256=FHRgm8NKB9AjQgPcAESYeSbqIszgxbSGfF0Xd_tSkyk,2169
20
+ dataeval/_internal/detectors/outliers.py,sha256=oS8lsCPIM6WtLzUjpMZDfiopZA2fJhsHakmSzZUhqHU,7614
21
+ dataeval/_internal/flags.py,sha256=5hZ5AHXjXRKbWtFC45-J7M9NvJHsT4LKRsPzPMksgfQ,2323
22
22
  dataeval/_internal/interop.py,sha256=x4qj4EiBt5NthSxe8prSLrPDAEcipAdyyLwbNyCBaFk,1059
23
23
  dataeval/_internal/metrics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
24
  dataeval/_internal/metrics/balance.py,sha256=eAHvgjiGCH893XSQLqh9j9wgvAECoNPVT8k0u_9Ijzg,6097
@@ -27,7 +27,7 @@ dataeval/_internal/metrics/coverage.py,sha256=EZVES1rbZW2j_CtQv1VFfSO-UmWcrt5nmq
27
27
  dataeval/_internal/metrics/divergence.py,sha256=nmMUfr9FGnH798eb6xzEiMj4C42rQVthh5HeexiY6EE,4119
28
28
  dataeval/_internal/metrics/diversity.py,sha256=nGjYQ-NLjb8mPt1PAYnvkWH4D58kjM39IPs2FULfis4,7503
29
29
  dataeval/_internal/metrics/parity.py,sha256=suv1Pf7gPj0_NxsS0_M6ewfUndsFJyEhbt5NPp6ktMI,15457
30
- dataeval/_internal/metrics/stats.py,sha256=-gLGn8Yy-Xx0kkaF-Z_3RitqPLZJhhbflksSjBRN3iY,16702
30
+ dataeval/_internal/metrics/stats.py,sha256=ILKteVMGjrp1s2CECPL_hbLsijIKR2d6II2-8w9oxW8,18105
31
31
  dataeval/_internal/metrics/uap.py,sha256=w-wvXXnX16kUq-weaZD2SrJi22LJ8EjOFbOhPxeGejI,2043
32
32
  dataeval/_internal/metrics/utils.py,sha256=mSYa-3cHGcsQwPr7zbdpzrnK_8jIXCiAcu2HCcvrtaY,13007
33
33
  dataeval/_internal/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -67,7 +67,7 @@ dataeval/torch/models/__init__.py,sha256=YnDnePYpRIKHyYn3F5qR1OObMSb-g0FGvI8X-uT
67
67
  dataeval/torch/trainer/__init__.py,sha256=Te-qElt8h-Zv8NN0r-VJOEdCPHTQ2yO3rd2MhRiZGZs,93
68
68
  dataeval/utils/__init__.py,sha256=ExQ1xj62MjcM9uIu1-g1P2fW0EPJpcIofnvxjQ908c4,172
69
69
  dataeval/workflows/__init__.py,sha256=gkU2B6yUiefexcYrBwqfZKNl8BvX8abUjfeNvVBXF4E,186
70
- dataeval-0.69.1.dist-info/LICENSE.txt,sha256=Kpzcfobf1HlqafF-EX6dQLw9TlJiaJzfgvLQFukyXYw,1060
71
- dataeval-0.69.1.dist-info/METADATA,sha256=EkdyrJL_IVcApuOelyxLzd-EWdA-B1XH491v4o1O3ig,4217
72
- dataeval-0.69.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
73
- dataeval-0.69.1.dist-info/RECORD,,
70
+ dataeval-0.69.2.dist-info/LICENSE.txt,sha256=Kpzcfobf1HlqafF-EX6dQLw9TlJiaJzfgvLQFukyXYw,1060
71
+ dataeval-0.69.2.dist-info/METADATA,sha256=_9rVrbIh4EPYStZtOUYnB-Xo3cZ5JMUAf06TqDKvrZs,4217
72
+ dataeval-0.69.2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
73
+ dataeval-0.69.2.dist-info/RECORD,,