modal 1.6.2.dev1__py3-none-any.whl → 1.6.2.dev2__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.
- modal/_output/status.py +10 -7
- modal/_workspace.py +3 -2
- modal/cli/app.py +5 -5
- modal/client.pyi +2 -2
- modal/experimental/_flash_container_entry.py +1 -0
- modal/runner.py +1 -1
- modal/workspace.pyi +3 -1
- {modal-1.6.2.dev1.dist-info → modal-1.6.2.dev2.dist-info}/METADATA +1 -1
- {modal-1.6.2.dev1.dist-info → modal-1.6.2.dev2.dist-info}/RECORD +16 -16
- modal_proto/api_pb2.py +1080 -1080
- modal_proto/api_pb2.pyi +17 -3
- modal_version/__init__.py +1 -1
- {modal-1.6.2.dev1.dist-info → modal-1.6.2.dev2.dist-info}/WHEEL +0 -0
- {modal-1.6.2.dev1.dist-info → modal-1.6.2.dev2.dist-info}/entry_points.txt +0 -0
- {modal-1.6.2.dev1.dist-info → modal-1.6.2.dev2.dist-info}/licenses/LICENSE +0 -0
- {modal-1.6.2.dev1.dist-info → modal-1.6.2.dev2.dist-info}/top_level.txt +0 -0
modal/_output/status.py
CHANGED
|
@@ -20,6 +20,11 @@ def _get_annotation_for_web_url(url_info: api_pb2.WebUrlInfo) -> str:
|
|
|
20
20
|
return suffix
|
|
21
21
|
|
|
22
22
|
|
|
23
|
+
def _format_url(url: str) -> str:
|
|
24
|
+
# OSC 8 hyperlinks stay clickable when the URL wraps across lines
|
|
25
|
+
return f"[dim underline][link={url}]{url}[/link][/dim underline]"
|
|
26
|
+
|
|
27
|
+
|
|
23
28
|
class FunctionCreationStatus:
|
|
24
29
|
"""Context manager for tracking and displaying function creation progress."""
|
|
25
30
|
|
|
@@ -58,9 +63,9 @@ class FunctionCreationStatus:
|
|
|
58
63
|
suffix = _get_annotation_for_web_url(url_info)
|
|
59
64
|
|
|
60
65
|
self.status_row.finish(f"Created {self.type} [green]{self.name}[/green]")
|
|
61
|
-
self.status_row.details(f"
|
|
66
|
+
self.status_row.details(f"{_format_url(web_url)}{auth_suffix}{suffix}")
|
|
62
67
|
for custom_domain in self.response.function.custom_domain_info:
|
|
63
|
-
self.status_row.details(f"Custom domain:
|
|
68
|
+
self.status_row.details(f"Custom domain: {_format_url(custom_domain.url)}")
|
|
64
69
|
|
|
65
70
|
elif self.response.function.flash_service_urls:
|
|
66
71
|
# Despite the gRPC API types, Servers only have one URL
|
|
@@ -68,7 +73,7 @@ class FunctionCreationStatus:
|
|
|
68
73
|
auth_suffix = " 🔑" if authenticated else " [yellow](unauthenticated)[/yellow]"
|
|
69
74
|
self.status_row.finish(f"Created {self.type} [green]{self.name}[/green]")
|
|
70
75
|
url = self.response.function.flash_service_urls[0]
|
|
71
|
-
self.status_row.details(f"
|
|
76
|
+
self.status_row.details(f"{_format_url(url)}{auth_suffix}")
|
|
72
77
|
|
|
73
78
|
else:
|
|
74
79
|
self.status_row.finish(f"Created {self.type} [green]{self.name}[/green].")
|
|
@@ -81,10 +86,8 @@ class FunctionCreationStatus:
|
|
|
81
86
|
auth_suffix = " 🔑" if authenticated else " [yellow](unauthenticated)[/yellow]"
|
|
82
87
|
self.status_row.details(
|
|
83
88
|
f"{method_definition.function_name} -> "
|
|
84
|
-
f"
|
|
89
|
+
f"{_format_url(method_definition.web_url)}{auth_suffix}{suffix}"
|
|
85
90
|
)
|
|
86
91
|
for custom_domain in method_definition.custom_domain_info:
|
|
87
92
|
indent = len(method_definition.function_name) * " "
|
|
88
|
-
self.status_row.details(
|
|
89
|
-
f"{indent} -> [dim underline]{custom_domain.url}[/dim underline]{auth_suffix}"
|
|
90
|
-
)
|
|
93
|
+
self.status_row.details(f"{indent} -> {_format_url(custom_domain.url)}{auth_suffix}")
|
modal/_workspace.py
CHANGED
|
@@ -495,7 +495,8 @@ class _WorkspaceSettingsManager:
|
|
|
495
495
|
"""mdmd:namespace"""
|
|
496
496
|
|
|
497
497
|
@classmethod
|
|
498
|
-
def
|
|
498
|
+
def _valid_settings(cls):
|
|
499
|
+
"""mdmd:hidden"""
|
|
499
500
|
return ("default-environment", "image-builder-version")
|
|
500
501
|
|
|
501
502
|
def __init__(self, workspace: _Workspace):
|
|
@@ -554,4 +555,4 @@ class _WorkspaceSettingsManager:
|
|
|
554
555
|
case "default-environment":
|
|
555
556
|
await self._set_default_environment(value)
|
|
556
557
|
case _:
|
|
557
|
-
raise ValueError(f"Unknown setting {name!r}. Valid settings: {', '.join(self.
|
|
558
|
+
raise ValueError(f"Unknown setting {name!r}. Valid settings: {', '.join(self._valid_settings())}")
|
modal/cli/app.py
CHANGED
|
@@ -225,12 +225,12 @@ async def rollover(
|
|
|
225
225
|
await _stop_and_wait_for_containers(client, app_id, response.deployed_at, env)
|
|
226
226
|
except Exception as exc:
|
|
227
227
|
warnings.warn(f"App updated successfully, but containers did not all terminate. {exc}", UserWarning)
|
|
228
|
-
output_mgr.print(f"\nView Deployment: [magenta]{response.url}[/magenta]")
|
|
228
|
+
output_mgr.print(f"\nView Deployment: [magenta][link={response.url}]{response.url}[/link][/magenta]")
|
|
229
229
|
sys.exit(1)
|
|
230
230
|
|
|
231
231
|
duration = time.monotonic() - t0
|
|
232
232
|
output_mgr.step_completed(f"Rollover completed in {duration:.3f}s with {strategy} strategy! 🎉")
|
|
233
|
-
output_mgr.print(f"\nView Deployment: [magenta]{response.url}[/magenta]")
|
|
233
|
+
output_mgr.print(f"\nView Deployment: [magenta][link={response.url}]{response.url}[/link][/magenta]")
|
|
234
234
|
|
|
235
235
|
|
|
236
236
|
@app_cli.command("promote", panel="Management", no_args_is_help=True, hidden=True)
|
|
@@ -281,7 +281,7 @@ async def promote(
|
|
|
281
281
|
|
|
282
282
|
output_mgr = OutputManager.get()
|
|
283
283
|
output_mgr.print(f"[green]✓[/green] Promoted App to v{version_number}!")
|
|
284
|
-
output_mgr.print(f"\nView Deployment: [magenta]{resp.url}[/magenta]")
|
|
284
|
+
output_mgr.print(f"\nView Deployment: [magenta][link={resp.url}]{resp.url}[/link][/magenta]")
|
|
285
285
|
|
|
286
286
|
|
|
287
287
|
@app_cli.command(
|
|
@@ -356,10 +356,10 @@ async def rollback(
|
|
|
356
356
|
warnings.warn(
|
|
357
357
|
f"App rollback executed successfully, but containers did not all terminate. {exc}", UserWarning
|
|
358
358
|
)
|
|
359
|
-
output_mgr.print(f"\nView Deployment: [magenta]{resp.url}[/magenta]")
|
|
359
|
+
output_mgr.print(f"\nView Deployment: [magenta][link={resp.url}]{resp.url}[/link][/magenta]")
|
|
360
360
|
sys.exit(1)
|
|
361
361
|
output_mgr.print("[green]✓[/green] Deployment rollback successful!")
|
|
362
|
-
output_mgr.print(f"\nView Deployment: [magenta]{resp.url}[/magenta]")
|
|
362
|
+
output_mgr.print(f"\nView Deployment: [magenta][link={resp.url}]{resp.url}[/link][/magenta]")
|
|
363
363
|
|
|
364
364
|
|
|
365
365
|
@app_cli.command("stop", panel="Management", no_args_is_help=True)
|
modal/client.pyi
CHANGED
|
@@ -80,7 +80,7 @@ class _Client:
|
|
|
80
80
|
server_url: str,
|
|
81
81
|
client_type: int,
|
|
82
82
|
credentials: typing.Optional[tuple[str, str]],
|
|
83
|
-
version: str = "1.6.2.
|
|
83
|
+
version: str = "1.6.2.dev2",
|
|
84
84
|
*,
|
|
85
85
|
oauth_credentials: typing.Optional[_OAuthCredentials] = None,
|
|
86
86
|
):
|
|
@@ -290,7 +290,7 @@ class Client:
|
|
|
290
290
|
server_url: str,
|
|
291
291
|
client_type: int,
|
|
292
292
|
credentials: typing.Optional[tuple[str, str]],
|
|
293
|
-
version: str = "1.6.2.
|
|
293
|
+
version: str = "1.6.2.dev2",
|
|
294
294
|
*,
|
|
295
295
|
oauth_credentials: typing.Optional[_OAuthCredentials] = None,
|
|
296
296
|
):
|
modal/runner.py
CHANGED
|
@@ -697,7 +697,7 @@ async def _deploy_app(
|
|
|
697
697
|
else:
|
|
698
698
|
output_mgr.step_completed(f"App deployed in {t:.3f}s! 🎉")
|
|
699
699
|
|
|
700
|
-
output_mgr.print(f"\nView Deployment: [magenta]{app_url}[/magenta]")
|
|
700
|
+
output_mgr.print(f"\nView Deployment: [magenta][link={app_url}]{app_url}[/link][/magenta]")
|
|
701
701
|
return DeployResult(
|
|
702
702
|
app_id=running_app.app_id,
|
|
703
703
|
app_page_url=running_app.app_page_url,
|
modal/workspace.pyi
CHANGED
|
@@ -30,14 +30,14 @@ modal/_tunnel.py,sha256=4M1qLFXvJLV2s_vr5vHXDtGdZr0OUNmXNj1C3lyF4qE,7360
|
|
|
30
30
|
modal/_tunnel.pyi,sha256=WVP0dkoN__mM73ZQ-r3nHKCXvYlRMmEWW8iw2xrSY6M,14698
|
|
31
31
|
modal/_type_manager.py,sha256=DWjgmjYJuOagw2erin506UUbG2H5UzZCFEekS-7hmfA,9087
|
|
32
32
|
modal/_watcher.py,sha256=Ot1My6fhTp5v0NXR7-ESV8kNQqvpgozrIcvLBtf5r-U,3564
|
|
33
|
-
modal/_workspace.py,sha256=
|
|
33
|
+
modal/_workspace.py,sha256=IfjcknvmWKVqiltkvHFKVBAKi2EVo-nMOTVKlWCOll4,21849
|
|
34
34
|
modal/app.py,sha256=tAILXi3rk-d2KgdLKGMsB7awShiPBcPfEfiPLn1fGQY,74703
|
|
35
35
|
modal/app.pyi,sha256=TjcJhoWwZTK2eQ_HCIChU62xSdLi6SvHVQYksy-eZ7w,88565
|
|
36
36
|
modal/billing.py,sha256=E1-P_P8bJFLp-bTaggYd4BaaViImPB5UdtXiY8VeAZQ,390
|
|
37
37
|
modal/billing.pyi,sha256=4m7VLYNS8IiJ2I3CJx0awvrOM6BILWRVLfdeqtAYr8M,7189
|
|
38
38
|
modal/call_graph.py,sha256=XGALIDn1bLchWo_goyX23bcPjzCZcfqKUo8INIfDapo,1775
|
|
39
39
|
modal/client.py,sha256=cstrL0wpXCZmcvRs7Sy3QRw9Vz8zkZy8NNk0tPe38sk,22852
|
|
40
|
-
modal/client.pyi,sha256=
|
|
40
|
+
modal/client.pyi,sha256=08PWLhNyJyKvXkR-1C79kW5sO5AIb6KUOSS2yFRi0nw,23488
|
|
41
41
|
modal/cloud_bucket_mount.py,sha256=ZOg69dhIFcJcwim4JP-6s1tqwOYAfgS9806jRpspifw,7511
|
|
42
42
|
modal/cloud_bucket_mount.pyi,sha256=HoPe_NG5jYdVfmTNY-ZJ3-C8Eo_FzJovl9orJRjkGbE,10252
|
|
43
43
|
modal/cls.py,sha256=sxKiVm8GQUuEnPx1KJfTHVdSqSmqnNj6U5CQbW37QsA,41771
|
|
@@ -76,7 +76,7 @@ modal/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
76
76
|
modal/queue.py,sha256=nK1mvRmg0PjvzkeoRsbj-HmTqWvoX-NzahE1SZU2W4k,30500
|
|
77
77
|
modal/queue.pyi,sha256=Qoy2Bcd1iB7CtR_L4_7tRjJEV7rG_x_-72Sf2Nng4ro,51497
|
|
78
78
|
modal/retries.py,sha256=tSGB5bGM5xZZUDXMkuelIEoQJY0vOukOssZhwc6tXAo,5014
|
|
79
|
-
modal/runner.py,sha256=
|
|
79
|
+
modal/runner.py,sha256=j2j03t3csfgD-9WWfx4yq3pB5M4AFZ21gKBl9Bfm63A,31840
|
|
80
80
|
modal/runner.pyi,sha256=jIdnTwYv5AH-c8weyeCFzJ0hIekw81QqUsxVzXbgkcc,9954
|
|
81
81
|
modal/running_app.py,sha256=xSR1VVlhxEFytmjx2x697_0GpD25Vc9crhp6r117_QY,1145
|
|
82
82
|
modal/sandbox.py,sha256=zluT8Q5UQLWs1IeUnoVEPZHTWweEL_pdBSz47jchPZ8,148094
|
|
@@ -100,12 +100,12 @@ modal/types.py,sha256=ErnukSMk5iIwtRxvnXPi9Z1n7psJ0puDXE_EkeMAkHM,35034
|
|
|
100
100
|
modal/volume.py,sha256=OsEZTAirN9SxVMMUMvN7gQWbynWKXFf2Iye2e9FBRas,70570
|
|
101
101
|
modal/volume.pyi,sha256=yqhHai9dcigTsGrh6LOdSMl-JNln1ka7rSYgzIjqhmE,67147
|
|
102
102
|
modal/workspace.py,sha256=_phlb1Bxie_KR1Y9atBzkB21Q_qmRztf1JLzQYdK0qk,988
|
|
103
|
-
modal/workspace.pyi,sha256=
|
|
103
|
+
modal/workspace.pyi,sha256=X3wZ5GWrIpxJVxya4NDKvzdxJqGRhsoc1wNgKSMOySg,26497
|
|
104
104
|
modal/_output/__init__.py,sha256=xtGN6SPv2zvByrJ32JPao0yJKpxyCIZ-2JMTScrisuQ,28
|
|
105
105
|
modal/_output/manager.py,sha256=DqEguniI8uWMFUZFX4U4gsCFpio1zQeWjJhJC_GZhi4,18286
|
|
106
106
|
modal/_output/pty.py,sha256=ngkKVpU8zDOxg94LiWYmdwXavd305HQDXzjWGrHQBIM,10408
|
|
107
107
|
modal/_output/rich.py,sha256=qo8QUm0Mx19Yau4IHYDchly57KwC1H21wD3A0EJdcCc,32922
|
|
108
|
-
modal/_output/status.py,sha256=
|
|
108
|
+
modal/_output/status.py,sha256=PanuIySRARxuqxp-eply-ISnnQ86LqL-GnVOFl8-LRU,4059
|
|
109
109
|
modal/_runtime/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
|
|
110
110
|
modal/_runtime/asgi.py,sha256=0-z0dqTLBtgT9PR_XCkRbL9Fi9G7Dhor5HGVTlMwaEM,22831
|
|
111
111
|
modal/_runtime/container_io_manager.py,sha256=8DwcS3NHfbysmyezSdFb4ghwKGZsGm-skmSNJFuZX8I,50669
|
|
@@ -167,7 +167,7 @@ modal/cli/_help.py,sha256=FrqsK_9wl2cRsdKgP1G_7utxc_7yZlDKTZqV9NgIblQ,15419
|
|
|
167
167
|
modal/cli/_logs.py,sha256=sw82Xs4Vfa3PcaNjg0TlxtnNakMLkLcqSqyMqxDnAHQ,4105
|
|
168
168
|
modal/cli/_stats.py,sha256=YYW0ymtA4BH_K7m6KF8d-UVqq20ZQR4iyMJt6cFmP24,4763
|
|
169
169
|
modal/cli/_traceback.py,sha256=sUFEQWVCa6mqJ0qbGil6RCF9-fh4CLQq5JIA3IKZSGk,5951
|
|
170
|
-
modal/cli/app.py,sha256=
|
|
170
|
+
modal/cli/app.py,sha256=SZ7z8ajQ_RJ00pAEFWY1k8rBw5sS1UwFqrpgoKVJtio,28590
|
|
171
171
|
modal/cli/billing.py,sha256=_kcABKhU4tASJJqe-2rBnb0rOCmAkns6D94U8w-Oq7M,10686
|
|
172
172
|
modal/cli/changelog.py,sha256=arLVBD30JVGNA0T3WWt40MHuq8MZj2JFe30NSc2qekk,5798
|
|
173
173
|
modal/cli/config.py,sha256=mwV5maANztDnaIU44qN-Pwg2Z6hGPPeLjIQsWZr1fuY,2431
|
|
@@ -196,14 +196,14 @@ modal/cli/utils.py,sha256=Elg-osfqOOfWI7_DnF--tDkP3ayHttQ-QHc87K5vRQE,11008
|
|
|
196
196
|
modal/cli/volume.py,sha256=nM5QKRjX-d6lQO4FPNDFbIZhuWfZ2O_RW8gtWWwgs4Q,11281
|
|
197
197
|
modal/cli/workspace.py,sha256=wt11BRti_FMnWnztTrnPoXUAtLhFVDH194aImXyWCms,8980
|
|
198
198
|
modal/experimental/__init__.py,sha256=q-3ck6OU-S7GEe00FdBdc5SMZybLCWi_1ZvVOlTEJ5o,10485
|
|
199
|
-
modal/experimental/_flash_container_entry.py,sha256=
|
|
199
|
+
modal/experimental/_flash_container_entry.py,sha256=u0ciXgUain0tosulHFVh_Dp7vi51uHWWiThdQbj0whs,2318
|
|
200
200
|
modal/experimental/flash.py,sha256=ZZJIlJ9lLv03CQr6muRUXQB-5tZII_zX7qiLqRuJWGM,13120
|
|
201
201
|
modal/experimental/flash.pyi,sha256=rBCfhmtHEfWv5jUtFcTeQ6YVQCIoR6tt37CBH0T_qHY,7392
|
|
202
202
|
modal/experimental/flash_server.py,sha256=iqxVoQij6aM58_h0la6Y_Vy3CCQj8iYmjzt79rHrmxA,989
|
|
203
203
|
modal/experimental/flash_server.pyi,sha256=LuIBqeOJ1NAapKWnJMRzzrwIHlIK2GcOLOI2r-z_QN0,1025
|
|
204
204
|
modal/experimental/ipython.py,sha256=kJ6o9wkAY_MiSb7paewI7f1MJAeqdi8TX5pBdhr_mUI,2925
|
|
205
205
|
modal/skills/modal/SKILL.md,sha256=Bm-0BPTYppJoeQzA-N-Re8L6-nKnV6gspJXMl4cD0P0,5490
|
|
206
|
-
modal-1.6.2.
|
|
206
|
+
modal-1.6.2.dev2.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
|
|
207
207
|
modal_docs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
|
|
208
208
|
modal_docs/gen_cli_docs.py,sha256=9-b8vl2EsLWD9zJqpCK8IUi5h44Bjn3i3rSdedZV4bA,6415
|
|
209
209
|
modal_docs/gen_cli_docs_main.py,sha256=UPGr7O1DYTIRLwfINe2rbdh89J3cPVTU1OWL-SjxnOQ,198
|
|
@@ -216,8 +216,8 @@ modal_docs/mdmd/signatures.py,sha256=OASroKle763Kfumn4Ek4PABJXEGP56JMCTug44QoBx4
|
|
|
216
216
|
modal_docs/mdmd/types.py,sha256=tv7fvziPr-MeDzOp4e2pK5h3d1DXTUOO74rPqDoBn6g,736
|
|
217
217
|
modal_proto/__init__.py,sha256=Hkou4lcD5tArEkW_9v9KZhLY7fl0fA9-O28beKU55pg,396
|
|
218
218
|
modal_proto/api_grpc.py,sha256=KxLECZV7ZaGXW49yYYW0TooRkgJ3KyijbtnRXlVfhB0,199086
|
|
219
|
-
modal_proto/api_pb2.py,sha256=
|
|
220
|
-
modal_proto/api_pb2.pyi,sha256=
|
|
219
|
+
modal_proto/api_pb2.py,sha256=sAzmEm53sIm962aEXo06FOzd4DCS8sG720wwsOUE4AI,568956
|
|
220
|
+
modal_proto/api_pb2.pyi,sha256=10brUOSW09-UoxKhvcVi_dZq15vn4UgHEH8Gk8WTWRc,786226
|
|
221
221
|
modal_proto/api_pb2_grpc.py,sha256=Wf2QuVkC3XfKvH5aQKhwiqoEzAALTBV5KI9L77o7k08,426312
|
|
222
222
|
modal_proto/api_pb2_grpc.pyi,sha256=b2tPpDPRLEu7ubhqS7pyHRjGh3ngeQhN1HUInJ6HMDA,100139
|
|
223
223
|
modal_proto/modal_api_grpc.py,sha256=tHIPTopW9zSuAe_ECj4iOKob8Ce1YUihm00YJW5OYwE,31361
|
|
@@ -227,10 +227,10 @@ modal_proto/task_command_router_pb2.py,sha256=e_YIBjfDP2nDMZIvBYlHG49wosIGj3ruHh
|
|
|
227
227
|
modal_proto/task_command_router_pb2.pyi,sha256=I8olEX3B6NqupcmIXB4Evq_Am1YScqHoIoB0xYnkAhA,50428
|
|
228
228
|
modal_proto/task_command_router_pb2_grpc.py,sha256=XvHEJvi-Dd6gco-Wo8UtP1SiEEF8wOHvsWgZQ4VyXFc,44447
|
|
229
229
|
modal_proto/task_command_router_pb2_grpc.pyi,sha256=3sNk2lY6EMk_GaYds-RwZ_tY6KbMCP-yimKAm2qDKVc,14837
|
|
230
|
-
modal_version/__init__.py,sha256=
|
|
230
|
+
modal_version/__init__.py,sha256=79VB29W9wYlizhylLiwKty4Js4f0Qk5cKmymrPeQkEM,120
|
|
231
231
|
modal_version/__main__.py,sha256=nLUbubxKx7GXNzJIkTB7M7_u8080LyLM0IS0rzFkC_c,119
|
|
232
|
-
modal-1.6.2.
|
|
233
|
-
modal-1.6.2.
|
|
234
|
-
modal-1.6.2.
|
|
235
|
-
modal-1.6.2.
|
|
236
|
-
modal-1.6.2.
|
|
232
|
+
modal-1.6.2.dev2.dist-info/METADATA,sha256=B9hx-I84zcORTn2yjIlL0xmmz70ScH3Czb1jMA8Rx3w,2512
|
|
233
|
+
modal-1.6.2.dev2.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
|
|
234
|
+
modal-1.6.2.dev2.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
|
|
235
|
+
modal-1.6.2.dev2.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
|
|
236
|
+
modal-1.6.2.dev2.dist-info/RECORD,,
|