ob-metaflow-stubs 6.0.3.103rc3__py2.py3-none-any.whl → 6.0.3.105__py2.py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (140) hide show
  1. metaflow-stubs/__init__.pyi +836 -498
  2. metaflow-stubs/cards.pyi +211 -5
  3. metaflow-stubs/cli.pyi +23 -3
  4. metaflow-stubs/client/__init__.pyi +129 -4
  5. metaflow-stubs/client/core.pyi +227 -7
  6. metaflow-stubs/client/filecache.pyi +2 -2
  7. metaflow-stubs/clone_util.pyi +5 -2
  8. metaflow-stubs/events.pyi +21 -3
  9. metaflow-stubs/exception.pyi +2 -2
  10. metaflow-stubs/flowspec.pyi +71 -5
  11. metaflow-stubs/generated_for.txt +1 -1
  12. metaflow-stubs/includefile.pyi +157 -4
  13. metaflow-stubs/info_file.pyi +2 -2
  14. metaflow-stubs/metadata/metadata.pyi +8 -2
  15. metaflow-stubs/metadata/util.pyi +2 -2
  16. metaflow-stubs/metaflow_config.pyi +2 -2
  17. metaflow-stubs/metaflow_current.pyi +39 -36
  18. metaflow-stubs/mflog/mflog.pyi +2 -2
  19. metaflow-stubs/multicore_utils.pyi +2 -2
  20. metaflow-stubs/parameters.pyi +70 -4
  21. metaflow-stubs/plugins/__init__.pyi +13 -2
  22. metaflow-stubs/plugins/airflow/__init__.pyi +2 -2
  23. metaflow-stubs/plugins/airflow/airflow_utils.pyi +2 -2
  24. metaflow-stubs/plugins/airflow/exception.pyi +2 -2
  25. metaflow-stubs/plugins/airflow/sensors/__init__.pyi +80 -2
  26. metaflow-stubs/plugins/airflow/sensors/base_sensor.pyi +5 -2
  27. metaflow-stubs/plugins/airflow/sensors/external_task_sensor.pyi +45 -3
  28. metaflow-stubs/plugins/airflow/sensors/s3_sensor.pyi +45 -3
  29. metaflow-stubs/plugins/argo/__init__.pyi +2 -2
  30. metaflow-stubs/plugins/argo/argo_client.pyi +2 -2
  31. metaflow-stubs/plugins/argo/argo_events.pyi +16 -2
  32. metaflow-stubs/plugins/argo/argo_workflows.pyi +18 -5
  33. metaflow-stubs/plugins/argo/argo_workflows_cli.pyi +98 -7
  34. metaflow-stubs/plugins/argo/argo_workflows_decorator.pyi +33 -5
  35. metaflow-stubs/plugins/argo/argo_workflows_deployer.pyi +50 -5
  36. metaflow-stubs/plugins/aws/__init__.pyi +2 -2
  37. metaflow-stubs/plugins/aws/aws_client.pyi +2 -2
  38. metaflow-stubs/plugins/aws/aws_utils.pyi +2 -2
  39. metaflow-stubs/plugins/aws/batch/__init__.pyi +2 -2
  40. metaflow-stubs/plugins/aws/batch/batch.pyi +2 -2
  41. metaflow-stubs/plugins/aws/batch/batch_client.pyi +2 -2
  42. metaflow-stubs/plugins/aws/batch/batch_decorator.pyi +103 -3
  43. metaflow-stubs/plugins/aws/secrets_manager/__init__.pyi +2 -2
  44. metaflow-stubs/plugins/aws/secrets_manager/aws_secrets_manager_secrets_provider.pyi +15 -3
  45. metaflow-stubs/plugins/aws/step_functions/__init__.pyi +2 -2
  46. metaflow-stubs/plugins/aws/step_functions/event_bridge_client.pyi +2 -2
  47. metaflow-stubs/plugins/aws/step_functions/production_token.pyi +2 -2
  48. metaflow-stubs/plugins/aws/step_functions/schedule_decorator.pyi +21 -2
  49. metaflow-stubs/plugins/aws/step_functions/step_functions.pyi +2 -2
  50. metaflow-stubs/plugins/aws/step_functions/step_functions_client.pyi +2 -2
  51. metaflow-stubs/plugins/aws/step_functions/step_functions_deployer.pyi +49 -4
  52. metaflow-stubs/plugins/azure/__init__.pyi +2 -2
  53. metaflow-stubs/plugins/azure/azure_credential.pyi +2 -2
  54. metaflow-stubs/plugins/azure/azure_exceptions.pyi +2 -2
  55. metaflow-stubs/plugins/azure/azure_secret_manager_secrets_provider.pyi +21 -3
  56. metaflow-stubs/plugins/azure/azure_utils.pyi +2 -2
  57. metaflow-stubs/plugins/azure/blob_service_client_factory.pyi +2 -2
  58. metaflow-stubs/plugins/azure/includefile_support.pyi +2 -2
  59. metaflow-stubs/plugins/cards/__init__.pyi +2 -2
  60. metaflow-stubs/plugins/cards/card_cli.pyi +62 -4
  61. metaflow-stubs/plugins/cards/card_client.pyi +33 -2
  62. metaflow-stubs/plugins/cards/card_creator.pyi +5 -2
  63. metaflow-stubs/plugins/cards/card_datastore.pyi +8 -2
  64. metaflow-stubs/plugins/cards/card_decorator.pyi +52 -2
  65. metaflow-stubs/plugins/cards/card_modules/__init__.pyi +28 -2
  66. metaflow-stubs/plugins/cards/card_modules/basic.pyi +42 -3
  67. metaflow-stubs/plugins/cards/card_modules/card.pyi +28 -2
  68. metaflow-stubs/plugins/cards/card_modules/components.pyi +183 -3
  69. metaflow-stubs/plugins/cards/card_modules/convert_to_native_type.pyi +5 -2
  70. metaflow-stubs/plugins/cards/card_modules/renderer_tools.pyi +2 -2
  71. metaflow-stubs/plugins/cards/card_modules/test_cards.pyi +36 -3
  72. metaflow-stubs/plugins/cards/card_resolver.pyi +2 -2
  73. metaflow-stubs/plugins/cards/component_serializer.pyi +55 -2
  74. metaflow-stubs/plugins/cards/exception.pyi +8 -2
  75. metaflow-stubs/plugins/catch_decorator.pyi +20 -3
  76. metaflow-stubs/plugins/datatools/__init__.pyi +63 -3
  77. metaflow-stubs/plugins/datatools/local.pyi +16 -2
  78. metaflow-stubs/plugins/datatools/s3/__init__.pyi +72 -3
  79. metaflow-stubs/plugins/datatools/s3/s3.pyi +82 -5
  80. metaflow-stubs/plugins/datatools/s3/s3tail.pyi +2 -2
  81. metaflow-stubs/plugins/datatools/s3/s3util.pyi +2 -2
  82. metaflow-stubs/plugins/debug_logger.pyi +2 -2
  83. metaflow-stubs/plugins/debug_monitor.pyi +2 -2
  84. metaflow-stubs/plugins/environment_decorator.pyi +10 -2
  85. metaflow-stubs/plugins/events_decorator.pyi +106 -2
  86. metaflow-stubs/plugins/frameworks/__init__.pyi +2 -2
  87. metaflow-stubs/plugins/frameworks/pytorch.pyi +23 -2
  88. metaflow-stubs/plugins/gcp/__init__.pyi +2 -2
  89. metaflow-stubs/plugins/gcp/gcp_secret_manager_secrets_provider.pyi +15 -3
  90. metaflow-stubs/plugins/gcp/gs_exceptions.pyi +2 -2
  91. metaflow-stubs/plugins/gcp/gs_storage_client_factory.pyi +2 -2
  92. metaflow-stubs/plugins/gcp/gs_utils.pyi +2 -2
  93. metaflow-stubs/plugins/gcp/includefile_support.pyi +2 -2
  94. metaflow-stubs/plugins/kubernetes/__init__.pyi +2 -2
  95. metaflow-stubs/plugins/kubernetes/kube_utils.pyi +2 -2
  96. metaflow-stubs/plugins/kubernetes/kubernetes.pyi +12 -3
  97. metaflow-stubs/plugins/kubernetes/kubernetes_cli.pyi +65 -2
  98. metaflow-stubs/plugins/kubernetes/kubernetes_client.pyi +2 -2
  99. metaflow-stubs/plugins/kubernetes/kubernetes_decorator.pyi +100 -3
  100. metaflow-stubs/plugins/kubernetes/kubernetes_jobsets.pyi +5 -2
  101. metaflow-stubs/plugins/logs_cli.pyi +4 -4
  102. metaflow-stubs/plugins/package_cli.pyi +2 -2
  103. metaflow-stubs/plugins/parallel_decorator.pyi +29 -2
  104. metaflow-stubs/plugins/perimeters.pyi +2 -2
  105. metaflow-stubs/plugins/project_decorator.pyi +59 -2
  106. metaflow-stubs/plugins/pypi/__init__.pyi +2 -2
  107. metaflow-stubs/plugins/pypi/conda_decorator.pyi +45 -2
  108. metaflow-stubs/plugins/pypi/conda_environment.pyi +4 -4
  109. metaflow-stubs/plugins/pypi/pypi_decorator.pyi +33 -2
  110. metaflow-stubs/plugins/pypi/pypi_environment.pyi +3 -3
  111. metaflow-stubs/plugins/pypi/utils.pyi +2 -2
  112. metaflow-stubs/plugins/resources_decorator.pyi +33 -2
  113. metaflow-stubs/plugins/retry_decorator.pyi +21 -2
  114. metaflow-stubs/plugins/secrets/__init__.pyi +2 -2
  115. metaflow-stubs/plugins/secrets/inline_secrets_provider.pyi +2 -2
  116. metaflow-stubs/plugins/secrets/secrets_decorator.pyi +11 -2
  117. metaflow-stubs/plugins/storage_executor.pyi +6 -2
  118. metaflow-stubs/plugins/tag_cli.pyi +36 -5
  119. metaflow-stubs/plugins/test_unbounded_foreach_decorator.pyi +9 -2
  120. metaflow-stubs/plugins/timeout_decorator.pyi +23 -2
  121. metaflow-stubs/procpoll.pyi +2 -2
  122. metaflow-stubs/profilers/__init__.pyi +2 -2
  123. metaflow-stubs/pylint_wrapper.pyi +2 -2
  124. metaflow-stubs/runner/__init__.pyi +2 -2
  125. metaflow-stubs/runner/deployer.pyi +71 -132
  126. metaflow-stubs/runner/metaflow_runner.pyi +117 -9
  127. metaflow-stubs/runner/nbdeploy.pyi +66 -2
  128. metaflow-stubs/runner/nbrun.pyi +79 -2
  129. metaflow-stubs/runner/subprocess_manager.pyi +16 -4
  130. metaflow-stubs/runner/utils.pyi +32 -2
  131. metaflow-stubs/system/__init__.pyi +3 -3
  132. metaflow-stubs/system/system_logger.pyi +2 -2
  133. metaflow-stubs/system/system_monitor.pyi +3 -3
  134. metaflow-stubs/tagging_util.pyi +2 -2
  135. metaflow-stubs/tuple_util.pyi +2 -2
  136. {ob_metaflow_stubs-6.0.3.103rc3.dist-info → ob_metaflow_stubs-6.0.3.105.dist-info}/METADATA +1 -1
  137. ob_metaflow_stubs-6.0.3.105.dist-info/RECORD +140 -0
  138. ob_metaflow_stubs-6.0.3.103rc3.dist-info/RECORD +0 -140
  139. {ob_metaflow_stubs-6.0.3.103rc3.dist-info → ob_metaflow_stubs-6.0.3.105.dist-info}/WHEEL +0 -0
  140. {ob_metaflow_stubs-6.0.3.103rc3.dist-info → ob_metaflow_stubs-6.0.3.105.dist-info}/top_level.txt +0 -0
