digitalhub 0.13.4__py3-none-any.whl → 0.14.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.

Potentially problematic release.


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

Files changed (116) hide show
  1. digitalhub/__init__.py +3 -8
  2. digitalhub/context/api.py +1 -5
  3. digitalhub/context/builder.py +1 -5
  4. digitalhub/context/context.py +2 -9
  5. digitalhub/entities/_base/_base/entity.py +0 -15
  6. digitalhub/entities/_base/context/entity.py +1 -1
  7. digitalhub/entities/_base/entity/builder.py +5 -5
  8. digitalhub/entities/_base/entity/entity.py +0 -8
  9. digitalhub/entities/_base/executable/entity.py +169 -79
  10. digitalhub/entities/_base/material/entity.py +6 -22
  11. digitalhub/entities/_base/material/utils.py +1 -4
  12. digitalhub/entities/_base/runtime_entity/builder.py +53 -18
  13. digitalhub/entities/_base/unversioned/entity.py +1 -1
  14. digitalhub/entities/_base/versioned/entity.py +1 -1
  15. digitalhub/entities/_commons/enums.py +1 -31
  16. digitalhub/entities/_commons/utils.py +83 -21
  17. digitalhub/entities/_constructors/_resources.py +151 -0
  18. digitalhub/entities/{_base/entity/_constructors → _constructors}/name.py +18 -0
  19. digitalhub/entities/_processors/base/__init__.py +3 -0
  20. digitalhub/entities/_processors/{base.py → base/crud.py} +14 -226
  21. digitalhub/entities/_processors/base/import_export.py +123 -0
  22. digitalhub/entities/_processors/base/processor.py +302 -0
  23. digitalhub/entities/_processors/base/special_ops.py +108 -0
  24. digitalhub/entities/_processors/context/__init__.py +3 -0
  25. digitalhub/entities/_processors/context/crud.py +652 -0
  26. digitalhub/entities/_processors/context/import_export.py +242 -0
  27. digitalhub/entities/_processors/context/material.py +123 -0
  28. digitalhub/entities/_processors/context/processor.py +400 -0
  29. digitalhub/entities/_processors/context/special_ops.py +476 -0
  30. digitalhub/entities/_processors/processors.py +12 -0
  31. digitalhub/entities/_processors/utils.py +12 -11
  32. digitalhub/entities/artifact/crud.py +58 -22
  33. digitalhub/entities/artifact/utils.py +3 -3
  34. digitalhub/entities/dataitem/crud.py +63 -20
  35. digitalhub/entities/dataitem/table/entity.py +24 -22
  36. digitalhub/entities/dataitem/utils.py +15 -15
  37. digitalhub/entities/function/_base/entity.py +3 -3
  38. digitalhub/entities/function/crud.py +55 -24
  39. digitalhub/entities/model/_base/entity.py +62 -20
  40. digitalhub/entities/model/crud.py +58 -22
  41. digitalhub/entities/model/utils.py +3 -3
  42. digitalhub/entities/project/_base/entity.py +321 -152
  43. digitalhub/entities/project/crud.py +15 -23
  44. digitalhub/entities/run/_base/builder.py +0 -4
  45. digitalhub/entities/run/_base/entity.py +70 -63
  46. digitalhub/entities/run/crud.py +79 -26
  47. digitalhub/entities/secret/_base/entity.py +1 -5
  48. digitalhub/entities/secret/crud.py +29 -26
  49. digitalhub/entities/task/_base/builder.py +0 -4
  50. digitalhub/entities/task/_base/entity.py +5 -5
  51. digitalhub/entities/task/_base/models.py +13 -16
  52. digitalhub/entities/task/crud.py +61 -29
  53. digitalhub/entities/trigger/_base/entity.py +1 -5
  54. digitalhub/entities/trigger/crud.py +64 -24
  55. digitalhub/entities/workflow/_base/entity.py +3 -3
  56. digitalhub/entities/workflow/crud.py +55 -21
  57. digitalhub/factory/entity.py +283 -0
  58. digitalhub/factory/enums.py +18 -0
  59. digitalhub/factory/registry.py +197 -0
  60. digitalhub/factory/runtime.py +44 -0
  61. digitalhub/factory/utils.py +3 -54
  62. digitalhub/runtimes/_base.py +2 -2
  63. digitalhub/stores/client/_base/enums.py +39 -0
  64. digitalhub/stores/client/_base/key_builder.py +2 -2
  65. digitalhub/stores/client/_base/params_builder.py +48 -0
  66. digitalhub/stores/client/api.py +6 -10
  67. digitalhub/stores/client/builder.py +4 -4
  68. digitalhub/stores/client/dhcore/api_builder.py +2 -1
  69. digitalhub/stores/client/dhcore/client.py +85 -429
  70. digitalhub/stores/client/dhcore/configurator.py +109 -328
  71. digitalhub/stores/client/dhcore/enums.py +0 -16
  72. digitalhub/stores/client/dhcore/error_parser.py +0 -4
  73. digitalhub/stores/client/dhcore/header_manager.py +61 -0
  74. digitalhub/stores/client/dhcore/http_handler.py +133 -0
  75. digitalhub/stores/client/dhcore/params_builder.py +147 -134
  76. digitalhub/stores/client/dhcore/response_processor.py +102 -0
  77. digitalhub/stores/client/dhcore/utils.py +6 -72
  78. digitalhub/stores/client/local/api_builder.py +1 -1
  79. digitalhub/stores/client/local/client.py +79 -47
  80. digitalhub/stores/client/local/params_builder.py +18 -41
  81. digitalhub/stores/credentials/api.py +0 -4
  82. digitalhub/stores/credentials/configurator.py +2 -28
  83. digitalhub/stores/credentials/enums.py +3 -0
  84. digitalhub/stores/credentials/handler.py +0 -12
  85. digitalhub/stores/credentials/ini_module.py +0 -22
  86. digitalhub/stores/credentials/store.py +0 -4
  87. digitalhub/stores/data/_base/store.py +0 -16
  88. digitalhub/stores/data/builder.py +1 -5
  89. digitalhub/stores/data/local/store.py +0 -103
  90. digitalhub/stores/data/remote/store.py +0 -4
  91. digitalhub/stores/data/s3/configurator.py +60 -14
  92. digitalhub/stores/data/s3/store.py +49 -16
  93. digitalhub/stores/data/sql/configurator.py +0 -8
  94. digitalhub/stores/data/sql/store.py +21 -10
  95. digitalhub/stores/readers/data/factory.py +0 -8
  96. digitalhub/stores/readers/data/pandas/reader.py +0 -16
  97. digitalhub/utils/file_utils.py +0 -17
  98. digitalhub/utils/generic_utils.py +0 -12
  99. digitalhub/utils/git_utils.py +0 -8
  100. digitalhub/utils/io_utils.py +0 -12
  101. digitalhub/utils/store_utils.py +44 -0
  102. {digitalhub-0.13.4.dist-info → digitalhub-0.14.0.dist-info}/METADATA +3 -2
  103. {digitalhub-0.13.4.dist-info → digitalhub-0.14.0.dist-info}/RECORD +111 -95
  104. digitalhub/entities/_processors/context.py +0 -1450
  105. digitalhub/entities/task/_base/utils.py +0 -22
  106. digitalhub/factory/factory.py +0 -381
  107. digitalhub/stores/client/dhcore/models.py +0 -40
  108. digitalhub/stores/data/s3/utils.py +0 -78
  109. /digitalhub/entities/{_base/entity/_constructors → _constructors}/__init__.py +0 -0
  110. /digitalhub/entities/{_base/entity/_constructors → _constructors}/metadata.py +0 -0
  111. /digitalhub/entities/{_base/entity/_constructors → _constructors}/spec.py +0 -0
  112. /digitalhub/entities/{_base/entity/_constructors → _constructors}/status.py +0 -0
  113. /digitalhub/entities/{_base/entity/_constructors → _constructors}/uuid.py +0 -0
  114. {digitalhub-0.13.4.dist-info → digitalhub-0.14.0.dist-info}/WHEEL +0 -0
  115. {digitalhub-0.13.4.dist-info → digitalhub-0.14.0.dist-info}/licenses/AUTHORS +0 -0
  116. {digitalhub-0.13.4.dist-info → digitalhub-0.14.0.dist-info}/licenses/LICENSE +0 -0
