digitalhub 0.10.0b1__py3-none-any.whl → 0.10.0b3__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.

Potentially problematic release.


This version of digitalhub might be problematic. Click here for more details.

Files changed (36) hide show
  1. digitalhub/entities/dataitem/_base/entity.py +0 -41
  2. digitalhub/entities/dataitem/crud.py +14 -3
  3. digitalhub/entities/dataitem/table/entity.py +49 -35
  4. digitalhub/entities/dataitem/utils.py +40 -1
  5. digitalhub/readers/{_base → data/_base}/builder.py +1 -1
  6. digitalhub/readers/{_base → data/_base}/reader.py +16 -4
  7. digitalhub/readers/{api.py → data/api.py} +2 -2
  8. digitalhub/readers/{factory.py → data/factory.py} +3 -3
  9. digitalhub/readers/data/pandas/__init__.py +0 -0
  10. digitalhub/readers/{pandas → data/pandas}/builder.py +2 -2
  11. digitalhub/readers/{pandas → data/pandas}/reader.py +56 -24
  12. digitalhub/readers/query/__init__.py +0 -0
  13. digitalhub/stores/_base/store.py +60 -23
  14. digitalhub/stores/local/store.py +101 -71
  15. digitalhub/stores/remote/store.py +81 -0
  16. digitalhub/stores/s3/configurator.py +3 -2
  17. digitalhub/stores/s3/store.py +144 -41
  18. digitalhub/stores/sql/store.py +90 -30
  19. {digitalhub-0.10.0b1.dist-info → digitalhub-0.10.0b3.dist-info}/METADATA +27 -29
  20. {digitalhub-0.10.0b1.dist-info → digitalhub-0.10.0b3.dist-info}/RECORD +25 -34
  21. {digitalhub-0.10.0b1.dist-info → digitalhub-0.10.0b3.dist-info}/WHEEL +1 -2
  22. digitalhub-0.10.0b1.dist-info/top_level.txt +0 -2
  23. test/local/CRUD/test_artifacts.py +0 -96
  24. test/local/CRUD/test_dataitems.py +0 -96
  25. test/local/CRUD/test_models.py +0 -95
  26. test/local/imports/test_imports.py +0 -65
  27. test/local/instances/test_validate.py +0 -55
  28. test/test_crud_functions.py +0 -109
  29. test/test_crud_runs.py +0 -86
  30. test/test_crud_tasks.py +0 -81
  31. test/testkfp.py +0 -37
  32. test/testkfp_pipeline.py +0 -22
  33. /digitalhub/readers/{_base → data}/__init__.py +0 -0
  34. /digitalhub/readers/{pandas → data/_base}/__init__.py +0 -0
  35. /digitalhub/readers/{pandas → data/pandas}/enums.py +0 -0
  36. {digitalhub-0.10.0b1.dist-info → digitalhub-0.10.0b3.dist-info/licenses}/LICENSE.txt +0 -0
@@ -1,7 +1,8 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: digitalhub
3
- Version: 0.10.0b1
3
+ Version: 0.10.0b3
4
4
  Summary: Python SDK for Digitalhub
5
+ Project-URL: Homepage, https://github.com/scc-digitalhub/digitalhub-sdk
5
6
  Author-email: Fondazione Bruno Kessler <dslab@fbk.eu>, Matteo Martini <mmartini@fbk.eu>
6
7
  License: Apache License
7
8
  Version 2.0, January 2004
@@ -219,44 +220,41 @@ License: Apache License
219
220
 
