ob-metaflow 2.15.11.2__py2.py3-none-any.whl → 2.15.14.1__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

@@ -1191,22 +1191,21 @@ class StubGenerator:
1191
1191
  + "}"
1192
1192
  )
1193
1193
  elif isinstance(default_value, str):
1194
- return "'" + default_value + "'"
1194
+ return repr(default_value) # Use repr() for proper escaping
1195
+ elif isinstance(default_value, (int, float, bool)):
1196
+ return str(default_value)
1197
+ elif default_value is None:
1198
+ return "None"
1195
1199
  else:
1196
- return self._get_element_name_with_module(default_value)
1197
-
1198
- elif str(default_value).startswith("<"):
1200
+ return "..." # For other built-in types not explicitly handled
1201
+ elif inspect.isclass(default_value) or inspect.isfunction(default_value):
1199
1202
  if default_value.__module__ == "builtins":
1200
1203
  return default_value.__name__
1201
1204
  else:
1202
1205
  self._typing_imports.add(default_value.__module__)
1203
1206
  return ".".join([default_value.__module__, default_value.__name__])
1204
1207
  else:
1205
- return (
1206
- str(default_value)
1207
- if not isinstance(default_value, str)
1208
- else '"' + default_value + '"'
1209
- )
1208
+ return "..." # For complex objects like class instances
1210
1209
 
1211
1210
  buff = StringIO()
1212
1211
  if sign is None and func is None:
@@ -549,10 +549,12 @@ def get_pinned_conda_libs(python_version, datastore_type):
549
549
  pins["azure-identity"] = ">=1.10.0"
550
550
  pins["azure-storage-blob"] = ">=12.12.0"
551
551
  pins["azure-keyvault-secrets"] = ">=4.7.0"
552
+ pins["simple-azure-blob-downloader"] = ">=0.1.0"
552
553
  elif datastore_type == "gs":
553
554
  pins["google-cloud-storage"] = ">=2.5.0"
554
555
  pins["google-auth"] = ">=2.11.0"
555
556
  pins["google-cloud-secret-manager"] = ">=2.10.0"
557
+ pins["simple-gcp-object-downloader"] = ">=0.1.0"
556
558
  elif datastore_type == "local":
557
559
  pass
558
560
  else:
@@ -277,7 +277,7 @@ class ArgoWorkflowsDeployedFlow(DeployedFlow):
277
277
 
278
278
  flow_name = metadata_annotations.get("metaflow/flow_name", "")
279
279
  username = metadata_annotations.get("metaflow/owner", "")
280
- parameters = json.loads(metadata_annotations.get("metaflow/parameters", {}))
280
+ parameters = json.loads(metadata_annotations.get("metaflow/parameters", "{}"))
281
281
 
282
282
  # these two only exist if @project decorator is used..
283
283
  branch_name = metadata_annotations.get("metaflow/branch_name", None)
@@ -353,7 +353,9 @@ class AzureStorage(DataStoreStorage):
353
353
  byte_stream, metadata = byte_stream
354
354
  tmp_filename = os.path.join(tmpdir, str(uuid.uuid4()))
355
355
  with open(tmp_filename, "wb") as f:
356
- f.write(byte_stream.read())
356
+ # make sure to close the file handle after reading.
357
+ with byte_stream as bytes:
358
+ f.write(bytes.read())
357
359
  # Fully finish writing the file, before submitting work. Careful with indentation.
358
360
 
