metaflow 2.12.4__tar.gz → 2.12.5__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 (347) hide show
  1. {metaflow-2.12.4/metaflow.egg-info → metaflow-2.12.5}/PKG-INFO +2 -2
  2. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/cli.py +1 -1
  3. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/cards/card_cli.py +36 -25
  4. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/cards/card_modules/basic.py +13 -0
  5. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/pypi/conda_environment.py +7 -9
  6. metaflow-2.12.5/metaflow/version.py +1 -0
  7. {metaflow-2.12.4 → metaflow-2.12.5/metaflow.egg-info}/PKG-INFO +2 -2
  8. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow.egg-info/requires.txt +1 -1
  9. metaflow-2.12.4/metaflow/version.py +0 -1
  10. {metaflow-2.12.4 → metaflow-2.12.5}/LICENSE +0 -0
  11. {metaflow-2.12.4 → metaflow-2.12.5}/MANIFEST.in +0 -0
  12. {metaflow-2.12.4 → metaflow-2.12.5}/README.md +0 -0
  13. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/R.py +0 -0
  14. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/__init__.py +0 -0
  15. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/__init__.py +0 -0
  16. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/click/__init__.py +0 -0
  17. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/click/_bashcomplete.py +0 -0
  18. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/click/_compat.py +0 -0
  19. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/click/_termui_impl.py +0 -0
  20. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/click/_textwrap.py +0 -0
  21. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/click/_unicodefun.py +0 -0
  22. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/click/_winconsole.py +0 -0
  23. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/click/core.py +0 -0
  24. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/click/decorators.py +0 -0
  25. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/click/exceptions.py +0 -0
  26. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/click/formatting.py +0 -0
  27. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/click/globals.py +0 -0
  28. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/click/parser.py +0 -0
  29. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/click/termui.py +0 -0
  30. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/click/testing.py +0 -0
  31. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/click/types.py +0 -0
  32. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/click/utils.py +0 -0
  33. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/importlib_metadata/__init__.py +0 -0
  34. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/importlib_metadata/_adapters.py +0 -0
  35. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/importlib_metadata/_collections.py +0 -0
  36. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/importlib_metadata/_compat.py +0 -0
  37. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/importlib_metadata/_functools.py +0 -0
  38. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/importlib_metadata/_itertools.py +0 -0
  39. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/importlib_metadata/_meta.py +0 -0
  40. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/importlib_metadata/_text.py +0 -0
  41. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/importlib_metadata/py.typed +0 -0
  42. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/packaging/__init__.py +0 -0
  43. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/packaging/_elffile.py +0 -0
  44. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/packaging/_manylinux.py +0 -0
  45. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/packaging/_musllinux.py +0 -0
  46. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/packaging/_parser.py +0 -0
  47. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/packaging/_structures.py +0 -0
  48. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/packaging/_tokenizer.py +0 -0
  49. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/packaging/markers.py +0 -0
  50. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/packaging/py.typed +0 -0
  51. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/packaging/requirements.py +0 -0
  52. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/packaging/specifiers.py +0 -0
  53. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/packaging/tags.py +0 -0
  54. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/packaging/utils.py +0 -0
  55. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/packaging/version.py +0 -0
  56. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/typeguard/__init__.py +0 -0
  57. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/typeguard/_checkers.py +0 -0
  58. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/typeguard/_config.py +0 -0
  59. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/typeguard/_decorators.py +0 -0
  60. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/typeguard/_exceptions.py +0 -0
  61. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/typeguard/_functions.py +0 -0
  62. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/typeguard/_importhook.py +0 -0
  63. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/typeguard/_memo.py +0 -0
  64. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/typeguard/_pytest_plugin.py +0 -0
  65. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/typeguard/_suppression.py +0 -0
  66. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/typeguard/_transformer.py +0 -0
  67. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/typeguard/_union_transformer.py +0 -0
  68. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/typeguard/_utils.py +0 -0
  69. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/typeguard/py.typed +0 -0
  70. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/typing_extensions.py +0 -0
  71. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/v3_5/__init__.py +0 -0
  72. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/v3_5/importlib_metadata/__init__.py +0 -0
  73. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/v3_5/importlib_metadata/_compat.py +0 -0
  74. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/v3_5/zipp.py +0 -0
  75. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/v3_6/__init__.py +0 -0
  76. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/v3_6/importlib_metadata/__init__.py +0 -0
  77. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/v3_6/importlib_metadata/_adapters.py +0 -0
  78. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/v3_6/importlib_metadata/_collections.py +0 -0
  79. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/v3_6/importlib_metadata/_compat.py +0 -0
  80. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/v3_6/importlib_metadata/_functools.py +0 -0
  81. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/v3_6/importlib_metadata/_itertools.py +0 -0
  82. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/v3_6/importlib_metadata/_meta.py +0 -0
  83. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/v3_6/importlib_metadata/_text.py +0 -0
  84. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/v3_6/importlib_metadata/py.typed +0 -0
  85. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/v3_6/typing_extensions.py +0 -0
  86. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/v3_6/zipp.py +0 -0
  87. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/_vendor/zipp.py +0 -0
  88. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/cards.py +0 -0
  89. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/cli_args.py +0 -0
  90. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/client/__init__.py +0 -0
  91. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/client/core.py +0 -0
  92. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/client/filecache.py +0 -0
  93. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/clone_util.py +0 -0
  94. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/cmd/__init__.py +0 -0
  95. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/cmd/configure_cmd.py +0 -0
  96. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/cmd/develop/__init__.py +0 -0
  97. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/cmd/develop/stub_generator.py +0 -0
  98. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/cmd/develop/stubs.py +0 -0
  99. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/cmd/main_cli.py +0 -0
  100. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/cmd/tutorials_cmd.py +0 -0
  101. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/cmd/util.py +0 -0
  102. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/cmd_with_io.py +0 -0
  103. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/datastore/__init__.py +0 -0
  104. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/datastore/content_addressed_store.py +0 -0
  105. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/datastore/datastore_set.py +0 -0
  106. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/datastore/datastore_storage.py +0 -0
  107. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/datastore/exceptions.py +0 -0
  108. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/datastore/flow_datastore.py +0 -0
  109. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/datastore/inputs.py +0 -0
  110. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/datastore/task_datastore.py +0 -0
  111. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/debug.py +0 -0
  112. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/decorators.py +0 -0
  113. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/event_logger.py +0 -0
  114. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/events.py +0 -0
  115. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/exception.py +0 -0
  116. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/extension_support/__init__.py +0 -0
  117. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/extension_support/_empty_file.py +0 -0
  118. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/extension_support/cmd.py +0 -0
  119. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/extension_support/integrations.py +0 -0
  120. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/extension_support/plugins.py +0 -0
  121. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/flowspec.py +0 -0
  122. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/graph.py +0 -0
  123. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/includefile.py +0 -0
  124. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/integrations.py +0 -0
  125. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/lint.py +0 -0
  126. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/metadata/__init__.py +0 -0
  127. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/metadata/heartbeat.py +0 -0
  128. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/metadata/metadata.py +0 -0
  129. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/metadata/util.py +0 -0
  130. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/metaflow_config.py +0 -0
  131. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/metaflow_config_funcs.py +0 -0
  132. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/metaflow_current.py +0 -0
  133. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/metaflow_environment.py +0 -0
  134. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/metaflow_profile.py +0 -0
  135. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/metaflow_version.py +0 -0
  136. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/mflog/__init__.py +0 -0
  137. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/mflog/mflog.py +0 -0
  138. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/mflog/save_logs.py +0 -0
  139. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/mflog/save_logs_periodically.py +0 -0
  140. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/mflog/tee.py +0 -0
  141. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/monitor.py +0 -0
  142. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/multicore_utils.py +0 -0
  143. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/package.py +0 -0
  144. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/parameters.py +0 -0
  145. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/__init__.py +0 -0
  146. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/airflow/__init__.py +0 -0
  147. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/airflow/airflow.py +0 -0
  148. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/airflow/airflow_cli.py +0 -0
  149. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/airflow/airflow_decorator.py +0 -0
  150. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/airflow/airflow_utils.py +0 -0
  151. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/airflow/dag.py +0 -0
  152. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/airflow/exception.py +0 -0
  153. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/airflow/plumbing/__init__.py +0 -0
  154. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/airflow/plumbing/set_parameters.py +0 -0
  155. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/airflow/sensors/__init__.py +0 -0
  156. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/airflow/sensors/base_sensor.py +0 -0
  157. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/airflow/sensors/external_task_sensor.py +0 -0
  158. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/airflow/sensors/s3_sensor.py +0 -0
  159. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/argo/__init__.py +0 -0
  160. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/argo/argo_client.py +0 -0
  161. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/argo/argo_events.py +0 -0
  162. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/argo/argo_workflows.py +0 -0
  163. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/argo/argo_workflows_cli.py +0 -0
  164. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/argo/argo_workflows_decorator.py +0 -0
  165. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/argo/generate_input_paths.py +0 -0
  166. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/aws/__init__.py +0 -0
  167. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/aws/aws_client.py +0 -0
  168. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/aws/aws_utils.py +0 -0
  169. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/aws/batch/__init__.py +0 -0
  170. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/aws/batch/batch.py +0 -0
  171. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/aws/batch/batch_cli.py +0 -0
  172. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/aws/batch/batch_client.py +0 -0
  173. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/aws/batch/batch_decorator.py +0 -0
  174. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/aws/secrets_manager/__init__.py +0 -0
  175. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/aws/secrets_manager/aws_secrets_manager_secrets_provider.py +0 -0
  176. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/aws/step_functions/__init__.py +0 -0
  177. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/aws/step_functions/dynamo_db_client.py +0 -0
  178. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/aws/step_functions/event_bridge_client.py +0 -0
  179. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/aws/step_functions/production_token.py +0 -0
  180. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/aws/step_functions/schedule_decorator.py +0 -0
  181. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/aws/step_functions/set_batch_environment.py +0 -0
  182. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/aws/step_functions/step_functions.py +0 -0
  183. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/aws/step_functions/step_functions_cli.py +0 -0
  184. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/aws/step_functions/step_functions_client.py +0 -0
  185. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/aws/step_functions/step_functions_decorator.py +0 -0
  186. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/azure/__init__.py +0 -0
  187. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/azure/azure_credential.py +0 -0
  188. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/azure/azure_exceptions.py +0 -0
  189. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/azure/azure_secret_manager_secrets_provider.py +0 -0
  190. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/azure/azure_tail.py +0 -0
  191. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/azure/azure_utils.py +0 -0
  192. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/azure/blob_service_client_factory.py +0 -0
  193. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/azure/includefile_support.py +0 -0
  194. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/cards/__init__.py +0 -0
  195. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/cards/card_client.py +0 -0
  196. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/cards/card_creator.py +0 -0
  197. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/cards/card_datastore.py +0 -0
  198. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/cards/card_decorator.py +0 -0
  199. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/cards/card_modules/__init__.py +0 -0
  200. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/cards/card_modules/base.html +0 -0
  201. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/cards/card_modules/bundle.css +0 -0
  202. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/cards/card_modules/card.py +0 -0
  203. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/cards/card_modules/chevron/__init__.py +0 -0
  204. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/cards/card_modules/chevron/main.py +0 -0
  205. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/cards/card_modules/chevron/metadata.py +0 -0
  206. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/cards/card_modules/chevron/renderer.py +0 -0
  207. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/cards/card_modules/chevron/tokenizer.py +0 -0
  208. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/cards/card_modules/components.py +0 -0
  209. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/cards/card_modules/convert_to_native_type.py +0 -0
  210. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/cards/card_modules/main.js +0 -0
  211. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/cards/card_modules/renderer_tools.py +0 -0
  212. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/cards/card_modules/test_cards.py +0 -0
  213. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/cards/card_resolver.py +0 -0
  214. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/cards/card_server.py +0 -0
  215. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/cards/card_viewer/viewer.html +0 -0
  216. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/cards/component_serializer.py +0 -0
  217. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/cards/exception.py +0 -0
  218. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/catch_decorator.py +0 -0
  219. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/datastores/__init__.py +0 -0
  220. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/datastores/azure_storage.py +0 -0
  221. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/datastores/gs_storage.py +0 -0
  222. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/datastores/local_storage.py +0 -0
  223. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/datastores/s3_storage.py +0 -0
  224. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/datatools/__init__.py +0 -0
  225. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/datatools/local.py +0 -0
  226. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/datatools/s3/__init__.py +0 -0
  227. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/datatools/s3/s3.py +0 -0
  228. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/datatools/s3/s3op.py +0 -0
  229. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/datatools/s3/s3tail.py +0 -0
  230. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/datatools/s3/s3util.py +0 -0
  231. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/debug_logger.py +0 -0
  232. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/debug_monitor.py +0 -0
  233. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/env_escape/__init__.py +0 -0
  234. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/env_escape/client.py +0 -0
  235. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/env_escape/client_modules.py +0 -0
  236. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/env_escape/communication/__init__.py +0 -0
  237. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/env_escape/communication/bytestream.py +0 -0
  238. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/env_escape/communication/channel.py +0 -0
  239. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/env_escape/communication/socket_bytestream.py +0 -0
  240. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/env_escape/communication/utils.py +0 -0
  241. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/env_escape/configurations/emulate_test_lib/__init__.py +0 -0
  242. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/env_escape/configurations/emulate_test_lib/overrides.py +0 -0
  243. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/env_escape/configurations/emulate_test_lib/server_mappings.py +0 -0
  244. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/env_escape/configurations/test_lib_impl/__init__.py +0 -0
  245. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/env_escape/configurations/test_lib_impl/test_lib.py +0 -0
  246. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/env_escape/consts.py +0 -0
  247. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/env_escape/data_transferer.py +0 -0
  248. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/env_escape/exception_transferer.py +0 -0
  249. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/env_escape/override_decorators.py +0 -0
  250. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/env_escape/server.py +0 -0
  251. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/env_escape/stub.py +0 -0
  252. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/env_escape/utils.py +0 -0
  253. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/environment_decorator.py +0 -0
  254. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/events_decorator.py +0 -0
  255. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/frameworks/__init__.py +0 -0
  256. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/frameworks/pytorch.py +0 -0
  257. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/gcp/__init__.py +0 -0
  258. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/gcp/gcp_secret_manager_secrets_provider.py +0 -0
  259. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/gcp/gs_exceptions.py +0 -0
  260. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/gcp/gs_storage_client_factory.py +0 -0
  261. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/gcp/gs_tail.py +0 -0
  262. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/gcp/gs_utils.py +0 -0
  263. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/gcp/includefile_support.py +0 -0
  264. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/kubernetes/__init__.py +0 -0
  265. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/kubernetes/kubernetes.py +0 -0
  266. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/kubernetes/kubernetes_cli.py +0 -0
  267. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/kubernetes/kubernetes_client.py +0 -0
  268. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/kubernetes/kubernetes_decorator.py +0 -0
  269. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/kubernetes/kubernetes_job.py +0 -0
  270. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/kubernetes/kubernetes_jobsets.py +0 -0
  271. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/logs_cli.py +0 -0
  272. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/metadata/__init__.py +0 -0
  273. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/metadata/local.py +0 -0
  274. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/metadata/service.py +0 -0
  275. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/package_cli.py +0 -0
  276. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/parallel_decorator.py +0 -0
  277. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/project_decorator.py +0 -0
  278. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/pypi/__init__.py +0 -0
  279. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/pypi/bootstrap.py +0 -0
  280. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/pypi/conda_decorator.py +0 -0
  281. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/pypi/micromamba.py +0 -0
  282. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/pypi/pip.py +0 -0
  283. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/pypi/pypi_decorator.py +0 -0
  284. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/pypi/pypi_environment.py +0 -0
  285. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/pypi/utils.py +0 -0
  286. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/resources_decorator.py +0 -0
  287. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/retry_decorator.py +0 -0
  288. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/secrets/__init__.py +0 -0
  289. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/secrets/inline_secrets_provider.py +0 -0
  290. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/secrets/secrets_decorator.py +0 -0
  291. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/storage_executor.py +0 -0
  292. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/tag_cli.py +0 -0
  293. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/test_unbounded_foreach_decorator.py +0 -0
  294. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/plugins/timeout_decorator.py +0 -0
  295. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/procpoll.py +0 -0
  296. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/py.typed +0 -0
  297. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/pylint_wrapper.py +0 -0
  298. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/runner/__init__.py +0 -0
  299. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/runner/click_api.py +0 -0
  300. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/runner/metaflow_runner.py +0 -0
  301. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/runner/nbrun.py +0 -0
  302. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/runner/subprocess_manager.py +0 -0
  303. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/runtime.py +0 -0
  304. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/sidecar/__init__.py +0 -0
  305. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/sidecar/sidecar.py +0 -0
  306. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/sidecar/sidecar_messages.py +0 -0
  307. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/sidecar/sidecar_subprocess.py +0 -0
  308. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/sidecar/sidecar_worker.py +0 -0
  309. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/tagging_util.py +0 -0
  310. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/task.py +0 -0
  311. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/tracing/__init__.py +0 -0
  312. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/tracing/propagator.py +0 -0
  313. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/tracing/span_exporter.py +0 -0
  314. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/tracing/tracing_modules.py +0 -0
  315. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/tuple_util.py +0 -0
  316. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/tutorials/00-helloworld/README.md +0 -0
  317. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/tutorials/00-helloworld/helloworld.py +0 -0
  318. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/tutorials/01-playlist/README.md +0 -0
  319. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/tutorials/01-playlist/movies.csv +0 -0
  320. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/tutorials/01-playlist/playlist.ipynb +0 -0
  321. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/tutorials/01-playlist/playlist.py +0 -0
  322. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/tutorials/02-statistics/README.md +0 -0
  323. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/tutorials/02-statistics/movies.csv +0 -0
  324. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/tutorials/02-statistics/stats.ipynb +0 -0
  325. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/tutorials/02-statistics/stats.py +0 -0
  326. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/tutorials/03-playlist-redux/README.md +0 -0
  327. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/tutorials/03-playlist-redux/playlist.py +0 -0
  328. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/tutorials/04-playlist-plus/README.md +0 -0
  329. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/tutorials/04-playlist-plus/playlist.py +0 -0
  330. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/tutorials/05-hello-cloud/README.md +0 -0
  331. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/tutorials/05-hello-cloud/hello-cloud.ipynb +0 -0
  332. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/tutorials/05-hello-cloud/hello-cloud.py +0 -0
  333. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/tutorials/06-statistics-redux/README.md +0 -0
  334. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/tutorials/06-statistics-redux/stats.ipynb +0 -0
  335. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/tutorials/07-worldview/README.md +0 -0
  336. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/tutorials/07-worldview/worldview.ipynb +0 -0
  337. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/tutorials/08-autopilot/README.md +0 -0
  338. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/tutorials/08-autopilot/autopilot.ipynb +0 -0
  339. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/unbounded_foreach.py +0 -0
  340. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/util.py +0 -0
  341. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow/vendor.py +0 -0
  342. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow.egg-info/SOURCES.txt +0 -0
  343. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow.egg-info/dependency_links.txt +0 -0
  344. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow.egg-info/entry_points.txt +0 -0
  345. {metaflow-2.12.4 → metaflow-2.12.5}/metaflow.egg-info/top_level.txt +0 -0
  346. {metaflow-2.12.4 → metaflow-2.12.5}/setup.cfg +0 -0
  347. {metaflow-2.12.4 → metaflow-2.12.5}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: metaflow