220
221
  (SIL OPEN FONT LICENSE Version 1.1) The Inter font family (https://github.com/rsms/inter)
221
222
  (SIL OPEN FONT LICENSE Version 1.1) The Fira Code font family (https://github.com/tonsky/FiraCode)
222
-
223
- Project-URL: Homepage, https://github.com/scc-digitalhub/digitalhub-sdk
223
+ License-File: LICENSE.txt
224
224
  Keywords: data,dataops,kubernetes
225
225
  Classifier: License :: OSI Approved :: Apache Software License
226
226
  Classifier: Programming Language :: Python :: 3.9
227
227
  Classifier: Programming Language :: Python :: 3.10
228
228
  Classifier: Programming Language :: Python :: 3.11
229
- Requires-Python: >=3.9
230
- Description-Content-Type: text/markdown
231
- License-File: LICENSE.txt
229
+ Requires-Python: <3.13,>=3.9
232
230
  Requires-Dist: boto3
233
- Requires-Dist: pydantic
234
- Requires-Dist: sqlalchemy
235
- Requires-Dist: pyarrow
231
+ Requires-Dist: gitpython>=3
236
232
  Requires-Dist: numpy<2
237
- Requires-Dist: requests
238
- Requires-Dist: PyYAML
239
- Requires-Dist: python-dotenv
240
- Requires-Dist: GitPython>=3
241
233
  Requires-Dist: psycopg2-binary
234
+ Requires-Dist: pyarrow
235
+ Requires-Dist: pydantic
236
+ Requires-Dist: python-dotenv
242
237
  Requires-Dist: python-slugify
238
+ Requires-Dist: pyyaml
239
+ Requires-Dist: requests
240
+ Requires-Dist: sqlalchemy
241
+ Provides-Extra: dev
242
+ Requires-Dist: bumpver; extra == 'dev'
243
+ Requires-Dist: jsonschema; extra == 'dev'
244
+ Requires-Dist: pytest; extra == 'dev'
245
+ Requires-Dist: pytest-cov; extra == 'dev'
243
246
  Provides-Extra: full
244
- Requires-Dist: pandas; extra == "full"
245
- Requires-Dist: mlflow; extra == "full"
246
- Provides-Extra: pandas
247
- Requires-Dist: pandas; extra == "pandas"
247
+ Requires-Dist: fsspec; extra == 'full'
248
+ Requires-Dist: mlflow; extra == 'full'
249
+ Requires-Dist: pandas; extra == 'full'
250
+ Requires-Dist: s3fs; extra == 'full'
248
251
  Provides-Extra: mlflow
249
- Requires-Dist: mlflow; extra == "mlflow"
250
- Provides-Extra: dev
251
- Requires-Dist: black; extra == "dev"
252
- Requires-Dist: pytest; extra == "dev"
253
- Requires-Dist: bumpver; extra == "dev"
254
- Requires-Dist: ruff; extra == "dev"
255
- Requires-Dist: moto; extra == "dev"
256
- Provides-Extra: docs
257
- Requires-Dist: Sphinx>=7; extra == "docs"
258
- Requires-Dist: pydata-sphinx-theme>=0.15; extra == "docs"
259
- Requires-Dist: numpydoc>=1.6; extra == "docs"
252
+ Requires-Dist: mlflow; extra == 'mlflow'
253
+ Provides-Extra: pandas
254
+ Requires-Dist: fsspec; extra == 'pandas'
255
+ Requires-Dist: pandas; extra == 'pandas'
256
+ Requires-Dist: s3fs; extra == 'pandas'
257
+ Description-Content-Type: text/markdown
260
258
 
261
259
  # Digitalhub Library
262
260
 
@@ -84,11 +84,11 @@ digitalhub/entities/artifact/artifact/entity.py,sha256=hj6UlJMWnWimqizhKGcKpvOpc
84
84
  digitalhub/entities/artifact/artifact/spec.py,sha256=iX6czlG6W_ZoW86PD2GPc_-xLk6Zb1Vt3fk8Lzjbp3c,593
85
85
  digitalhub/entities/artifact/artifact/status.py,sha256=x-lTgO2KkjwzlJnEhIfUtF9rzJ1DTIAd3-Hn6ZeLRqo,305
86
86
  digitalhub/entities/dataitem/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
- digitalhub/entities/dataitem/crud.py,sha256=-y3lTjEtISje6X_lo-rx9Aynf_WkvzYi9G6WY7QJvRA,8090
88
- digitalhub/entities/dataitem/utils.py,sha256=a419DecLEs4oyCFRmjX0uQQqXlX9sItOYsdZxalwCSM,3227
87
+ digitalhub/entities/dataitem/crud.py,sha256=Vel2zyJl8DbdJJoNBx1nEoFYy5e2Gi1AmJUsCE0nhZE,8418
88
+ digitalhub/entities/dataitem/utils.py,sha256=frrJrNnk4dJbhmBgqGWHpXqW4tpmD6JgGDhEo_LgGr4,4047
89
89
  digitalhub/entities/dataitem/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
90
90
  digitalhub/entities/dataitem/_base/builder.py,sha256=XZ5Ul-aBkx6ygpN9rhjNQOD-6jzJhulyM0WCD-f3big,2256
91
- digitalhub/entities/dataitem/_base/entity.py,sha256=myT-1uxZ4Iynku_aPDAYY2cJTPqo7D4DRIbxanv1ItI,2012
91
+ digitalhub/entities/dataitem/_base/entity.py,sha256=J8G7Xm_AKETg02RtNHlUyM-bmvT__HKu1Npv4Od037A,945
92
92
  digitalhub/entities/dataitem/_base/spec.py,sha256=7TeEaavMdkXPWBoHMoxagOSt7F4Pn0Bp8qugNwPypSA,300
93
93
  digitalhub/entities/dataitem/_base/status.py,sha256=D8eR9FOZoS8VSNkQFDAz8dJkjR7hIq8nFd9qmX19mPc,467
94
94
  digitalhub/entities/dataitem/dataitem/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -103,7 +103,7 @@ digitalhub/entities/dataitem/iceberg/spec.py,sha256=qQebFiY0_pt9Iy1KGsfxXg67CG9s
103
103
  digitalhub/entities/dataitem/iceberg/status.py,sha256=XRj9i8a-dzjqB-Ci3cfPnXTikc5khLsIgUJnF1xE01I,202
104
104
  digitalhub/entities/dataitem/table/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
105
  digitalhub/entities/dataitem/table/builder.py,sha256=Ad5hgGQ8k0vWM2nCZG0crXKmlU6fMYFm8ybWB7FP3cQ,716
106
- digitalhub/entities/dataitem/table/entity.py,sha256=3NDtj3jwWiXGKAAB_kHwPSX92qb2dGQ3BhfT-rKupes,4256
106
+ digitalhub/entities/dataitem/table/entity.py,sha256=yI3-GaWCifw0l0XGh2ol6U-nhyjVcXYok-al26jpEfM,4143
107
107
  digitalhub/entities/dataitem/table/models.py,sha256=dPnqAXbT9IFWM2Q96O3OjpFnki9gudgOYqun2lQ6p8A,1103
108
108
  digitalhub/entities/dataitem/table/spec.py,sha256=5boOI9zhIvuwIQo0th0E2941_rQEPIRIIYLhySbwbFY,671
109
109
  digitalhub/entities/dataitem/table/status.py,sha256=28-_LoSg84x4OwLbRungCHk-ObuobZ5vKuzk1NoBGZA,198
@@ -188,15 +188,17 @@ digitalhub/factory/api.py,sha256=tTlALvPLPE-vjdPByAXXXjIEGpm4-_zB08A_F3be4f8,547
188
188
  digitalhub/factory/factory.py,sha256=4SYBK3q1EmVjxgiZnnGNqDJtQSs4RPatftx6duD9rEU,6482
189
189
  digitalhub/factory/utils.py,sha256=3yVn0CUerb2TQh67rLWvgEt-JWv-S3oxpjZCty9JfuU,2234
190
190
  digitalhub/readers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
191
- digitalhub/readers/api.py,sha256=pnuxl7hMr71d3CoTw9BvxrThDvdLUNskEtoVS6zrCf8,1834
192
- digitalhub/readers/factory.py,sha256=csD6H8NVAo8KRdVj19v53eOjIryiSi2fweu33-IeItk,3629
193
- digitalhub/readers/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
194
- digitalhub/readers/_base/builder.py,sha256=IjI1SG517ZJC58-Tdn1U3juwz9EZ8AXbjOCGnlzsQpU,632
195
- digitalhub/readers/_base/reader.py,sha256=ECPSKF8D7YxuO16T72C3KT4jE3caI3lFo_rMTKTOISw,1478
196
- digitalhub/readers/pandas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
197
- digitalhub/readers/pandas/builder.py,sha256=k9L4egms-IFMMxayE7NA77JVWcCTdvYhJujmZ33bkrg,672
198
- digitalhub/readers/pandas/enums.py,sha256=9GTiGrvRoaQTGbAZphXCrJnC13Cx0dg4KTNmE4AasdA,265
199
- digitalhub/readers/pandas/reader.py,sha256=C-7ZPOtekSwu2T0rE8CnakgQ5zfXm4Ym4Z7jIXupc5c,7113
191
+ digitalhub/readers/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
192
+ digitalhub/readers/data/api.py,sha256=XjHNdiXclhxBat2DtWfWWIK-0z-cUZ9RvbQar6Q3pKY,1844
193
+ digitalhub/readers/data/factory.py,sha256=gCguu4_m2rTGoCPSfrO4-HXKDhSqSHnijejFF3r5AhU,3644
194
+ digitalhub/readers/data/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
195
+ digitalhub/readers/data/_base/builder.py,sha256=Fv8n5kcXpAb4gSuUAWWS394bx_tvZW_9yACDJsbDPZc,637
196
+ digitalhub/readers/data/_base/reader.py,sha256=D8Vfcys4uIlXnVbyKh6KI58b_tXSmiN94YzX-WDthrY,1754
197
+ digitalhub/readers/data/pandas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
198
+ digitalhub/readers/data/pandas/builder.py,sha256=GskCPKJ33-YXiGEqmlasIyFMiy2F_ged22NxxncivCg,682
199
+ digitalhub/readers/data/pandas/enums.py,sha256=9GTiGrvRoaQTGbAZphXCrJnC13Cx0dg4KTNmE4AasdA,265
200
+ digitalhub/readers/data/pandas/reader.py,sha256=KtU178Yt4XoEdpbrqnzGlUOlaBkK9N74uqHj5wMr3vA,7944
201
+ digitalhub/readers/query/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
200
202
  digitalhub/runtimes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
201
203
  digitalhub/runtimes/_base.py,sha256=uDvSXAEytZr-BFpj1BA59vdERBk79j5pTDiG0__tazA,2510
202
204
  digitalhub/runtimes/builder.py,sha256=CtwutbxRdLo6Qj5PfvmYnCusRG89yS1jI4Qu-Ha3XGY,705
@@ -205,22 +207,22 @@ digitalhub/stores/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU
205
207
  digitalhub/stores/api.py,sha256=7bspqJaexE8PKnVDotpAX3mgLsgcCNhrImD1kNI4heQ,560
206
208
  digitalhub/stores/builder.py,sha256=6_19vEYnh3WYkgOY0h5xAjpFujMYR0oHF5PBDupsgnc,2314
207
209
  digitalhub/stores/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
208
- digitalhub/stores/_base/store.py,sha256=3Uoyfz-eDBHAUORJWWx-4kniwIm6boNr6W3DhaT_t4s,4316
210
+ digitalhub/stores/_base/store.py,sha256=8YzbQ7x1p1gx5H0WgVpqZsCmNTpezPT67tNIU3fAp_M,5148
209
211
  digitalhub/stores/local/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
210
- digitalhub/stores/local/store.py,sha256=KNEwzY-msNLnYSVX3N9k9ZpmWV2l6rdFVYmLbIruiL8,6450
212
+ digitalhub/stores/local/store.py,sha256=cpQ1hfw5TZ_akDVS_4gT_rqWdDF1qNMDwHwuXt-iafs,7333
211
213
  digitalhub/stores/remote/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
212
- digitalhub/stores/remote/store.py,sha256=2LyC0NA1Y5tOT0xteDwm0VriEQCx2RygatRIzRhovoU,4055
214
+ digitalhub/stores/remote/store.py,sha256=WP52ILm48o4y_p9q_Pa_T_cSBCcFIJEL4PA1eXaumOc,6102
213
215
  digitalhub/stores/s3/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
214
- digitalhub/stores/s3/configurator.py,sha256=6lGk3CDFJV-vo6BI-IQE4p5cT9975B5eJut7OCgKknY,3672
216
+ digitalhub/stores/s3/configurator.py,sha256=t0Ct98_4WgvDm6MExaFzekUhJu5AtLd3XEAw9ALJkj8,3727
215
217
  digitalhub/stores/s3/enums.py,sha256=tmSavz83jr6SBW-Gqn4D21TJpFytxvbtbW63htmZG2A,392
216
218
  digitalhub/stores/s3/models.py,sha256=qeXeL7iP76EBO35wzP6bYeMj-sBOY634Tjwx8h3Di2g,371
217
- digitalhub/stores/s3/store.py,sha256=0dgPKMUT4pT0hchZvpRxHD03PR1I2aOHUPihfNCMy08,16520
219
+ digitalhub/stores/s3/store.py,sha256=eOXxE7p6ktcXbtKhVqN7xnILFpAAMiY7ykv0Pw4CNok,19151
218
220
  digitalhub/stores/s3/utils.py,sha256=5ATkIRThtssu52dPrkWnK-nhD5pc6rlrHLNofjiQzt4,1500
219
221
  digitalhub/stores/sql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
220
222
  digitalhub/stores/sql/configurator.py,sha256=a9gjqpNypMEx5e-rYCrrkPqtg3BA7X0613lVrzHmeRI,3159
221
223
  digitalhub/stores/sql/enums.py,sha256=dN1lT7GkcFU64w7SHnVBtwt9rLjRnonwmun5nhsp6V4,276
222
224
  digitalhub/stores/sql/models.py,sha256=_itIXoCfRLzUpG0OaM44qbv2u87Lyl5e0tmAXNTvfjQ,349
223
- digitalhub/stores/sql/store.py,sha256=ocidT9ik6s4JRVKqY4ZsKJPCbTfpNXYpA9aAbCJVbmY,9626
225
+ digitalhub/stores/sql/store.py,sha256=Hg6zVRN1ped67373H2gBNdFgYComABmF-3FxdlIcdHo,11126
224
226
  digitalhub/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
225
227
  digitalhub/utils/exceptions.py,sha256=CGiRXx6OvYpjg6d9yEn2OvyfF0FA5n1l8uH6loCDoAY,1233
226
228
  digitalhub/utils/file_utils.py,sha256=gw0ozfrobAGGpVBTPIiIRJK4K6vEkB5WHFq8Ygzl-CQ,5022
@@ -229,18 +231,7 @@ digitalhub/utils/git_utils.py,sha256=air8jn73FxzSWRxpvObcdOJBWcFOqb5A7D4ISwPEs7A
229
231
  digitalhub/utils/io_utils.py,sha256=8jD4Rp_b7LZEpY5JSMxVUowZsnifKnbGpHT5Hijx9-g,3299
230
232
  digitalhub/utils/logger.py,sha256=ml3ne6D8wuRdNZ4F6ywmvWotSxjmZWnmKgNiuHb4R5M,437
231
233
  digitalhub/utils/uri_utils.py,sha256=AKfvMtdt_0OY_cNtJY1t0YXrQ12OYGf-KYBF_2m0ULA,3821
232
- test/test_crud_functions.py,sha256=tQs_QBaPCuYVSBpbl-he5_6jr_tteCXVmohj1ZluNsA,2769
233
- test/test_crud_runs.py,sha256=lkssy15UPJKymgazmi5gG6RLxyTsG-tM_CpNCowD2gQ,2220
234
- test/test_crud_tasks.py,sha256=sIbY-Hq6C2N20hWHfbCMw9c-zpYS0m_UJGnPINR4Q6s,2111
235
- test/testkfp.py,sha256=fy__EywOCtucL5HUEKD23gwit1qu9SrCWFSjyeKxe68,1085
236
- test/testkfp_pipeline.py,sha256=WceFrCp-avHI7PcwIvnv7Kgs2xK3oQqU6sjaonGamg8,622
237
- test/local/CRUD/test_artifacts.py,sha256=Y3J_C7SDRSsQd2SGIZjPIOvyTL92B1sTFrUONG3YG0Y,2968
238
- test/local/CRUD/test_dataitems.py,sha256=LQqTzI59uwTGy4zoq8jL0yWVe2W9vXlatkgDU9aB6xg,2968
239
- test/local/CRUD/test_models.py,sha256=msosbZuRwIMbZtmi3ZaOva4TjQ4lrzkNu9AguIFhrSo,2929
240
- test/local/imports/test_imports.py,sha256=Z_RomI5EN_5KJUU1p7S1lLl7krTuEwB0L1cBtbXXoOA,1254
241
- test/local/instances/test_validate.py,sha256=bGPKRFR_Tb5nlzzmI_ty_6UVUvYGseE2-pkNVoGWeO0,1842
242
- digitalhub-0.10.0b1.dist-info/LICENSE.txt,sha256=qmrTTXPlgU0kSRlRVbjhlyGs1IXs2QPxo_Y-Mn06J0k,11589
243
- digitalhub-0.10.0b1.dist-info/METADATA,sha256=k_aaXaTHnjV8q2oYCjZUB8geupzAMyyYoJf4VUz1Z4c,15212
244
- digitalhub-0.10.0b1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
245
- digitalhub-0.10.0b1.dist-info/top_level.txt,sha256=ae9pDfCF27ZoaVAxuBKONMP0lm5P-N_I-e-no1WlvD8,16
246
- digitalhub-0.10.0b1.dist-info/RECORD,,
234
+ digitalhub-0.10.0b3.dist-info/METADATA,sha256=Xmttpbzf2euECdRnht5Q3sDjmJ7gAtHx_UHfBBQ7sqk,15173
235
+ digitalhub-0.10.0b3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
236
+ digitalhub-0.10.0b3.dist-info/licenses/LICENSE.txt,sha256=qmrTTXPlgU0kSRlRVbjhlyGs1IXs2QPxo_Y-Mn06J0k,11589
237
+ digitalhub-0.10.0b3.dist-info/RECORD,,
@@ -1,5 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.8.0)
2
+ Generator: hatchling 1.27.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
-
@@ -1,2 +0,0 @@
1
- digitalhub
2
- test
@@ -1,96 +0,0 @@
1
- """
2
- Unit tests for the entity Artifact
3
- """
4
-
5
- import digitalhub as dh
6
- from digitalhub.entities.artifact._base.entity import Artifact
7
-
8
-
9
- class TestArtifactCRUD:
10
- def create_test_dicts(self):
11
- names = ["test1", "test2", "test3", "test4"]
12
- uuids = [
13
- "d150bcca-bb64-451d-8455-dff862254b95",
14
- "31acdd2d-0c41-428c-b68b-1b133da9e97b",
15
- "b4a3dfdc-b917-44c4-9a29-613dcf734244",
16
- "2618d9c4-cd61-440f-aebb-7e5761709f3b",
17
- ]
18
- paths = [
19
- "./data/test.csv",
20
- "s3://bucket/key.csv",
21
- "sql://database/schema/table",
22
- "https://url.com/file.csv",
23
- ]
24
- kind = ["artifact", "artifact", "artifact", "artifact"]
25
-
26
- dicts = []
27
- for i in range(len(names)):
28
- dicts.append({"name": names[i], "uuid": uuids[i], "path": paths[i], "kind": kind[i]})
29
-
30
- return dicts
31
-
32
- def test_create_delete(self):
33
- dicts = self.create_test_dicts()
34
- p = dh.get_or_create_project("test", local=True)
35
- # Create and delete artifacts
36
- for i in dicts:
37
- d = dh.new_artifact(p.name, **i)
38
- dh.delete_artifact(d.key)
39
- d = dh.new_artifact(p.name, **i)
40
- dh.delete_artifact(d.name, project=p.name, entity_id=d.id)
41
- d = p.new_artifact(**i)
42
- p.delete_artifact(d.key)
43
-
44
- assert dh.list_artifacts(p.name) == []
45
- dh.delete_project("test", local=True, clean_context=True)
46
-
47
- def test_list(self):
48
- dicts = self.create_test_dicts()
49
- p = dh.get_or_create_project("test", local=True)
50
-
51
- assert dh.list_artifacts(p.name) == []
52
-
53
- for i in dicts:
54
- dh.new_artifact(p.name, **i)
55
-
56
- # List artifacts
57
- l_obj = dh.list_artifacts(p.name)
58
- assert isinstance(l_obj, list)
59
- assert len(l_obj) == 4
60
- for i in l_obj:
61
- assert isinstance(i, Artifact)
62
-
63
- # delete listed objects
64
- for obj in l_obj:
65
- dh.delete_artifact(obj.key)
66
-
67
- assert len(dh.list_artifacts(p.name)) == 0
68
-
69
- dh.delete_project("test", clean_context=True, local=True)
70
-
71
- def test_get(self):
72
- dicts = self.create_test_dicts()
73
- p = dh.get_or_create_project("test", local=True)
74
-
75
- for i in dicts:
76
- o1 = dh.new_artifact(p.name, **i)
77
- assert isinstance(o1, Artifact)
78
-
79
- # Get by name and id
80
- o2 = dh.get_artifact(o1.name, project=p.name, entity_id=o1.id)
81
- assert isinstance(o2, Artifact)
82
- assert o1.id == o2.id
83
-
84
- # Get by key
85
- o3 = dh.get_artifact(o1.key)
86
- assert isinstance(o3, Artifact)
87
- assert o1.id == o3.id
88
-
89
- # delete listed objects
90
- l_obj = dh.list_artifacts(p.name)
91
- for obj in l_obj:
92
- dh.delete_artifact(obj.key)
93
-
94
- assert len(dh.list_artifacts(p.name)) == 0
95
-
96
- dh.delete_project("test", clean_context=True, local=True)
@@ -1,96 +0,0 @@
1
- """
2
- Unit tests for the entity Dataitem
3
- """
4
-
5
- import digitalhub as dh
6
- from digitalhub.entities.dataitem._base.entity import Dataitem
7
-
8
-
9
- class TestDataitemCRUD:
10
- def create_test_dicts(self):
11
- names = ["test1", "test2", "test3", "test4"]
12
- uuids = [
13
- "d150bcca-bb64-451d-8455-dff862254b95",
14
- "31acdd2d-0c41-428c-b68b-1b133da9e97b",
15
- "b4a3dfdc-b917-44c4-9a29-613dcf734244",
16
- "2618d9c4-cd61-440f-aebb-7e5761709f3b",
17
- ]
18
- paths = [
19
- "./data/test.csv",
20
- "s3://bucket/key.csv",
21
- "sql://database/schema/table",
22
- "https://url.com/file.csv",
23
- ]
24
- kind = ["dataitem", "dataitem", "dataitem", "dataitem"]
25
-
26
- dicts = []
27
- for i in range(len(names)):
28
- dicts.append({"name": names[i], "uuid": uuids[i], "path": paths[i], "kind": kind[i]})
29
-
30
- return dicts
31
-
32
- def test_create_delete(self):
33
- dicts = self.create_test_dicts()
34
- p = dh.get_or_create_project("test", local=True)
35
- # Create and delete dataitems
36
- for i in dicts:
37
- d = dh.new_dataitem(p.name, **i)
38
- dh.delete_dataitem(d.key)
39
- d = dh.new_dataitem(p.name, **i)
40
- dh.delete_dataitem(d.name, project=p.name, entity_id=d.id)
41
- d = p.new_dataitem(**i)
42
- p.delete_dataitem(d.key)
43
-
44
- assert dh.list_dataitems(p.name) == []
45
- dh.delete_project("test", local=True, clean_context=True)
46
-
47
- def test_list(self):
48
- dicts = self.create_test_dicts()
49
- p = dh.get_or_create_project("test", local=True)
50
-
51
- assert dh.list_dataitems(p.name) == []
52
-
53
- for i in dicts:
54
- dh.new_dataitem(p.name, **i)
55
-
56
- # List dataitems
57
- l_obj = dh.list_dataitems(p.name)
58
- assert isinstance(l_obj, list)
59
- assert len(l_obj) == 4
60
- for i in l_obj:
61
- assert isinstance(i, Dataitem)
62
-
63
- # delete listed objects
64
- for obj in l_obj:
65
- dh.delete_dataitem(obj.key)
66
-
67
- assert len(dh.list_dataitems(p.name)) == 0
68
-
69
- dh.delete_project("test", clean_context=True, local=True)
70
-
71
- def test_get(self):
72
- dicts = self.create_test_dicts()
73
- p = dh.get_or_create_project("test", local=True)
74
-
75
- for i in dicts:
76
- o1 = dh.new_dataitem(p.name, **i)
77
- assert isinstance(o1, Dataitem)
78
-
79
- # Get by name and id
80
- o2 = dh.get_dataitem(o1.name, project=p.name, entity_id=o1.id)
81
- assert isinstance(o2, Dataitem)
82
- assert o1.id == o2.id
83
-
84
- # Get by key
85
- o3 = dh.get_dataitem(o1.key)
86
- assert isinstance(o3, Dataitem)
87
- assert o1.id == o3.id
88
-
89
- # delete listed objects
90
- l_obj = dh.list_dataitems(p.name)
91
- for obj in l_obj:
92
- dh.delete_dataitem(obj.key)
93
-
94
- assert len(dh.list_dataitems(p.name)) == 0
95
-
96
- dh.delete_project("test", clean_context=True, local=True)
@@ -1,95 +0,0 @@
1
- """
2
- Unit tests for the entity Models
3
- """
4
-
5
- import digitalhub as dh
6
- from digitalhub.entities.model._base.entity import Model
7
-
8
-
9
- class TestModelCRUD:
10
- def create_test_dicts(self):
11
- names = ["test1", "test2", "test3", "test4"]
12
- uuids = [
13
- "d150bcca-bb64-451d-8455-dff862254b95",
14
- "31acdd2d-0c41-428c-b68b-1b133da9e97b",
15
- "b4a3dfdc-b917-44c4-9a29-613dcf734244",
16
- "2618d9c4-cd61-440f-aebb-7e5761709f3b",
17
- ]
18
- paths = [
19
- "./data/my_random_forest_model.pkl",
20
- "s3://bucket/model.pkl",
21
- "sql://database/schema/linear_regression_model.joblib",
22
- "https://url.com/bert_base_uncased.pt",
23
- ]
24
- kind = ["model", "model", "model", "model"]
25
-
26
- dicts = []
27
- for i in range(len(names)):
28
- dicts.append({"name": names[i], "uuid": uuids[i], "path": paths[i], "kind": kind[i]})
29
-
30
- return dicts
31
-
32
- def test_create_delete(self):
33
- dicts = self.create_test_dicts()
34
- p = dh.get_or_create_project("test", local=True)
35
- # Create and delete models
36
- for i in dicts:
37
- d = dh.new_model(p.name, **i)
38
- dh.delete_model(d.key)
39
- d = dh.new_model(p.name, **i)
40
- dh.delete_model(d.name, project=p.name, entity_id=d.id)
41
- d = p.new_model(**i)
42
- p.delete_model(d.key)
43
- assert dh.list_models(p.name) == []
44
- dh.delete_project("test", local=True, clean_context=True)
45
-
46
- def test_list(self):
47
- dicts = self.create_test_dicts()
48
- p = dh.get_or_create_project("test", local=True)
49
-
50
- assert dh.list_models(p.name) == []
51
-
52
- for i in dicts:
53
- dh.new_model(p.name, **i)
54
-
55
- # List models
56
- l_obj = dh.list_models(p.name)
57
- assert isinstance(l_obj, list)
58
- assert len(l_obj) == 4
59
- for i in l_obj:
60
- assert isinstance(i, Model)
61
-
62
- # delete listed objects
63
- for obj in l_obj:
64
- dh.delete_model(obj.key)
65
-
66
- assert len(dh.list_models(p.name)) == 0
67
-
68
- dh.delete_project("test", clean_context=True, local=True)
69
-
70
- def test_get(self):
71
- dicts = self.create_test_dicts()
72
- p = dh.get_or_create_project("test", local=True)
73
-
74
- for i in dicts:
75
- o1 = dh.new_model(p.name, **i)
76
- assert isinstance(o1, Model)
77
-
78
- # Get by name and id
79
- o2 = dh.get_model(o1.name, project=p.name, entity_id=o1.id)
80
- assert isinstance(o2, Model)
81
- assert o1.id == o2.id
82
-
83
- # Get by key
84
- o3 = dh.get_model(o1.key)
85
- assert isinstance(o3, Model)
86
- assert o1.id == o3.id
87
-
88
- # delete listed objects
89
- l_obj = dh.list_models(p.name)
90
- for obj in l_obj:
91
- dh.delete_model(obj.key)
92
-
93
- assert len(dh.list_models(p.name)) == 0
94
-
95
- dh.delete_project("test", clean_context=True, local=True)
@@ -1,65 +0,0 @@
1
- import digitalhub
2
-
3
- METHODS = [
4
- "new_artifact",
5
- "new_function",
6
- "new_project",
7
- "new_run",
8
- "new_secret",
9
- "new_task",
10
- "new_workflow",
11
- "new_dataitem",
12
- "new_model",
13
- "get_artifact",
14
- "get_function",
15
- "get_project",
16
- "get_run",
17
- "get_secret",
18
- "get_task",
19
- "get_workflow",
20
- "get_dataitem",
21
- "get_model",
22
- "import_artifact",
23
- "import_function",
24
- "import_project",
25
- "import_run",
26
- "import_secret",
27
- "import_task",
28
- "import_workflow",
29
- "import_dataitem",
30
- "import_model",
31
- "list_artifacts",
32
- "list_functions",
33
- "list_runs",
34
- "list_secrets",
35
- "list_tasks",
36
- "list_workflows",
37
- "list_dataitems",
38
- "list_models",
39
- "update_artifact",
40
- "update_function",
41
- "update_project",
42
- "update_run",
43
- "update_secret",
44
- "update_task",
45
- "update_workflow",
46
- "update_dataitem",
47
- "update_model",
48
- "delete_artifact",
49
- "delete_function",
50
- "delete_project",
51
- "delete_run",
52
- "delete_secret",
53
- "delete_task",
54
- "delete_workflow",
55
- "delete_dataitem",
56
- "delete_model",
57
- "set_dhcore_env",
58
- "load_project",
59
- "get_or_create_project",
60
- ]
61
-
62
-
63
- def test_imports():
64
- for i in METHODS:
65
- assert hasattr(digitalhub, i)
@@ -1,55 +0,0 @@
1
- import os
2
- import pytest
3
- from glob import glob
4
- from pathlib import Path
5
- import json
6
- from jsonschema import validate
7
- from digitalhub.factory.factory import factory
8
-
9
- entities_path = "test/local/instances/entities"
10
- schemas_path = "test/local/instances/schemas"
11
-
12
- # Build dict: kind -> path to schema file
13
- schemas = {}
14
- for path_to_schema in glob(f"{schemas_path}/**/*.json", recursive=True):
15
- kind = Path(path_to_schema).stem
16
- schemas[kind] = path_to_schema
17
-
18
- # Build dict: name of file to validate -> full path to file
19
- entity_paths = {}
20
- for path_to_file in glob(f"{entities_path}/**/*.json", recursive=True):
21
- file_name = os.path.basename(path_to_file)
22
-
23
- # If a file in a nested directory causes a name collision, use its full path as name
24
- if file_name in entity_paths:
25
- file_name = path_to_file
26
-
27
- entity_paths[file_name] = path_to_file
28
-
29
- # Build object from JSON file using factory
30
- def build_obj(entity_file_path):
31
- with open(entity_file_path) as f:
32
- entity = json.load(f)
33
-
34
- kind = entity["kind"]
35
- spec = entity["spec"]
36
-
37
- built = factory.build_spec(kind, **spec)
38
- return built.to_dict(), kind
39
-
40
- # Validate built object against its kind's schema
41
- def is_valid(built, kind):
42
- with open(schemas[kind]) as schema_file:
43
- schema = json.load(schema_file)
44
-
45
- validate(instance=built, schema=schema)
46
- return True
47
-
48
- # Tests that each JSON file contained in the specified path can successfully be
49
- # used to generate an object through the factory, and that each generated object,
50
- # when exported to dict, validates (through jsonschema) against its kind's schema.
51
- class TestValidate:
52
- @pytest.mark.parametrize('file_name', list(entity_paths.keys()))
53
- def test_validate(self, file_name):
54
- built, kind = build_obj(f"{entity_paths[file_name]}")
55
- assert is_valid(built, kind)