@@ -11,8 +11,8 @@ from typing import Any
11
11
  from digitalhub.context.api import build_context
12
12
  from digitalhub.entities._base.entity.entity import Entity
13
13
  from digitalhub.entities._commons.enums import EntityTypes
14
- from digitalhub.entities._processors.base import base_processor
15
- from digitalhub.entities._processors.context import context_processor
14
+ from digitalhub.entities._constructors.uuid import build_uuid
15
+ from digitalhub.entities._processors.processors import base_processor, context_processor
16
16
  from digitalhub.entities.artifact.crud import (
17
17
  delete_artifact,
18
18
  get_artifact,
@@ -71,7 +71,7 @@ from digitalhub.entities.workflow.crud import (
71
71
  new_workflow,
72
72
  update_workflow,
73
73
  )
74
- from digitalhub.factory.factory import factory
74
+ from digitalhub.factory.entity import entity_factory
75
75
  from digitalhub.stores.client.api import get_client
76
76
  from digitalhub.utils.exceptions import BackendError, EntityAlreadyExistsError, EntityError
77
77
  from digitalhub.utils.generic_utils import get_timestamp
@@ -290,7 +290,7 @@ class Project(Entity):
290
290
  # Return updated object
291
291
  return obj
292
292
 
293
- def _import_entities(self, obj: dict) -> None:
293
+ def _import_entities(self, obj: dict, reset_id: bool = False) -> None:
294
294
  """
295
295
  Import project entities.
296
296
 
@@ -298,10 +298,6 @@ class Project(Entity):
298
298
  ----------
299
299
  obj : dict
300
300
  Project object in dictionary format.
301
-
302
- Returns
303
- -------
304
- None
305
301
  """
306
302
  entity_types = self._get_entity_types()
307
303
 
@@ -319,11 +315,19 @@ class Project(Entity):
319
315
  try:
320
316
  # Artifacts, Dataitems and Models
321
317
  if entity_type in entity_types[:3]:
322
- context_processor.import_context_entity(ref)
318
+ context_processor.import_context_entity(
319
+ file=ref,
320
+ reset_id=reset_id,
321
+ context=self.name,
322
+ )
323
323
 
324
324
  # Functions and Workflows
325
325
  elif entity_type in entity_types[3:]:
326
- context_processor.import_executable_entity(ref)
326
+ context_processor.import_executable_entity(
327
+ file=ref,
328
+ reset_id=reset_id,
329
+ context=self.name,
330
+ )
327
331
 
328
332
  except FileNotFoundError:
329
333
  msg = f"File not found: {ref}."
@@ -335,8 +339,13 @@ class Project(Entity):
335
339
  if entity["metadata"].get("embedded") is None:
336
340
  entity["metadata"]["embedded"] = True
337
341
 
342
+ if reset_id:
343
+ new_id = build_uuid()
344
+ entity["id"] = new_id
345
+ entity["metadata"]["version"] = new_id
346
+
338
347
  try:
339
- factory.build_entity_from_dict(entity).save()
348
+ entity_factory.build_entity_from_dict(entity).save()
340
349
  except EntityAlreadyExistsError:
341
350
  pass
342
351
 
@@ -348,10 +357,6 @@ class Project(Entity):
348
357
  ----------
349
358
  obj : dict
350
359
  Project object in dictionary format.
351
-
352
- Returns
353
- -------
354
- None
355
360
  """
356
361
  entity_types = self._get_entity_types()
357
362
 
@@ -527,7 +532,6 @@ class Project(Entity):
527
532
  self,
528
533
  identifier: str,
529
534
  entity_id: str | None = None,
530
- **kwargs,
531
535
  ) -> Artifact:
532
536
  """
533
537
  Get object from backend.
@@ -538,8 +542,6 @@ class Project(Entity):
538
542
  Entity key (store://...) or entity name.
539
543
  entity_id : str
540
544
  Entity ID.
541
- **kwargs : dict
542
- Parameters to pass to the API call.
543
545
 
544
546
  Returns
545
547
  -------
@@ -559,7 +561,6 @@ class Project(Entity):
559
561
  identifier=identifier,
560
562
  project=self.name,
561
563
  entity_id=entity_id,
562
- **kwargs,
563
564
  )
564
565
  self.refresh()
565
566
  return obj
@@ -567,7 +568,6 @@ class Project(Entity):
567
568
  def get_artifact_versions(
568
569
  self,
569
570
  identifier: str,
570
- **kwargs,
571
571
  ) -> list[Artifact]:
572
572
  """
573
573
  Get object versions from backend.
@@ -576,8 +576,6 @@ class Project(Entity):
576
576
  ----------
577
577
  identifier : str
578
578
  Entity key (store://...) or entity name.
579
- **kwargs : dict
580
- Parameters to pass to the API call.
581
579
 
582
580
  Returns
583
581
  -------
@@ -592,16 +590,40 @@ class Project(Entity):
592
590
  Using entity name:
593
591
  >>> obj = project.get_artifact_versions("my-artifact-name")
594
592
  """
595
- return get_artifact_versions(identifier, project=self.name, **kwargs)
593
+ return get_artifact_versions(identifier, project=self.name)
596
594
 
597
- def list_artifacts(self, **kwargs) -> list[Artifact]:
595
+ def list_artifacts(
596
+ self,
597
+ q: str | None = None,
598
+ name: str | None = None,
599
+ kind: str | None = None,
600
+ user: str | None = None,
601
+ state: str | None = None,
602
+ created: str | None = None,
603
+ updated: str | None = None,
604
+ version: str | None = None,
605
+ ) -> list[Artifact]:
598
606
  """
599
607
  List all latest version objects from backend.
600
608
 
601
609
  Parameters
602
610
  ----------
603
- **kwargs : dict
604
- Parameters to pass to the API call.
611
+ q : str
612
+ Query string to filter objects.
613
+ name : str
614
+ Object name.
615
+ kind : str
616
+ Kind of the object.
617
+ user : str
618
+ User that created the object.
619
+ state : str
620
+ Object state.
621
+ created : str
622
+ Creation date filter.
623
+ updated : str
624
+ Update date filter.
625
+ version : str
626
+ Object version, default is latest.
605
627
 
606
628
  Returns
607
629
  -------
@@ -612,12 +634,23 @@ class Project(Entity):
612
634
  --------
613
635
  >>> objs = project.list_artifacts()
614
636
  """
615
- return list_artifacts(self.name, **kwargs)
637
+ return list_artifacts(
638
+ self.name,
639
+ q=q,
640
+ name=name,
641
+ kind=kind,
642
+ user=user,
643
+ state=state,
644
+ created=created,
645
+ updated=updated,
646
+ version=version,
647
+ )
616
648
 
617
649
  def import_artifact(
618
650
  self,
619
- file: str,
620
- **kwargs,
651
+ file: str | None = None,
652
+ key: str | None = None,
653
+ reset_id: bool = True,
621
654
  ) -> Artifact:
622
655
  """
623
656
  Import object from a YAML file and create a new object into the backend.
@@ -626,8 +659,10 @@ class Project(Entity):
626
659
  ----------
627
660
  file : str
628
661
  Path to YAML file.
629
- **kwargs : dict
630
- Parameters to pass to the API call.
662
+ key : str
663
+ Entity key (store://...).
664
+ reset_id : bool
665
+ Flag to determine if the ID of context entities should be reset.
631
666
 
632
667
  Returns
633
668
  -------
@@ -638,7 +673,7 @@ class Project(Entity):
638
673
  --------
639
674
  >>> obj = project.import_artifact("my-artifact.yaml")
640
675
  """
641
- return import_artifact(file, **kwargs)
676
+ return import_artifact(file, key, reset_id, self.name)
642
677
 
643
678
  def update_artifact(self, entity: Artifact) -> Artifact:
644
679
  """
@@ -667,7 +702,6 @@ class Project(Entity):
667
702
  identifier: str,
668
703
  entity_id: str | None = None,
669
704
  delete_all_versions: bool = False,
670
- **kwargs,
671
705
  ) -> None:
672
706
  """
673
707
  Delete object from backend.
@@ -680,8 +714,6 @@ class Project(Entity):
680
714
  Entity ID.
681
715
  delete_all_versions : bool
682
716
  Delete all versions of the named entity. If True, use entity name instead of entity key as identifier.
683
- **kwargs : dict
684
- Parameters to pass to the API call.
685
717
 
686
718
  Returns
687
719
  -------
@@ -702,7 +734,6 @@ class Project(Entity):
702
734
  project=self.name,
703
735
  entity_id=entity_id,
704
736
  delete_all_versions=delete_all_versions,
705
- **kwargs,
706
737
  )
