dataeval 0.61.0__py3-none-any.whl → 0.64.0__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.
Files changed (36) hide show
  1. dataeval/__init__.py +3 -3
  2. dataeval/_internal/detectors/clusterer.py +45 -16
  3. dataeval/_internal/detectors/drift/base.py +15 -12
  4. dataeval/_internal/detectors/drift/cvm.py +12 -8
  5. dataeval/_internal/detectors/drift/ks.py +7 -3
  6. dataeval/_internal/detectors/drift/mmd.py +15 -12
  7. dataeval/_internal/detectors/drift/uncertainty.py +6 -5
  8. dataeval/_internal/detectors/duplicates.py +35 -11
  9. dataeval/_internal/detectors/linter.py +85 -16
  10. dataeval/_internal/detectors/ood/ae.py +7 -5
  11. dataeval/_internal/detectors/ood/aegmm.py +6 -5
  12. dataeval/_internal/detectors/ood/base.py +15 -13
  13. dataeval/_internal/detectors/ood/llr.py +8 -5
  14. dataeval/_internal/detectors/ood/vae.py +6 -4
  15. dataeval/_internal/detectors/ood/vaegmm.py +6 -4
  16. dataeval/_internal/interop.py +43 -0
  17. dataeval/_internal/metrics/balance.py +180 -0
  18. dataeval/_internal/metrics/base.py +2 -84
  19. dataeval/_internal/metrics/ber.py +77 -53
  20. dataeval/_internal/metrics/coverage.py +80 -55
  21. dataeval/_internal/metrics/divergence.py +62 -54
  22. dataeval/_internal/metrics/diversity.py +206 -0
  23. dataeval/_internal/metrics/parity.py +292 -163
  24. dataeval/_internal/metrics/stats.py +48 -35
  25. dataeval/_internal/metrics/uap.py +31 -26
  26. dataeval/_internal/metrics/utils.py +237 -2
  27. dataeval/_internal/utils.py +64 -0
  28. dataeval/_internal/workflows/__init__.py +0 -0
  29. dataeval/metrics/__init__.py +25 -5
  30. dataeval/utils/__init__.py +9 -0
  31. {dataeval-0.61.0.dist-info → dataeval-0.64.0.dist-info}/METADATA +1 -2
  32. dataeval-0.64.0.dist-info/RECORD +60 -0
  33. dataeval/_internal/metrics/hash.py +0 -79
  34. dataeval-0.61.0.dist-info/RECORD +0 -55
  35. {dataeval-0.61.0.dist-info → dataeval-0.64.0.dist-info}/LICENSE.txt +0 -0
  36. {dataeval-0.61.0.dist-info → dataeval-0.64.0.dist-info}/WHEEL +0 -0