@@ -1,7 +1,7 @@
1
1
  ##################################################################################
2
2
  # Auto-generated Metaflow stub file #
3
- # MF version: 2.12.22.1+obcheckpoint(0.0.11);ob(v1) #
4
- # Generated on 2024-09-20T21:42:44.567091 #
3
+ # MF version: 2.12.24.1+obcheckpoint(0.0.11);ob(v1) #
4
+ # Generated on 2024-10-04T10:13:10.658445 #
5
5
  ##################################################################################
6
6
 
7
7
  from __future__ import annotations
@@ -9,8 +9,8 @@ from __future__ import annotations
9
9
  import typing
10
10
  if typing.TYPE_CHECKING:
11
11
  import metaflow.plugins.cards.card_modules.basic
12
- import typing
13
12
  import metaflow.plugins.cards.card_modules.components
13
+ import typing
14
14
  import metaflow.plugins.cards.card_modules.card
15
15
 
16
16
  class LogComponent(metaflow.plugins.cards.card_modules.basic.DefaultComponent, metaclass=type):
@@ -126,6 +126,26 @@ class StubComponent(UserComponent, metaclass=type):
126
126
  ...
127
127
 
128
128
  class Artifact(UserComponent, metaclass=type):
129
+ """
130
+ A pretty-printed version of any Python object.
131
+
132
+ Large objects are truncated using Python's built-in [`reprlib`](https://docs.python.org/3/library/reprlib.html).
133
+
134
+ Example:
135
+ ```
136
+ from datetime import datetime
137
+ current.card.append(Artifact({'now': datetime.utcnow()}))
138
+ ```
139
+
140
+ Parameters
141
+ ----------
142
+ artifact : object
143
+ Any Python object.
144
+ name : str, optional
145
+ Optional label for the object.
146
+ compressed : bool, default: True
147
+ Use a truncated representation.
148
+ """
129
149
  def update(self, artifact):