707
738
  self.refresh()
708
739
 
@@ -830,7 +861,6 @@ class Project(Entity):
830
861
  self,
831
862
  identifier: str,
832
863
  entity_id: str | None = None,
833
- **kwargs,
834
864
  ) -> Dataitem:
835
865
  """
836
866
  Get object from backend.
@@ -841,8 +871,6 @@ class Project(Entity):
841
871
  Entity key (store://...) or entity name.
842
872
  entity_id : str
843
873
  Entity ID.
844
- **kwargs : dict
845
- Parameters to pass to the API call.
846
874
 
847
875
  Returns
848
876
  -------
@@ -862,7 +890,6 @@ class Project(Entity):
862
890
  identifier=identifier,
863
891
  project=self.name,
864
892
  entity_id=entity_id,
865
- **kwargs,
866
893
  )
867
894
  self.refresh()
868
895
  return obj
@@ -870,7 +897,6 @@ class Project(Entity):
870
897
  def get_dataitem_versions(
871
898
  self,
872
899
  identifier: str,
873
- **kwargs,
874
900
  ) -> list[Dataitem]:
875
901
  """
876
902
  Get object versions from backend.
@@ -879,8 +905,6 @@ class Project(Entity):
879
905
  ----------
880
906
  identifier : str
881
907
  Entity key (store://...) or entity name.
882
- **kwargs : dict
883
- Parameters to pass to the API call.
884
908
 
885
909
  Returns
886
910
  -------
@@ -895,16 +919,40 @@ class Project(Entity):
895
919
  Using entity name:
896
920
  >>> obj = project.get_dataitem_versions("my-dataitem-name")
897
921
  """
898
- return get_dataitem_versions(identifier, project=self.name, **kwargs)
922
+ return get_dataitem_versions(identifier, project=self.name)
899
923
 
900
- def list_dataitems(self, **kwargs) -> list[Dataitem]:
924
+ def list_dataitems(
925
+ self,
926
+ q: str | None = None,
927
+ name: str | None = None,
928
+ kind: str | None = None,
929
+ user: str | None = None,
930
+ state: str | None = None,
931
+ created: str | None = None,
932
+ updated: str | None = None,
933
+ version: str | None = None,
934
+ ) -> list[Dataitem]:
901
935
  """
902
936
  List all latest version objects from backend.
903
937
 
904
938
  Parameters
905
939
  ----------
906
- **kwargs : dict
907
- Parameters to pass to the API call.
940
+ q : str
941
+ Query string to filter objects.
942
+ name : str
943
+ Object name.
944
+ kind : str
945
+ Kind of the object.
946
+ user : str
947
+ User that created the object.
948
+ state : str
949
+ Object state.
950
+ created : str
951
+ Creation date filter.
952
+ updated : str
953
+ Update date filter.
954
+ version : str
955
+ Object version, default is latest.
908
956
 
909
957
  Returns
910
958
  -------
@@ -915,12 +963,23 @@ class Project(Entity):
915
963
  --------
916
964
  >>> objs = project.list_dataitems()
917
965
  """
918
- return list_dataitems(self.name, **kwargs)
966
+ return list_dataitems(
967
+ self.name,
968
+ q=q,
969
+ name=name,
970
+ kind=kind,
971
+ user=user,
972
+ state=state,
973
+ created=created,
974
+ updated=updated,
975
+ version=version,
976
+ )
919
977
 
920
978
  def import_dataitem(
921
979
  self,
922
- file: str,
923
- **kwargs,
980
+ file: str | None = None,
981
+ key: str | None = None,
982
+ reset_id: bool = True,
924
983
  ) -> Dataitem:
925
984
  """
926
985
  Import object from a YAML file and create a new object into the backend.
@@ -929,8 +988,10 @@ class Project(Entity):
929
988
  ----------
930
989
  file : str
931
990
  Path to YAML file.
932
- **kwargs : dict
933
- Parameters to pass to the API call.
991
+ key : str
992
+ Entity key (store://...).
993
+ reset_id : bool
994
+ Flag to determine if the ID of context entities should be reset.
934
995
 
935
996
  Returns
936
997
  -------
@@ -941,7 +1002,7 @@ class Project(Entity):
941
1002
  --------
942
1003
  >>> obj = project.import_dataitem("my-dataitem.yaml")
943
1004
  """
944
- return import_dataitem(file, **kwargs)
1005
+ return import_dataitem(file, key, reset_id, self.name)
945
1006
 
946
1007
  def update_dataitem(self, entity: Dataitem) -> Dataitem:
947
1008
  """
@@ -970,7 +1031,6 @@ class Project(Entity):
970
1031
  identifier: str,
971
1032
  entity_id: str | None = None,
972
1033
  delete_all_versions: bool = False,
973
- **kwargs,
974
1034
  ) -> None:
975
1035
  """
976
1036
  Delete object from backend.
@@ -983,8 +1043,6 @@ class Project(Entity):
983
1043
  Entity ID.
984
1044
  delete_all_versions : bool
985
1045
  Delete all versions of the named entity. If True, use entity name instead of entity key as identifier.
986
- **kwargs : dict
987
- Parameters to pass to the API call.
988
1046
 
989
1047
  Returns
990
1048
  -------
@@ -1006,7 +1064,6 @@ class Project(Entity):
1006
1064
  project=self.name,
1007
1065
  entity_id=entity_id,
1008
1066
  delete_all_versions=delete_all_versions,
1009
- **kwargs,
1010
1067
  )
1011
1068
  self.refresh()
1012
1069
 
@@ -1122,7 +1179,6 @@ class Project(Entity):
1122
1179
  self,
1123
1180
  identifier: str,
1124
1181
  entity_id: str | None = None,
1125
- **kwargs,
1126
1182
  ) -> Model:
1127
1183
  """
1128
1184
  Get object from backend.
@@ -1133,8 +1189,6 @@ class Project(Entity):
1133
1189
  Entity key (store://...) or entity name.
1134
1190
  entity_id : str
1135
1191
  Entity ID.
1136
- **kwargs : dict
1137
- Parameters to pass to the API call.
1138
1192
 
1139
1193
  Returns
1140
1194
  -------
@@ -1154,7 +1208,6 @@ class Project(Entity):
1154
1208
  identifier=identifier,
1155
1209
  project=self.name,
1156
1210
  entity_id=entity_id,
1157
- **kwargs,
1158
1211
  )
1159
1212
  self.refresh()
1160
1213
  return obj
@@ -1162,7 +1215,6 @@ class Project(Entity):
1162
1215
  def get_model_versions(
1163
1216
  self,
1164
1217
  identifier: str,
1165
- **kwargs,
1166
1218
  ) -> list[Model]:
1167
1219
  """
1168
1220
  Get object versions from backend.
@@ -1171,8 +1223,6 @@ class Project(Entity):
1171
1223
  ----------
1172
1224
  identifier : str
1173
1225
  Entity key (store://...) or entity name.
1174
- **kwargs : dict
1175
- Parameters to pass to the API call.
1176
1226
 
1177
1227
  Returns
1178
1228
  -------
@@ -1187,16 +1237,40 @@ class Project(Entity):
1187
1237
  Using entity name:
1188
1238
  >>> obj = project.get_model_versions("my-model-name")
1189
1239
  """
1190
- return get_model_versions(identifier, project=self.name, **kwargs)
1240
+ return get_model_versions(identifier, project=self.name)
1191
1241
 
1192
- def list_models(self, **kwargs) -> list[Model]:
1242
+ def list_models(
1243
+ self,
1244
+ q: str | None = None,
1245
+ name: str | None = None,
1246
+ kind: str | None = None,
1247
+ user: str | None = None,
1248
+ state: str | None = None,
1249
+ created: str | None = None,
1250
+ updated: str | None = None,
1251
+ version: str | None = None,
1252
+ ) -> list[Model]:
1193
1253
  """
1194
1254
  List all latest version objects from backend.
1195
1255
 
1196
1256
  Parameters
1197
1257
  ----------
1198
- **kwargs : dict
1199
- Parameters to pass to the API call.
1258
+ q : str
1259
+ Query string to filter objects.
1260
+ name : str
1261
+ Object name.
1262
+ kind : str
1263
+ Kind of the object.
1264
+ user : str
1265
+ User that created the object.
1266
+ state : str
1267
+ Object state.
1268
+ created : str
1269
+ Creation date filter.
1270
+ updated : str
1271
+ Update date filter.
1272
+ version : str
1273
+ Object version, default is latest.
1200
1274
 
1201
1275
  Returns
1202
1276
  -------
@@ -1207,12 +1281,23 @@ class Project(Entity):
1207
1281
  --------
1208
1282
  >>> objs = project.list_models()
1209
1283
  """
1210
- return list_models(self.name, **kwargs)
1284
+ return list_models(
1285
+ self.name,
1286
+ q=q,
1287
+ name=name,
1288
+ kind=kind,
1289
+ user=user,
1290
+ state=state,
1291
+ created=created,
1292
+ updated=updated,
1293
+ version=version,
1294
+ )
1211
1295
 
1212
1296
  def import_model(
1213
1297
  self,
1214
- file: str,
1215
- **kwargs,
1298
+ file: str | None = None,
1299
+ key: str | None = None,
1300
+ reset_id: bool = True,
1216
1301
  ) -> Model:
1217
1302
  """
1218
1303
  Import object from a YAML file and create a new object into the backend.
@@ -1221,8 +1306,10 @@ class Project(Entity):
1221
1306
  ----------
1222
1307
  file : str
1223
1308
  Path to YAML file.
1224
- **kwargs : dict
1225
- Parameters to pass to the API call.
1309
+ key : str
1310
+ Entity key (store://...).
1311
+ reset_id : bool
1312
+ Flag to determine if the ID of context entities should be reset.
1226
1313
 
1227
1314
  Returns
1228
1315
  -------
@@ -1233,7 +1320,7 @@ class Project(Entity):
1233
1320
  --------
1234
1321
  >>> obj = project.import_model("my-model.yaml")
1235
1322
  """
1236
- return import_model(file, **kwargs)
1323
+ return import_model(file, key, reset_id, self.name)
1237
1324
 
1238
1325
  def update_model(self, entity: Model) -> Model:
1239
1326
  """
@@ -1262,7 +1349,6 @@ class Project(Entity):
1262
1349
  identifier: str,
1263
1350
  entity_id: str | None = None,
1264
1351
  delete_all_versions: bool = False,
1265
- **kwargs,
1266
1352
  ) -> None:
1267
1353
  """
1268
1354
  Delete object from backend.
@@ -1275,8 +1361,6 @@ class Project(Entity):
1275
1361
  Entity ID.
1276
1362
  delete_all_versions : bool
1277
1363
  Delete all versions of the named entity. If True, use entity name instead of entity key as identifier.
1278
- **kwargs : dict
1279
- Parameters to pass to the API call.
1280
1364
 
1281
1365
  Returns
1282
1366
  -------
@@ -1298,7 +1382,6 @@ class Project(Entity):
1298
1382
  project=self.name,
1299
1383
  entity_id=entity_id,
1300
1384
  delete_all_versions=delete_all_versions,
1301
- **kwargs,
1302
1385
  )
1303
1386
  self.refresh()
1304
1387
 
@@ -1365,7 +1448,6 @@ class Project(Entity):
1365
1448
  self,
1366
1449
  identifier: str,
1367
1450
  entity_id: str | None = None,
1368
- **kwargs,
1369
1451
  ) -> Function:
1370
1452
  """
1371
1453
  Get object from backend.
@@ -1376,8 +1458,6 @@ class Project(Entity):
1376
1458
  Entity key (store://...) or entity name.
1377
1459
  entity_id : str
1378
1460
  Entity ID.
1379
- **kwargs : dict
1380
- Parameters to pass to the API call.
1381
1461
 
1382
1462
  Returns
1383
1463
  -------
@@ -1397,7 +1477,6 @@ class Project(Entity):
1397
1477
  identifier=identifier,
1398
1478
  project=self.name,
1399
1479
  entity_id=entity_id,
1400
- **kwargs,
1401
1480
  )
1402
1481
  self.refresh()
1403
1482
  return obj
@@ -1405,7 +1484,6 @@ class Project(Entity):
1405
1484
  def get_function_versions(
1406
1485
  self,
1407
1486
  identifier: str,
1408
- **kwargs,
1409
1487
  ) -> list[Function]:
1410
1488
  """
1411
1489
  Get object versions from backend.
