metaflow 2.16.7__py2.py3-none-any.whl → 2.16.8__py2.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.
@@ -3226,8 +3226,8 @@ class ArgoWorkflows(object):
3226
3226
  Trigger().template(
3227
3227
  TriggerTemplate(self.name)
3228
3228
  # Trigger a deployed workflow template
3229
- .argo_workflow_trigger(
3230
- ArgoWorkflowTrigger()
3229
+ .k8s_trigger(
3230
+ StandardK8STrigger()
3231
3231
  .source(
3232
3232
  {
3233
3233
  "resource": {
@@ -4205,6 +4205,10 @@ class TriggerTemplate(object):
4205
4205
  self.payload = tree()
4206
4206
  self.payload["name"] = name
4207
4207
 
4208
+ def k8s_trigger(self, k8s_trigger):
4209
+ self.payload["k8s"] = k8s_trigger.to_json()
4210
+ return self
4211
+
4208
4212
  def argo_workflow_trigger(self, argo_workflow_trigger):
4209
4213
  self.payload["argoWorkflow"] = argo_workflow_trigger.to_json()
4210
4214
  return self
@@ -4279,3 +4283,57 @@ class TriggerParameter(object):
4279
4283
 
4280
4284
  def __str__(self):
4281
4285
  return json.dumps(self.payload, indent=4)
4286
+
4287
+
4288
+ class StandardK8STrigger(object):
4289
+ # https://pkg.go.dev/github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1#StandardK8STrigger
4290
+
4291
+ def __init__(self):
4292
+ tree = lambda: defaultdict(tree)
4293
+ self.payload = tree()
4294
+ self.payload["operation"] = "create"
4295
+
4296
+ def operation(self, operation):
4297
+ self.payload["operation"] = operation
4298
+ return self
4299
+
4300
+ def group(self, group):
4301
+ self.payload["group"] = group
4302
+ return self
4303
+
4304
+ def version(self, version):
4305
+ self.payload["version"] = version
4306
+ return self
4307
+
4308
+ def resource(self, resource):
4309
+ self.payload["resource"] = resource
4310
+ return self
4311
+
4312
+ def namespace(self, namespace):
4313
+ self.payload["namespace"] = namespace
4314
+ return self
4315
+
4316
+ def source(self, source):
4317
+ self.payload["source"] = source
4318
+ return self
4319
+
4320
+ def parameters(self, trigger_parameters):
4321
+ if "parameters" not in self.payload:
4322
+ self.payload["parameters"] = []
4323
+ for trigger_parameter in trigger_parameters:
4324
+ self.payload["parameters"].append(trigger_parameter.to_json())
4325
+ return self
4326
+
4327
+ def live_object(self, live_object=True):
4328
+ self.payload["liveObject"] = live_object
4329
+ return self
4330
+
4331
+ def patch_strategy(self, patch_strategy):
4332
+ self.payload["patchStrategy"] = patch_strategy
4333
+ return self
4334
+
4335
+ def to_json(self):
4336
+ return self.payload
4337
+
4338
+ def __str__(self):
4339
+ return json.dumps(self.payload, indent=4)
@@ -6,6 +6,7 @@ from collections import namedtuple
6
6
  from metaflow.exception import MetaflowException
7
7
  from metaflow.metaflow_config import KUBERNETES_JOBSET_GROUP, KUBERNETES_JOBSET_VERSION
8
8
  from metaflow.tracing import inject_tracing_vars
9
+ from metaflow._vendor import yaml
9
10
 
10
11
  from .kube_utils import qos_requests_and_limits
11
12
 
@@ -1025,34 +1026,32 @@ class KubernetesArgoJobSet(object):
1025
1026
 
1026
1027
  def dump(self):
1027
1028
  client = self._kubernetes_sdk
1028
-
1029
- data = json.dumps(
1030
- client.ApiClient().sanitize_for_serialization(
1031
- dict(
1032
- apiVersion=self._group + "/" + self._version,
1033
- kind="JobSet",
1034
- metadata=client.api_client.ApiClient().sanitize_for_serialization(
1035
- client.V1ObjectMeta(
1036
- name=self.name,
1037
- labels=self._labels,
1038
- annotations=self._annotations,
1039
- )
1040
- ),
1041
- spec=dict(
1042
- replicatedJobs=[self.control.dump(), self.worker.dump()],
1043
- suspend=False,
1044
- startupPolicy=None,
1045
- successPolicy=None,
1046
- # The Failure Policy helps setting the number of retries for the jobset.
1047
- # but we don't rely on it and instead rely on either the local scheduler
1048
- # or the Argo Workflows to handle retries.
1049
- failurePolicy=None,
1050
- network=None,
1051
- ),
1052
- status=None,
1053
- )
1029
+ js_dict = client.ApiClient().sanitize_for_serialization(
1030
+ dict(
1031
+ apiVersion=self._group + "/" + self._version,
1032
+ kind="JobSet",
1033
+ metadata=client.api_client.ApiClient().sanitize_for_serialization(
1034
+ client.V1ObjectMeta(
1035
+ name=self.name,
1036
+ labels=self._labels,
1037
+ annotations=self._annotations,
1038
+ )
1039
+ ),
1040
+ spec=dict(
1041
+ replicatedJobs=[self.control.dump(), self.worker.dump()],
1042
+ suspend=False,
1043
+ startupPolicy=None,
1044
+ successPolicy=None,
1045
+ # The Failure Policy helps setting the number of retries for the jobset.
1046
+ # but we don't rely on it and instead rely on either the local scheduler
1047
+ # or the Argo Workflows to handle retries.
1048
+ failurePolicy=None,
1049
+ network=None,
1050
+ ),
1051
+ status=None,
1054
1052
  )
1055
1053
  )
1054
+ data = yaml.dump(js_dict, default_flow_style=False, indent=2)
1056
1055
  # The values we populate in the Jobset manifest (for Argo Workflows) piggybacks on the Argo Workflow's templating engine.
1057
1056
  # Even though Argo Workflows's templating helps us constructing all the necessary IDs and populating the fields
1058
1057
  # required by Metaflow, we run into one glitch. When we construct JSON/YAML serializable objects,
@@ -1067,7 +1066,6 @@ class KubernetesArgoJobSet(object):
1067
1066
  # Since the value of `num_parallel` can be dynamic and can change from run to run, we need to ensure that the
1068
1067
  # value can be passed-down dynamically and is **explicitly set as a integer** in the Jobset Manifest submitted as a
1069
1068
  # part of the Argo Workflow
1070
-
1071
- quoted_substring = '"{{=asInt(inputs.parameters.workerCount)}}"'
1069
+ quoted_substring = "'{{=asInt(inputs.parameters.workerCount)}}'"
1072
1070
  unquoted_substring = "{{=asInt(inputs.parameters.workerCount)}}"
1073
1071
  return data.replace(quoted_substring, unquoted_substring)
metaflow/version.py CHANGED
@@ -1 +1 @@
1
- metaflow_version = "2.16.7"
1
+ metaflow_version = "2.16.8"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: metaflow
3
- Version: 2.16.7
3
+ Version: 2.16.8
4
4
  Summary: Metaflow: More AI and ML, Less Engineering
5
5
  Author: Metaflow Developers
6
6
  Author-email: help@metaflow.org
@@ -26,7 +26,7 @@ License-File: LICENSE
26
26
  Requires-Dist: requests
27
27
  Requires-Dist: boto3
28
28
  Provides-Extra: stubs
29
- Requires-Dist: metaflow-stubs==2.16.7; extra == "stubs"
29
+ Requires-Dist: metaflow-stubs==2.16.8; extra == "stubs"
30
30
  Dynamic: author
31
31
  Dynamic: author-email
32
32
  Dynamic: classifier
@@ -36,7 +36,7 @@ metaflow/tuple_util.py,sha256=_G5YIEhuugwJ_f6rrZoelMFak3DqAR2tt_5CapS1XTY,830
36
36
  metaflow/unbounded_foreach.py,sha256=p184WMbrMJ3xKYHwewj27ZhRUsSj_kw1jlye5gA9xJk,387
37
37
  metaflow/util.py,sha256=g2SOU_CRzJLgDM_UGF9QDMANMAIHAsDRXE6S76_YzsY,14594
38
38
  metaflow/vendor.py,sha256=A82CGHfStZGDP5pQ5XzRjFkbN1ZC-vFmghXIrzMDDNg,5868
39
- metaflow/version.py,sha256=tvRnUStiBr6gf9dv7wCE7W_V_8G4vNoo_PysPH8tH9g,28
39
+ metaflow/version.py,sha256=LJ_ecrHE9dV_HLy2jVgiuSJcNaeKHWVVsTVcy4lccvs,28
40
40
  metaflow/_vendor/__init__.py,sha256=y_CiwUD3l4eAKvTVDZeqgVujMy31cAM1qjAB-HfI-9s,353
41
41
  metaflow/_vendor/typing_extensions.py,sha256=q9zxWa6p6CzF1zZvSkygSlklduHf_b3K7MCxGz7MJRc,134519
42
42
  metaflow/_vendor/zipp.py,sha256=ajztOH-9I7KA_4wqDYygtHa6xUBVZgFpmZ8FE74HHHI,8425
@@ -230,7 +230,7 @@ metaflow/plugins/airflow/sensors/s3_sensor.py,sha256=iDReG-7FKnumrtQg-HY6cCUAAqN
230
230
  metaflow/plugins/argo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
231
231
  metaflow/plugins/argo/argo_client.py,sha256=jLz0FjCTBvFLZt-8lZcMQhDcInhgEcGdPrU2Gvh67zA,17080
232
232
  metaflow/plugins/argo/argo_events.py,sha256=_C1KWztVqgi3zuH57pInaE9OzABc2NnncC-zdwOMZ-w,5909
233
- metaflow/plugins/argo/argo_workflows.py,sha256=v_3aXPi4Ya_IaisjlYFReluE4zaN3HDI6S_V7MR6iK4,187513
233
+ metaflow/plugins/argo/argo_workflows.py,sha256=wgbtRcIfXesZ-1RF-1X-i_hjzOiLw7c41l_NBdnH-9I,189118
234
234
  metaflow/plugins/argo/argo_workflows_cli.py,sha256=Le_GgvLVE1MhxQeOv-k5xp4L51tzQ6ZIq3_P-YEphIk,38784
235
235
  metaflow/plugins/argo/argo_workflows_decorator.py,sha256=ogCSBmwsC2C3eusydrgjuAJd4qK18f1sI4jJwA4Fd-o,7800
236
236
  metaflow/plugins/argo/argo_workflows_deployer.py,sha256=6kHxEnYXJwzNCM9swI8-0AckxtPWqwhZLerYkX8fxUM,4444
@@ -347,7 +347,7 @@ metaflow/plugins/kubernetes/kubernetes_cli.py,sha256=qtWTQqp8i-hTKAA0RcJ_qeOuD8T
347
347
  metaflow/plugins/kubernetes/kubernetes_client.py,sha256=tuvXP-QKpdeSmzVolB2R_TaacOr5DIb0j642eKcjsiM,6491
348
348
  metaflow/plugins/kubernetes/kubernetes_decorator.py,sha256=X5KD0_Hd6DB332uzOWootgmniu3OkLX5ImQ5fnyVUSU,32438
349
349
  metaflow/plugins/kubernetes/kubernetes_job.py,sha256=0QyEyi6XusHq5M7RqPY4ypQXrsQac-eG2O14b7inPOo,32277
350
- metaflow/plugins/kubernetes/kubernetes_jobsets.py,sha256=ZZU5vsBe67NmGuxgXw6clf7kKRST7867AW6_t3fCD5g,43065
350
+ metaflow/plugins/kubernetes/kubernetes_jobsets.py,sha256=9DOGNdGnhOlaBsIp1Sl7ylIc444WRP7Y_fT2_JbPZLg,43040
351
351
  metaflow/plugins/kubernetes/spot_metadata_cli.py,sha256=an0nWCxgflmqIPBCBrlb4m3DereDFFJBLt-KKhqcHc8,1670
352
352
  metaflow/plugins/kubernetes/spot_monitor_sidecar.py,sha256=zrWU-smQwPnL6MBHmzTxWyEA00R6iKKQbhhy50xFwQ8,3832
353
353
  metaflow/plugins/metadata_providers/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
@@ -426,12 +426,12 @@ metaflow/user_decorators/mutable_flow.py,sha256=icF7XFCS5FdlW3OEL68ZbQOtTPhLsUyc
426
426
  metaflow/user_decorators/mutable_step.py,sha256=-BY0UDXf_RCAEnC5JlLzEXGdiw1KD9oSrSxS_SWaB9Y,16791
427
427
  metaflow/user_decorators/user_flow_decorator.py,sha256=2yDwZq9QGv9W-7kEuKwa8o4ZkTvuHJ5ESz7VVrGViAI,9890
428
428
  metaflow/user_decorators/user_step_decorator.py,sha256=JYNGXONWCpzwn-_bF5WiAkof4Ii9tRS4xdK8ojSxG6M,26007
429
- metaflow-2.16.7.data/data/share/metaflow/devtools/Makefile,sha256=5n89OGIC_kE4wxtEI66VCucN-b-1w5bqvGeZYmeRGz8,13737
430
- metaflow-2.16.7.data/data/share/metaflow/devtools/Tiltfile,sha256=I55XTG4RBnrMfDcYRtREXqqS8T9bF8agkZq0DlvdFLk,21404
431
- metaflow-2.16.7.data/data/share/metaflow/devtools/pick_services.sh,sha256=DCnrMXwtApfx3B4S-YiZESMyAFHbXa3VuNL0MxPLyiE,2196
432
- metaflow-2.16.7.dist-info/licenses/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
433
- metaflow-2.16.7.dist-info/METADATA,sha256=Fi200X0TLYMtQ7HErgGkqtpANJ_wpFJGXEAjvbFWEN8,6740
434
- metaflow-2.16.7.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
435
- metaflow-2.16.7.dist-info/entry_points.txt,sha256=RvEq8VFlgGe_FfqGOZi0D7ze1hLD0pAtXeNyGfzc_Yc,103
436
- metaflow-2.16.7.dist-info/top_level.txt,sha256=v1pDHoWaSaKeuc5fKTRSfsXCKSdW1zvNVmvA-i0if3o,9
437
- metaflow-2.16.7.dist-info/RECORD,,
429
+ metaflow-2.16.8.data/data/share/metaflow/devtools/Makefile,sha256=5n89OGIC_kE4wxtEI66VCucN-b-1w5bqvGeZYmeRGz8,13737
430
+ metaflow-2.16.8.data/data/share/metaflow/devtools/Tiltfile,sha256=I55XTG4RBnrMfDcYRtREXqqS8T9bF8agkZq0DlvdFLk,21404
431
+ metaflow-2.16.8.data/data/share/metaflow/devtools/pick_services.sh,sha256=DCnrMXwtApfx3B4S-YiZESMyAFHbXa3VuNL0MxPLyiE,2196
432
+ metaflow-2.16.8.dist-info/licenses/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
433
+ metaflow-2.16.8.dist-info/METADATA,sha256=TmUiaW88Xki28z8MEUj6iEMjB0mnXxbcbUrw65Pi_wM,6740
434
+ metaflow-2.16.8.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
435
+ metaflow-2.16.8.dist-info/entry_points.txt,sha256=RvEq8VFlgGe_FfqGOZi0D7ze1hLD0pAtXeNyGfzc_Yc,103
436
+ metaflow-2.16.8.dist-info/top_level.txt,sha256=v1pDHoWaSaKeuc5fKTRSfsXCKSdW1zvNVmvA-i0if3o,9
437
+ metaflow-2.16.8.dist-info/RECORD,,