130
150
  ...
131
151
  def __init__(self, artifact: typing.Any, name: typing.Optional[str] = None, compressed: bool = True):
@@ -135,6 +155,45 @@ class Artifact(UserComponent, metaclass=type):
135
155
  ...
136
156
 
137
157
  class Table(UserComponent, metaclass=type):
158
+ """
159
+ A table.
160
+
161
+ The contents of the table can be text or numerical data, a Pandas dataframe,
162
+ or other card components: `Artifact`, `Image`, `Markdown` objects.
163
+
164
+ Example: Text and artifacts
165
+ ```
166
+ from metaflow.cards import Table, Artifact
167
+ current.card.append(
168
+ Table([
169
+ ['first row', Artifact({'a': 2})],
170
+ ['second row', Artifact(3)]
171
+ ])
172
+ )
173
+ ```
174
+
175
+ Example: Table from a Pandas dataframe
176
+ ```
177
+ from metaflow.cards import Table
178
+ import pandas as pd
179
+ import numpy as np
180
+ current.card.append(
181
+ Table.from_dataframe(
182
+ pd.DataFrame(
183
+ np.random.randint(0, 100, size=(15, 4)),
184
+ columns=list("ABCD")
185
+ )
186
+ )
187
+ )
188
+ ```
189
+
190
+ Parameters
191
+ ----------
192
+ data : List[List[str or MetaflowCardComponent]], optional
193
+ List (rows) of lists (columns). Each item can be a string or a `MetaflowCardComponent`.
194
+ headers : List[str], optional
195
+ Optional header row for the table.
196
+ """
138
197
  def update(self, *args, **kwargs):