@@ -1414,8 +1492,6 @@ class Project(Entity):
1414
1492
  ----------
1415
1493
  identifier : str
1416
1494
  Entity key (store://...) or entity name.
1417
- **kwargs : dict
1418
- Parameters to pass to the API call.
1419
1495
 
1420
1496
  Returns
1421
1497
  -------
@@ -1430,16 +1506,40 @@ class Project(Entity):
1430
1506
  Using entity name:
1431
1507
  >>> obj = project.get_function_versions("my-function-name")
1432
1508
  """
1433
- return get_function_versions(identifier, project=self.name, **kwargs)
1509
+ return get_function_versions(identifier, project=self.name)
1434
1510
 
1435
- def list_functions(self, **kwargs) -> list[Function]:
1511
+ def list_functions(
1512
+ self,
1513
+ q: str | None = None,
1514
+ name: str | None = None,
1515
+ kind: str | None = None,
1516
+ user: str | None = None,
1517
+ state: str | None = None,
1518
+ created: str | None = None,
1519
+ updated: str | None = None,
1520
+ version: str | None = None,
1521
+ ) -> list[Function]:
1436
1522
  """
1437
1523
  List all latest version objects from backend.
1438
1524
 
1439
1525
  Parameters
1440
1526
  ----------
1441
- **kwargs : dict
1442
- Parameters to pass to the API call.
1527
+ q : str
1528
+ Query string to filter objects.
1529
+ name : str
1530
+ Object name.
1531
+ kind : str
1532
+ Kind of the object.
1533
+ user : str
1534
+ User that created the object.
1535
+ state : str
1536
+ Object state.
1537
+ created : str
1538
+ Creation date filter.
1539
+ updated : str
1540
+ Update date filter.
1541
+ version : str
1542
+ Object version, default is latest.
1443
1543
 
1444
1544
  Returns
1445
1545
  -------
@@ -1450,12 +1550,23 @@ class Project(Entity):
1450
1550
  --------
1451
1551
  >>> objs = project.list_functions()
1452
1552
  """
1453
- return list_functions(self.name, **kwargs)
1553
+ return list_functions(
1554
+ self.name,
1555
+ q=q,
1556
+ name=name,
1557
+ kind=kind,
1558
+ user=user,
1559
+ state=state,
1560
+ created=created,
1561
+ updated=updated,
1562
+ version=version,
1563
+ )
1454
1564
 
1455
1565
  def import_function(
1456
1566
  self,
1457
- file: str,
1458
- **kwargs,
1567
+ file: str | None = None,
1568
+ key: str | None = None,
1569
+ reset_id: bool = True,
1459
1570
  ) -> Function:
1460
1571
  """
1461
1572
  Import object from a YAML file and create a new object into the backend.
@@ -1464,8 +1575,10 @@ class Project(Entity):
1464
1575
  ----------
1465
1576
  file : str
1466
1577
  Path to YAML file.
1467
- **kwargs : dict
1468
- Parameters to pass to the API call.
1578
+ key : str
1579
+ Entity key (store://...).
1580
+ reset_id : bool
1581
+ Flag to determine if the ID of context entities should be reset.
1469
1582
 
1470
1583
  Returns
1471
1584
  -------
@@ -1476,7 +1589,7 @@ class Project(Entity):
1476
1589
  --------
1477
1590
  >>> obj = project.import_function("my-function.yaml")
1478
1591
  """
1479
- return import_function(file, **kwargs)
1592
+ return import_function(file, key, reset_id, self.name)
1480
1593
 
1481
1594
  def update_function(self, entity: Function) -> Function:
1482
1595
  """
@@ -1506,7 +1619,6 @@ class Project(Entity):
1506
1619
  entity_id: str | None = None,
1507
1620
  delete_all_versions: bool = False,
1508
1621
  cascade: bool = True,
1509
- **kwargs,
1510
1622
  ) -> None:
1511
1623
  """
1512
1624
  Delete object from backend.
@@ -1521,8 +1633,6 @@ class Project(Entity):
1521
1633
  Delete all versions of the named entity. If True, use entity name instead of entity key as identifier.
1522
1634
  cascade : bool
1523
1635
  Cascade delete.
1524
- **kwargs : dict
1525
- Parameters to pass to the API call.
1526
1636
 
1527
1637
  Returns
1528
1638
  -------
@@ -1544,7 +1654,6 @@ class Project(Entity):
1544
1654
  entity_id=entity_id,
1545
1655
  delete_all_versions=delete_all_versions,
1546
1656
  cascade=cascade,
1547
- **kwargs,
1548
1657
  )
1549
1658
  self.refresh()
1550
1659
 
@@ -1611,7 +1720,6 @@ class Project(Entity):
1611
1720
  self,
1612
1721
  identifier: str,
1613
1722
  entity_id: str | None = None,
1614
- **kwargs,
1615
1723
  ) -> Workflow:
1616
1724
  """
1617
1725
  Get object from backend.
@@ -1622,8 +1730,6 @@ class Project(Entity):
1622
1730
  Entity key (store://...) or entity name.
1623
1731
  entity_id : str
1624
1732
  Entity ID.
1625
- **kwargs : dict
1626
- Parameters to pass to the API call.
1627
1733
 
1628
1734
  Returns
1629
1735
  -------
@@ -1643,7 +1749,6 @@ class Project(Entity):
1643
1749
  identifier=identifier,
1644
1750
  project=self.name,
1645
1751
  entity_id=entity_id,
1646
- **kwargs,
1647
1752
  )
1648
1753
  self.refresh()
1649
1754
  return obj
@@ -1651,7 +1756,6 @@ class Project(Entity):
1651
1756
  def get_workflow_versions(
1652
1757
  self,
1653
1758
  identifier: str,
1654
- **kwargs,
1655
1759
  ) -> list[Workflow]:
1656
1760
  """
1657
1761
  Get object versions from backend.
@@ -1660,8 +1764,6 @@ class Project(Entity):
1660
1764
  ----------
1661
1765
  identifier : str
1662
1766
  Entity key (store://...) or entity name.
1663
- **kwargs : dict
1664
- Parameters to pass to the API call.
1665
1767
 
1666
1768
  Returns
1667
1769
  -------
@@ -1676,16 +1778,40 @@ class Project(Entity):
1676
1778
  Using entity name:
1677
1779
  >>> obj = project.get_workflow_versions("my-workflow-name")
1678
1780
  """
1679
- return get_workflow_versions(identifier, project=self.name, **kwargs)
1781
+ return get_workflow_versions(identifier, project=self.name)
1680
1782
 
1681
- def list_workflows(self, **kwargs) -> list[Workflow]:
1783
+ def list_workflows(
1784
+ self,
1785
+ q: str | None = None,
1786
+ name: str | None = None,
1787
+ kind: str | None = None,
1788
+ user: str | None = None,
1789
+ state: str | None = None,
1790
+ created: str | None = None,
1791
+ updated: str | None = None,
1792
+ version: str | None = None,
1793
+ ) -> list[Workflow]:
1682
1794
  """
1683
1795
  List all latest version objects from backend.
1684
1796
 
1685
1797
  Parameters
1686
1798
  ----------
1687
- **kwargs : dict
1688
- Parameters to pass to the API call.
1799
+ q : str
1800
+ Query string to filter objects.
1801
+ name : str
1802
+ Object name.
1803
+ kind : str
1804
+ Kind of the object.
1805
+ user : str
1806
+ User that created the object.
1807
+ state : str
1808
+ Object state.
1809
+ created : str
1810
+ Creation date filter.
1811
+ updated : str
1812
+ Update date filter.
1813
+ version : str
1814
+ Object version, default is latest.
1689
1815
 
1690
1816
  Returns
1691
1817
  -------
@@ -1696,12 +1822,23 @@ class Project(Entity):
1696
1822
  --------
1697
1823
  >>> objs = project.list_workflows()
1698
1824
  """
1699
- return list_workflows(self.name, **kwargs)
1825
+ return list_workflows(
1826
+ self.name,
1827
+ q=q,
1828
+ name=name,
1829
+ kind=kind,
1830
+ user=user,
1831
+ state=state,
1832
+ created=created,
1833
+ updated=updated,
1834
+ version=version,
1835
+ )
1700
1836
 
1701
1837
  def import_workflow(
1702
1838
  self,
1703
- file: str,
1704
- **kwargs,
1839
+ file: str | None = None,
1840
+ key: str | None = None,
1841
+ reset_id: bool = True,
1705
1842
  ) -> Workflow:
1706
1843
  """
1707
1844
  Import object from a YAML file and create a new object into the backend.
@@ -1710,8 +1847,10 @@ class Project(Entity):
1710
1847
  ----------
1711
1848
  file : str
1712
1849
  Path to YAML file.
1713
- **kwargs : dict
1714
- Parameters to pass to the API call.
1850
+ key : str
1851
+ Entity key (store://...).
1852
+ reset_id : bool
1853
+ Flag to determine if the ID of context entities should be reset.
1715
1854
 
1716
1855
  Returns
1717
1856
  -------
@@ -1722,7 +1861,7 @@ class Project(Entity):
1722
1861
  --------
1723
1862
  >>> obj = project.import_workflow("my-workflow.yaml")
1724
1863
  """
1725
- return import_workflow(file, **kwargs)
1864
+ return import_workflow(file, key, reset_id, self.name)
1726
1865
 
1727
1866
  def update_workflow(self, entity: Workflow) -> Workflow:
1728
1867
  """
@@ -1752,7 +1891,6 @@ class Project(Entity):
1752
1891
  entity_id: str | None = None,
1753
1892
  delete_all_versions: bool = False,
1754
1893
  cascade: bool = True,
1755
- **kwargs,
1756
1894
  ) -> None:
1757
1895
  """
1758
1896
  Delete object from backend.
@@ -1767,8 +1905,6 @@ class Project(Entity):
1767
1905
  Delete all versions of the named entity. If True, use entity name instead of entity key as identifier.
1768
1906
  cascade : bool
1769
1907
  Cascade delete.
1770
- **kwargs : dict
1771
- Parameters to pass to the API call.
1772
1908
 
1773
1909
  Returns
1774
1910
  -------
@@ -1790,7 +1926,6 @@ class Project(Entity):
1790
1926
  entity_id=entity_id,
1791
1927
  delete_all_versions=delete_all_versions,
1792
1928
  cascade=cascade,
1793
- **kwargs,
1794
1929
  )
