ob-metaflow 2.11.4.9__py2.py3-none-any.whl → 2.11.9.1__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.

Potentially problematic release.


This version of ob-metaflow might be problematic. Click here for more details.

Files changed (38) hide show
  1. metaflow/cli.py +15 -10
  2. metaflow/clone_util.py +71 -0
  3. metaflow/cmd/develop/stub_generator.py +2 -0
  4. metaflow/cmd/develop/stubs.py +17 -8
  5. metaflow/metaflow_config.py +3 -0
  6. metaflow/package.py +4 -3
  7. metaflow/parameters.py +2 -2
  8. metaflow/plugins/aws/batch/batch.py +12 -0
  9. metaflow/plugins/aws/batch/batch_cli.py +25 -0
  10. metaflow/plugins/aws/batch/batch_client.py +40 -0
  11. metaflow/plugins/aws/batch/batch_decorator.py +32 -1
  12. metaflow/plugins/aws/step_functions/step_functions.py +3 -0
  13. metaflow/plugins/datatools/s3/s3op.py +4 -3
  14. metaflow/plugins/env_escape/client.py +154 -27
  15. metaflow/plugins/env_escape/client_modules.py +15 -47
  16. metaflow/plugins/env_escape/configurations/emulate_test_lib/overrides.py +31 -42
  17. metaflow/plugins/env_escape/configurations/emulate_test_lib/server_mappings.py +8 -3
  18. metaflow/plugins/env_escape/configurations/test_lib_impl/test_lib.py +74 -22
  19. metaflow/plugins/env_escape/consts.py +1 -0
  20. metaflow/plugins/env_escape/exception_transferer.py +46 -112
  21. metaflow/plugins/env_escape/override_decorators.py +8 -8
  22. metaflow/plugins/env_escape/server.py +42 -5
  23. metaflow/plugins/env_escape/stub.py +168 -23
  24. metaflow/plugins/env_escape/utils.py +3 -3
  25. metaflow/plugins/gcp/gcp_secret_manager_secrets_provider.py +3 -2
  26. metaflow/plugins/pypi/conda_environment.py +9 -0
  27. metaflow/plugins/pypi/pip.py +17 -2
  28. metaflow/runtime.py +252 -61
  29. metaflow/sidecar/sidecar.py +11 -1
  30. metaflow/sidecar/sidecar_subprocess.py +34 -18
  31. metaflow/task.py +28 -54
  32. metaflow/version.py +1 -1
  33. {ob_metaflow-2.11.4.9.dist-info → ob_metaflow-2.11.9.1.dist-info}/METADATA +2 -2
  34. {ob_metaflow-2.11.4.9.dist-info → ob_metaflow-2.11.9.1.dist-info}/RECORD +38 -37
  35. {ob_metaflow-2.11.4.9.dist-info → ob_metaflow-2.11.9.1.dist-info}/WHEEL +1 -1
  36. {ob_metaflow-2.11.4.9.dist-info → ob_metaflow-2.11.9.1.dist-info}/LICENSE +0 -0
  37. {ob_metaflow-2.11.4.9.dist-info → ob_metaflow-2.11.9.1.dist-info}/entry_points.txt +0 -0
  38. {ob_metaflow-2.11.4.9.dist-info → ob_metaflow-2.11.9.1.dist-info}/top_level.txt +0 -0
@@ -25,6 +25,10 @@ try:
25
25
  except:
26
26
  blockingError = OSError
27
27
 
28
+ import threading
29
+
30
+ lock = threading.Lock()
31
+
28
32
 
29
33
  class PipeUnavailableError(Exception):
30
34
  """raised when unable to write to pipe given allotted time"""
@@ -113,16 +117,16 @@ class SidecarSubProcess(object):
113
117
  except:
114
118
  pass
115
119
 
116
- def send(self, msg, retries=3):
120
+ def send(self, msg, retries=3, thread_safe_send=False):
117
121
  if msg.msg_type == MessageTypes.MUST_SEND:
118
122
  # If this is a must-send message, we treat it a bit differently. A must-send
119
123
  # message has to be properly sent before any of the other best effort messages.
120
124
  self._cached_mustsend = msg.payload
121
125
  self._send_mustsend_remaining_tries = MUST_SEND_RETRY_TIMES
122
- self._send_mustsend(retries)
126
+ self._send_mustsend(retries, thread_safe_send)
123
127
  else:
124
128
  # Ignore return code for send.
125
- self._send_internal(msg, retries=retries)
129
+ self._send_internal(msg, retries=retries, thread_safe_send=thread_safe_send)
126
130
 
127
131
  def _start_subprocess(self, cmdline):
128
132
  for _ in range(3):
@@ -145,7 +149,7 @@ class SidecarSubProcess(object):
145
149
  self._logger("Unknown popen error: %s" % repr(e))
146
150
  break
147
151
 
148
- def _send_internal(self, msg, retries=3):
152
+ def _send_internal(self, msg, retries=3, thread_safe_send=False):
149
153
  if self._process is None:
150
154
  return False
151
155
  try:
@@ -157,13 +161,13 @@ class SidecarSubProcess(object):
157
161
  # restart sidecar so use the PipeUnavailableError caught below
158
162
  raise PipeUnavailableError()
159
163
  elif self._send_mustsend_remaining_tries > 0:
160
- self._send_mustsend()
164
+ self._send_mustsend(thread_safe_send=thread_safe_send)
161
165
  if self._send_mustsend_remaining_tries == 0:
162
- self._emit_msg(msg)
166
+ self._emit_msg(msg, thread_safe_send)
163
167
  self._prev_message_error = False
164
168
  return True
165
169
  else:
166
- self._emit_msg(msg)
170
+ self._emit_msg(msg, thread_safe_send)
167
171
  self._prev_message_error = False
168
172
  return True
169
173
  return False
@@ -184,14 +188,14 @@ class SidecarSubProcess(object):
184
188
  self._prev_message_error = True
185
189
  if retries > 0:
186
190
  self._logger("Retrying msg send to sidecar (due to %s)" % repr(ex))
187
- return self._send_internal(msg, retries - 1)
191
+ return self._send_internal(msg, retries - 1, thread_safe_send)
188
192
  else:
189
193
  self._logger(
190
194
  "Error sending log message (exhausted retries): %s" % repr(ex)
191
195
  )
192
196
  return False
193
197
 
194
- def _send_mustsend(self, retries=3):
198
+ def _send_mustsend(self, retries=3, thread_safe_send=False):
195
199
  if (
196
200
  self._cached_mustsend is not None
197
201
  and self._send_mustsend_remaining_tries > 0
@@ -199,7 +203,9 @@ class SidecarSubProcess(object):
199
203
  # If we don't succeed in sending the must-send, we will try again
200
204
  # next time.
201
205
  if self._send_internal(
202
- Message(MessageTypes.MUST_SEND, self._cached_mustsend), retries
206
+ Message(MessageTypes.MUST_SEND, self._cached_mustsend),
207
+ retries,
208
+ thread_safe_send,
203
209
  ):
204
210
  self._cached_mustsend = None
205
211
  self._send_mustsend_remaining_tries = 0
@@ -211,14 +217,7 @@ class SidecarSubProcess(object):
211
217
  self._send_mustsend_remaining_tries = -1
212
218
  return False
213
219
 
214
- def _emit_msg(self, msg):
215
- # If the previous message had an error, we want to prepend a "\n" to this message
216
- # to maximize the chance of this message being valid (for example, if the
217
- # previous message only partially sent for whatever reason, we want to "clear" it)
218
- msg = msg.serialize()
219
- if self._prev_message_error:
220
- msg = "\n" + msg
221
- msg_ser = msg.encode("utf-8")
220
+ def _write_bytes(self, msg_ser):
222
221
  written_bytes = 0
223
222
  while written_bytes < len(msg_ser):
224
223
  # self._logger("Sent %d out of %d bytes" % (written_bytes, len(msg_ser)))
@@ -235,6 +234,23 @@ class SidecarSubProcess(object):
235
234
  # sidecar is disabled, ignore all messages
236
235
  break
237
236
 
237
+ def _emit_msg(self, msg, thread_safe_send=False):
238
+ # If the previous message had an error, we want to prepend a "\n" to this message
239
+ # to maximize the chance of this message being valid (for example, if the
240
+ # previous message only partially sent for whatever reason, we want to "clear" it)
241
+ msg = msg.serialize()
242
+ if self._prev_message_error:
243
+ msg = "\n" + msg
244
+ msg_ser = msg.encode("utf-8")
245
+
246
+ # If threadsafe send is enabled, we will use a lock to ensure that only one thread
247
+ # can send a message at a time. This is to avoid interleaving of messages.
248
+ if thread_safe_send:
249
+ with lock:
250
+ self._write_bytes(msg_ser)
251
+ else:
252
+ self._write_bytes(msg_ser)
253
+
238
254
  def _logger(self, msg):
239
255
  if debug.sidecar:
240
256
  print("[sidecar:%s] %s" % (self._worker_type, msg), file=sys.stderr)
metaflow/task.py CHANGED
@@ -20,6 +20,7 @@ from .exception import (
20
20
  )
21
21
  from .unbounded_foreach import UBF_CONTROL
22
22
  from .util import all_equal, get_username, resolve_identity, unicode_type
23
+ from .clone_util import clone_task_helper
23
24
  from .metaflow_current import current
24
25
  from metaflow.tracing import get_trace_id
25
26
  from metaflow.util import namedtuple_with_defaults
@@ -284,70 +285,43 @@ class MetaflowTask(object):
284
285
  task_id,
285
286
  clone_origin_task,
286
287
  retry_count,
287
- wait_only=False,
288
288
  ):
289
289
  if not clone_origin_task:
290
290
  raise MetaflowInternalError(
291
291
  "task.clone_only needs a valid clone_origin_task value."
292
292
  )
293
- if wait_only:
294
- # In this case, we are actually going to wait for the clone to be done
295
- # by someone else. To do this, we just get the task_datastore in "r" mode
296
- while True:
297
- try:
298
- ds = self.flow_datastore.get_task_datastore(
299
- run_id, step_name, task_id
300
- )
301
- if not ds["_task_ok"]:
302
- raise MetaflowInternalError(
303
- "Externally cloned task did not succeed"
304
- )
305
- break
306
- except DataException:
307
- # No need to get fancy with the sleep here.
308
- time.sleep(5)
309
- return
310
- # If we actually have to do the clone ourselves, proceed...
311
- # 1. initialize output datastore
312
- output = self.flow_datastore.get_task_datastore(
313
- run_id, step_name, task_id, attempt=0, mode="w"
314
- )
293
+ origin_run_id, _, origin_task_id = clone_origin_task.split("/")
315
294
 
