ob-metaflow 2.11.0.1__tar.gz → 2.11.10.2__tar.gz

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 (323) hide show
  1. {ob-metaflow-2.11.0.1/ob_metaflow.egg-info → ob-metaflow-2.11.10.2}/PKG-INFO +3 -1
  2. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/__init__.py +1 -1
  3. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/cli.py +16 -14
  4. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/client/core.py +235 -88
  5. ob-metaflow-2.11.10.2/metaflow/clone_util.py +71 -0
  6. ob-metaflow-2.11.10.2/metaflow/cmd/develop/__init__.py +42 -0
  7. ob-metaflow-2.11.10.2/metaflow/cmd/develop/stub_generator.py +1100 -0
  8. ob-metaflow-2.11.10.2/metaflow/cmd/develop/stubs.py +359 -0
  9. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/cmd/main_cli.py +5 -1
  10. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/decorators.py +60 -7
  11. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/events.py +14 -9
  12. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/extension_support/plugins.py +1 -0
  13. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/flowspec.py +55 -12
  14. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/includefile.py +6 -6
  15. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/metaflow_config.py +34 -2
  16. ob-metaflow-2.11.0.1/metaflow/current.py → ob-metaflow-2.11.10.2/metaflow/metaflow_current.py +5 -6
  17. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/metaflow_environment.py +4 -4
  18. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/multicore_utils.py +59 -3
  19. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/package.py +4 -3
  20. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/parameters.py +24 -14
  21. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/__init__.py +9 -0
  22. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/airflow/airflow.py +3 -0
  23. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/airflow/sensors/external_task_sensor.py +8 -8
  24. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/airflow/sensors/s3_sensor.py +6 -6
  25. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/argo/argo_events.py +2 -2
  26. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/argo/argo_workflows.py +119 -27
  27. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/argo/argo_workflows_decorator.py +1 -0
  28. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/aws_utils.py +15 -15
  29. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/batch/batch.py +14 -0
  30. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/batch/batch_cli.py +25 -0
  31. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/batch/batch_client.py +50 -2
  32. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/batch/batch_decorator.py +48 -17
  33. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/step_functions/dynamo_db_client.py +28 -6
  34. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/step_functions/schedule_decorator.py +5 -5
  35. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/step_functions/step_functions.py +222 -4
  36. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/step_functions/step_functions_cli.py +104 -6
  37. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/step_functions/step_functions_client.py +8 -3
  38. ob-metaflow-2.11.10.2/metaflow/plugins/azure/__init__.py +3 -0
  39. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_cli.py +8 -3
  40. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_client.py +20 -12
  41. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_decorator.py +20 -5
  42. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_modules/card.py +2 -2
  43. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_modules/main.js +17 -17
  44. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/catch_decorator.py +2 -4
  45. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/datatools/s3/s3.py +39 -39
  46. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/datatools/s3/s3op.py +4 -3
  47. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/env_escape/client.py +154 -27
  48. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/env_escape/client_modules.py +15 -47
  49. ob-metaflow-2.11.10.2/metaflow/plugins/env_escape/configurations/emulate_test_lib/overrides.py +81 -0
  50. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/env_escape/configurations/emulate_test_lib/server_mappings.py +8 -3
  51. ob-metaflow-2.11.10.2/metaflow/plugins/env_escape/configurations/test_lib_impl/test_lib.py +152 -0
  52. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/env_escape/consts.py +1 -0
  53. ob-metaflow-2.11.10.2/metaflow/plugins/env_escape/exception_transferer.py +152 -0
  54. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/env_escape/override_decorators.py +8 -8
  55. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/env_escape/server.py +42 -5
  56. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/env_escape/stub.py +168 -23
  57. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/env_escape/utils.py +3 -3
  58. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/environment_decorator.py +1 -1
  59. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/events_decorator.py +26 -8
  60. ob-metaflow-2.11.10.2/metaflow/plugins/gcp/__init__.py +1 -0
  61. ob-metaflow-2.11.10.2/metaflow/plugins/gcp/gcp_secret_manager_secrets_provider.py +164 -0
  62. ob-metaflow-2.11.10.2/metaflow/plugins/gcp/gs_storage_client_factory.py +72 -0
  63. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/kubernetes/kubernetes.py +53 -6
  64. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/kubernetes/kubernetes_cli.py +43 -1
  65. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/kubernetes/kubernetes_client.py +10 -2
  66. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/kubernetes/kubernetes_decorator.py +110 -24
  67. ob-metaflow-2.11.10.2/metaflow/plugins/kubernetes/kubernetes_job.py +1130 -0
  68. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/project_decorator.py +44 -1
  69. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/pypi/bootstrap.py +1 -1
  70. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/pypi/conda_decorator.py +29 -9
  71. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/pypi/conda_environment.py +30 -4
  72. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/pypi/pip.py +17 -2
  73. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/pypi/pypi_decorator.py +2 -2
  74. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/resources_decorator.py +5 -5
  75. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/retry_decorator.py +2 -2
  76. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/tag_cli.py +1 -1
  77. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/timeout_decorator.py +3 -3
  78. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/runtime.py +263 -66
  79. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/sidecar/sidecar.py +11 -1
  80. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/sidecar/sidecar_subprocess.py +34 -18
  81. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/task.py +92 -70
  82. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tracing/span_exporter.py +4 -0
  83. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tracing/tracing_modules.py +7 -2
  84. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/util.py +6 -0
  85. ob-metaflow-2.11.10.2/metaflow/version.py +1 -0
  86. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2/ob_metaflow.egg-info}/PKG-INFO +3 -1
  87. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/ob_metaflow.egg-info/SOURCES.txt +6 -1
  88. ob-metaflow-2.11.10.2/ob_metaflow.egg-info/requires.txt +7 -0
  89. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/setup.py +4 -0
  90. ob-metaflow-2.11.0.1/metaflow/plugins/env_escape/configurations/emulate_test_lib/overrides.py +0 -92
  91. ob-metaflow-2.11.0.1/metaflow/plugins/env_escape/configurations/test_lib_impl/test_lib.py +0 -100
  92. ob-metaflow-2.11.0.1/metaflow/plugins/env_escape/exception_transferer.py +0 -218
  93. ob-metaflow-2.11.0.1/metaflow/plugins/gcp/__init__.py +0 -0
  94. ob-metaflow-2.11.0.1/metaflow/plugins/gcp/gs_storage_client_factory.py +0 -21
  95. ob-metaflow-2.11.0.1/metaflow/plugins/kubernetes/__init__.py +0 -0
  96. ob-metaflow-2.11.0.1/metaflow/plugins/kubernetes/kubernetes_job.py +0 -722
  97. ob-metaflow-2.11.0.1/metaflow/version.py +0 -1
  98. ob-metaflow-2.11.0.1/ob_metaflow.egg-info/requires.txt +0 -4
  99. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/LICENSE +0 -0
  100. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/MANIFEST.in +0 -0
  101. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/README.md +0 -0
  102. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/R.py +0 -0
  103. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/__init__.py +0 -0
  104. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/__init__.py +0 -0
  105. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/_bashcomplete.py +0 -0
  106. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/_compat.py +0 -0
  107. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/_termui_impl.py +0 -0
  108. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/_textwrap.py +0 -0
  109. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/_unicodefun.py +0 -0
  110. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/_winconsole.py +0 -0
  111. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/core.py +0 -0
  112. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/decorators.py +0 -0
  113. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/exceptions.py +0 -0
  114. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/formatting.py +0 -0
  115. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/globals.py +0 -0
  116. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/parser.py +0 -0
  117. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/termui.py +0 -0
  118. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/testing.py +0 -0
  119. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/types.py +0 -0
  120. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/utils.py +0 -0
  121. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/packaging/__init__.py +0 -0
  122. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/packaging/_elffile.py +0 -0
  123. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/packaging/_manylinux.py +0 -0
  124. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/packaging/_musllinux.py +0 -0
  125. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/packaging/_parser.py +0 -0
  126. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/packaging/_structures.py +0 -0
  127. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/packaging/_tokenizer.py +0 -0
  128. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/packaging/markers.py +0 -0
  129. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/packaging/py.typed +0 -0
  130. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/packaging/requirements.py +0 -0
  131. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/packaging/specifiers.py +0 -0
  132. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/packaging/tags.py +0 -0
  133. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/packaging/utils.py +0 -0
  134. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/packaging/version.py +0 -0
  135. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_5/__init__.py +0 -0
  136. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_5/importlib_metadata/__init__.py +0 -0
  137. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_5/importlib_metadata/_compat.py +0 -0
  138. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_5/zipp.py +0 -0
  139. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_6/__init__.py +0 -0
  140. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_6/importlib_metadata/__init__.py +0 -0
  141. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_6/importlib_metadata/_adapters.py +0 -0
  142. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_6/importlib_metadata/_collections.py +0 -0
  143. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_6/importlib_metadata/_compat.py +0 -0
  144. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_6/importlib_metadata/_functools.py +0 -0
  145. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_6/importlib_metadata/_itertools.py +0 -0
  146. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_6/importlib_metadata/_meta.py +0 -0
  147. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_6/importlib_metadata/_text.py +0 -0
  148. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_6/importlib_metadata/py.typed +0 -0
  149. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_6/typing_extensions.py +0 -0
  150. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_6/zipp.py +0 -0
  151. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_7/__init__.py +0 -0
  152. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_7/zipp.py +0 -0
  153. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/cards.py +0 -0
  154. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/cli_args.py +0 -0
  155. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/client/__init__.py +0 -0
  156. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/client/filecache.py +0 -0
  157. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/cmd/__init__.py +0 -0
  158. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/cmd/configure_cmd.py +0 -0
  159. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/cmd/tutorials_cmd.py +0 -0
  160. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/cmd/util.py +0 -0
  161. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/cmd_with_io.py +0 -0
  162. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/datastore/__init__.py +0 -0
  163. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/datastore/content_addressed_store.py +0 -0
  164. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/datastore/datastore_set.py +0 -0
  165. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/datastore/datastore_storage.py +0 -0
  166. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/datastore/exceptions.py +0 -0
  167. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/datastore/flow_datastore.py +0 -0
  168. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/datastore/inputs.py +0 -0
  169. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/datastore/task_datastore.py +0 -0
  170. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/debug.py +0 -0
  171. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/event_logger.py +0 -0
  172. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/exception.py +0 -0
  173. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/extension_support/__init__.py +0 -0
  174. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/extension_support/_empty_file.py +0 -0
  175. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/extension_support/cmd.py +0 -0
  176. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/extension_support/integrations.py +0 -0
  177. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/graph.py +0 -0
  178. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/integrations.py +0 -0
  179. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/lint.py +0 -0
  180. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/metadata/__init__.py +0 -0
  181. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/metadata/heartbeat.py +0 -0
  182. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/metadata/metadata.py +0 -0
  183. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/metadata/util.py +0 -0
  184. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/metaflow_config_funcs.py +0 -0
  185. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/metaflow_profile.py +0 -0
  186. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/metaflow_version.py +0 -0
  187. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/mflog/__init__.py +0 -0
  188. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/mflog/mflog.py +0 -0
  189. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/mflog/save_logs.py +0 -0
  190. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/mflog/save_logs_periodically.py +0 -0
  191. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/mflog/tee.py +0 -0
  192. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/monitor.py +0 -0
  193. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/airflow/__init__.py +0 -0
  194. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/airflow/airflow_cli.py +0 -0
  195. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/airflow/airflow_decorator.py +0 -0
  196. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/airflow/airflow_utils.py +0 -0
  197. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/airflow/dag.py +0 -0
  198. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/airflow/exception.py +0 -0
  199. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/airflow/plumbing/__init__.py +0 -0
  200. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/airflow/plumbing/set_parameters.py +0 -0
  201. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/airflow/sensors/__init__.py +0 -0
  202. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/airflow/sensors/base_sensor.py +0 -0
  203. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/argo/__init__.py +0 -0
  204. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/argo/argo_client.py +0 -0
  205. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/argo/argo_workflows_cli.py +0 -0
  206. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/argo/process_input_paths.py +0 -0
  207. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/__init__.py +0 -0
  208. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/aws_client.py +0 -0
  209. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/batch/__init__.py +0 -0
  210. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/secrets_manager/__init__.py +0 -0
  211. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/secrets_manager/aws_secrets_manager_secrets_provider.py +0 -0
  212. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/step_functions/__init__.py +0 -0
  213. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/step_functions/event_bridge_client.py +0 -0
  214. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/step_functions/production_token.py +1 -1
  215. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/step_functions/set_batch_environment.py +0 -0
  216. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/step_functions/step_functions_decorator.py +1 -1
  217. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/azure/azure_credential.py +0 -0
  218. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/azure/azure_exceptions.py +0 -0
  219. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/azure/azure_tail.py +0 -0
  220. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/azure/azure_utils.py +0 -0
  221. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/azure/blob_service_client_factory.py +0 -0
  222. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/azure/includefile_support.py +0 -0
  223. {ob-metaflow-2.11.0.1/metaflow/plugins/azure → ob-metaflow-2.11.10.2/metaflow/plugins/cards}/__init__.py +0 -0
  224. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_creator.py +0 -0
  225. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_datastore.py +0 -0
  226. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_modules/__init__.py +0 -0
  227. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_modules/base.html +0 -0
  228. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_modules/basic.py +0 -0
  229. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_modules/bundle.css +0 -0
  230. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_modules/chevron/__init__.py +0 -0
  231. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_modules/chevron/main.py +0 -0
  232. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_modules/chevron/metadata.py +0 -0
  233. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_modules/chevron/renderer.py +0 -0
  234. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_modules/chevron/tokenizer.py +0 -0
  235. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_modules/components.py +0 -0
  236. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_modules/convert_to_native_type.py +0 -0
  237. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_modules/renderer_tools.py +0 -0
  238. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_modules/test_cards.py +0 -0
  239. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_resolver.py +0 -0
  240. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_server.py +0 -0
  241. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_viewer/viewer.html +0 -0
  242. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/component_serializer.py +0 -0
  243. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/exception.py +0 -0
  244. {ob-metaflow-2.11.0.1/metaflow/plugins/cards → ob-metaflow-2.11.10.2/metaflow/plugins/datastores}/__init__.py +0 -0
  245. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/datastores/azure_storage.py +0 -0
  246. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/datastores/gs_storage.py +0 -0
  247. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/datastores/local_storage.py +0 -0
  248. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/datastores/s3_storage.py +0 -0
  249. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/datatools/__init__.py +0 -0
  250. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/datatools/local.py +0 -0
  251. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/datatools/s3/__init__.py +0 -0
  252. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/datatools/s3/s3tail.py +0 -0
  253. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/datatools/s3/s3util.py +0 -0
  254. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/debug_logger.py +0 -0
  255. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/debug_monitor.py +0 -0
  256. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/env_escape/__init__.py +0 -0
  257. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/env_escape/communication/__init__.py +0 -0
  258. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/env_escape/communication/bytestream.py +0 -0
  259. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/env_escape/communication/channel.py +0 -0
  260. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/env_escape/communication/socket_bytestream.py +0 -0
  261. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/env_escape/communication/utils.py +0 -0
  262. {ob-metaflow-2.11.0.1/metaflow/plugins/datastores → ob-metaflow-2.11.10.2/metaflow/plugins/env_escape/configurations/emulate_test_lib}/__init__.py +0 -0
  263. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/env_escape/configurations/test_lib_impl/__init__.py +0 -0
  264. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/env_escape/data_transferer.py +0 -0
  265. {ob-metaflow-2.11.0.1/metaflow/plugins/env_escape/configurations/emulate_test_lib → ob-metaflow-2.11.10.2/metaflow/plugins/frameworks}/__init__.py +0 -0
  266. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/frameworks/pytorch.py +0 -0
  267. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/gcp/gs_exceptions.py +0 -0
  268. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/gcp/gs_tail.py +0 -0
  269. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/gcp/gs_utils.py +0 -0
  270. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/gcp/includefile_support.py +0 -0
  271. {ob-metaflow-2.11.0.1/metaflow/plugins/frameworks → ob-metaflow-2.11.10.2/metaflow/plugins/kubernetes}/__init__.py +0 -0
  272. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/metadata/__init__.py +0 -0
  273. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/metadata/local.py +0 -0
  274. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/metadata/service.py +0 -0
  275. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/package_cli.py +0 -0
  276. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/parallel_decorator.py +0 -0
  277. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/pypi/__init__.py +0 -0
  278. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/pypi/micromamba.py +0 -0
  279. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/pypi/pypi_environment.py +0 -0
  280. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/pypi/utils.py +0 -0
  281. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/secrets/__init__.py +0 -0
  282. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/secrets/inline_secrets_provider.py +0 -0
  283. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/secrets/secrets_decorator.py +0 -0
  284. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/storage_executor.py +0 -0
  285. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/test_unbounded_foreach_decorator.py +0 -0
  286. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/procpoll.py +0 -0
  287. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/py.typed +0 -0
  288. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/pylint_wrapper.py +0 -0
  289. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/sidecar/__init__.py +0 -0
  290. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/sidecar/sidecar_messages.py +0 -0
  291. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/sidecar/sidecar_worker.py +0 -0
  292. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tagging_util.py +0 -0
  293. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tracing/__init__.py +0 -0
  294. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tracing/propagator.py +0 -0
  295. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/00-helloworld/README.md +0 -0
  296. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/00-helloworld/helloworld.py +0 -0
  297. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/01-playlist/README.md +0 -0
  298. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/01-playlist/movies.csv +0 -0
  299. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/01-playlist/playlist.ipynb +0 -0
  300. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/01-playlist/playlist.py +0 -0
  301. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/02-statistics/README.md +0 -0
  302. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/02-statistics/movies.csv +0 -0
  303. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/02-statistics/stats.ipynb +0 -0
  304. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/02-statistics/stats.py +0 -0
  305. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/03-playlist-redux/README.md +0 -0
  306. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/03-playlist-redux/playlist.py +0 -0
  307. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/04-playlist-plus/README.md +0 -0
  308. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/04-playlist-plus/playlist.py +0 -0
  309. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/05-hello-cloud/README.md +0 -0
  310. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/05-hello-cloud/hello-cloud.ipynb +0 -0
  311. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/05-hello-cloud/hello-cloud.py +0 -0
  312. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/06-statistics-redux/README.md +0 -0
  313. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/06-statistics-redux/stats.ipynb +0 -0
  314. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/07-worldview/README.md +0 -0
  315. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/07-worldview/worldview.ipynb +0 -0
  316. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/08-autopilot/README.md +0 -0
  317. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/08-autopilot/autopilot.ipynb +0 -0
  318. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/unbounded_foreach.py +0 -0
  319. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/vendor.py +0 -0
  320. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/ob_metaflow.egg-info/dependency_links.txt +0 -0
  321. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/ob_metaflow.egg-info/entry_points.txt +0 -0
  322. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/ob_metaflow.egg-info/top_level.txt +0 -0
  323. {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ob-metaflow
3
- Version: 2.11.0.1
3
+ Version: 2.11.10.2
4
4
  Summary: Metaflow: More Data Science, Less Engineering
5
5
  Author: Netflix, Outerbounds & the Metaflow Community
6
6
  Author-email: help@outerbounds.co
@@ -11,6 +11,8 @@ Requires-Dist: requests
11
11
  Requires-Dist: boto3
12
12
  Requires-Dist: pylint
13
13
  Requires-Dist: kubernetes
14
+ Provides-Extra: stubs
15
+ Requires-Dist: ob-metaflow-stubs==2.11.10.2; extra == "stubs"
14
16
 
15
17
  ![Metaflow_Logo_Horizontal_FullColor_Ribbon_Dark_RGB](https://user-images.githubusercontent.com/763451/89453116-96a57e00-d713-11ea-9fa6-82b29d4d6eff.png)
16
18
 
@@ -98,7 +98,7 @@ from .multicore_utils import parallel_imap_unordered, parallel_map
98
98
  from .metaflow_profile import profile
99
99
 
100
100
  # current runtime singleton
101
- from .current import current
101
+ from .metaflow_current import current
102
102
 
103
103
  # Flow spec
104
104
  from .flowspec import FlowSpec
@@ -13,7 +13,7 @@ from . import parameters
13
13
  from . import decorators
14
14
  from . import metaflow_version
15
15
  from . import namespace
16
- from . import current
16
+ from .metaflow_current import current
17
17
  from .cli_args import cli_args
18
18
  from .tagging_util import validate_tags
19
19
  from .util import (
@@ -235,7 +235,6 @@ def output_dot(obj):
235
235
  )
236
236
  @click.pass_obj
237
237
  def dump(obj, input_path, private=None, max_value_size=None, include=None, file=None):
238
-
239
238
  output = {}
240
239
  kwargs = {
241
240
  "show_private": private,
@@ -474,13 +473,6 @@ def logs(obj, input_path, stdout=None, stderr=None, both=None, timestamps=False)
474
473
  help="Pathspec of the origin task for this task to clone. Do "
475
474
  "not execute anything.",
476
475
  )
477
- @click.option(
478
- "--clone-wait-only/--no-clone-wait-only",
479
- default=False,
480
- show_default=True,
481
- help="If specified, waits for an external process to clone the task",
482
- hidden=True,
483
- )
484
476
  @click.option(
485
477
  "--clone-run-id",
486
478
  default=None,
@@ -520,7 +512,6 @@ def step(
520
512
  retry_count=None,
521
513
  max_user_code_retries=None,
522
514
  clone_only=None,
523
- clone_wait_only=False,
524
515
  clone_run_id=None,
525
516
  decospecs=None,
526
517
  ubf_context="none",
@@ -576,7 +567,6 @@ def step(
576
567
  task_id,
577
568
  clone_only,
578
569
  retry_count,
579
- wait_only=clone_wait_only,
580
570
  )
581
571
  else:
582
572
  task.run_step(
@@ -720,6 +710,13 @@ def common_run_options(func):
720
710
  hidden=True,
721
711
  help="If specified, allows this call to be called in parallel",
722
712
  )
713
+ @click.option(
714
+ "--resume-identifier",
715
+ default=None,
716
+ show_default=True,
717
+ hidden=True,
718
+ help="If specified, it identifies the task that started this resume call. It is in the form of {step_name}-{task_id}",
719
+ )
723
720
  @click.argument("step-to-rerun", required=False)
724
721
  @cli.command(help="Resume execution of a previous run of this flow.")
725
722
  @common_run_options
@@ -737,8 +734,8 @@ def resume(
737
734
  max_log_size=None,
738
735
  decospecs=None,
739
736
  run_id_file=None,
737
+ resume_identifier=None,
740
738
  ):
741
-
742
739
  before_run(obj, tags, decospecs + obj.environment.decospecs())
743
740
 
744
741
  if origin_run_id is None:
@@ -791,10 +788,15 @@ def resume(
791
788
  max_workers=max_workers,
792
789
  max_num_splits=max_num_splits,
793
790
  max_log_size=max_log_size * 1024 * 1024,
791
+ resume_identifier=resume_identifier,
794
792
  )
795
793
  write_run_id(run_id_file, runtime.run_id)
794
+ runtime.print_workflow_info()
796
795
  runtime.persist_constants()
797
- runtime.execute()
796
+ if clone_only:
797
+ runtime.clone_original_run()
798
+ else:
799
+ runtime.execute()
798
800
 
799
801
 
800
802
  @tracing.cli_entrypoint("cli/run")
@@ -824,7 +826,6 @@ def run(
824
826
  user_namespace=None,
825
827
  **kwargs
826
828
  ):
827
-
828
829
  if user_namespace is not None:
829
830
  namespace(user_namespace or None)
830
831
  before_run(obj, tags, decospecs + obj.environment.decospecs())
@@ -848,6 +849,7 @@ def run(
848
849
  write_run_id(run_id_file, runtime.run_id)
849
850
 
850
851
  obj.flow._set_constants(obj.graph, kwargs)
852
+ runtime.print_workflow_info()
851
853
  runtime.persist_constants()
852
854
  runtime.execute()
853
855
 
@@ -7,9 +7,19 @@ from collections import namedtuple
7
7
  from datetime import datetime
8
8
  from io import BytesIO
9
9
  from itertools import chain
10
- from typing import Any, Dict, FrozenSet, Iterable, List, Optional, Tuple
10
+ from typing import (
11
+ Any,
12
+ Dict,
13
+ FrozenSet,
14
+ Iterable,
15
+ Iterator,
16
+ List,
17
+ NamedTuple,
18
+ Optional,
19
+ Tuple,
20
+ )
11
21
 
12
- from metaflow.current import current
22
+ from metaflow.metaflow_current import current
13
23
  from metaflow.events import Trigger
14
24
  from metaflow.exception import (
15
25
  MetaflowInternalError,
@@ -203,6 +213,9 @@ def default_namespace() -> str:
203
213
  return get_namespace()
204
214
 
205
215
 
216
+ MetaflowArtifacts = NamedTuple
217
+
218
+
206
219
  class MetaflowObject(object):
207
220
  """
208
221
  Base class for all Metaflow objects.
@@ -337,17 +350,17 @@ class MetaflowObject(object):
337
350
  raise MetaflowNotFound("%s does not exist" % self)
338
351
  return result
339
352
 
340
- def __iter__(self) -> Iterable["MetaflowObject"]:
353
+ def __iter__(self) -> Iterator["MetaflowObject"]:
341
354
  """
342
355
  Iterate over all child objects of this object if any.
343
356
 
344
- Note that only children present in the current namespace are returned iff
345
- _namespace_check is set.
357
+ Note that only children present in the current namespace are returned if and
358
+ only if _namespace_check is set.
346
359
 
347
- Returns
348
- -------
349
- Iterable[MetaflowObject]
350
- Iterator over all children
360
+ Yields
361
+ ------
362
+ MetaflowObject
363
+ Children of this object
351
364
  """
352
365
  query_filter = {}
353
366
 
@@ -703,50 +716,6 @@ class MetaflowObject(object):
703
716
  return list(self._path_components)
704
717
 
705
718
 
706
- class MetaflowData(object):
707
- """
708
- Container of data artifacts produced by a `Task`. This object is
709
- instantiated through `Task.data`.
710
-
711
- `MetaflowData` allows results to be retrieved by their name
712
- through a convenient dot notation:
713
-
714
- ```python
715
- Task(...).data.my_object
716
- ```
717
-
718
- You can also test the existence of an object
719
-
720
- ```python
721
- if 'my_object' in Task(...).data:
722
- print('my_object found')
723
- ```
724
-
725
- Note that this container relies on the local cache to load all data
726
- artifacts. If your `Task` contains a lot of data, a more efficient
727
- approach is to load artifacts individually like so
728
-
729
- ```
730
- Task(...)['my_object'].data
731
- ```
732
- """
733
-
734
- def __init__(self, artifacts: Iterable["DataArtifact"]):
735
- self._artifacts = dict((art.id, art) for art in artifacts)
736
-
737
- def __getattr__(self, name: str):
738
- return self._artifacts[name].data
739
-
740
- def __contains__(self, var):
741
- return var in self._artifacts
742
-
743
- def __str__(self):
744
- return "<MetaflowData: %s>" % ", ".join(self._artifacts)
745
-
746
- def __repr__(self):
747
- return str(self)
748
-
749
-
750
719
  class MetaflowCode(object):
751
720
  """
752
721
  Snapshot of the code used to execute this `Run`. Instantiate the object through
@@ -981,6 +950,50 @@ class DataArtifact(MetaflowObject):
981
950
  super(DataArtifact, self).__setstate__(state)
982
951
 
983
952
 
953
+ class MetaflowData(object):
954
+ """
955
+ Container of data artifacts produced by a `Task`. This object is
956
+ instantiated through `Task.data`.
957
+
958
+ `MetaflowData` allows results to be retrieved by their name
959
+ through a convenient dot notation:
960
+
961
+ ```python
962
+ Task(...).data.my_object
963
+ ```
964
+
965
+ You can also test the existence of an object
966
+
967
+ ```python
968
+ if 'my_object' in Task(...).data:
969
+ print('my_object found')
970
+ ```
971
+
972
+ Note that this container relies on the local cache to load all data
973
+ artifacts. If your `Task` contains a lot of data, a more efficient
974
+ approach is to load artifacts individually like so
975
+
976
+ ```
977
+ Task(...)['my_object'].data
978
+ ```
979
+ """
980
+
981
+ def __init__(self, artifacts: Iterable[DataArtifact]):
982
+ self._artifacts = dict((art.id, art) for art in artifacts)
983
+
984
+ def __getattr__(self, name: str):
985
+ return self._artifacts[name].data
986
+
987
+ def __contains__(self, var):
988
+ return var in self._artifacts
989
+
990
+ def __str__(self):
991
+ return "<MetaflowData: %s>" % ", ".join(self._artifacts)
992
+
993
+ def __repr__(self):
994
+ return str(self)
995
+
996
+
984
997
  class Task(MetaflowObject):
985
998
  """
986
999
  A `Task` represents an execution of a `Step`.
@@ -1172,7 +1185,7 @@ class Task(MetaflowObject):
1172
1185
  return MetaflowData(self)
1173
1186
 
1174
1187
  @property
1175
- def artifacts(self) -> "MetaflowArtifacts":
1188
+ def artifacts(self) -> MetaflowArtifacts:
1176
1189
  """
1177
1190
  Returns a container of DataArtifacts produced by this task.
1178
1191
 
@@ -1438,8 +1451,11 @@ class Task(MetaflowObject):
1438
1451
  return self._log_size(stream, meta_dict)
1439
1452
 
1440
1453
  def loglines(
1441
- self, stream: str, as_unicode: bool = True, meta_dict: Dict[str, Any] = None
1442
- ) -> Iterable[Tuple[datetime, str]]:
1454
+ self,
1455
+ stream: str,
1456
+ as_unicode: bool = True,
1457
+ meta_dict: Optional[Dict[str, Any]] = None,
1458
+ ) -> Iterator[Tuple[datetime, str]]:
1443
1459
  """
1444
1460
  Return an iterator over (utc_timestamp, logline) tuples.
1445
1461
 
@@ -1451,10 +1467,10 @@ class Task(MetaflowObject):
1451
1467
  If as_unicode=False, each logline is returned as a byte object. Otherwise,
1452
1468
  it is returned as a (unicode) string.
1453
1469
 
1454
- Returns
1455
- -------
1456
- Iterable[(datetime, str)]
1457
- Iterator over timestamp, logline pairs.
1470
+ Yields
1471
+ ------
1472
+ Tuple[datetime, str]
1473
+ Tuple of timestamp, logline pairs.
1458
1474
  """
1459
1475
  from metaflow.mflog.mflog import merge_logs
1460
1476
 
@@ -1525,6 +1541,39 @@ class Task(MetaflowObject):
1525
1541
  ds_type, ds_root, stream, attempt, *self.path_components
1526
1542
  )
1527
1543
 
1544
+ def __iter__(self) -> Iterator[DataArtifact]:
1545
+ """
1546
+ Iterate over all children DataArtifact of this Task
1547
+
1548
+ Yields
1549
+ ------
1550
+ DataArtifact
1551
+ A DataArtifact in this Step
1552
+ """
1553
+ for d in super(Task, self).__iter__():
1554
+ yield d
1555
+
1556
+ def __getitem__(self, name: str) -> DataArtifact:
1557
+ """
1558
+ Returns the DataArtifact object with the artifact name 'name'
1559
+
1560
+ Parameters
1561
+ ----------
1562
+ name : str
1563
+ Data artifact name
1564
+
1565
+ Returns
1566
+ -------
1567
+ DataArtifact
1568
+ DataArtifact for this artifact name in this task
1569
+
1570
+ Raises
1571
+ ------
1572
+ KeyError
1573
+ If the name does not identify a valid DataArtifact object
1574
+ """
1575
+ return super(Task, self).__getitem__(name)
1576
+
1528
1577
  def __getstate__(self):
1529
1578
  return super(Task, self).__getstate__()
1530
1579
 
@@ -1585,10 +1634,10 @@ class Step(MetaflowObject):
1585
1634
  tags : str
1586
1635
  No op (legacy functionality)
1587
1636
 
1588
- Returns
1589
- -------
1590
- Iterable[Task]
1591
- Iterator over all `Task` objects in this step.
1637
+ Yields
1638
+ ------
1639
+ Task
1640
+ `Task` objects in this step.
1592
1641
  """
1593
1642
  return self._filtered_children(*tags)
1594
1643
 
@@ -1607,7 +1656,7 @@ class Step(MetaflowObject):
1607
1656
  """
1608
1657
  return next(self.control_tasks(), None)
1609
1658
 
1610
- def control_tasks(self, *tags: str) -> Iterable[Task]:
1659
+ def control_tasks(self, *tags: str) -> Iterator[Task]:
1611
1660
  """
1612
1661
  [Unpublished API - use with caution!]
1613
1662
 
@@ -1619,10 +1668,11 @@ class Step(MetaflowObject):
1619
1668
  ----------
1620
1669
  tags : str
1621
1670
  Tags to match
1622
- Returns
1623
- -------
1624
- Iterable[Task]
1625
- Iterator over Control Task objects in this step
1671
+
1672
+ Yields
1673
+ ------
1674
+ Task
1675
+ Control Task objects for this step
1626
1676
  """
1627
1677
  children = super(Step, self).__iter__()
1628
1678
  for child in children:
@@ -1643,11 +1693,39 @@ class Step(MetaflowObject):
1643
1693
  ):
1644
1694
  yield child
1645
1695
 
1646
- def __iter__(self):
1647
- children = super(Step, self).__iter__()
1648
- for t in children:
1696
+ def __iter__(self) -> Iterator[Task]:
1697
+ """
1698
+ Iterate over all children Task of this Step
1699
+
1700
+ Yields
1701
+ ------
1702
+ Task
1703
+ A Task in this Step
1704
+ """
1705
+ for t in super(Step, self).__iter__():
1649
1706
  yield t
1650
1707
 
1708
+ def __getitem__(self, task_id: str) -> Task:
1709
+ """
1710
+ Returns the Task object with the task ID 'task_id'
1711
+
1712
+ Parameters
1713
+ ----------
1714
+ task_id : str
1715
+ Task ID
1716
+
1717
+ Returns
1718
+ -------
1719
+ Task
1720
+ Task for this task ID in this Step
1721
+
1722
+ Raises
1723
+ ------
1724
+ KeyError
1725
+ If the task_id does not identify a valid Task object
1726
+ """
1727
+ return super(Step, self).__getitem__(task_id)
1728
+
1651
1729
  def __getstate__(self):
1652
1730
  return super(Step, self).__getstate__()
1653
1731
 
@@ -1723,7 +1801,7 @@ class Run(MetaflowObject):
1723
1801
  # exclude _parameters step
1724
1802
  return x.id[0] != "_"
1725
1803
 
1726
- def steps(self, *tags: str) -> Iterable[Step]:
1804
+ def steps(self, *tags: str) -> Iterator[Step]:
1727
1805
  """
1728
1806
  [Legacy function - do not use]
1729
1807
 
@@ -1738,10 +1816,10 @@ class Run(MetaflowObject):
1738
1816
  tags : str
1739
1817
  No op (legacy functionality)
1740
1818
 
1741
- Returns
1742
- -------
1743
- Iterable[Step]
1744
- Iterator over `Step` objects in this run.
1819
+ Yields
1820
+ ------
1821
+ Step
1822
+ `Step` objects in this run.
1745
1823
  """
1746
1824
  return self._filtered_children(*tags)
1747
1825
 
@@ -1976,6 +2054,39 @@ class Run(MetaflowObject):
1976
2054
  self._user_tags = frozenset(final_user_tags)
1977
2055
  self._tags = frozenset([*self._user_tags, *self._system_tags])
1978
2056
 
2057
+ def __iter__(self) -> Iterator[Step]:
2058
+ """
2059
+ Iterate over all children Step of this Run
2060
+
2061
+ Yields
2062
+ ------
2063
+ Step
2064
+ A Step in this Run
2065
+ """
2066
+ for s in super(Run, self).__iter__():
2067
+ yield s
2068
+
2069
+ def __getitem__(self, name: str) -> Step:
2070
+ """
2071
+ Returns the Step object with the step name 'name'
2072
+
2073
+ Parameters
2074
+ ----------
2075
+ name : str
2076
+ Step name
2077
+
2078
+ Returns
2079
+ -------
2080
+ Step
2081
+ Step for this step name in this Run
2082
+
2083
+ Raises
2084
+ ------
2085
+ KeyError
2086
+ If the name does not identify a valid Step object
2087
+ """
2088
+ return super(Run, self).__getitem__(name)
2089
+
1979
2090
  def __getstate__(self):
1980
2091
  return super(Run, self).__getstate__()
1981
2092
 
@@ -2051,7 +2162,7 @@ class Flow(MetaflowObject):
2051
2162
  if run.successful:
2052
2163
  return run
2053
2164
 
2054
- def runs(self, *tags: str) -> Iterable[Run]:
2165
+ def runs(self, *tags: str) -> Iterator[Run]:
2055
2166
  """
2056
2167
  Returns an iterator over all `Run`s of this flow.
2057
2168
 
@@ -2064,12 +2175,48 @@ class Flow(MetaflowObject):
2064
2175
  tags : str
2065
2176
  Tags to match.
2066
2177
 
2178
+ Yields
2179
+ ------
2180
+ Run
2181
+ `Run` objects in this flow.
2182
+ """
2183
+ return self._filtered_children(*tags)
2184
+
2185
+ def __iter__(self) -> Iterator[Task]:
2186
+ """
2187
+ Iterate over all children Run of this Flow.
2188
+
2189
+ Note that only runs in the current namespace are returned unless
2190
+ _namespace_check is False
2191
+
2192
+ Yields
2193
+ ------
2194
+ Run
2195
+ A Run in this Flow
2196
+ """
2197
+ for r in super(Flow, self).__iter__():
2198
+ yield r
2199
+
2200
+ def __getitem__(self, run_id: str) -> Run:
2201
+ """
2202
+ Returns the Run object with the run ID 'run_id'
2203
+
2204
+ Parameters
2205
+ ----------
2206
+ run_id : str
2207
+ Run OD
2208
+
2067
2209
  Returns
2068
2210
  -------
2069
- Iterable[Run]
2070
- Iterator over `Run` objects in this flow.
2211
+ Run
2212
+ Run for this run ID in this Flow
2213
+
2214
+ Raises
2215
+ ------
2216
+ KeyError
2217
+ If the run_id does not identify a valid Run object
2071
2218
  """
2072
- return self._filtered_children(*tags)
2219
+ return super(Flow, self).__getitem__(run_id)
2073
2220
 
2074
2221
  def __getstate__(self):
2075
2222
  return super(Flow, self).__getstate__()
@@ -2120,12 +2267,12 @@ class Metaflow(object):
2120
2267
  """
2121
2268
  return list(self)
2122
2269
 
2123
- def __iter__(self):
2270
+ def __iter__(self) -> Iterator[Flow]:
2124
2271
  """
2125
2272
  Iterator over all flows present.
2126
2273
 
2127
- Only flows present in the set namespace are returned. A flow is present in a namespace if
2128
- it has at least one run that is in the namespace.
2274
+ Only flows present in the set namespace are returned. A flow is present in a
2275
+ namespace if it has at least one run that is in the namespace.
2129
2276
 
2130
2277
  Yields
2131
2278
  -------
@@ -2145,10 +2292,10 @@ class Metaflow(object):
2145
2292
  except MetaflowNamespaceMismatch:
2146
2293
  continue
2147
2294
 
2148
- def __str__(self):
2295
+ def __str__(self) -> str:
2149
2296
  return "Metaflow()"
2150
2297
 
2151
- def __getitem__(self, id: str) -> Flow:
2298
+ def __getitem__(self, name: str) -> Flow:
2152
2299
  """
2153
2300
  Returns a specific flow by name.
2154
2301
 
@@ -2156,13 +2303,13 @@ class Metaflow(object):
2156
2303
 
2157
2304
  Parameters
2158
2305
  ----------
2159
- id : string
2306
+ name : str
2160
2307
  Name of the Flow
2161
2308
 
2162
2309
  Returns
2163
2310
  -------
2164
2311
  Flow
2165
- Flow with the given ID.
2312
+ Flow with the given name.
2166
2313
  """
2167
2314
  return Flow(id)
2168
2315
 
@@ -0,0 +1,71 @@
1
+ import time
2
+ from .metadata import MetaDatum
3
+
4
+
5
+ def clone_task_helper(
6
+ flow_name,
7
+ clone_run_id,
8
+ run_id,
9
+ step_name,
10
+ clone_task_id,
11
+ task_id,
12
+ flow_datastore,
13
+ metadata_service,
14
+ origin_ds_set=None,
15
+ attempt_id=0,
16
+ ):
17
+ # 1. initialize output datastore
18
+ output = flow_datastore.get_task_datastore(
19
+ run_id, step_name, task_id, attempt=attempt_id, mode="w"
20
+ )
21
+ output.init_task()
22
+
23
+ origin_run_id, origin_step_name, origin_task_id = (
24
+ clone_run_id,
25
+ step_name,
26
+ clone_task_id,
27
+ )
28
+ # 2. initialize origin datastore
29
+ origin = None
30
+ if origin_ds_set:
31
+ origin = origin_ds_set.get_with_pathspec(
32
+ "{}/{}/{}".format(origin_run_id, origin_step_name, origin_task_id)
33
+ )
34
+ else:
35
+ origin = flow_datastore.get_task_datastore(
36
+ origin_run_id, origin_step_name, origin_task_id
37
+ )
38
+ metadata_tags = ["attempt_id:{0}".format(attempt_id)]
39
+ output.clone(origin)
40
+ _ = metadata_service.register_task_id(
41
+ run_id,
42
+ step_name,
43
+ task_id,
44
+ attempt_id,
45
+ )
46
+ metadata_service.register_metadata(
47
+ run_id,
48
+ step_name,
49
+ task_id,
50
+ [
51
+ MetaDatum(
52
+ field="origin-task-id",
53
+ value=str(origin_task_id),
54
+ type="origin-task-id",
55
+ tags=metadata_tags,
56
+ ),
57
+ MetaDatum(
58
+ field="origin-run-id",
59
+ value=str(origin_run_id),
60
+ type="origin-run-id",
61
+ tags=metadata_tags,
62
+ ),
63
+ MetaDatum(
64
+ field="attempt",
65
+ value=str(attempt_id),
66
+ type="attempt",
67
+ tags=metadata_tags,
68
+ ),
69
+ ],
70
+ )
71
+ output.done()