139
198
  ...
140
199
  def __init__(self, data: typing.Optional[typing.List[typing.List[typing.Union[str, metaflow.plugins.cards.card_modules.card.MetaflowCardComponent]]]] = None, headers: typing.Optional[typing.List[str]] = None, disable_updates: bool = False):
@@ -157,6 +216,55 @@ class Table(UserComponent, metaclass=type):
157
216
  ...
158
217
 
159
218
  class Image(UserComponent, metaclass=type):
219
+ """
220
+ An image.
221
+
222
+ `Images can be created directly from PNG/JPG/GIF `bytes`, `PIL.Image`s,
223
+ or Matplotlib figures. Note that the image data is embedded in the card,
224
+ so no external files are required to show the image.
225
+
226
+ Example: Create an `Image` from bytes:
227
+ ```
228
+ current.card.append(
229
+ Image(
230
+ requests.get("https://www.gif-vif.com/hacker-cat.gif").content,
231
+ "Image From Bytes"
232
+ )
233
+ )
234
+ ```
235
+
236
+ Example: Create an `Image` from a Matplotlib figure
237
+ ```
238
+ import pandas as pd
239
+ import numpy as np
240
+ current.card.append(
241
+ Image.from_matplotlib(
242
+ pandas.DataFrame(
243
+ np.random.randint(0, 100, size=(15, 4)),
244
+ columns=list("ABCD"),
245
+ ).plot()
246
+ )
247
+ )
248
+ ```
249
+
250
+ Example: Create an `Image` from a [PIL](https://pillow.readthedocs.io/) Image
251
+ ```
252
+ from PIL import Image as PILImage
253
+ current.card.append(
254
+ Image.from_pil_image(
255
+ PILImage.fromarray(np.random.randn(1024, 768), "RGB"),
256
+ "From PIL Image"
257
+ )
258
+ )
259
+ ```
260
+
261
+ Parameters
262
+ ----------
263
+ src : bytes
264
+ The image data in `bytes`.
265
+ label : str
266
+ Optional label for the image.
267
+ """
160
268
  @staticmethod
161
269
  def render_fail_headline(msg):
162
270
  ...
@@ -205,6 +313,30 @@ class Image(UserComponent, metaclass=type):
205
313
  ...
206
314
 
207
315
  class Error(UserComponent, metaclass=type):
316
+ """
317
+ This class helps visualize Error's on the `MetaflowCard`. It can help catch and print stack traces to errors that happen in `@step` code.
318
+
319
+ ### Parameters
320
+ - `exception` (Exception) : The `Exception` to visualize. This value will be `repr`'d before passed down to `MetaflowCard`
321
+ - `title` (str) : The title that will appear over the visualized `Exception`.
322
+
323
+ ### Usage
324
+ ```python
325
+ @card
326
+ @step
327
+ def my_step(self):
328
+ from metaflow.cards import Error
329
+ from metaflow import current
330
+ try:
331
+ ...
332
+ ...
333
+ except Exception as e:
334
+ current.card.append(
335
+ Error(e,"Something misbehaved")
336
+ )
337
+ ...
338
+ ```
339
+ """
208
340
  def __init__(self, exception, title = None):
209
341
  ...
210
342
  def render(self, *args, **kwargs):
@@ -212,6 +344,21 @@ class Error(UserComponent, metaclass=type):
212
344
  ...
213
345
 
214
346
  class Markdown(UserComponent, metaclass=type):
347
+ """
348
+ A block of text formatted in Markdown.
349
+
350
+ Example:
351
+ ```
352
+ current.card.append(
353
+ Markdown("# This is a header appended from `@step` code")
354
+ )
355
+ ```
356
+
357
+ Parameters
358
+ ----------
359
+ text : str
360
+ Text formatted in Markdown.
361
+ """
215
362
  def update(self, text = None):
216
363
  ...
217
364
  def __init__(self, text = None):
@@ -221,6 +368,39 @@ class Markdown(UserComponent, metaclass=type):
221
368
  ...
222
369
 
223
370
  class ProgressBar(UserComponent, metaclass=type):