3
- Version: 2.12.4
3
+ Version: 2.12.5
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.12.4; extra == "stubs"
29
+ Requires-Dist: metaflow-stubs==2.12.5; 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
 
@@ -946,7 +946,7 @@ def start(
946
946
  ctx.obj.environment = [
947
947
  e for e in ENVIRONMENTS + [MetaflowEnvironment] if e.TYPE == environment
948
948
  ][0](ctx.obj.flow)
949
- ctx.obj.environment.validate_environment(echo, datastore)
949
+ ctx.obj.environment.validate_environment(ctx.obj.logger, datastore)
950
950
 
951
951
  ctx.obj.event_logger = LOGGING_SIDECARS[event_logger](
952
952
  flow=ctx.obj.flow, env=ctx.obj.environment
@@ -388,6 +388,22 @@ def card_read_options_and_arguments(func):
388
388
  return wrapper
389
389
 
390
390
 
391
+ def _extract_reload_token(data, task, mf_card):
392
+ if "render_seq" not in data:
393
+ return "never"
394
+
395
+ if data["render_seq"] == "final":
396
+ # final data update should always trigger a card reload to show
397
+ # the final card, hence a different token for the final update
398
+ return "final"
399
+ elif mf_card.RELOAD_POLICY == mf_card.RELOAD_POLICY_ALWAYS:
400
+ return "render-seq-%s" % data["render_seq"]
401
+ elif mf_card.RELOAD_POLICY == mf_card.RELOAD_POLICY_NEVER:
402
+ return "never"
403
+ elif mf_card.RELOAD_POLICY == mf_card.RELOAD_POLICY_ONCHANGE:
404
+ return mf_card.reload_content_token(task, data)
405
+
406
+
391
407
  def update_card(mf_card, mode, task, data, timeout_value=None):
392
408
  """
393
409
  This method will be responsible for creating a card/data-update based on the `mode`.
@@ -432,31 +448,21 @@ def update_card(mf_card, mode, task, data, timeout_value=None):
432
448
  - `timeout_stack_trace` : stack trace of the function if it timed out.
433
449
  """
434
450
 
435
- def _reload_token():
436
- if "render_seq" not in data:
437
- return "never"
438
-
439
- if data["render_seq"] == "final":
440
- # final data update should always trigger a card reload to show
441
- # the final card, hence a different token for the final update
442
- return "final"
443
- elif mf_card.RELOAD_POLICY == mf_card.RELOAD_POLICY_ALWAYS:
444
- return "render-seq-%s" % data["render_seq"]
445
- elif mf_card.RELOAD_POLICY == mf_card.RELOAD_POLICY_NEVER:
446
- return "never"
447
- elif mf_card.RELOAD_POLICY == mf_card.RELOAD_POLICY_ONCHANGE:
448
- return mf_card.reload_content_token(task, data)
449
-
450
451
  def _add_token_html(html):
451
452
  if html is None:
452
453
  return None
453
- return html.replace(mf_card.RELOAD_POLICY_TOKEN, _reload_token())
454
+ return html.replace(
455
+ mf_card.RELOAD_POLICY_TOKEN,
456
+ _extract_reload_token(data=data, task=task, mf_card=mf_card),
457
+ )
454
458
 
455
459
  def _add_token_json(json_msg):
456
460
  if json_msg is None:
457
461
  return None
458
462
  return {
459
- "reload_token": _reload_token(),
463
+ "reload_token": _extract_reload_token(
464
+ data=data, task=task, mf_card=mf_card
465
+ ),
460
466
  "data": json_msg,
461
467
  "created_on": time.time(),
462
468
  }
@@ -740,8 +746,16 @@ def create(
740
746
  # 3. `refresh` is implemented but it raises an exception. (We do nothing. Don't store anything.)
741
747
  # 4. `refresh` is implemented but it times out. (We do nothing. Don't store anything.)
742
748
 
749
+ def _render_error_card(stack_trace):
750
+ _card = error_card()
751
+ token = _extract_reload_token(data, task, _card)
752
+ return _card.render(
753
+ task,
754
+ stack_trace=stack_trace,
755
+ ).replace(mf_card.RELOAD_POLICY_TOKEN, token)
756
+
743
757
  if error_stack_trace is not None and mode != "refresh":
744
- rendered_content = error_card().render(task, stack_trace=error_stack_trace)
758
+ rendered_content = _render_error_card(error_stack_trace)
745
759
  elif (
746
760
  rendered_info.is_implemented
747
761
  and rendered_info.timed_out
@@ -753,18 +767,15 @@ def create(
753
767
  "To increase the timeout duration for card rendering, please set the `timeout` parameter in the @card decorator. "
754
768
  "\nStack Trace : \n%s"
755
769
  ) % (timeout, rendered_info.timeout_stack_trace)
756
- rendered_content = error_card().render(
757
- task,
758
- stack_trace=timeout_stack_trace,
759
- )
770
+ rendered_content = _render_error_card(timeout_stack_trace)
760
771
  elif (
761
772
  rendered_info.is_implemented
762
773
  and rendered_info.data is None
763
774
  and render_error_card
764
775
  and mode != "refresh"
765
776
  ):
766
- rendered_content = error_card().render(
767
- task, stack_trace="No information rendered from card of type %s" % type
777
+ rendered_content = _render_error_card(
778
+ "No information rendered from card of type %s" % type
768
779
  )
769
780
  elif (
770
781
  not rendered_info.is_implemented
@@ -775,7 +786,7 @@ def create(
775
786
  "Card of type %s is a runtime time card with no `render_runtime` implemented. "
776
787
  "Please implement `render_runtime` method to allow rendering this card at runtime."
777
788
  ) % type
778
- rendered_content = error_card().render(task, stack_trace=message)
789
+ rendered_content = _render_error_card(message)
779
790
 
780
791
  # todo : should we save native type for error card or error type ?
781
792
  if type is not None and re.match(CARD_ID_PATTERN, type) is not None:
@@ -542,11 +542,24 @@ class ErrorCard(MetaflowCard):
542
542
 
543
543
  type = "error"
544
544
 
545
+ RELOAD_POLICY = MetaflowCard.RELOAD_POLICY_ONCHANGE
546
+
545
547
  def __init__(self, options={}, components=[], graph=None):
546
548
  self._only_repr = True
547
549
  self._graph = None if graph is None else transform_flow_graph(graph)
548
550
  self._components = components
549
551
 
552
+ def reload_content_token(self, task, data):
553
+ """
554
+ The reload token will change when the component array has changed in the Metaflow card.
555
+ The change in the component array is signified by the change in the component_update_ts.
556
+ """
557
+ if task.finished:
558
+ return "final"
559
+ # `component_update_ts` will never be None. It is set to a default value when the `ComponentStore` is instantiated
560
+ # And it is updated when components added / removed / changed from the `ComponentStore`.
561
+ return "runtime-%s" % (str(data["component_update_ts"]))
562
+
550
563
  def render(self, task, stack_trace=None):
551
564
  RENDER_TEMPLATE = read_file(RENDER_TEMPLATE_PATH)
552
565
  JS_DATA = read_file(JS_PATH)
@@ -48,9 +48,9 @@ class CondaEnvironment(MetaflowEnvironment):
48
48
  # Apply conda decorator to manage the task execution lifecycle.
49
49
  return ("conda",) + super().decospecs()
50
50
 
51
- def validate_environment(self, echo, datastore_type):
51
+ def validate_environment(self, logger, datastore_type):
52
52
  self.datastore_type = datastore_type
53
- self.echo = echo
53
+ self.logger = logger
54
54
 
55
55
  # Avoiding circular imports.
56
56
  from metaflow.plugins import DATASTORES
@@ -165,7 +165,7 @@ class CondaEnvironment(MetaflowEnvironment):
165
165
  self.write_to_environment_manifest([id_, platform, type_], packages)
166
166
 
167
167
  # First resolve environments through Conda, before PyPI.
168
- echo("Bootstrapping virtual environment(s) ...")
168
+ self.logger("Bootstrapping virtual environment(s) ...")
169
169
  for solver in ["conda", "pypi"]:
170
170
  with ThreadPoolExecutor() as executor:
171
171
  results = list(
@@ -178,11 +178,9 @@ class CondaEnvironment(MetaflowEnvironment):
178
178
  )
179
179
  if self.datastore_type not in ["local"]:
180
180
  # Cache packages only when a remote datastore is in play.
181
- storage = self.datastore(
182
- _datastore_packageroot(self.datastore, self.echo)
183
- )
181
+ storage = self.datastore(_datastore_packageroot(self.datastore, echo))
184
182
  cache(storage, results, solver)
185
- echo("Virtual environment(s) bootstrapped!")
183
+ self.logger("Virtual environment(s) bootstrapped!")
186
184
 
187
185
  def executable(self, step_name, default=None):
188
186
  step = next(step for step in self.flow if step.name == step_name)
@@ -220,7 +218,7 @@ class CondaEnvironment(MetaflowEnvironment):
220
218
  disabled = decorator.attributes["disabled"]
221
219
  if not disabled or str(disabled).lower() == "false":
222
220
  environment[decorator.name] = {
223
- k: decorator.attributes[k]
221
+ k: copy.deepcopy(decorator.attributes[k])
224
222
  for k in decorator.attributes
225
223
  if k != "disabled"
226
224
  }
@@ -316,7 +314,7 @@ class CondaEnvironment(MetaflowEnvironment):
316
314
  **environment,
317
315
  **{
318
316
  "package_root": _datastore_packageroot(
319
- self.datastore, self.echo
317
+ self.datastore, self.logger
320
318
  )
321
319
  },
322
320
  }
@@ -0,0 +1 @@
1
+ metaflow_version = "2.12.5"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: metaflow
3
- Version: 2.12.4
3
+ Version: 2.12.5
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.12.4; extra == "stubs"
29
+ Requires-Dist: metaflow-stubs==2.12.5; 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.12.4
5
+ metaflow-stubs==2.12.5
@@ -1 +0,0 @@
1
- metaflow_version = "2.12.4"
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
File without changes