metaflow 2.11.9__tar.gz → 2.11.11__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.
Files changed (313) hide show
  1. {metaflow-2.11.9/metaflow.egg-info → metaflow-2.11.11}/PKG-INFO +2 -2
  2. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/decorators.py +2 -1
  3. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/metaflow_config.py +8 -0
  4. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/argo/argo_workflows.py +10 -3
  5. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/argo/argo_workflows_decorator.py +1 -0
  6. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/aws/aws_utils.py +21 -5
  7. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/env_escape/__init__.py +2 -1
  8. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/kubernetes/kubernetes.py +2 -0
  9. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/kubernetes/kubernetes_cli.py +3 -0
  10. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/kubernetes/kubernetes_decorator.py +6 -0
  11. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/kubernetes/kubernetes_job.py +7 -0
  12. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/pypi/conda_environment.py +3 -1
  13. metaflow-2.11.11/metaflow/version.py +1 -0
  14. {metaflow-2.11.9 → metaflow-2.11.11/metaflow.egg-info}/PKG-INFO +2 -2
  15. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow.egg-info/requires.txt +1 -1
  16. metaflow-2.11.9/metaflow/version.py +0 -1
  17. {metaflow-2.11.9 → metaflow-2.11.11}/LICENSE +0 -0
  18. {metaflow-2.11.9 → metaflow-2.11.11}/MANIFEST.in +0 -0
  19. {metaflow-2.11.9 → metaflow-2.11.11}/README.md +0 -0
  20. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/R.py +0 -0
  21. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/__init__.py +0 -0
  22. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/__init__.py +0 -0
  23. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/click/__init__.py +0 -0
  24. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/click/_bashcomplete.py +0 -0
  25. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/click/_compat.py +0 -0
  26. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/click/_termui_impl.py +0 -0
  27. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/click/_textwrap.py +0 -0
  28. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/click/_unicodefun.py +0 -0
  29. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/click/_winconsole.py +0 -0
  30. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/click/core.py +0 -0
  31. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/click/decorators.py +0 -0
  32. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/click/exceptions.py +0 -0
  33. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/click/formatting.py +0 -0
  34. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/click/globals.py +0 -0
  35. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/click/parser.py +0 -0
  36. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/click/termui.py +0 -0
  37. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/click/testing.py +0 -0
  38. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/click/types.py +0 -0
  39. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/click/utils.py +0 -0
  40. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/packaging/__init__.py +0 -0
  41. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/packaging/_elffile.py +0 -0
  42. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/packaging/_manylinux.py +0 -0
  43. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/packaging/_musllinux.py +0 -0
  44. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/packaging/_parser.py +0 -0
  45. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/packaging/_structures.py +0 -0
  46. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/packaging/_tokenizer.py +0 -0
  47. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/packaging/markers.py +0 -0
  48. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/packaging/py.typed +0 -0
  49. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/packaging/requirements.py +0 -0
  50. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/packaging/specifiers.py +0 -0
  51. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/packaging/tags.py +0 -0
  52. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/packaging/utils.py +0 -0
  53. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/packaging/version.py +0 -0
  54. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/v3_5/__init__.py +0 -0
  55. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/v3_5/importlib_metadata/__init__.py +0 -0
  56. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/v3_5/importlib_metadata/_compat.py +0 -0
  57. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/v3_5/zipp.py +0 -0
  58. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/v3_6/__init__.py +0 -0
  59. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/v3_6/importlib_metadata/__init__.py +0 -0
  60. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/v3_6/importlib_metadata/_adapters.py +0 -0
  61. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/v3_6/importlib_metadata/_collections.py +0 -0
  62. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/v3_6/importlib_metadata/_compat.py +0 -0
  63. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/v3_6/importlib_metadata/_functools.py +0 -0
  64. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/v3_6/importlib_metadata/_itertools.py +0 -0
  65. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/v3_6/importlib_metadata/_meta.py +0 -0
  66. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/v3_6/importlib_metadata/_text.py +0 -0
  67. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/v3_6/importlib_metadata/py.typed +0 -0
  68. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/v3_6/typing_extensions.py +0 -0
  69. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/v3_6/zipp.py +0 -0
  70. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/v3_7/__init__.py +0 -0
  71. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/_vendor/v3_7/zipp.py +0 -0
  72. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/cards.py +0 -0
  73. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/cli.py +0 -0
  74. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/cli_args.py +0 -0
  75. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/client/__init__.py +0 -0
  76. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/client/core.py +0 -0
  77. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/client/filecache.py +0 -0
  78. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/clone_util.py +0 -0
  79. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/cmd/__init__.py +0 -0
  80. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/cmd/configure_cmd.py +0 -0
  81. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/cmd/develop/__init__.py +0 -0
  82. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/cmd/develop/stub_generator.py +0 -0
  83. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/cmd/develop/stubs.py +0 -0
  84. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/cmd/main_cli.py +0 -0
  85. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/cmd/tutorials_cmd.py +0 -0
  86. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/cmd/util.py +0 -0
  87. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/cmd_with_io.py +0 -0
  88. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/datastore/__init__.py +0 -0
  89. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/datastore/content_addressed_store.py +0 -0
  90. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/datastore/datastore_set.py +0 -0
  91. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/datastore/datastore_storage.py +0 -0
  92. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/datastore/exceptions.py +0 -0
  93. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/datastore/flow_datastore.py +0 -0
  94. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/datastore/inputs.py +0 -0
  95. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/datastore/task_datastore.py +0 -0
  96. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/debug.py +0 -0
  97. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/event_logger.py +0 -0
  98. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/events.py +0 -0
  99. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/exception.py +0 -0
  100. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/extension_support/__init__.py +0 -0
  101. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/extension_support/_empty_file.py +0 -0
  102. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/extension_support/cmd.py +0 -0
  103. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/extension_support/integrations.py +0 -0
  104. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/extension_support/plugins.py +0 -0
  105. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/flowspec.py +0 -0
  106. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/graph.py +0 -0
  107. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/includefile.py +0 -0
  108. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/integrations.py +0 -0
  109. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/lint.py +0 -0
  110. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/metadata/__init__.py +0 -0
  111. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/metadata/heartbeat.py +0 -0
  112. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/metadata/metadata.py +0 -0
  113. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/metadata/util.py +0 -0
  114. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/metaflow_config_funcs.py +0 -0
  115. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/metaflow_current.py +0 -0
  116. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/metaflow_environment.py +0 -0
  117. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/metaflow_profile.py +0 -0
  118. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/metaflow_version.py +0 -0
  119. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/mflog/__init__.py +0 -0
  120. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/mflog/mflog.py +0 -0
  121. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/mflog/save_logs.py +0 -0
  122. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/mflog/save_logs_periodically.py +0 -0
  123. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/mflog/tee.py +0 -0
  124. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/monitor.py +0 -0
  125. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/multicore_utils.py +0 -0
  126. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/package.py +0 -0
  127. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/parameters.py +0 -0
  128. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/__init__.py +0 -0
  129. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/airflow/__init__.py +0 -0
  130. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/airflow/airflow.py +0 -0
  131. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/airflow/airflow_cli.py +0 -0
  132. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/airflow/airflow_decorator.py +0 -0
  133. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/airflow/airflow_utils.py +0 -0
  134. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/airflow/dag.py +0 -0
  135. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/airflow/exception.py +0 -0
  136. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/airflow/plumbing/__init__.py +0 -0
  137. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/airflow/plumbing/set_parameters.py +0 -0
  138. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/airflow/sensors/__init__.py +0 -0
  139. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/airflow/sensors/base_sensor.py +0 -0
  140. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/airflow/sensors/external_task_sensor.py +0 -0
  141. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/airflow/sensors/s3_sensor.py +0 -0
  142. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/argo/__init__.py +0 -0
  143. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/argo/argo_client.py +0 -0
  144. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/argo/argo_events.py +0 -0
  145. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/argo/argo_workflows_cli.py +0 -0
  146. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/argo/process_input_paths.py +0 -0
  147. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/aws/__init__.py +0 -0
  148. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/aws/aws_client.py +0 -0
  149. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/aws/batch/__init__.py +0 -0
  150. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/aws/batch/batch.py +0 -0
  151. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/aws/batch/batch_cli.py +0 -0
  152. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/aws/batch/batch_client.py +0 -0
  153. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/aws/batch/batch_decorator.py +0 -0
  154. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/aws/secrets_manager/__init__.py +0 -0
  155. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/aws/secrets_manager/aws_secrets_manager_secrets_provider.py +0 -0
  156. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/aws/step_functions/__init__.py +0 -0
  157. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/aws/step_functions/dynamo_db_client.py +0 -0
  158. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/aws/step_functions/event_bridge_client.py +0 -0
  159. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/aws/step_functions/production_token.py +0 -0
  160. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/aws/step_functions/schedule_decorator.py +0 -0
  161. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/aws/step_functions/set_batch_environment.py +0 -0
  162. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/aws/step_functions/step_functions.py +0 -0
  163. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/aws/step_functions/step_functions_cli.py +0 -0
  164. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/aws/step_functions/step_functions_client.py +0 -0
  165. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/aws/step_functions/step_functions_decorator.py +0 -0
  166. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/azure/__init__.py +0 -0
  167. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/azure/azure_exceptions.py +0 -0
  168. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/azure/azure_tail.py +0 -0
  169. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/azure/azure_utils.py +0 -0
  170. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/azure/blob_service_client_factory.py +0 -0
  171. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/azure/includefile_support.py +0 -0
  172. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/cards/__init__.py +0 -0
  173. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/cards/card_cli.py +0 -0
  174. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/cards/card_client.py +0 -0
  175. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/cards/card_creator.py +0 -0
  176. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/cards/card_datastore.py +0 -0
  177. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/cards/card_decorator.py +0 -0
  178. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/cards/card_modules/__init__.py +0 -0
  179. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/cards/card_modules/base.html +0 -0
  180. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/cards/card_modules/basic.py +0 -0
  181. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/cards/card_modules/bundle.css +0 -0
  182. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/cards/card_modules/card.py +0 -0
  183. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/cards/card_modules/chevron/__init__.py +0 -0
  184. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/cards/card_modules/chevron/main.py +0 -0
  185. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/cards/card_modules/chevron/metadata.py +0 -0
  186. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/cards/card_modules/chevron/renderer.py +0 -0
  187. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/cards/card_modules/chevron/tokenizer.py +0 -0
  188. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/cards/card_modules/components.py +0 -0
  189. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/cards/card_modules/convert_to_native_type.py +0 -0
  190. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/cards/card_modules/main.js +0 -0
  191. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/cards/card_modules/renderer_tools.py +0 -0
  192. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/cards/card_modules/test_cards.py +0 -0
  193. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/cards/card_resolver.py +0 -0
  194. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/cards/card_server.py +0 -0
  195. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/cards/card_viewer/viewer.html +0 -0
  196. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/cards/component_serializer.py +0 -0
  197. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/cards/exception.py +0 -0
  198. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/catch_decorator.py +0 -0
  199. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/datastores/__init__.py +0 -0
  200. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/datastores/azure_storage.py +0 -0
  201. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/datastores/gs_storage.py +0 -0
  202. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/datastores/local_storage.py +0 -0
  203. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/datastores/s3_storage.py +0 -0
  204. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/datatools/__init__.py +0 -0
  205. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/datatools/local.py +0 -0
  206. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/datatools/s3/__init__.py +0 -0
  207. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/datatools/s3/s3.py +0 -0
  208. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/datatools/s3/s3op.py +0 -0
  209. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/datatools/s3/s3tail.py +0 -0
  210. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/datatools/s3/s3util.py +0 -0
  211. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/debug_logger.py +0 -0
  212. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/debug_monitor.py +0 -0
  213. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/env_escape/client.py +0 -0
  214. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/env_escape/client_modules.py +0 -0
  215. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/env_escape/communication/__init__.py +0 -0
  216. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/env_escape/communication/bytestream.py +0 -0
  217. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/env_escape/communication/channel.py +0 -0
  218. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/env_escape/communication/socket_bytestream.py +0 -0
  219. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/env_escape/communication/utils.py +0 -0
  220. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/env_escape/configurations/emulate_test_lib/__init__.py +0 -0
  221. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/env_escape/configurations/emulate_test_lib/overrides.py +0 -0
  222. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/env_escape/configurations/emulate_test_lib/server_mappings.py +0 -0
  223. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/env_escape/configurations/test_lib_impl/__init__.py +0 -0
  224. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/env_escape/configurations/test_lib_impl/test_lib.py +0 -0
  225. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/env_escape/consts.py +0 -0
  226. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/env_escape/data_transferer.py +0 -0
  227. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/env_escape/exception_transferer.py +0 -0
  228. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/env_escape/override_decorators.py +0 -0
  229. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/env_escape/server.py +0 -0
  230. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/env_escape/stub.py +0 -0
  231. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/env_escape/utils.py +0 -0
  232. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/environment_decorator.py +0 -0
  233. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/events_decorator.py +0 -0
  234. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/frameworks/__init__.py +0 -0
  235. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/frameworks/pytorch.py +0 -0
  236. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/gcp/__init__.py +0 -0
  237. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/gcp/gs_exceptions.py +0 -0
  238. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/gcp/gs_storage_client_factory.py +0 -0
  239. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/gcp/gs_tail.py +0 -0
  240. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/gcp/gs_utils.py +0 -0
  241. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/gcp/includefile_support.py +0 -0
  242. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/kubernetes/__init__.py +0 -0
  243. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/kubernetes/kubernetes_client.py +0 -0
  244. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/metadata/__init__.py +0 -0
  245. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/metadata/local.py +0 -0
  246. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/metadata/service.py +0 -0
  247. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/package_cli.py +0 -0
  248. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/parallel_decorator.py +0 -0
  249. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/project_decorator.py +0 -0
  250. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/pypi/__init__.py +0 -0
  251. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/pypi/bootstrap.py +0 -0
  252. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/pypi/conda_decorator.py +0 -0
  253. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/pypi/micromamba.py +0 -0
  254. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/pypi/pip.py +0 -0
  255. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/pypi/pypi_decorator.py +0 -0
  256. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/pypi/pypi_environment.py +0 -0
  257. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/pypi/utils.py +0 -0
  258. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/resources_decorator.py +0 -0
  259. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/retry_decorator.py +0 -0
  260. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/secrets/__init__.py +0 -0
  261. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/secrets/inline_secrets_provider.py +0 -0
  262. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/secrets/secrets_decorator.py +0 -0
  263. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/storage_executor.py +0 -0
  264. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/tag_cli.py +0 -0
  265. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/test_unbounded_foreach_decorator.py +0 -0
  266. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/plugins/timeout_decorator.py +0 -0
  267. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/procpoll.py +0 -0
  268. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/py.typed +0 -0
  269. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/pylint_wrapper.py +0 -0
  270. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/runtime.py +0 -0
  271. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/sidecar/__init__.py +0 -0
  272. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/sidecar/sidecar.py +0 -0
  273. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/sidecar/sidecar_messages.py +0 -0
  274. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/sidecar/sidecar_subprocess.py +0 -0
  275. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/sidecar/sidecar_worker.py +0 -0
  276. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/tagging_util.py +0 -0
  277. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/task.py +0 -0
  278. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/tracing/__init__.py +0 -0
  279. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/tracing/propagator.py +0 -0
  280. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/tracing/span_exporter.py +0 -0
  281. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/tracing/tracing_modules.py +0 -0
  282. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/tutorials/00-helloworld/README.md +0 -0
  283. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/tutorials/00-helloworld/helloworld.py +0 -0
  284. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/tutorials/01-playlist/README.md +0 -0
  285. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/tutorials/01-playlist/movies.csv +0 -0
  286. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/tutorials/01-playlist/playlist.ipynb +0 -0
  287. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/tutorials/01-playlist/playlist.py +0 -0
  288. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/tutorials/02-statistics/README.md +0 -0
  289. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/tutorials/02-statistics/movies.csv +0 -0
  290. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/tutorials/02-statistics/stats.ipynb +0 -0
  291. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/tutorials/02-statistics/stats.py +0 -0
  292. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/tutorials/03-playlist-redux/README.md +0 -0
  293. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/tutorials/03-playlist-redux/playlist.py +0 -0
  294. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/tutorials/04-playlist-plus/README.md +0 -0
  295. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/tutorials/04-playlist-plus/playlist.py +0 -0
  296. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/tutorials/05-hello-cloud/README.md +0 -0
  297. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/tutorials/05-hello-cloud/hello-cloud.ipynb +0 -0
  298. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/tutorials/05-hello-cloud/hello-cloud.py +0 -0
  299. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/tutorials/06-statistics-redux/README.md +0 -0
  300. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/tutorials/06-statistics-redux/stats.ipynb +0 -0
  301. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/tutorials/07-worldview/README.md +0 -0
  302. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/tutorials/07-worldview/worldview.ipynb +0 -0
  303. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/tutorials/08-autopilot/README.md +0 -0
  304. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/tutorials/08-autopilot/autopilot.ipynb +0 -0
  305. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/unbounded_foreach.py +0 -0
  306. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/util.py +0 -0
  307. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow/vendor.py +0 -0
  308. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow.egg-info/SOURCES.txt +0 -0
  309. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow.egg-info/dependency_links.txt +0 -0
  310. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow.egg-info/entry_points.txt +0 -0
  311. {metaflow-2.11.9 → metaflow-2.11.11}/metaflow.egg-info/top_level.txt +0 -0
  312. {metaflow-2.11.9 → metaflow-2.11.11}/setup.cfg +0 -0
  313. {metaflow-2.11.9 → metaflow-2.11.11}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: metaflow