371
+ """
372
+ A Progress bar for tracking progress of any task.
373
+
374
+ Example:
375
+ ```
376
+ progress_bar = ProgressBar(
377
+ max=100,
378
+ label="Progress Bar",
379
+ value=0,
380
+ unit="%",
381
+ metadata="0.1 items/s"
382
+ )
383
+ current.card.append(
384
+ progress_bar
385
+ )
386
+ for i in range(100):
387
+ progress_bar.update(i, metadata="%s items/s" % i)
388
+
389
+ ```
390
+
391
+ Parameters
392
+ ----------
393
+ max : int
394
+ The maximum value of the progress bar.
395
+ label : str, optional
396
+ Optional label for the progress bar.
397
+ value : int, optional
398
+ Optional initial value of the progress bar.
399
+ unit : str, optional
400
+ Optional unit for the progress bar.
401
+ metadata : str, optional
402
+ Optional additional information to show on the progress bar.
403
+ """
224
404
  def __init__(self, max: int = 100, label: str = None, value: int = 0, unit: str = None, metadata: str = None):
225
405
  ...
226
406
  def update(self, new_value: int, metadata: str = None):
@@ -1,13 +1,16 @@
1
1
  ##################################################################################
2
2
  # Auto-generated Metaflow stub file #
3
- # MF version: 2.12.22.1+obcheckpoint(0.0.11);ob(v1) #
4
- # Generated on 2024-09-20T21:42:44.589270 #
3
+ # MF version: 2.12.24.1+obcheckpoint(0.0.11);ob(v1) #
4
+ # Generated on 2024-10-04T10:13:10.681152 #
5
5
  ##################################################################################
6
6
 
7
7
  from __future__ import annotations
8
8
 
9
9
 
10
10
  class TypeResolvedObject(tuple, metaclass=type):
11
+ """
12
+ TypeResolvedObject(data, is_image, is_table)
13
+ """
11
14
  @staticmethod
12
15
  def __new__(_cls, data, is_image, is_table):