316
- output.init_task()
317
-
318
- origin_run_id, origin_step_name, origin_task_id = clone_origin_task.split("/")
319
- # 2. initialize origin datastore
320
- origin = self.flow_datastore.get_task_datastore(
321
- origin_run_id, origin_step_name, origin_task_id
322
- )
323
- metadata_tags = ["attempt_id:{0}".format(retry_count)]
324
- output.clone(origin)
325
- self.metadata.register_metadata(
295
+ msg = {
296
+ "task_id": task_id,
297
+ "msg": "Cloning task from {}/{}/{}/{} to {}/{}/{}/{}".format(
298
+ self.flow.name,
299
+ origin_run_id,
300
+ step_name,
301
+ origin_task_id,
302
+ self.flow.name,
303
+ run_id,
304
+ step_name,
305
+ task_id,
306
+ ),
307
+ "step_name": step_name,
308
+ "run_id": run_id,
309
+ "flow_name": self.flow.name,
310
+ "ts": round(time.time()),
311
+ }
312
+ self.event_logger.log(msg)
313
+ # If we actually have to do the clone ourselves, proceed...
314
+ clone_task_helper(
315
+ self.flow.name,
316
+ origin_run_id,
326
317
  run_id,
327
318
  step_name,
319
+ origin_task_id,
328
320
  task_id,
329
- [
330
- MetaDatum(
331
- field="origin-task-id",
332
- value=str(origin_task_id),
333
- type="origin-task-id",
334
- tags=metadata_tags,
335
- ),
336
- MetaDatum(
337
- field="origin-run-id",
338
- value=str(origin_run_id),
339
- type="origin-run-id",
340
- tags=metadata_tags,
341
- ),
342
- MetaDatum(
343
- field="attempt",
344
- value=str(retry_count),
345
- type="attempt",
346
- tags=metadata_tags,
347
- ),
348
- ],
321
+ self.flow_datastore,
322
+ self.metadata,
323
+ attempt_id=retry_count,
349
324
  )
350
- output.done()
351
325
 
352
326
  def _finalize_control_task(self):
353
327
  # Update `_transition` which is expected by the NativeRuntime.
metaflow/version.py CHANGED
@@ -1 +1 @@
1
- metaflow_version = "2.11.4.9"
1
+ metaflow_version = "2.11.9.1"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ob-metaflow
3
- Version: 2.11.4.9
3
+ Version: 2.11.9.1
4
4
  Summary: Metaflow: More Data Science, Less Engineering
5
5
  Author: Netflix, Outerbounds & the Metaflow Community
6
6
  Author-email: help@outerbounds.co
@@ -12,7 +12,7 @@ Requires-Dist: boto3
12
12
  Requires-Dist: pylint
13
13
  Requires-Dist: kubernetes
14
14
  Provides-Extra: stubs
15
- Requires-Dist: ob-metaflow-stubs ==2.11.4.9 ; extra == 'stubs'
15
+ Requires-Dist: ob-metaflow-stubs ==2.11.9.1 ; extra == 'stubs'
16
16
 
17
17
  ![Metaflow_Logo_Horizontal_FullColor_Ribbon_Dark_RGB](https://user-images.githubusercontent.com/763451/89453116-96a57e00-d713-11ea-9fa6-82b29d4d6eff.png)
18
18
 
@@ -1,8 +1,9 @@
1
1
  metaflow/R.py,sha256=bNcXXpGOe5wquzTRGyU0KS9gJMz7HceKjXxammYPUE0,3841
2
2
  metaflow/__init__.py,sha256=3xaDoR_uEUnf4lzQMR6Akj2IctN03nlOvTKBzFHsiAA,6028
3
3
  metaflow/cards.py,sha256=tP1_RrtmqdFh741pqE4t98S7SA0MtGRlGvRICRZF1Mg,426
4
- metaflow/cli.py,sha256=foexQYA7dHyIsxDrQkpuc8lF3FucgpmzYQUO5kemcek,35139
4
+ metaflow/cli.py,sha256=t8BpXpfr1UtjegySI6ydz6w7TaAyYmwZjbk6K2ZB-ns,35313
5
5
  metaflow/cli_args.py,sha256=lcgBGNTvfaiPxiUnejAe60Upt9swG6lRy1_3OqbU6MY,2616
6
+ metaflow/clone_util.py,sha256=ar4jSZt2aTd4monBpkIQmcLcsOd0relAB42qTUGt2j8,1810
6
7
  metaflow/cmd_with_io.py,sha256=kl53HkAIyv0ecpItv08wZYczv7u3msD1VCcciqigqf0,588
7
8
  metaflow/debug.py,sha256=HEmt_16tJtqHXQXsqD9pqOFe3CWR5GZ7VwpaYQgnRdU,1466
8
9
  metaflow/decorators.py,sha256=EGL1_nkdxoYG5AZiOQ8sLGA1bprGK8ENwlSIOYQmLhs,21357
@@ -14,7 +15,7 @@ metaflow/graph.py,sha256=ZPxyG8uwVMk5YYgX4pQEQaPZtZM5Wy-G4NtJK73IEuA,11818
14
15
  metaflow/includefile.py,sha256=yHczcZ_U0SrasxSNhZb3DIBzx8UZnrJCl3FzvpEQLOA,19753
15
16
  metaflow/integrations.py,sha256=LlsaoePRg03DjENnmLxZDYto3NwWc9z_PtU6nJxLldg,1480
16
17
  metaflow/lint.py,sha256=_kYAbAtsP7IG1Rd0FqNbo8I8Zs66_0WXbaZJFARO3dE,10394
17
- metaflow/metaflow_config.py,sha256=449En_ihfgW66mpgLYeiJjknfC6aNTBjSAcXd5jtPM4,20511
18
+ metaflow/metaflow_config.py,sha256=WmO8-gQeLlbUJb88REHuR77nll8FF_yQ68pS9bT9Pfs,20624
18
19
  metaflow/metaflow_config_funcs.py,sha256=pCaiQ2ez9wXixJI3ehmf3QiW9lUqFrZnBZx1my_0wIg,4874
19
20
  metaflow/metaflow_current.py,sha256=sCENPBiji3LcPbwgOG0ukGd_yEc5tST8EowES8DzRtA,7430
20
21
  metaflow/metaflow_environment.py,sha256=XiMmBZiq3_dwaw0Oi3B8588BahYxzgfqWGMePPZqUUc,7359
@@ -22,18 +23,18 @@ metaflow/metaflow_profile.py,sha256=jKPEW-hmAQO-htSxb9hXaeloLacAh41A35rMZH6G8pA,
22
23
  metaflow/metaflow_version.py,sha256=mPQ6g_3XjNdi0NrxDzwlW8ZH0nMyYpwqmJ04P7TIdP0,4774
23
24
  metaflow/monitor.py,sha256=T0NMaBPvXynlJAO_avKtk8OIIRMyEuMAyF8bIp79aZU,5323
24
25
  metaflow/multicore_utils.py,sha256=vdTNgczVLODifscUbbveJbuSDOl3Y9pAxhr7sqYiNf4,4760
25
- metaflow/package.py,sha256=vX86iJ2xXWcGrOmABEfgOHuNBMqCBAu7ukjg-e0PZf8,7319
26
- metaflow/parameters.py,sha256=K1LSSm_Pql8XQrzTEUkk9TiM6mDudvfyDZ8unhu37YY,14101
26
+ metaflow/package.py,sha256=sOvRpnvqVaQa6eR8lwcfb5HYCGqmpYFPm-cLgOEdl04,7377
27
+ metaflow/parameters.py,sha256=uuYCtpPycFbnYXrFn89zunzTfTi76NFaPCBasNZGYJE,14121
27
28
  metaflow/procpoll.py,sha256=22ppTUyaTYVn1UUG4RNG1LnCKBwRbaTmhYiYN_7OVN8,2861
28
29
  metaflow/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
30
  metaflow/pylint_wrapper.py,sha256=zzBY9YaSUZOGH-ypDKAv2B_7XcoyMZj-zCoCrmYqNRc,2865
30
- metaflow/runtime.py,sha256=_LigKNog-gQbiTWtD-foDvNnVWEphjYyYwcrT_GMDp0,56117
31
+ metaflow/runtime.py,sha256=sGBkNMamV0bXBtZGCwvwQODrUrAGhln2rqadBVyKSvU,63961
31
32
  metaflow/tagging_util.py,sha256=ctyf0Q1gBi0RyZX6J0e9DQGNkNHblV_CITfy66axXB4,2346
32
- metaflow/task.py,sha256=rGBlG18vnHKC65CYiFkja0GsXYWmRVrNOeCD4TY_nL4,27032
33
+ metaflow/task.py,sha256=ecGaULbK8kXPnyWzH1u6wtGclm0qeJm7K95amEL17sQ,25863
33
34
  metaflow/unbounded_foreach.py,sha256=p184WMbrMJ3xKYHwewj27ZhRUsSj_kw1jlye5gA9xJk,387
34
35
  metaflow/util.py,sha256=RrjsvADLKxSqjL76CxKh_J4OJl840B9Ak3V-vXleGas,13429
35
36
  metaflow/vendor.py,sha256=LZgXrh7ZSDmD32D1T5jj3OKKpXIqqxKzdMAOc5V0SD4,5162
36
- metaflow/version.py,sha256=0jNXZXhdUIQPZOntxrkTbqKoGxOKQ-cxbBi0dTjz6Jc,30
37
+ metaflow/version.py,sha256=yKncWWFL4OF_XHTiyjxLWbQHk0S4UO7_4qNT0J936-s,30
37
38
  metaflow/_vendor/__init__.py,sha256=y_CiwUD3l4eAKvTVDZeqgVujMy31cAM1qjAB-HfI-9s,353
38
39
  metaflow/_vendor/click/__init__.py,sha256=FkyGDQ-cbiQxP_lxgUspyFYS48f2S_pTcfKPz-d_RMo,2463
39
40
  metaflow/_vendor/click/_bashcomplete.py,sha256=9J98IHQYmCAr2Jup6TDshUr5FJEen-AoQCZR0K5nKxQ,12309
@@ -93,8 +94,8 @@ metaflow/cmd/main_cli.py,sha256=Yunxh0QFUPgGYMe0eeGrbmxtZGVdJPCgkd4P1x_j8B4,2950
93
94
  metaflow/cmd/tutorials_cmd.py,sha256=8FdlKkicTOhCIDKcBR5b0Oz6giDvS-EMY3o9skIrRqw,5156
94
95
  metaflow/cmd/util.py,sha256=jS_0rUjOnGGzPT65fzRLdGjrYAOOLA4jU2S0HJLV0oc,406
95
96
  metaflow/cmd/develop/__init__.py,sha256=p1Sy8yU1MEKSrH5ttOWOZvNcI1qYu6J6jghdTHwPgOw,689
96
- metaflow/cmd/develop/stub_generator.py,sha256=HEnpg6r8xsf15mtV6x08ysi33TkPNct874p6Z0hec6M,46526
97
- metaflow/cmd/develop/stubs.py,sha256=uCe9DwqUaMidRwdxEcp8GmYxd1_645N1A31L48kSQKU,11498
97
+ metaflow/cmd/develop/stub_generator.py,sha256=fmiWmr4tXBBvIZdWVEhKvZWtG4vjyIsfreh-sJQnkjc,46645
98
+ metaflow/cmd/develop/stubs.py,sha256=hhf1giRNNlFGB5zSZdNA8tNvnJcmotXSiNN06N3_WyA,11742
98
99
  metaflow/datastore/__init__.py,sha256=VxP6ddJt3rwiCkpiSfAhyVkUCOe1pgZZsytVEJzFmSQ,155
99
100
  metaflow/datastore/content_addressed_store.py,sha256=dCVFAr4PltlmXNVVYt7UaBGJWe6fWuicCgb68XHqLrA,7643
100
101
  metaflow/datastore/datastore_set.py,sha256=sjwcxO6ZJgZ7ief_L-TTpjoRJYIlJnGGG_WSaDRij28,2368
@@ -156,10 +157,10 @@ metaflow/plugins/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
156
157
  metaflow/plugins/aws/aws_client.py,sha256=mO8UD6pxFaOnxDb3hTP3HB7Gqb_ZxoR-76LT683WHvI,4036
157
158
  metaflow/plugins/aws/aws_utils.py,sha256=SEszFRtcj0RAnySlN3Ox4WETe-jitQtSa10lmrPdiVs,7213
158
159
  metaflow/plugins/aws/batch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
159
- metaflow/plugins/aws/batch/batch.py,sha256=ziYpcolvbAZ4DoI63-A9mZcBM5oKUcueeGMjPVLdCaI,17367
160
- metaflow/plugins/aws/batch/batch_cli.py,sha256=W4DW1Ldx4wK6pIdDOsNusUphpD-2a93qTBMRTRh5a40,11048
161
- metaflow/plugins/aws/batch/batch_client.py,sha256=_etUOsqz5d9tSmO9HGsNV_zzJz2Z25CDyqzOqWcORnI,27066
162
- metaflow/plugins/aws/batch/batch_decorator.py,sha256=_f6RtrQSYXT8aDqqX0Tk32F9kWmaiMiZ4S1qoIg_5yA,15857
160
+ metaflow/plugins/aws/batch/batch.py,sha256=e9ssahWM18GnipPK2sqYB-ztx9w7Eoo7YtWyEtufYxs,17787
161
+ metaflow/plugins/aws/batch/batch_cli.py,sha256=8j5s9RMZu0aJW76GY2lQkJT5tVDzamg9G_iu1AUpW8o,11632
162
+ metaflow/plugins/aws/batch/batch_client.py,sha256=s9ZHhxQPPoBQijLUgn6_16QOaD4-22U_44uJbp-yLkI,28565
163
+ metaflow/plugins/aws/batch/batch_decorator.py,sha256=KUOBrJH1Rl04toRMsbh7D_ThntRZqa-_B9JUQbu8ORk,17319
163
164
  metaflow/plugins/aws/secrets_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
164
165
  metaflow/plugins/aws/secrets_manager/aws_secrets_manager_secrets_provider.py,sha256=JtFUVu00Cg0FzAizgrPLXmrMqsT7YeQMkQlgeivUxcE,7986
165
166
  metaflow/plugins/aws/step_functions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -168,7 +169,7 @@ metaflow/plugins/aws/step_functions/event_bridge_client.py,sha256=U9-tqKdih4KR-Z
168
169
  metaflow/plugins/aws/step_functions/production_token.py,sha256=_o4emv3rozYZoWpaj1Y6UfKhTMlYpQc7GDDDBfZ2G7s,1898
169
170
  metaflow/plugins/aws/step_functions/schedule_decorator.py,sha256=Ab1rW8O_no4HNZm4__iBmFDCDW0Z8-TgK4lnxHHA6HI,1940
170
171
  metaflow/plugins/aws/step_functions/set_batch_environment.py,sha256=ibiGWFHDjKcLfprH3OsX-g2M9lUsh6J-bp7v2cdLhD4,1294
171
- metaflow/plugins/aws/step_functions/step_functions.py,sha256=V079UmCANB6clTzmOZe8Gq7hImb12hd_bw3DCLdMeZw,51673
172
+ metaflow/plugins/aws/step_functions/step_functions.py,sha256=zR4QiPs6oWpbv3rWjVU22VHjwW-jrKoxvPTkA7jTnnY,51845
172
173
  metaflow/plugins/aws/step_functions/step_functions_cli.py,sha256=KlH9jJL0VfsT0JqBhLwaWdYjaccU8UEArKAFnIJbSoU,24426
173
174
  metaflow/plugins/aws/step_functions/step_functions_client.py,sha256=DKpNwAIWElvWjFANs5Ku3rgzjxFoqAD6k-EF8Xhkg3Q,4754
174
175
  metaflow/plugins/aws/step_functions/step_functions_decorator.py,sha256=9hw_MX36RyFp6IowuAYaJzJg9UC5KCe1FNt1PcG7_J0,3791
@@ -214,33 +215,33 @@ metaflow/plugins/datatools/__init__.py,sha256=ge4L16OBQLy2J_MMvoHg3lMfdm-MluQgRW
214
215
  metaflow/plugins/datatools/local.py,sha256=67hx3O_vInERlL0aJV0Sd-jUTd_2DOw4sJ4-IyEKNKM,4213
215
216
  metaflow/plugins/datatools/s3/__init__.py,sha256=14tr9fPjN3ULW5IOfKHeG7Uhjmgm7LMtQHfz1SFv-h8,248
216
217
  metaflow/plugins/datatools/s3/s3.py,sha256=v2vkJxN3qYAHpu5na2V0GoXjItg8DGeQe71P3l0xXHQ,66030
217
- metaflow/plugins/datatools/s3/s3op.py,sha256=sLtofwPB1U99IR1ATFvKmUDgUh8-YPWAsKyANdTEekw,43358
218
+ metaflow/plugins/datatools/s3/s3op.py,sha256=ZQFSxlaQUt-Ko_kIXMbHOKJc8q4FPXogS3xI6xsDR7Y,43390
218
219
  metaflow/plugins/datatools/s3/s3tail.py,sha256=boQjQGQMI-bvTqcMP2y7uSlSYLcvWOy7J3ZUaF78NAA,2597
219
220
  metaflow/plugins/datatools/s3/s3util.py,sha256=FgRgaVmEq7-i2dV7q8XK5w5PfFt-xJjZa8WrK8IJfdI,3769
220
221
  metaflow/plugins/env_escape/__init__.py,sha256=8NhVmk_OncuzVIT_TdwDcZeunfcjlI8iGfi6cgPO_xQ,8771
221
- metaflow/plugins/env_escape/client.py,sha256=kM4j9gVKIQbiN61iTxvAYJrjhoS-azRYxMDk2tLsOAQ,19371
222
- metaflow/plugins/env_escape/client_modules.py,sha256=D4HxXlObiF908Zb1Llb80r-ElohFUy2qe7V0T0djpbw,10914
223
- metaflow/plugins/env_escape/consts.py,sha256=2he2wmaS-maEXwtsFdUnu-V712F6yYsfaIrAh0jFZ7A,978
222
+ metaflow/plugins/env_escape/client.py,sha256=GsFZqjhGttd4eMU_CTw14sfNBV4vBKUUShp4SR0D8k8,25066
223
+ metaflow/plugins/env_escape/client_modules.py,sha256=hQAcwz41wd6NnHezdI2Tv37ngO3CYuJ2WG8Wak6z59s,9295
224
+ metaflow/plugins/env_escape/consts.py,sha256=jafRUdqZnkeKSgpdmRcTmnsVhEhVAjfQ6TKErbRH7wo,1000
224
225
  metaflow/plugins/env_escape/data_transferer.py,sha256=wm1Aqf0rTWaq8JgqpiRN0g3N3hX7YAMuhCLRrbOP_9E,12696
225
- metaflow/plugins/env_escape/exception_transferer.py,sha256=DNaOxzcP6ob0hMXR0Jcl1Hnm9KOD0PcAPnSgjskGU74,8745
226
- metaflow/plugins/env_escape/override_decorators.py,sha256=U_rKfyW60nhnr3Y-48MtCOifuNhN9Bl3CmVUeP0xSGQ,3556
227
- metaflow/plugins/env_escape/server.py,sha256=-PWJEZDRm11Uh8EVERGgal-yrm6CuPdnHREqpigTdbM,19966
228
- metaflow/plugins/env_escape/stub.py,sha256=RjJkVH0VWy-1LvWfUKDJZ6hPjPZIPsBIp4yeBgT7OJQ,10851
229
- metaflow/plugins/env_escape/utils.py,sha256=PseGN5EpFuvay0wde3HYtlOoTfE9J2WrmXpYhoDyOCM,1243
226
+ metaflow/plugins/env_escape/exception_transferer.py,sha256=rpcpwDYRf5XqsZvShyQe5eRQ9uBGNdqmyAeB1h-Lofw,5746
227
+ metaflow/plugins/env_escape/override_decorators.py,sha256=JC_YcNIFUfLq6z2zEAVUT-PsaNxKxCqr0JbLTo1cCpo,3605
228
+ metaflow/plugins/env_escape/server.py,sha256=V5aG12xlS5rybkyKH_Uc0zIM615UHeQoyQKr2l2tF3g,21870
229
+ metaflow/plugins/env_escape/stub.py,sha256=2jA-Q3hZj72-X6kn9rYPxCGiXjbwwW7n-Ceil6fDgKA,17126
230
+ metaflow/plugins/env_escape/utils.py,sha256=ThwneuINFoNiaqzjhHsVWSPGr-1UtskgcSpw58UARCU,1243
230
231
  metaflow/plugins/env_escape/communication/__init__.py,sha256=Ff5AB88gOAvBzN2pp_2YNiD0PhUIt2SFE8nyOAKnxXg,38
231
232
  metaflow/plugins/env_escape/communication/bytestream.py,sha256=weQBm-c6yPlGv1TAmQbYanqvQ0IRDh7x_6hZPvWh_Uw,1866
232
233
  metaflow/plugins/env_escape/communication/channel.py,sha256=7vs23ZGsdy1nYM0V9xAdodBPSXIWgkCwp5l5ymgIEdU,1650
233
234
  metaflow/plugins/env_escape/communication/socket_bytestream.py,sha256=aQ9jC4OZH6_pfgWArt8tOIwLL41P2OBivtFu8ZmlyfQ,3572
234
235
  metaflow/plugins/env_escape/communication/utils.py,sha256=vV20EUjXqo5gWBtObbJBb4WL44N-EBBZsDiPBGL7tl0,874
235
236
  metaflow/plugins/env_escape/configurations/emulate_test_lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
236
- metaflow/plugins/env_escape/configurations/emulate_test_lib/overrides.py,sha256=YmBpp69gnGvxaRnnbR4Bj15ehFGCs5es2-hHR18H1XQ,2570
237
- metaflow/plugins/env_escape/configurations/emulate_test_lib/server_mappings.py,sha256=Pki4bpwg1v6uiIfr-hq8Vjv-y48jRCrKoZc0w1OO0bw,693
237
+ metaflow/plugins/env_escape/configurations/emulate_test_lib/overrides.py,sha256=qwB6PwhXLULYEdbhczHDVmNCcdMgS8tA57ibHqX8I6o,2054
238
+ metaflow/plugins/env_escape/configurations/emulate_test_lib/server_mappings.py,sha256=RQZlES3_wFPCqEuQj9EXraoROlhkm1idcUNf1ZXHr7k,989
238
239
  metaflow/plugins/env_escape/configurations/test_lib_impl/__init__.py,sha256=5uuXrallL30TAFVwR0xG7Q3fPM8A3jx1909aSi-y-xU,156
239
- metaflow/plugins/env_escape/configurations/test_lib_impl/test_lib.py,sha256=MLp60IePjOXRHXWueip6LOsAcZZb29Nu0CeqNFQLDUA,2058
240
+ metaflow/plugins/env_escape/configurations/test_lib_impl/test_lib.py,sha256=Dxp5aCnJd3p6xxahQIPzAiV7Qp1J7EYfIl5xDFBEpZQ,3570
240
241
  metaflow/plugins/frameworks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
241
242
  metaflow/plugins/frameworks/pytorch.py,sha256=9MUecLwNt9p9N1HVUYfnJ_1nLgMU0Y14UNJZHZ2qCA4,1606
242
243
  metaflow/plugins/gcp/__init__.py,sha256=iOyf5K7drkPdzumifenUnOczbIONyMu11nPI4r9prcY,54
243
- metaflow/plugins/gcp/gcp_secret_manager_secrets_provider.py,sha256=HlwAySEtZoToMPLTu9M5cURGe40sn_QOVrif4ISMZhE,7109
244
+ metaflow/plugins/gcp/gcp_secret_manager_secrets_provider.py,sha256=QYah23ST7Z-Jq8tc9u2uUC-fG6WMm8KM5vgy8vqakdU,7165
244
245
  metaflow/plugins/gcp/gs_exceptions.py,sha256=NfqKmnPpNJ8nxA0CnPPjcO65SAQ2lhCrhM2dz5x9eCQ,184
245
246
  metaflow/plugins/gcp/gs_storage_client_factory.py,sha256=LIzc5bAzIOmaMhoXUtRkYaEJPEEy2suMv8uuNViC5Ug,2110
246
247
  metaflow/plugins/gcp/gs_tail.py,sha256=Jl_wvnzU7dub07A-DOAuP5FeccNIrPM-CeL1xKFs1nQ,3034
@@ -258,9 +259,9 @@ metaflow/plugins/metadata/service.py,sha256=ihq5F7KQZlxvYwzH_-jyP2aWN_I96i2vp92j
258
259
  metaflow/plugins/pypi/__init__.py,sha256=0YFZpXvX7HCkyBFglatual7XGifdA1RwC3U4kcizyak,1037
259
260
  metaflow/plugins/pypi/bootstrap.py,sha256=nCe8FadqfIM19yj64m4JWdv_QEnQEp01bzQZrxzo5bs,5087
260
261
  metaflow/plugins/pypi/conda_decorator.py,sha256=-bPxNtZKjxqOo4sj89uIp8ZVrCIontWhAp7wwRFjYpg,14189
261
- metaflow/plugins/pypi/conda_environment.py,sha256=gfSa50ukez72aB16RZmILPuc8GXCfw0W-sbmWzcmfsE,18575
262
+ metaflow/plugins/pypi/conda_environment.py,sha256=UnqWnc7vNPWJCWgnqKDsrIIHg99M1T0SZc6B73Jaqms,19102
262
263
  metaflow/plugins/pypi/micromamba.py,sha256=wlVN2fm4WXFh3jVNtpDfu4XEz6VJKbmFNp0QvqlMIuI,12179
263
- metaflow/plugins/pypi/pip.py,sha256=paL-hbj5j-vcYOeSm04OiBix-TpoKMF7bRfGVdXfGZs,11685
264
+ metaflow/plugins/pypi/pip.py,sha256=MAgdyP7wK7Cp6iusG6S-jeKKDCxlA9k-jMqIGvyi0Ng,12472
264
265
  metaflow/plugins/pypi/pypi_decorator.py,sha256=syWk_oSQhIK9Y7OeOINMG2XVyxh9sj5uJhapwAXRBDw,5583
265
266
  metaflow/plugins/pypi/pypi_environment.py,sha256=FYMg8kF3lXqcLfRYWD83a9zpVjcoo_TARqMGZ763rRk,230
266
267
  metaflow/plugins/pypi/utils.py,sha256=ds1Mnv_DaxGnLAYp7ozg_K6oyguGyNhvHfE-75Ia1YA,2836
@@ -268,9 +269,9 @@ metaflow/plugins/secrets/__init__.py,sha256=mhJaN2eMS_ZZVewAMR2E-JdP5i0t3v9e6Dcw
268
269
  metaflow/plugins/secrets/inline_secrets_provider.py,sha256=EChmoBGA1i7qM3jtYwPpLZDBybXLergiDlN63E0u3x8,294
269
270
  metaflow/plugins/secrets/secrets_decorator.py,sha256=Y41XCOEGt7asxx6FEOBdKMqYFlU_jcA5u7erHN8DqJM,10514
270
271
  metaflow/sidecar/__init__.py,sha256=1mmNpmQ5puZCpRmmYlCOeieZ4108Su9XQ4_EqF1FGOU,131
271
- metaflow/sidecar/sidecar.py,sha256=Vt55E8NJuWkK2p51GDZ1ua4HygOVTXqvvpfG7fSLzt8,984
272
+ metaflow/sidecar/sidecar.py,sha256=EspKXvPPNiyRToaUZ51PS5TT_PzrBNAurn_wbFnmGr0,1334
272
273
  metaflow/sidecar/sidecar_messages.py,sha256=zPsCoYgDIcDkkvdC9MEpJTJ3y6TSGm2JWkRc4vxjbFA,1071
273
- metaflow/sidecar/sidecar_subprocess.py,sha256=8ZyIHA7p4Tx6Vge4RjNCxdEa6SpdYtPajGasMe9LvnE,9017
274
+ metaflow/sidecar/sidecar_subprocess.py,sha256=f72n5iJJAYfCIbz4D94-RxR37VvM7kVvE3c8E9dYHe8,9708
274
275
  metaflow/sidecar/sidecar_worker.py,sha256=4DfpxtnuphngOnIehKjNR_Knhu1hY7DYBcHl4Svpe3Y,2050
275
276
  metaflow/tracing/__init__.py,sha256=xYTOT5BS5jbwhjk6hskxqNSU9st2LYtfeLN2Hknm3EI,1551
276
277
  metaflow/tracing/propagator.py,sha256=AdPeAqoeRauH82pTw01hLFNPRAzm29nlwM7C2iqKFFk,2502
@@ -299,9 +300,9 @@ metaflow/tutorials/07-worldview/README.md,sha256=5vQTrFqulJ7rWN6r20dhot9lI2sVj9W
299
300
  metaflow/tutorials/07-worldview/worldview.ipynb,sha256=ztPZPI9BXxvW1QdS2Tfe7LBuVzvFvv0AToDnsDJhLdE,2237
300
301
  metaflow/tutorials/08-autopilot/README.md,sha256=GnePFp_q76jPs991lMUqfIIh5zSorIeWznyiUxzeUVE,1039
301
302
  metaflow/tutorials/08-autopilot/autopilot.ipynb,sha256=DQoJlILV7Mq9vfPBGW-QV_kNhWPjS5n6SJLqePjFYLY,3191
302
- ob_metaflow-2.11.4.9.dist-info/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
303
- ob_metaflow-2.11.4.9.dist-info/METADATA,sha256=2G52_1RMrqjRAPnYyIhhFqrNiFJQFTd4-va-o-TCAEE,5146
304
- ob_metaflow-2.11.4.9.dist-info/WHEEL,sha256=-G_t0oGuE7UD0DrSpVZnq1hHMBV9DD2XkS5v7XpmTnk,110
305
- ob_metaflow-2.11.4.9.dist-info/entry_points.txt,sha256=IKwTN1T3I5eJL3uo_vnkyxVffcgnRdFbKwlghZfn27k,57
306
- ob_metaflow-2.11.4.9.dist-info/top_level.txt,sha256=v1pDHoWaSaKeuc5fKTRSfsXCKSdW1zvNVmvA-i0if3o,9
307
- ob_metaflow-2.11.4.9.dist-info/RECORD,,
303
+ ob_metaflow-2.11.9.1.dist-info/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
304
+ ob_metaflow-2.11.9.1.dist-info/METADATA,sha256=64Tiuqy8ZT3w-c-taFJlO9-WwgcjT2LxLfX3t-LBfAI,5146
305
+ ob_metaflow-2.11.9.1.dist-info/WHEEL,sha256=DZajD4pwLWue70CAfc7YaxT1wLUciNBvN_TTcvXpltE,110
306
+ ob_metaflow-2.11.9.1.dist-info/entry_points.txt,sha256=IKwTN1T3I5eJL3uo_vnkyxVffcgnRdFbKwlghZfn27k,57
307
+ ob_metaflow-2.11.9.1.dist-info/top_level.txt,sha256=v1pDHoWaSaKeuc5fKTRSfsXCKSdW1zvNVmvA-i0if3o,9
308
+ ob_metaflow-2.11.9.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.42.0)
2
+ Generator: bdist_wheel (0.43.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py2-none-any
5
5
  Tag: py3-none-any