1795
1930
  self.refresh()
1796
1931
 
@@ -1855,7 +1990,6 @@ class Project(Entity):
1855
1990
  self,
1856
1991
  identifier: str,
1857
1992
  entity_id: str | None = None,
1858
- **kwargs,
1859
1993
  ) -> Secret:
1860
1994
  """
1861
1995
  Get object from backend.
@@ -1866,8 +2000,6 @@ class Project(Entity):
1866
2000
  Entity key (store://...) or entity name.
1867
2001
  entity_id : str
1868
2002
  Entity ID.
1869
- **kwargs : dict
1870
- Parameters to pass to the API call.
1871
2003
 
1872
2004
  Returns
1873
2005
  -------
@@ -1887,7 +2019,6 @@ class Project(Entity):
1887
2019
  identifier=identifier,
1888
2020
  project=self.name,
1889
2021
  entity_id=entity_id,
1890
- **kwargs,
1891
2022
  )
1892
2023
  self.refresh()
1893
2024
  return obj
@@ -1895,7 +2026,6 @@ class Project(Entity):
1895
2026
  def get_secret_versions(
1896
2027
  self,
1897
2028
  identifier: str,
1898
- **kwargs,
1899
2029
  ) -> list[Secret]:
1900
2030
  """
1901
2031
  Get object versions from backend.
@@ -1904,8 +2034,6 @@ class Project(Entity):
1904
2034
  ----------
1905
2035
  identifier : str
1906
2036
  Entity key (store://...) or entity name.
1907
- **kwargs : dict
1908
- Parameters to pass to the API call.
1909
2037
 
1910
2038
  Returns
1911
2039
  -------
@@ -1920,9 +2048,9 @@ class Project(Entity):
1920
2048
  Using entity name:
1921
2049
  >>> obj = project.get_secret_versions("my-secret-name")
1922
2050
  """
1923
- return get_secret_versions(identifier, project=self.name, **kwargs)
2051
+ return get_secret_versions(identifier, project=self.name)
1924
2052
 
1925
- def list_secrets(self, **kwargs) -> list[Secret]:
2053
+ def list_secrets(self) -> list[Secret]:
1926
2054
  """
1927
2055
  List all latest version objects from backend.
1928
2056
 
@@ -1940,12 +2068,13 @@ class Project(Entity):
1940
2068
  --------
1941
2069
  >>> objs = project.list_secrets()
1942
2070
  """
1943
- return list_secrets(self.name, **kwargs)
2071
+ return list_secrets(self.name)
1944
2072
 
1945
2073
  def import_secret(
1946
2074
  self,
1947
- file: str,
1948
- **kwargs,
2075
+ file: str | None = None,
2076
+ key: str | None = None,
2077
+ reset_id: bool = True,
1949
2078
  ) -> Secret:
1950
2079
  """
1951
2080
  Import object from a YAML file and create a new object into the backend.
@@ -1954,8 +2083,10 @@ class Project(Entity):
1954
2083
  ----------
1955
2084
  file : str
1956
2085
  Path to YAML file.
1957
- **kwargs : dict
1958
- Parameters to pass to the API call.
2086
+ key : str
2087
+ Entity key (store://...).
2088
+ reset_id : bool
2089
+ Flag to determine if the ID of context entities should be reset.
1959
2090
 
1960
2091
  Returns
1961
2092
  -------
@@ -1966,7 +2097,7 @@ class Project(Entity):
1966
2097
  --------
1967
2098
  >>> obj = project.import_secret("my-secret.yaml")
1968
2099
  """
1969
- return import_secret(file, **kwargs)
2100
+ return import_secret(file, key, reset_id, self.name)
1970
2101
 
1971
2102
  def update_secret(self, entity: Secret) -> Secret:
1972
2103
  """
@@ -1995,7 +2126,6 @@ class Project(Entity):
1995
2126
  identifier: str,
1996
2127
  entity_id: str | None = None,
1997
2128
  delete_all_versions: bool = False,
1998
- **kwargs,
1999
2129
  ) -> None:
2000
2130
  """
2001
2131
  Delete object from backend.
@@ -2008,8 +2138,6 @@ class Project(Entity):
2008
2138
  Entity ID.
2009
2139
  delete_all_versions : bool
2010
2140
  Delete all versions of the named entity. If True, use entity name instead of entity key as identifier.
2011
- **kwargs : dict
2012
- Parameters to pass to the API call.
2013
2141
 
2014
2142
  Returns
2015
2143
  -------
@@ -2030,7 +2158,6 @@ class Project(Entity):
2030
2158
  project=self.name,
2031
2159
  entity_id=entity_id,
2032
2160
  delete_all_versions=delete_all_versions,
2033
- **kwargs,
2034
2161
  )
2035
2162
  self.refresh()
2036
2163
 
@@ -2041,7 +2168,6 @@ class Project(Entity):
2041
2168
  def get_run(
2042
2169
  self,
2043
2170
  identifier: str,
2044
- **kwargs,
2045
2171
  ) -> Run:
2046
2172
  """
2047
2173
  Get object from backend.
@@ -2050,8 +2176,6 @@ class Project(Entity):
2050
2176
  ----------
2051
2177
  identifier : str
2052
2178
  Entity key (store://...) or entity ID.
2053
- **kwargs : dict
2054
- Parameters to pass to the API call.
2055
2179
 
2056
2180
  Returns
2057
2181
  -------
@@ -2069,19 +2193,51 @@ class Project(Entity):
2069
2193
  obj = get_run(
2070
2194
  identifier=identifier,
2071
2195
  project=self.name,
2072
- **kwargs,
2073
2196
  )
2074
2197
  self.refresh()
2075
2198
  return obj
2076
2199
 
2077
- def list_runs(self, **kwargs) -> list[Run]:
2200
+ def list_runs(
2201
+ self,
2202
+ q: str | None = None,
2203
+ name: str | None = None,
2204
+ kind: str | None = None,
2205
+ user: str | None = None,
2206
+ state: str | None = None,
2207
+ created: str | None = None,
2208
+ updated: str | None = None,
2209
+ function: str | None = None,
2210
+ workflow: str | None = None,
2211
+ task: str | None = None,
2212
+ action: str | None = None,
2213
+ ) -> list[Run]:
2078
2214
  """
2079
2215
  List all latest objects from backend.
2080
2216
 
2081
2217
  Parameters
2082
2218
  ----------
2083
- **kwargs : dict
2084
- Parameters to pass to the API call.
2219
+ q : str
2220
+ Query string to filter objects.
2221
+ name : str
2222
+ Object name.
2223
+ kind : str
2224
+ Kind of the object.
2225
+ user : str
2226
+ User that created the object.
2227
+ state : str
2228
+ Object state.
2229
+ created : str
2230
+ Creation date filter.
2231
+ updated : str
2232
+ Update date filter.
2233
+ function : str
2234
+ Function key filter.
2235
+ workflow : str
2236
+ Workflow key filter.
2237
+ task : str
2238
+ Task string filter.
2239
+ action : str
2240
+ Action name filter.
2085
2241
 
2086
2242
  Returns
2087
2243
  -------
@@ -2092,12 +2248,25 @@ class Project(Entity):
2092
2248
  --------
2093
2249
  >>> objs = project.list_runs()
2094
2250
  """
2095
- return list_runs(self.name, **kwargs)
2251
+ return list_runs(
2252
+ self.name,
2253
+ q=q,
2254
+ name=name,
2255
+ kind=kind,
2256
+ user=user,
2257
+ state=state,
2258
+ created=created,
2259
+ updated=updated,
2260
+ function=function,
2261
+ workflow=workflow,
2262
+ task=task,
2263
+ action=action,
2264
+ )
2096
2265
 
2097
2266
  def delete_run(
2098
2267
  self,
2099
2268
  identifier: str,
2100
- **kwargs,
2269
+ entity_id: str,
2101
2270
  ) -> None:
2102
2271
  """
2103
2272
  Delete run from backend.
@@ -2105,9 +2274,9 @@ class Project(Entity):
2105
2274
  Parameters
2106
2275
  ----------
2107
2276
  identifier : str
2108
- Entity key (store://...) or entity ID.
2109
- **kwargs : dict
2110
- Parameters to pass to the API call.
2277
+ Entity key (store://...) or entity name.
2278
+ entity_id : str
2279
+ Entity ID.
2111
2280
 
2112
2281
  Returns
2113
2282
  -------
@@ -2122,7 +2291,7 @@ class Project(Entity):
2122
2291
  delete_run(
2123
2292
  identifier=identifier,
2124
2293
  project=self.name,
2125
- **kwargs,
2294
+ entity_id=entity_id,
2126
2295
  )
2127
2296
  self.refresh()
2128
2297