359
361
  futures.append(
@@ -227,7 +227,9 @@ class GSStorage(DataStoreStorage):
227
227
  byte_stream, metadata = byte_stream
228
228
  tmp_filename = os.path.join(tmpdir, str(uuid.uuid4()))
229
229
  with open(tmp_filename, "wb") as f:
230
- f.write(byte_stream.read())
230
+ # make sure to close the file handle after reading.
231
+ with byte_stream as bytes:
232
+ f.write(bytes.read())
231
233
  # Fully finish writing the file, before submitting work. Careful with indentation.
232
234
 
233
235
  futures.append(
@@ -18,7 +18,6 @@ from itertools import starmap, chain, islice
18
18
 
19
19
  from boto3.exceptions import RetriesExceededError, S3UploadFailedError
20
20
  from boto3.s3.transfer import TransferConfig
21
- from botocore.config import Config
22
21
  from botocore.exceptions import ClientError, SSLError
23
22
 
24
23
  try:
@@ -50,13 +49,11 @@ from metaflow.plugins.datatools.s3.s3util import (
50
49
  import metaflow.tracing as tracing
51
50
  from metaflow.metaflow_config import (
52
51
  S3_WORKER_COUNT,
53
- S3_CLIENT_RETRY_CONFIG,
54
52
  )
55
53
 
56
54
  DOWNLOAD_FILE_THRESHOLD = 2 * TransferConfig().multipart_threshold
57
55
  DOWNLOAD_MAX_CHUNK = 2 * 1024 * 1024 * 1024 - 1
58
56
 
59
- DEFAULT_S3_CLIENT_PARAMS = {"config": Config(retries=S3_CLIENT_RETRY_CONFIG)}
60
57
  RANGE_MATCH = re.compile(r"bytes (?P<start>[0-9]+)-(?P<end>[0-9]+)/(?P<total>[0-9]+)")
61
58
 
62
59
  # from botocore ClientError MSG_TEMPLATE:
@@ -132,7 +129,7 @@ def normalize_client_error(err):
132
129
  try:
133
130
  return int(error_code)
134
131
  except ValueError:
135
- if error_code in ("AccessDenied", "AllAccessDisabled"):
132
+ if error_code in ("AccessDenied", "AllAccessDisabled", "InvalidAccessKeyId"):
136
133
  return 403
137
134
  if error_code == "NoSuchKey":
138
135
  return 404
@@ -830,7 +827,7 @@ def lst(
830
827
  s3config = S3Config(
831
828
  s3role,
832
829
  json.loads(s3sessionvars) if s3sessionvars else None,
833
- json.loads(s3clientparams) if s3clientparams else DEFAULT_S3_CLIENT_PARAMS,
830
+ json.loads(s3clientparams) if s3clientparams else None,
834
831
  )
835
832
 
836
833
  urllist = []
@@ -963,7 +960,7 @@ def put(
963
960
  s3config = S3Config(
964
961
  s3role,
965
962
  json.loads(s3sessionvars) if s3sessionvars else None,
966
- json.loads(s3clientparams) if s3clientparams else DEFAULT_S3_CLIENT_PARAMS,
963
+ json.loads(s3clientparams) if s3clientparams else None,
967
964
  )
968
965
 
969
966
  urls = list(starmap(_make_url, _files()))
@@ -1110,7 +1107,7 @@ def get(
1110
1107
  s3config = S3Config(
1111
1108
  s3role,
1112
1109
  json.loads(s3sessionvars) if s3sessionvars else None,
1113
- json.loads(s3clientparams) if s3clientparams else DEFAULT_S3_CLIENT_PARAMS,
1110
+ json.loads(s3clientparams) if s3clientparams else None,
1114
1111
  )
1115
1112
 
1116
1113
  # Construct a list of URL (prefix) objects
@@ -1259,7 +1256,7 @@ def info(
1259
1256
  s3config = S3Config(
1260
1257
  s3role,
1261
1258
  json.loads(s3sessionvars) if s3sessionvars else None,
1262
- json.loads(s3clientparams) if s3clientparams else DEFAULT_S3_CLIENT_PARAMS,
1259
+ json.loads(s3clientparams) if s3clientparams else None,
1263
1260
  )
1264
1261
 
1265
1262
  # Construct a list of URL (prefix) objects
metaflow/version.py CHANGED
@@ -1 +1 @@
1
- metaflow_version = "2.15.11.2"
1
+ metaflow_version = "2.15.14.1"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ob-metaflow
3
- Version: 2.15.11.2
3
+ Version: 2.15.14.1
4
4
  Summary: Metaflow: More AI and ML, Less Engineering
5
5
  Author: Netflix, Outerbounds & the Metaflow Community
6
6
  Author-email: help@outerbounds.co
@@ -12,7 +12,7 @@ Requires-Dist: boto3
12
12
  Requires-Dist: pylint
13
13
  Requires-Dist: kubernetes
14
14
  Provides-Extra: stubs
15
- Requires-Dist: metaflow-stubs==2.15.11.2; extra == "stubs"
15
+ Requires-Dist: metaflow-stubs==2.15.14.1; extra == "stubs"
16
16
  Dynamic: author
17
17
  Dynamic: author-email
18
18
  Dynamic: description
@@ -16,7 +16,7 @@ metaflow/includefile.py,sha256=RtISGl1V48qjkJBakUZ9yPpHV102h7pOIFiKP8PLHpc,20927
16
16
  metaflow/info_file.py,sha256=wtf2_F0M6dgiUu74AFImM8lfy5RrUw5Yj7Rgs2swKRY,686
17
17
  metaflow/integrations.py,sha256=LlsaoePRg03DjENnmLxZDYto3NwWc9z_PtU6nJxLldg,1480
18
18
  metaflow/lint.py,sha256=x4p6tnRzYqNNniCGXyrUW0WuYfTUgnaOMRivxvnxask,11661
19
- metaflow/metaflow_config.py,sha256=C2XAUDNsq8DzzDEHznuK3q10uq8WVdWbAusJCKz9nGM,23975
19
+ metaflow/metaflow_config.py,sha256=STrzDvpigmeNzM-otSGcse7Tzv2gJ9VcI7um41SytiY,24089
20
20
  metaflow/metaflow_config_funcs.py,sha256=5GlvoafV6SxykwfL8D12WXSfwjBN_NsyuKE_Q3gjGVE,6738
21
21
  metaflow/metaflow_current.py,sha256=pfkXmkyHeMJhxIs6HBJNBEaBDpcl5kz9Wx5mW6F_3qo,7164
22
22
  metaflow/metaflow_environment.py,sha256=CWG90qpfz9iJ6hHhFlAmMVNALn2v_5eTVk3mFbQR4Pw,8379
@@ -37,7 +37,7 @@ metaflow/tuple_util.py,sha256=_G5YIEhuugwJ_f6rrZoelMFak3DqAR2tt_5CapS1XTY,830
37
37
  metaflow/unbounded_foreach.py,sha256=p184WMbrMJ3xKYHwewj27ZhRUsSj_kw1jlye5gA9xJk,387
38
38
  metaflow/util.py,sha256=mJBkV5tShIyCsLDeM1zygQGeciQVMrVPm_qI8Oi33G0,14656
39
39
  metaflow/vendor.py,sha256=LZgXrh7ZSDmD32D1T5jj3OKKpXIqqxKzdMAOc5V0SD4,5162
40
- metaflow/version.py,sha256=y8wc2OrMrJ04jszycuxbojNRVeCxsev_fb2-TjVp-LE,31
40
+ metaflow/version.py,sha256=LSHcWgrccJ3bi7LwrG_gr9rIErn2yiktWgPNtqZD3dw,31
41
41
  metaflow/_vendor/__init__.py,sha256=y_CiwUD3l4eAKvTVDZeqgVujMy31cAM1qjAB-HfI-9s,353
42
42
  metaflow/_vendor/typing_extensions.py,sha256=q9zxWa6p6CzF1zZvSkygSlklduHf_b3K7MCxGz7MJRc,134519
43
43
  metaflow/_vendor/zipp.py,sha256=ajztOH-9I7KA_4wqDYygtHa6xUBVZgFpmZ8FE74HHHI,8425
@@ -154,7 +154,7 @@ metaflow/cmd/tutorials_cmd.py,sha256=8FdlKkicTOhCIDKcBR5b0Oz6giDvS-EMY3o9skIrRqw
154
154
  metaflow/cmd/util.py,sha256=jS_0rUjOnGGzPT65fzRLdGjrYAOOLA4jU2S0HJLV0oc,406
155
155
  metaflow/cmd/code/__init__.py,sha256=VO4dNM9M9LHYy5nTgEiJvCV1RBl8lpDlYGJm6GIcaBA,7413
156
156
  metaflow/cmd/develop/__init__.py,sha256=p1Sy8yU1MEKSrH5ttOWOZvNcI1qYu6J6jghdTHwPgOw,689
157
- metaflow/cmd/develop/stub_generator.py,sha256=bo2yWe0kvCZ-3arEFe9eAnPN-h8oNNPcQsDwsL350UM,65217
157
+ metaflow/cmd/develop/stub_generator.py,sha256=gERNsibYL030xR0OjA60AkS3HotRCNa5N2n1QQpgqcE,65358
158
158
  metaflow/cmd/develop/stubs.py,sha256=Q0ERQHGb0cC8P6eb0mQlE1RHUo8sCJ2zFvIW7rL6C_g,11889
159
159
  metaflow/datastore/__init__.py,sha256=VxP6ddJt3rwiCkpiSfAhyVkUCOe1pgZZsytVEJzFmSQ,155
160
160
  metaflow/datastore/content_addressed_store.py,sha256=6T7tNqL29kpmecyMLHF35RhoSBOb-OZcExnsB65AvnI,7641
@@ -214,7 +214,7 @@ metaflow/plugins/argo/argo_workflows.py,sha256=JUW3032AkU7vnqz0xfTgAngyvpVJmMzok
214
214
  metaflow/plugins/argo/argo_workflows_cli.py,sha256=X_GfJpc7jfP7DGuttl7U952767eBF6Ut45aWgoJzHVI,38375
215
215
  metaflow/plugins/argo/argo_workflows_decorator.py,sha256=ogCSBmwsC2C3eusydrgjuAJd4qK18f1sI4jJwA4Fd-o,7800
216
216
  metaflow/plugins/argo/argo_workflows_deployer.py,sha256=6kHxEnYXJwzNCM9swI8-0AckxtPWqwhZLerYkX8fxUM,4444
217
- metaflow/plugins/argo/argo_workflows_deployer_objects.py,sha256=lRRHUcpiyJZFltthxZoIp7aJWwy7pcdhaRm0etKN9es,14182
217
+ metaflow/plugins/argo/argo_workflows_deployer_objects.py,sha256=c_lRGBypwxC4qh0H1JDjDq_cqEwUEqVyXIcqaFPSX8M,14184
218
218
  metaflow/plugins/argo/capture_error.py,sha256=Ys9dscGrTpW-ZCirLBU0gD9qBM0BjxyxGlUMKcwewQc,1852
219
219
  metaflow/plugins/argo/generate_input_paths.py,sha256=loYsI6RFX9LlFsHb7Fe-mzlTTtRdySoOu7sYDy-uXK0,881
220
220
  metaflow/plugins/argo/jobset_input_paths.py,sha256=-h0E_e0w6FMiBUod9Rf_XOSCtZv_C0exacw4q1SfIfg,501
@@ -275,15 +275,15 @@ metaflow/plugins/cards/card_modules/chevron/renderer.py,sha256=dm5ufR9-qnx94D9Bt
275
275
  metaflow/plugins/cards/card_modules/chevron/tokenizer.py,sha256=lQU9OELUE9a5Xu4snGhEV_YTT34iyUHVBuM1YO016Sw,7400
276
276
  metaflow/plugins/cards/card_viewer/viewer.html,sha256=qZJGzhZhQ1gugsknRP7zkAPPfUAtvemK1UKqXoGff5M,11593
277
277
  metaflow/plugins/datastores/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
278
- metaflow/plugins/datastores/azure_storage.py,sha256=QvIUQGOZF1oKeRJXbl3RsV1MnO3OMfLzheoo0UNWn7E,16670
279
- metaflow/plugins/datastores/gs_storage.py,sha256=YEI62gElaJvACupFnY6ZEXuQLFWndi96upWFbnmc0VU,9782
278
+ metaflow/plugins/datastores/azure_storage.py,sha256=GGzOxK8coHR9PQYmR39jn37D0s-XIJOVMuRKaJ3B8eo,16787
279
+ metaflow/plugins/datastores/gs_storage.py,sha256=8KV4SM7GPI21-86UjMATmSCbVzxDHlMWlRsQ-zQngTg,9899
280
280
  metaflow/plugins/datastores/local_storage.py,sha256=igrBDphhyu7EFIUj3BWcO7beiZbNnJLq--lF45UYSyI,4750
281
281
  metaflow/plugins/datastores/s3_storage.py,sha256=CZdNqaKtxDXQbEg2YHyphph3hWcLIE50puenm0WGVpk,5473
282
282
  metaflow/plugins/datatools/__init__.py,sha256=ge4L16OBQLy2J_MMvoHg3lMfdm-MluQgRWoyZ5GCRnk,1267
283
283
  metaflow/plugins/datatools/local.py,sha256=FJvMOBcjdyhSPHmdLocBSiIT0rmKkKBmsaclxH75x08,4233
284
284
  metaflow/plugins/datatools/s3/__init__.py,sha256=14tr9fPjN3ULW5IOfKHeG7Uhjmgm7LMtQHfz1SFv-h8,248
285
285
  metaflow/plugins/datatools/s3/s3.py,sha256=3xrWD6pXoVRpuAQHyLGVya79UIE0S8AqAqe2prg4yMw,67182
286
- metaflow/plugins/datatools/s3/s3op.py,sha256=20XEOCCK_nAVm92ZOjLPTzLnTs9xrIX0Gj-ELxkuNPY,47742
286
+ metaflow/plugins/datatools/s3/s3op.py,sha256=9DAIlvK5kYVmgo3rL-XY_3k7CoLUXaWqduBza13Xqv8,47543
287
287
  metaflow/plugins/datatools/s3/s3tail.py,sha256=boQjQGQMI-bvTqcMP2y7uSlSYLcvWOy7J3ZUaF78NAA,2597
288
288
  metaflow/plugins/datatools/s3/s3util.py,sha256=FgRgaVmEq7-i2dV7q8XK5w5PfFt-xJjZa8WrK8IJfdI,3769
289
289
  metaflow/plugins/env_escape/__init__.py,sha256=tGNUZnmPvk52eNs__VK443b3CZ7ogEFTT-s9_n_HF8Q,8837
@@ -393,12 +393,12 @@ metaflow/user_configs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
393
393
  metaflow/user_configs/config_decorators.py,sha256=qCKVAvd0NKgaCxQ2OThes5-DYHXq6A1HqURubYNeFdw,20481
394
394
  metaflow/user_configs/config_options.py,sha256=m6jccSpzI4qUJ7vyYkYBIf8G3V0Caunxg_k7zg4Zlqg,21067
395
395
  metaflow/user_configs/config_parameters.py,sha256=oeJGVKu1ao_YQX6Lg6P2FEv5k5-_F4sARLlVpTW9ezM,15502
396
- ob_metaflow-2.15.11.2.data/data/share/metaflow/devtools/Makefile,sha256=5n89OGIC_kE4wxtEI66VCucN-b-1w5bqvGeZYmeRGz8,13737
397
- ob_metaflow-2.15.11.2.data/data/share/metaflow/devtools/Tiltfile,sha256=P5_rn_F3xYLN1_cEAQ9mNeS22HG2rb8beKIz2RIK6fU,20634
398
- ob_metaflow-2.15.11.2.data/data/share/metaflow/devtools/pick_services.sh,sha256=DCnrMXwtApfx3B4S-YiZESMyAFHbXa3VuNL0MxPLyiE,2196
399
- ob_metaflow-2.15.11.2.dist-info/licenses/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
400
- ob_metaflow-2.15.11.2.dist-info/METADATA,sha256=SUOXuM04ColPZum-XJ6n-5BNr_bUJ-vNCiWS7uoWG9k,5937
401
- ob_metaflow-2.15.11.2.dist-info/WHEEL,sha256=oSJJyWjO7Z2XSScFQUpXG1HL-N0sFMqqeKVVbZTPkWc,109
402
- ob_metaflow-2.15.11.2.dist-info/entry_points.txt,sha256=RvEq8VFlgGe_FfqGOZi0D7ze1hLD0pAtXeNyGfzc_Yc,103
403
- ob_metaflow-2.15.11.2.dist-info/top_level.txt,sha256=v1pDHoWaSaKeuc5fKTRSfsXCKSdW1zvNVmvA-i0if3o,9
404
- ob_metaflow-2.15.11.2.dist-info/RECORD,,
396
+ ob_metaflow-2.15.14.1.data/data/share/metaflow/devtools/Makefile,sha256=5n89OGIC_kE4wxtEI66VCucN-b-1w5bqvGeZYmeRGz8,13737
397
+ ob_metaflow-2.15.14.1.data/data/share/metaflow/devtools/Tiltfile,sha256=P5_rn_F3xYLN1_cEAQ9mNeS22HG2rb8beKIz2RIK6fU,20634
398
+ ob_metaflow-2.15.14.1.data/data/share/metaflow/devtools/pick_services.sh,sha256=DCnrMXwtApfx3B4S-YiZESMyAFHbXa3VuNL0MxPLyiE,2196
399
+ ob_metaflow-2.15.14.1.dist-info/licenses/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
400
+ ob_metaflow-2.15.14.1.dist-info/METADATA,sha256=4484FbBt_6kAxbidtUXqhG85PyYregSuzSs41QPk09k,5937
401
+ ob_metaflow-2.15.14.1.dist-info/WHEEL,sha256=egKm5cKfE6OqlHwodY8Jjp4yqZDBXgsj09UsV5ojd_U,109
402
+ ob_metaflow-2.15.14.1.dist-info/entry_points.txt,sha256=RvEq8VFlgGe_FfqGOZi0D7ze1hLD0pAtXeNyGfzc_Yc,103
403
+ ob_metaflow-2.15.14.1.dist-info/top_level.txt,sha256=v1pDHoWaSaKeuc5fKTRSfsXCKSdW1zvNVmvA-i0if3o,9
404
+ ob_metaflow-2.15.14.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.3.1)
2
+ Generator: setuptools (80.8.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py2-none-any
5
5
  Tag: py3-none-any