@@ -0,0 +1,60 @@
1
+ dataeval/__init__.py,sha256=5krxzT8KNetiYE6ByxRgCTbHG7EHH-Fm9Fof6Ta3fUo,424
2
+ dataeval/_internal/detectors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
+ dataeval/_internal/detectors/clusterer.py,sha256=6VklhUH8FvS2ATUAgb-7Q4XYHvQrDMZtkYeFnEznMfU,20328
4
+ dataeval/_internal/detectors/drift/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
+ dataeval/_internal/detectors/drift/base.py,sha256=TRm-FcSM7Nv6nxqfyIzVZ_ysGdUmyqa5okNp7-gVZAY,9127
6
+ dataeval/_internal/detectors/drift/cvm.py,sha256=cnAJZsBrvLsRaAUSgFvhX-ZNzE6V-s5irySvRW5-dOs,4025
7
+ dataeval/_internal/detectors/drift/ks.py,sha256=Bfv-hVbghfGbRGEp_aGpkP5G2TnW6E5wIGdfx7nmZT0,4028
8
+ dataeval/_internal/detectors/drift/mmd.py,sha256=RX_djx_rC9NQNdapTeNplP6x-4-JiMBYfIUNarakjNg,7056
9
+ dataeval/_internal/detectors/drift/torch.py,sha256=NsQYfDVRcCGmU8k6oBG_aVzmML1zre-xUKBVK1W680o,10872
10
+ dataeval/_internal/detectors/drift/uncertainty.py,sha256=jiqibgOmk37n2qBP-fEAE0Z-dUxyBRptQdT1V52yCxg,5323
11
+ dataeval/_internal/detectors/duplicates.py,sha256=0m7E7EAvUHGfaVzQ_KgKbqDBW1jo8XrRd82uKRn1Gf0,2155
12
+ dataeval/_internal/detectors/linter.py,sha256=Dmy5Rfuxf3jlGNK6DO6qo3puN_X1yh8N4svSem1vysE,5278
13
+ dataeval/_internal/detectors/ood/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
+ dataeval/_internal/detectors/ood/ae.py,sha256=FjqMucicFsDIKJMAOjWpKBohrPM4F1ubFLJk91GVqio,2681
15
+ dataeval/_internal/detectors/ood/aegmm.py,sha256=Kf9R5q-hoRg6RUHlJG-2oo52ZKeQmJQbxG0kFtHh6zA,2416
16
+ dataeval/_internal/detectors/ood/base.py,sha256=AfbNF_l8h1lDQ41SKlCHYWFjJ9YfAXuMMG3z9f973fM,6973
17
+ dataeval/_internal/detectors/ood/llr.py,sha256=alel7l8hhvBNErAkDtcpjL1IzWRDNcIwWV1eX6KDjEI,10172
18
+ dataeval/_internal/detectors/ood/vae.py,sha256=ntabTTTmPhJ18giZ7A64mxpJvTH9pIHmHPGGnu-gA8g,2987
19
+ dataeval/_internal/detectors/ood/vaegmm.py,sha256=opBfFLuXEAIMa8E6scwf-GWbZbuXnsqXlXTbLN4MoYg,2861
20
+ dataeval/_internal/flags.py,sha256=dRApeFkdSXFbYHSmvzgUP78zH8jUGtfzKFfLQtX0Q18,883
21
+ dataeval/_internal/interop.py,sha256=wkNsLlmYYSHZqq0T204x8j9DIGIue9V2S0WQGPKQD6Y,1030
22
+ dataeval/_internal/metrics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
+ dataeval/_internal/metrics/balance.py,sha256=i6m7qHSiY2TrKGneQtEpLWDPBkoqxCZsbVhoKnkwv1E,6421
24
+ dataeval/_internal/metrics/base.py,sha256=TIreZWP1ynntqmDUu7-UED_Y3WpVrF28vGb6gZfqMIg,318
25
+ dataeval/_internal/metrics/ber.py,sha256=9NxMCS78KsCLag2ZYJ-G16pgReSrkEfWm1hl-S5h_yU,4560
26
+ dataeval/_internal/metrics/coverage.py,sha256=UKfvtAPIl043qCxfrLaWrEzyJGgrLdPM3AIvNi6wl8k,3744
27
+ dataeval/_internal/metrics/divergence.py,sha256=JNQVRHt363iEZucQ3Fq3Re2PbA0I1dR7a0TJSkMRX64,3238
28
+ dataeval/_internal/metrics/diversity.py,sha256=Lnc5QD6LcxLrFR9wHWg1FspD2KuKZTVht_MUzgN1EKs,6965
29
+ dataeval/_internal/metrics/parity.py,sha256=6c0WpIoyM7hRsPELnyT2Qi_UYNcRVbXd_e7-i3-kuYI,11637
30
+ dataeval/_internal/metrics/stats.py,sha256=T7VM4g5zhJIhfpw4XGDgleojhEqUI3NwsabYuzZ_g8w,12581
31
+ dataeval/_internal/metrics/uap.py,sha256=9oMG_MhTYiNf2KCZ-fHlCUGBzsdXEVpvakHqVVMsM2s,1174
32
+ dataeval/_internal/metrics/utils.py,sha256=f1-R0yCUb0r7Fb0H25o7MGRFrseX4WkJDdzgPuYMfoc,12302
33
+ dataeval/_internal/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
+ dataeval/_internal/models/pytorch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
+ dataeval/_internal/models/pytorch/autoencoder.py,sha256=iK3Z9claesU_pJkRaiFJIZ9zKZg-Qj8ugzVYTTokDbE,6123
36
+ dataeval/_internal/models/pytorch/blocks.py,sha256=pm2xwsDZjZJYXrhhiz8husvh2vHmrkFMSYEn-EDUD5Q,1354
37
+ dataeval/_internal/models/pytorch/utils.py,sha256=Qgwym1PxGuwxbXCKUT-8r6Iyrxqm7x94oj45Vf5_CjE,1675
38
+ dataeval/_internal/models/tensorflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
+ dataeval/_internal/models/tensorflow/autoencoder.py,sha256=rErnOfDFTd7e4brSGQ2Lr1x1kNjSEHdbOREOtUfIhIM,9975
40
+ dataeval/_internal/models/tensorflow/gmm.py,sha256=wnqQKm3fURuvBROUd2fitCqzKViDo-g0-Djr3TBHZ3U,3640
41
+ dataeval/_internal/models/tensorflow/losses.py,sha256=3y6tHm7PTQ7hmasJDwTXjdARjCUWycoXqSyXJ1uT2mM,3766
42
+ dataeval/_internal/models/tensorflow/pixelcnn.py,sha256=B5cwB2IGPw-7b8klt82j_60g_IvqSiDELxvbiBYJtAo,48068
43
+ dataeval/_internal/models/tensorflow/trainer.py,sha256=2KHtMRniVselCaDXeb8QEfX-wMRsPfT1xiG2gUQgelg,4090
44
+ dataeval/_internal/models/tensorflow/utils.py,sha256=uK_fQ1JXUSVi0kgnhd9eRArlr36OzXUEdL4inJZCs-8,8579
45
+ dataeval/_internal/utils.py,sha256=umvc_vN5c5IR0lz2F1U2YjA3VZloKTAEp9BQx8rSk6g,1561
46
+ dataeval/_internal/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
+ dataeval/_internal/workflows/sufficiency.py,sha256=QZQdhERVr3EmPA2sAFFudSDL4KLM0eAvYgV38jhjzaI,18374
48
+ dataeval/detectors/__init__.py,sha256=I2e7YWb55RRlKQll85Z6KdN5wdBa53smn-_fcZIsCwA,1507
49
+ dataeval/flags/__init__.py,sha256=1-HmwmtfPkHWwqXUjDwWko396qAKBeaSvqVsQZLrzD0,170
50
+ dataeval/metrics/__init__.py,sha256=pY6E04nEkbSTQsWJ4rNFlkvcT3-aWSEO1dOctynSotg,787
51
+ dataeval/models/__init__.py,sha256=onevPb5wznCggowBnVT0OUa8uBJXZCbrkFuek1UFvOs,293
52
+ dataeval/models/tensorflow/__init__.py,sha256=A1XRxVGHefuvh_WpaKE1x95pRD1FecuFp66iuNPA_5U,424
53
+ dataeval/models/torch/__init__.py,sha256=su7P9DF9LChlVCNHWG6d7s_yeIfWQbhCYWIkzJe0Qig,190
54
+ dataeval/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
+ dataeval/utils/__init__.py,sha256=bgUXeumTEspt2Q76YyEliGrnS-_incswY-pDexPdSCc,229
56
+ dataeval/workflows/__init__.py,sha256=ObgS1cVYFRzFZWbNzGs2OcU02IVkJkAMHNnlnSNTMCE,208
57
+ dataeval-0.64.0.dist-info/LICENSE.txt,sha256=Kpzcfobf1HlqafF-EX6dQLw9TlJiaJzfgvLQFukyXYw,1060
58
+ dataeval-0.64.0.dist-info/METADATA,sha256=HUYwlnRhnTLqcZQ9wDo0ZVpzpeak0CiQgKMKdg39MHE,4217
59
+ dataeval-0.64.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
60
+ dataeval-0.64.0.dist-info/RECORD,,
@@ -1,79 +0,0 @@
1
- import numpy as np
2
- import xxhash as xxh
3
- from PIL import Image
4
- from scipy.fftpack import dct
5
-
6
- from dataeval._internal.metrics.utils import normalize_image_shape, rescale
7
-
8
- HASH_SIZE = 8
9
- MAX_FACTOR = 4
10
-
11
-
12
- def pchash(image: np.ndarray) -> str:
13
- """
14
- Performs a perceptual hash on an image by resizing to a square NxN image
15
- using the Lanczos algorithm where N is 32x32 or the largest multiple of
16
- 8 that is smaller than the input image dimensions. The resampled image
17
- is compressed using a discrete cosine transform and the lowest frequency
18
- component is encoded as a bit array of greater or less than median value
19
- and returned as a hex string.
20
-
21
- Parameters
22
- ----------
23
- image : np.ndarray
24
- An image as a numpy array in CxHxW format
25
-
26
- Returns
27
- -------
28
- str
29
- The hex string hash of the image using perceptual hashing
30
- """
31
- # Verify that the image is at least larger than an 8x8 image
32
- min_dim = min(image.shape[-2:])
33
- if min_dim < HASH_SIZE + 1:
34
- raise ValueError(f"Image must be larger than {HASH_SIZE}x{HASH_SIZE} for fuzzy hashing.")
35
-
36
- # Calculates the dimensions of the resized square image
37
- resize_dim = HASH_SIZE * min((min_dim - 1) // HASH_SIZE, MAX_FACTOR)
38
-
39
- # Normalizes the image to CxHxW and takes the mean over all the channels
40
- normalized = np.mean(normalize_image_shape(image), axis=0).squeeze()
41
-
42
- # Rescales the pixel values to an 8-bit 0-255 image
43
- rescaled = rescale(normalized, 8).astype(np.uint8)
44
-
45
- # Resizes the image using the Lanczos algorithm to a square image
46
- im = np.array(Image.fromarray(rescaled).resize((resize_dim, resize_dim), Image.Resampling.LANCZOS))
47
-
48
- # Performs discrete cosine transforms to compress the image information and takes the lowest frequency component
49
- transform = dct(dct(im.T).T)[:HASH_SIZE, :HASH_SIZE]
50
-
51
- # Encodes the transform as a bit array over the median value
52
- diff = transform > np.median(transform)
53
-
54
- # Pads the front of the bit array to a multiple of 8 with False
55
- padded = np.full(int(np.ceil(diff.size / 8) * 8), False)
56
- padded[-diff.size :] = diff.ravel()
57
-
58
- # Converts the bit array to a hex string and strips leading 0s
59
- hash_hex = np.packbits(padded).tobytes().hex().lstrip("0")
60
- return hash_hex if hash_hex else "0"
61
-
62
-
63
- def xxhash(image: np.ndarray) -> str:
64
- """
65
- Performs a fast non-cryptographic hash using the xxhash algorithm
66
- (xxhash.com) against the image as a flattened bytearray. The hash
67
- is returned as a hex string.
68
-
69
- Parameters
70
- ----------
71
- image : np.ndarray
72
- An image as a numpy array
73
-
74
- Returns
75
- -------
76
- str
77
- The hex string hash of the image using the xxHash algorithm
78
- """
79
- return xxh.xxh3_64_hexdigest(image.ravel().tobytes())
@@ -1,55 +0,0 @@
1
- dataeval/__init__.py,sha256=hoMLXpAqvfNQ6BtdLD49hOXWMUp5_4zBg_IPeuGPyZA,408
2
- dataeval/_internal/detectors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- dataeval/_internal/detectors/clusterer.py,sha256=zuWW7qfbQWQ777TqBOsDp2_fEbFmuUzNqOvTWv8xijo,19193
4
- dataeval/_internal/detectors/drift/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- dataeval/_internal/detectors/drift/base.py,sha256=b6_kUHGPtfDnN6S9gNkldpoaGwdRKw6ohGI4wGega24,8981
6
- dataeval/_internal/detectors/drift/cvm.py,sha256=3YePeStvRSKVFqHEWshngXhJTCh3cn9-9B-Ou7FQHgM,3897
7
- dataeval/_internal/detectors/drift/ks.py,sha256=PW4qB4XbDUhVxpKJeA39-0GYVgeAxWggipBh2bhKDKg,3924
8
- dataeval/_internal/detectors/drift/mmd.py,sha256=ZJu28o6Brs0-pt3PVY2ysMKVfLYXaEz754I-lSLn1hM,6965
9
- dataeval/_internal/detectors/drift/torch.py,sha256=NsQYfDVRcCGmU8k6oBG_aVzmML1zre-xUKBVK1W680o,10872
10
- dataeval/_internal/detectors/drift/uncertainty.py,sha256=WeTQWZDL00-cs50neoJzs_9xBIdo-xxcj6bx0DApCQY,5263
11
- dataeval/_internal/detectors/duplicates.py,sha256=6MVsopmgA4NccWtriHHvz_3y3tgWWu_vzFcxpXgS5DI,1469
12
- dataeval/_internal/detectors/linter.py,sha256=Y8XIAbzMUe1UuYQLsZ1UyF1yVle2ExuzUmDQD2TF0z0,2792
13
- dataeval/_internal/detectors/ood/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- dataeval/_internal/detectors/ood/ae.py,sha256=nM-uI-7h548yEc25iKlPYXTdG6RqDPA7Mup5IqPW7cg,2576
15
- dataeval/_internal/detectors/ood/aegmm.py,sha256=05yOyP1RDOqVWW30weW_YAgciwBYsUJy35nPSuKQD10,2340
16
- dataeval/_internal/detectors/ood/base.py,sha256=IxDhU4T8vlURvKkqakrwgUnWhl5a_u9_kXvrKkzWrog,6771
17
- dataeval/_internal/detectors/ood/llr.py,sha256=EGgj1LV0qq-fE9RoWwL_6WXPaSTfhbnXkq25VtTiB3s,10029
18
- dataeval/_internal/detectors/ood/vae.py,sha256=uh0QJ3b1_SQllHhb7BSt7IV369dmHjlU5PBwrOMesQg,2892
19
- dataeval/_internal/detectors/ood/vaegmm.py,sha256=Yr5dKWSEcfP0xqqHJIM98QhS62oS8aYMj6edl26bKHI,2766
20
- dataeval/_internal/flags.py,sha256=dRApeFkdSXFbYHSmvzgUP78zH8jUGtfzKFfLQtX0Q18,883
21
- dataeval/_internal/metrics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
- dataeval/_internal/metrics/base.py,sha256=hUxJO-k0L7_nfach6xMW96YuMuu--A8Ypz7plYKGQA8,2623
23
- dataeval/_internal/metrics/ber.py,sha256=HI2Cn-YWkqPz-mVZ8JgwubgjKYFyquq7L3yuKo-s8vc,3970
24
- dataeval/_internal/metrics/coverage.py,sha256=eSOiCyqTN6t9OnhgFcPOp6HIReQvNL3tw6PzenrJ8aw,2700
25
- dataeval/_internal/metrics/divergence.py,sha256=aihP84c8SUQ7IMUmBebFKtJxbH9VDfV_R-QtWEdUkvA,2823
26
- dataeval/_internal/metrics/hash.py,sha256=5hdxMU2mFA9GxjF1MfhE_ztjJh7Ku1XpP82B_N54dwc,2782
27
- dataeval/_internal/metrics/parity.py,sha256=9JunlLgrdbB2EPDKEtUDQnkBrsNiFJZD58dg3lSiYgE,6823
28
- dataeval/_internal/metrics/stats.py,sha256=WnuO0tNnpz7mYi5_rmxdk8wZoEZFczo1DrV828lgcVk,12118
29
- dataeval/_internal/metrics/uap.py,sha256=7QmJb-wM2B6c9ORa9kAar657KhDFScjNOGhpbuTv8YA,1149
30
- dataeval/_internal/metrics/utils.py,sha256=u1kkGtS0irnx9dZTo9MahA-_4_uIorPDttQkBe8iU7U,4120
31
- dataeval/_internal/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
- dataeval/_internal/models/pytorch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
- dataeval/_internal/models/pytorch/autoencoder.py,sha256=iK3Z9claesU_pJkRaiFJIZ9zKZg-Qj8ugzVYTTokDbE,6123
34
- dataeval/_internal/models/pytorch/blocks.py,sha256=pm2xwsDZjZJYXrhhiz8husvh2vHmrkFMSYEn-EDUD5Q,1354
35
- dataeval/_internal/models/pytorch/utils.py,sha256=Qgwym1PxGuwxbXCKUT-8r6Iyrxqm7x94oj45Vf5_CjE,1675
36
- dataeval/_internal/models/tensorflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
- dataeval/_internal/models/tensorflow/autoencoder.py,sha256=rErnOfDFTd7e4brSGQ2Lr1x1kNjSEHdbOREOtUfIhIM,9975
38
- dataeval/_internal/models/tensorflow/gmm.py,sha256=wnqQKm3fURuvBROUd2fitCqzKViDo-g0-Djr3TBHZ3U,3640
39
- dataeval/_internal/models/tensorflow/losses.py,sha256=3y6tHm7PTQ7hmasJDwTXjdARjCUWycoXqSyXJ1uT2mM,3766
40
- dataeval/_internal/models/tensorflow/pixelcnn.py,sha256=B5cwB2IGPw-7b8klt82j_60g_IvqSiDELxvbiBYJtAo,48068
41
- dataeval/_internal/models/tensorflow/trainer.py,sha256=2KHtMRniVselCaDXeb8QEfX-wMRsPfT1xiG2gUQgelg,4090
42
- dataeval/_internal/models/tensorflow/utils.py,sha256=uK_fQ1JXUSVi0kgnhd9eRArlr36OzXUEdL4inJZCs-8,8579
43
- dataeval/_internal/workflows/sufficiency.py,sha256=QZQdhERVr3EmPA2sAFFudSDL4KLM0eAvYgV38jhjzaI,18374
44
- dataeval/detectors/__init__.py,sha256=I2e7YWb55RRlKQll85Z6KdN5wdBa53smn-_fcZIsCwA,1507
45
- dataeval/flags/__init__.py,sha256=1-HmwmtfPkHWwqXUjDwWko396qAKBeaSvqVsQZLrzD0,170
46
- dataeval/metrics/__init__.py,sha256=uVz0GtRvCsh_r08qaBM-jc4bjcfAb1yzlIyx6zfPc9Y,358
47
- dataeval/models/__init__.py,sha256=onevPb5wznCggowBnVT0OUa8uBJXZCbrkFuek1UFvOs,293
48
- dataeval/models/tensorflow/__init__.py,sha256=A1XRxVGHefuvh_WpaKE1x95pRD1FecuFp66iuNPA_5U,424
49
- dataeval/models/torch/__init__.py,sha256=su7P9DF9LChlVCNHWG6d7s_yeIfWQbhCYWIkzJe0Qig,190
50
- dataeval/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
- dataeval/workflows/__init__.py,sha256=ObgS1cVYFRzFZWbNzGs2OcU02IVkJkAMHNnlnSNTMCE,208
52
- dataeval-0.61.0.dist-info/LICENSE.txt,sha256=Kpzcfobf1HlqafF-EX6dQLw9TlJiaJzfgvLQFukyXYw,1060
53
- dataeval-0.61.0.dist-info/METADATA,sha256=-d5akTEAHSqWXZ1JeCTkIvxDc-HdECfNxcLWQlFqhhs,4238
54
- dataeval-0.61.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
55
- dataeval-0.61.0.dist-info/RECORD,,