13
16
  """
@@ -1,7 +1,7 @@
1
1
  ##################################################################################
2
2
  # Auto-generated Metaflow stub file #
3
- # MF version: 2.12.22.1+obcheckpoint(0.0.11);ob(v1) #
4
- # Generated on 2024-09-20T21:42:44.589483 #
3
+ # MF version: 2.12.24.1+obcheckpoint(0.0.11);ob(v1) #
4
+ # Generated on 2024-10-04T10:13:10.681327 #
5
5
  ##################################################################################
6
6
 
7
7
  from __future__ import annotations
@@ -1,17 +1,43 @@
1
1
  ##################################################################################
2
2
  # Auto-generated Metaflow stub file #
3
- # MF version: 2.12.22.1+obcheckpoint(0.0.11);ob(v1) #
4
- # Generated on 2024-09-20T21:42:44.582909 #
3
+ # MF version: 2.12.24.1+obcheckpoint(0.0.11);ob(v1) #
4
+ # Generated on 2024-10-04T10:13:10.674794 #
5
5
  ##################################################################################
6
6
 
7
7
  from __future__ import annotations
8
8
 
9
9
  import typing
10
10
  if typing.TYPE_CHECKING:
11
- import metaflow.plugins.cards.card_modules.card
12
11
  import metaflow
12
+ import metaflow.plugins.cards.card_modules.card
13
13
 
14
14
  class MetaflowCard(object, metaclass=type):
15
+ """
16
+ Metaflow cards derive from this base class.
17
+
18
+ Subclasses of this class are called *card types*. The desired card
19
+ type `T` is defined in the `@card` decorator as `@card(type=T)`.
20
+
21
+ After a task with `@card(type=T, options=S)` finishes executing, Metaflow instantiates
22
+ a subclass `C` of `MetaflowCard` that has its `type` attribute set to `T`, i.e. `C.type=T`.
23
+ The constructor is given the options dictionary `S` that contains arbitrary
24
+ JSON-encodable data that is passed to the instance, parametrizing the card. The subclass
25
+ may override the constructor to capture and process the options.
26
+
27
+ The subclass needs to implement a `render(task)` method that produces the card
28
+ contents in HTML, given the finished task that is represented by a `Task` object.
29
+
30
+ Attributes
31
+ ----------
32
+ type : str
33
+ Card type string. Note that this should be a globally unique name, similar to a
34
+ Python package name, to avoid name clashes between different custom cards.
35
+
36
+ Parameters
37
+ ----------
38
+ options : Dict
39
+ JSON-encodable dictionary containing user-definable options for the class.
40
+ """
15
41
  def __init__(self, options = {}, components = [], graph = None):
16
42
  ...
17
43
  def render(self, task: "metaflow.Task") -> str:
@@ -132,6 +158,9 @@ class TestJSONComponent(metaflow.plugins.cards.card_modules.card.MetaflowCardCom
132
158
  ...
133
159
 
134
160
  class TestRefreshCard(metaflow.plugins.cards.card_modules.card.MetaflowCard, metaclass=type):
161
+ """
162
+ This card takes no components and helps test the `current.card.refresh(data)` interface.
163
+ """
135
164
  def render(self, task) -> str:
136
165
  ...
137
166
  def render_runtime(self, task, data):
@@ -141,6 +170,10 @@ class TestRefreshCard(metaflow.plugins.cards.card_modules.card.MetaflowCard, met
141
170
  ...
142
171
 
143
172
  class TestRefreshComponentCard(metaflow.plugins.cards.card_modules.card.MetaflowCard, metaclass=type):
173
+ """
174
+ This card takes components and helps test the `current.card.components["A"].update()`
175
+ interface
176
+ """
144
177
  def __init__(self, options = {}, components = [], graph = None):
145
178
  ...
146
179
  def render(self, task) -> str:
@@ -1,7 +1,7 @@
1
1
  ##################################################################################
2
2
  # Auto-generated Metaflow stub file #
3
- # MF version: 2.12.22.1+obcheckpoint(0.0.11);ob(v1) #
4
- # Generated on 2024-09-20T21:42:44.587616 #
3
+ # MF version: 2.12.24.1+obcheckpoint(0.0.11);ob(v1) #
4
+ # Generated on 2024-10-04T10:13:10.679452 #
5
5
  ##################################################################################
6
6
 
7
7
  from __future__ import annotations
@@ -1,7 +1,7 @@
1
1
  ##################################################################################
2
2
  # Auto-generated Metaflow stub file #
3
- # MF version: 2.12.22.1+obcheckpoint(0.0.11);ob(v1) #
4
- # Generated on 2024-09-20T21:42:44.605551 #
3
+ # MF version: 2.12.24.1+obcheckpoint(0.0.11);ob(v1) #
4
+ # Generated on 2024-10-04T10:13:10.685946 #
5
5
  ##################################################################################
6
6
 
7
7
  from __future__ import annotations
@@ -83,6 +83,13 @@ class WarningComponent(metaflow.plugins.cards.card_modules.basic.ErrorComponent,
83
83
  ...
84
84
 
85
85
  class ComponentStore(object, metaclass=type):
86
+ """
87
+ The `ComponentStore` object helps store the components for a single card in memory.
88
+ This class has combination of a array/dictionary like interfaces to access/change the stored components.
89
+
90
+ It exposes the `append` /`extend` methods (like an array) to add components.
91
+ It also exposes the `__getitem__`/`__setitem__` methods (like a dictionary) to access the components by their Ids.
92
+ """
86
93
  def __init__(self, logger, card_type = None, components = None, user_set_id = None):
87
94
  ...
88
95
  @property
@@ -118,6 +125,33 @@ class ComponentStore(object, metaclass=type):
118
125
  ...
119
126
 
120
127
  class CardComponentManager(object, metaclass=type):
128
+ """
129
+ This class manages the card's state for a single card.
130
+ - It uses the `ComponentStore` to manage the storage of the components
131
+ - It exposes methods to add, remove and access the components.
132
+ - It exposes a `refresh` method that will allow refreshing a card with new data
133
+ for realtime(ish) updates.
134
+ - The `CardComponentCollector` exposes convenience methods similar to this class for a default
135
+ editable card. These methods include :
136
+ - `append`
137
+ - `extend`
138
+ - `clear`
139
+ - `refresh`
140
+ - `components`
141
+ - `__iter__`
142
+
143
+ ## Usage Patterns :
144
+
145
+ ```python
146
+ current.card["mycardid"].append(component, id="comp123")
147
+ current.card["mycardid"].extend([component])
148
+ current.card["mycardid"].refresh(data) # refreshes the card with new data
149
+ current.card["mycardid"].components["comp123"] # returns the component with id "comp123"
150
+ current.card["mycardid"].components["comp123"].update()
151
+ current.card["mycardid"].components.clear() # Wipe all the components
152
+ del current.card["mycardid"].components["mycomponentid"] # Delete a component
153
+ ```
154
+ """
121
155
  def __init__(self, card_uuid, decorator_attributes, card_creator, components = None, logger = None, no_warnings = False, user_set_card_id = None, runtime_card = False, card_options = None, refresh_interval = 5):
122
156
  ...
123
157
  def append(self, component, id = None):
@@ -136,6 +170,25 @@ class CardComponentManager(object, metaclass=type):
136
170
  ...
137
171
 
138
172
  class CardComponentCollector(object, metaclass=type):
173
+ """
174
+ This class helps collect `MetaflowCardComponent`s during runtime execution
175
+
176
+ ### Usage with `current`
177
+ `current.card` is of type `CardComponentCollector`
178
+
179
+ ### Main Usage TLDR
180
+ - [x] `current.card.append` customizes the default editable card.
181
+ - [x] Only one card can be default editable in a step.
182
+ - [x] The card class must have `ALLOW_USER_COMPONENTS=True` to be considered default editable.
183
+ - [x] Classes with `ALLOW_USER_COMPONENTS=False` are never default editable.
184
+ - [x] The user can specify an `id` argument to a card, in which case the card is editable through `current.card[id].append`.
185
+ - [x] A card with an id can be also default editable, if there are no other cards that are eligible to be default editable.
186
+ - [x] If multiple default-editable cards exist but only one card doesn't have an id, the card without an id is considered to be default editable.
187
+ - [x] If we can't resolve a single default editable card through the above rules, `current.card`.append calls show a warning but the call doesn't fail.
188
+ - [x] A card that is not default editable can be still edited through:
189
+ - [x] its `current.card['myid']`
190
+ - [x] by looking it up by its type, e.g. `current.card.get(type='pytorch')`.
191
+ """
139
192
  def __init__(self, logger = None, card_creator = None):
140
193
  ...
141
194
  @staticmethod
@@ -1,7 +1,7 @@
1
1
  ##################################################################################
2
2
  # Auto-generated Metaflow stub file #
3
- # MF version: 2.12.22.1+obcheckpoint(0.0.11);ob(v1) #
4
- # Generated on 2024-09-20T21:42:44.588921 #
3
+ # MF version: 2.12.24.1+obcheckpoint(0.0.11);ob(v1) #
4
+ # Generated on 2024-10-04T10:13:10.680776 #
5
5
  ##################################################################################
6
6
 
7
7
  from __future__ import annotations
@@ -20,6 +20,9 @@ class MetaflowException(Exception, metaclass=type):
20
20
  TYPE_CHECK_REGEX: str
21
21
 
22
22
  class CardClassFoundException(metaflow.exception.MetaflowException, metaclass=type):
23
+ """
24
+ This exception is raised with MetaflowCard class is not present for a particular card type.
25
+ """
23
26
  def __init__(self, card_name):
24
27
  ...
25
28
  ...
@@ -30,6 +33,9 @@ class TypeRequiredException(metaflow.exception.MetaflowException, metaclass=type
30
33
  ...
31
34
 
32
35
  class CardNotPresentException(metaflow.exception.MetaflowException, metaclass=type):
36
+ """
37
+ This exception is raised with a card is not present in the datastore.
38
+ """
33
39
  def __init__(self, pathspec, card_type = None, card_hash = None, card_id = None):
34
40
  ...
35
41
  ...
@@ -1,15 +1,15 @@
1
1
  ##################################################################################
2
2
  # Auto-generated Metaflow stub file #
3
- # MF version: 2.12.22.1+obcheckpoint(0.0.11);ob(v1) #
4
- # Generated on 2024-09-20T21:42:44.576386 #
3
+ # MF version: 2.12.24.1+obcheckpoint(0.0.11);ob(v1) #
4
+ # Generated on 2024-10-04T10:13:10.669411 #
5
5
  ##################################################################################
6
6
 
7
7
  from __future__ import annotations
8
8
 
9
9
  import typing
10
10
  if typing.TYPE_CHECKING:
11
- import metaflow.metaflow_current
12
11
  import metaflow.exception
12
+ import metaflow.metaflow_current
13
13
  import metaflow.decorators
14
14
 
15
15
  class MetaflowException(Exception, metaclass=type):
@@ -44,6 +44,23 @@ class FailureHandledByCatch(metaflow.exception.MetaflowException, metaclass=type
44
44
  ...
45
45
 
46
46
  class CatchDecorator(metaflow.decorators.StepDecorator, metaclass=type):
47
+ """
48
+ Specifies that the step will success under all circumstances.
49
+
50
+ The decorator will create an optional artifact, specified by `var`, which
51
+ contains the exception raised. You can use it to detect the presence
52
+ of errors, indicating that all happy-path artifacts produced by the step
53
+ are missing.
54
+
55
+ Parameters
56
+ ----------
57
+ var : str, optional, default None
58
+ Name of the artifact in which to store the caught exception.
59
+ If not specified, the exception is not stored.
60
+ print_exception : bool, default True
61
+ Determines whether or not the exception is printed to
62
+ stdout when caught.
63
+ """
47
64
  def step_init(self, flow, graph, step, decos, environment, flow_datastore, logger):
48
65
  ...
49
66
  def task_exception(self, exception, step, flow, graph, retry_count, max_user_code_retries):
@@ -1,7 +1,7 @@
1
1
  ##################################################################################
2
2
  # Auto-generated Metaflow stub file #
3
- # MF version: 2.12.22.1+obcheckpoint(0.0.11);ob(v1) #
4
- # Generated on 2024-09-20T21:42:44.578189 #
3
+ # MF version: 2.12.24.1+obcheckpoint(0.0.11);ob(v1) #
4
+ # Generated on 2024-10-04T10:13:10.670609 #
5
5
  ##################################################################################
6
6
 
7
7
  from __future__ import annotations
@@ -9,8 +9,8 @@ from __future__ import annotations
9
9
  import typing
10
10
  if typing.TYPE_CHECKING:
11
11
  import io
12
- import metaflow.exception
13
12
  import metaflow.plugins.datatools.s3.s3
13
+ import metaflow.exception
14
14
 
15
15
  def read_in_chunks(dst, src, src_sz, max_chunk_size):
16
16
  ...
@@ -22,6 +22,13 @@ class MetaflowLocalURLException(metaflow.exception.MetaflowException, metaclass=
22
22
  ...
23
23
 
24
24
  class Local(object, metaclass=type):
25
+ """
26
+ This class allows you to access the local filesystem in a way similar to the S3 datatools
27
+ client. It is a stripped down version for now and only implements the functionality needed
28
+ for this use case.
29
+
30
+ In the future, we may want to allow it to be used in a way similar to the S3() client.
31
+ """
25
32
  @classmethod
26
33
  def get_root_from_config(cls, echo, create_on_absent = True):
27
34
  ...
@@ -47,6 +54,59 @@ class MetaflowS3Exception(metaflow.exception.MetaflowException, metaclass=type):
47
54
  ...
48
55
 
49
56
  class S3(object, metaclass=type):
57
+ """
58
+ The Metaflow S3 client.
59
+
60
+ This object manages the connection to S3 and a temporary diretory that is used
61
+ to download objects. Note that in most cases when the data fits in memory, no local
62
+ disk IO is needed as operations are cached by the operating system, which makes
63
+ operations fast as long as there is enough memory available.
64
+
65
+ The easiest way is to use this object as a context manager:
66
+ ```
67
+ with S3() as s3:
68
+ data = [obj.blob for obj in s3.get_many(urls)]
69
+ print(data)
70
+ ```
71
+ The context manager takes care of creating and deleting a temporary directory
72
+ automatically. Without a context manager, you must call `.close()` to delete
73
+ the directory explicitly:
74
+ ```
75
+ s3 = S3()
76
+ data = [obj.blob for obj in s3.get_many(urls)]
77
+ s3.close()
78
+ ```
79
+ You can customize the location of the temporary directory with `tmproot`. It
80
+ defaults to the current working directory.
81
+
82
+ To make it easier to deal with object locations, the client can be initialized
83
+ with an S3 path prefix. There are three ways to handle locations:
84
+
85
+ 1. Use a `metaflow.Run` object or `self`, e.g. `S3(run=self)` which
86
+ initializes the prefix with the global `DATATOOLS_S3ROOT` path, combined
87
+ with the current run ID. This mode makes it easy to version data based
88
+ on the run ID consistently. You can use the `bucket` and `prefix` to
89
+ override parts of `DATATOOLS_S3ROOT`.
90
+
91
+ 2. Specify an S3 prefix explicitly with `s3root`,
92
+ e.g. `S3(s3root='s3://mybucket/some/path')`.
93
+
94
+ 3. Specify nothing, i.e. `S3()`, in which case all operations require
95
+ a full S3 url prefixed with `s3://`.
96
+
97
+ Parameters
98
+ ----------
99
+ tmproot : str, default: '.'
100
+ Where to store the temporary directory.
101
+ bucket : str, optional
102
+ Override the bucket from `DATATOOLS_S3ROOT` when `run` is specified.
103
+ prefix : str, optional
104
+ Override the path from `DATATOOLS_S3ROOT` when `run` is specified.
105
+ run : FlowSpec or Run, optional
106
+ Derive path prefix from the current or a past run ID, e.g. S3(run=self).
107
+ s3root : str, optional
108
+ If `run` is not specified, use this as the S3 prefix.
109
+ """
50
110
  @classmethod
51
111
  def get_root_from_config(cls, echo, create_on_absent = True):
52
112
  ...
@@ -1,7 +1,7 @@
1
1
  ##################################################################################
2
2
  # Auto-generated Metaflow stub file #
3
- # MF version: 2.12.22.1+obcheckpoint(0.0.11);ob(v1) #
4
- # Generated on 2024-09-20T21:42:44.571015 #
3
+ # MF version: 2.12.24.1+obcheckpoint(0.0.11);ob(v1) #
4
+ # Generated on 2024-10-04T10:13:10.662566 #
5
5
  ##################################################################################
6
6
 
7
7
  from __future__ import annotations
@@ -28,6 +28,13 @@ class MetaflowLocalNotFound(metaflow.exception.MetaflowException, metaclass=type
28
28
  ...
29
29
 
30
30
  class LocalObject(object, metaclass=type):
31
+ """
32
+ This object represents a local object. It is a very thin wrapper
33
+ to allow it to be used in the same way as the S3Object (only as needed
34
+ in the IncludeFile use case)
35
+
36
+ Get or list calls return one or more of LocalObjects.
37
+ """
31
38
  def __init__(self, url, path):
32
39
  ...
33
40
  @property
@@ -59,6 +66,13 @@ class LocalObject(object, metaclass=type):
59
66
  ...
60
67
 
61
68
  class Local(object, metaclass=type):
69
+ """
70
+ This class allows you to access the local filesystem in a way similar to the S3 datatools
71
+ client. It is a stripped down version for now and only implements the functionality needed
72
+ for this use case.
73
+
74
+ In the future, we may want to allow it to be used in a way similar to the S3() client.
75
+ """
62
76
  @classmethod
63
77
  def get_root_from_config(cls, echo, create_on_absent = True):
64
78
  ...