3
- Version: 2.11.9
3
+ Version: 2.11.11
4
4
  Summary: Metaflow: More Data Science, 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.11.9; extra == "stubs"
29
+ Requires-Dist: metaflow-stubs==2.11.11; extra == "stubs"
30
30
 
31
31
  ![Metaflow_Logo_Horizontal_FullColor_Ribbon_Dark_RGB](https://user-images.githubusercontent.com/763451/89453116-96a57e00-d713-11ea-9fa6-82b29d4d6eff.png)
32
32
 
@@ -518,7 +518,8 @@ def _init_flow_decorators(
518
518
  else:
519
519
  # Each "non-multiple" flow decorator is only allowed to have one set of options
520
520
  deco_flow_init_options = {
521
- option: deco_options[option] for option in deco.options
521
+ option: deco_options[option.replace("-", "_")]
522
+ for option in deco.options
522
523
  }
523
524
  for deco in decorators:
524
525
  deco.flow_init(
@@ -312,6 +312,8 @@ KUBERNETES_CONTAINER_REGISTRY = from_conf(
312
312
  KUBERNETES_FETCH_EC2_METADATA = from_conf("KUBERNETES_FETCH_EC2_METADATA", False)
313
313
  # Shared memory in MB to use for this step
314
314
  KUBERNETES_SHARED_MEMORY = from_conf("KUBERNETES_SHARED_MEMORY", None)
315
+ # Default port number to open on the pods
316
+ KUBERNETES_PORT = from_conf("KUBERNETES_PORT", None)
315
317
 
316
318
  ARGO_WORKFLOWS_KUBERNETES_SECRETS = from_conf("ARGO_WORKFLOWS_KUBERNETES_SECRETS", "")
317
319
  ARGO_WORKFLOWS_ENV_VARS_TO_SKIP = from_conf("ARGO_WORKFLOWS_ENV_VARS_TO_SKIP", "")
@@ -361,6 +363,12 @@ CONDA_PACKAGE_GSROOT = from_conf("CONDA_PACKAGE_GSROOT")
361
363
  # should result in an appreciable speedup in flow environment initialization.
362
364
  CONDA_DEPENDENCY_RESOLVER = from_conf("CONDA_DEPENDENCY_RESOLVER", "conda")
363
365
 
366
+ ###
367
+ # Escape hatch configuration
368
+ ###
369
+ # Print out warning if escape hatch is not used for the target packages
370
+ ESCAPE_HATCH_WARNING = from_conf("ESCAPE_HATCH_WARNING", True)
371
+
364
372
  ###
365
373
  # Debug configuration
366
374
  ###
@@ -1371,12 +1371,14 @@ class ArgoWorkflows(object):
1371
1371
  # Set shared_memory to 0 if it isn't specified. This results
1372
1372
  # in Kubernetes using it's default value when the pod is created.
1373
1373
  shared_memory = resources.get("shared_memory", 0)
1374
+ port = resources.get("port", None)
1375
+ if port:
1376
+ port = int(port)
1374
1377
 
1375
1378
  tmpfs_enabled = use_tmpfs or (tmpfs_size and not use_tmpfs)
1376
1379
 
1377
1380
  if tmpfs_enabled and tmpfs_tempdir:
1378
1381
  env["METAFLOW_TEMPDIR"] = tmpfs_path
1379
-
1380
1382
  # Create a ContainerTemplate for this node. Ideally, we would have
1381
1383
  # liked to inline this ContainerTemplate and avoid scanning the workflow
1382
1384
  # twice, but due to issues with variable substitution, we will have to
@@ -1435,6 +1437,9 @@ class ArgoWorkflows(object):
1435
1437
  kubernetes_sdk.V1Container(
1436
1438
  name=self._sanitize(node.name),
1437
1439
  command=cmds,
1440
+ ports=[kubernetes_sdk.V1ContainerPort(container_port=port)]
1441
+ if port
1442
+ else None,
1438
1443
  env=[
1439
1444
  kubernetes_sdk.V1EnvVar(name=k, value=str(v))
1440
1445
  for k, v in env.items()
@@ -1983,8 +1988,10 @@ class ArgoWorkflows(object):
1983
1988
  # Technically, we don't need to create
1984
1989
  # a payload carry-on and can stuff
1985
1990
  # everything within the body.
1986
- data_template="{{ .Input.body.payload.%s | toJson }}"
1987
- % v,
1991
+ # NOTE: We need the conditional logic in order to successfully fall back to the default value
1992
+ # when the event payload does not contain a key for a parameter.
1993
+ data_template='{{ if (hasKey $.Input.body.payload "%s") }}{{- (.Input.body.payload.%s | toJson) -}}{{- else -}}{{ (fail "use-default-instead") }}{{- end -}}'
1994
+ % (v, v),
1988
1995
  # Unfortunately the sensor needs to
1989
1996
  # record the default values for
1990
1997
  # the parameters - there doesn't seem
@@ -72,6 +72,7 @@ class ArgoWorkflowsInternalDecorator(StepDecorator):
72
72
  meta["argo-workflow-name"] = os.environ["ARGO_WORKFLOW_NAME"]
73
73
  meta["argo-workflow-namespace"] = os.environ["ARGO_WORKFLOW_NAMESPACE"]
74
74
  meta["auto-emit-argo-events"] = self.attributes["auto-emit-argo-events"]
75
+ meta["argo-workflow-template-owner"] = os.environ["METAFLOW_OWNER"]
75
76
  entries = [
76
77
  MetaDatum(
77
78
  field=k, value=v, type=k, tags=["attempt_id:{0}".format(retry_count)]
@@ -19,14 +19,30 @@ def get_ec2_instance_metadata():
19
19
  # access to this end-point might be blocked on AWS and not available
20
20
  # for non-AWS deployments.
21
21
  # https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-identity-documents.html
22
+ # Set a very aggressive timeout, as the communication is happening in the same subnet,
23
+ # there should not be any significant delay in the response.
24
+ # Having a long default timeout here introduces unnecessary delay in launching tasks when the
25
+ # instance is unreachable.
26
+ timeout = (1, 10)
27
+ token = None
22
28
  try:
23
- # Set a very aggressive timeout, as the communication is happening in the same subnet,
24
- # there should not be any significant delay in the response.
25
- # Having a long default timeout here introduces unnecessary delay in launching tasks when the
26
- # instance is unreachable.
29
+ # Try to get an IMDSv2 token.
30
+ token = requests.put(
31
+ url="http://169.254.169.254/latest/api/token",
32
+ headers={"X-aws-ec2-metadata-token-ttl-seconds": 100},
33
+ timeout=timeout,
34
+ ).text
35
+ except:
36
+ pass
37
+ try:
38
+ headers = {}
39
+ # Add IMDSv2 token if available, else fall back to IMDSv1.
40
+ if token:
41
+ headers["X-aws-ec2-metadata-token"] = token
27
42
  instance_meta = requests.get(
28
43
  url="http://169.254.169.254/latest/dynamic/instance-identity/document",
29
- timeout=(1, 10),
44
+ headers=headers,
45
+ timeout=timeout,
30
46
  ).json()
31
47
  meta["ec2-instance-id"] = instance_meta.get("instanceId")
32
48
  meta["ec2-instance-type"] = instance_meta.get("instanceType")
@@ -36,6 +36,7 @@ from metaflow.extension_support import get_modules
36
36
 
37
37
  from .exception_transferer import RemoteInterpreterException
38
38
  from .client_modules import create_modules
39
+ from metaflow.metaflow_config import ESCAPE_HATCH_WARNING
39
40
 
40
41
  # Determine what is the python executable to use for the environment escape. To do this,
41
42
  # we look for ENV_ESCAPE_PY in the environment AND store it. When metaflow
@@ -146,7 +147,7 @@ def load():
146
147
  # print("Env escape using executable {python_executable}")
147
148
  else:
148
149
  # Inverse logic as above here.
149
- if sys.executable != "{python_executable}":
150
+ if sys.executable != "{python_executable}" and ESCAPE_HATCH_WARNING:
150
151
  # We use the package locally and warn user.
151
152
  print("Not using environment escape for '%s' as module present" % prefix)
152
153
  # In both cases, we don't load our loader since
@@ -175,6 +175,7 @@ class Kubernetes(object):
175
175
  tolerations=None,
176
176
  labels=None,
177
177
  shared_memory=None,
178
+ port=None,
178
179
  ):
179
180
  if env is None:
180
181
  env = {}
@@ -215,6 +216,7 @@ class Kubernetes(object):
215
216
  tmpfs_path=tmpfs_path,
216
217
  persistent_volume_claims=persistent_volume_claims,
217
218
  shared_memory=shared_memory,
219
+ port=port,
218
220
  )
219
221
  .environment_variable("METAFLOW_CODE_SHA", code_package_sha)
220
222
  .environment_variable("METAFLOW_CODE_URL", code_package_url)
@@ -108,6 +108,7 @@ def kubernetes():
108
108
  multiple=False,
109
109
  )
110
110
  @click.option("--shared-memory", default=None, help="Size of shared memory in MiB")
111
+ @click.option("--port", default=None, help="Port number to expose from the container")
111
112
  @click.pass_context
112
113
  def step(
113
114
  ctx,
@@ -134,6 +135,7 @@ def step(
134
135
  persistent_volume_claims=None,
135
136
  tolerations=None,
136
137
  shared_memory=None,
138
+ port=None,
137
139
  **kwargs
138
140
  ):
139
141
  def echo(msg, stream="stderr", job_id=None, **kwargs):
@@ -248,6 +250,7 @@ def step(
248
250
  persistent_volume_claims=persistent_volume_claims,
249
251
  tolerations=tolerations,
250
252
  shared_memory=shared_memory,
253
+ port=port,
251
254
  )
252
255
  except Exception as e:
253
256
  traceback.print_exc(chain=False)
@@ -21,6 +21,7 @@ from metaflow.metaflow_config import (
21
21
  KUBERNETES_TOLERATIONS,
22
22
  KUBERNETES_SERVICE_ACCOUNT,
23
23
  KUBERNETES_SHARED_MEMORY,
24
+ KUBERNETES_PORT,
24
25
  )
25
26
  from metaflow.plugins.resources_decorator import ResourcesDecorator
26
27
  from metaflow.plugins.timeout_decorator import get_run_time_limit_for_task
@@ -90,6 +91,8 @@ class KubernetesDecorator(StepDecorator):
90
91
  volumes to the path to which the volume is to be mounted, e.g., `{'pvc-name': '/path/to/mount/on'}`.
91
92
  shared_memory: int, optional
92
93
  Shared memory size (in MiB) required for this step
94
+ port: int, optional
95
+ Port number to specify in the Kubernetes job object
93
96
  """
94
97
 
95
98
  name = "kubernetes"
@@ -113,6 +116,7 @@ class KubernetesDecorator(StepDecorator):
113
116
  "tmpfs_path": "/metaflow_temp",
114
117
  "persistent_volume_claims": None, # e.g., {"pvc-name": "/mnt/vol", "another-pvc": "/mnt/vol2"}
115
118
  "shared_memory": None,
119
+ "port": None,
116
120
  }
117
121
  package_url = None
118
122
  package_sha = None
@@ -200,6 +204,8 @@ class KubernetesDecorator(StepDecorator):
200
204
  self.attributes["tmpfs_size"] = int(self.attributes["memory"]) // 2
201
205
  if not self.attributes["shared_memory"]:
202
206
  self.attributes["shared_memory"] = KUBERNETES_SHARED_MEMORY
207
+ if not self.attributes["port"]:
208
+ self.attributes["port"] = KUBERNETES_PORT
203
209
 
204
210
  # Refer https://github.com/Netflix/metaflow/blob/master/docs/lifecycle.png
205
211
  def step_init(self, flow, graph, step, decos, environment, flow_datastore, logger):
@@ -118,6 +118,13 @@ class KubernetesJob(object):
118
118
  containers=[
119
119
  client.V1Container(
120
120
  command=self._kwargs["command"],
121
+ ports=[
122
+ client.V1ContainerPort(
123
+ container_port=int(self._kwargs["port"])
124
+ )
125
+ ]
126
+ if "port" in self._kwargs and self._kwargs["port"]
127
+ else None,
121
128
  env=[
122
129
  client.V1EnvVar(name=k, value=str(v))
123
130
  for k, v in self._kwargs.get(
@@ -266,7 +266,9 @@ class CondaEnvironment(MetaflowEnvironment):
266
266
  # Resolve `linux-64` Conda environments if @batch or @kubernetes are in play
267
267
  target_platform = conda_platform()
268
268
  for decorator in step.decorators:
269
- if decorator.name in ["batch", "kubernetes"]:
269
+ # TODO: rather than relying on decorator names, rely on attributes
270
+ # to make them extensible.
271
+ if decorator.name in ["batch", "kubernetes", "nvidia"]:
270
272
  # TODO: Support arm architectures
271
273
  target_platform = "linux-64"
272
274
  break
@@ -0,0 +1 @@
1
+ metaflow_version = "2.11.11"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: metaflow
3
- Version: 2.11.9
3
+ Version: 2.11.11
4
4
  Summary: Metaflow: More Data Science, 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.11.9; extra == "stubs"
29
+ Requires-Dist: metaflow-stubs==2.11.11; extra == "stubs"
30
30
 
31
31
  ![Metaflow_Logo_Horizontal_FullColor_Ribbon_Dark_RGB](https://user-images.githubusercontent.com/763451/89453116-96a57e00-d713-11ea-9fa6-82b29d4d6eff.png)
32
32
 
@@ -2,4 +2,4 @@ requests
2
2
  boto3
3
3
 
4
4
  [stubs]
5
- metaflow-stubs==2.11.9
5
+ metaflow-stubs==2.11.11
@@ -1 +0,0 @@
1
- metaflow_version = "2.11.9"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes