modal 0.67.20__py3-none-any.whl → 0.67.21__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/cli/import_refs.py +1 -1
- modal/client.pyi +2 -2
- modal/functions.py +2 -3
- modal/mount.py +1 -2
- modal/volume.py +1 -6
- {modal-0.67.20.dist-info → modal-0.67.21.dist-info}/METADATA +1 -1
- {modal-0.67.20.dist-info → modal-0.67.21.dist-info}/RECORD +13 -13
- modal_global_objects/mounts/python_standalone.py +1 -1
- modal_version/_version_generated.py +1 -1
- {modal-0.67.20.dist-info → modal-0.67.21.dist-info}/LICENSE +0 -0
- {modal-0.67.20.dist-info → modal-0.67.21.dist-info}/WHEEL +0 -0
- {modal-0.67.20.dist-info → modal-0.67.21.dist-info}/entry_points.txt +0 -0
- {modal-0.67.20.dist-info → modal-0.67.21.dist-info}/top_level.txt +0 -0
modal/cli/import_refs.py
CHANGED
@@ -54,7 +54,7 @@ def import_file_or_module(file_or_module: str):
|
|
54
54
|
# when using a script path, that scripts directory should also be on the path as it is
|
55
55
|
# with `python some/script.py`
|
56
56
|
full_path = Path(file_or_module).resolve()
|
57
|
-
if "." in full_path.name
|
57
|
+
if "." in full_path.name.removesuffix(".py"):
|
58
58
|
raise InvalidError(
|
59
59
|
f"Invalid Modal source filename: {full_path.name!r}."
|
60
60
|
"\n\nSource filename cannot contain additional period characters."
|
modal/client.pyi
CHANGED
@@ -26,7 +26,7 @@ class _Client:
|
|
26
26
|
_stub: typing.Optional[modal_proto.api_grpc.ModalClientStub]
|
27
27
|
|
28
28
|
def __init__(
|
29
|
-
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.67.
|
29
|
+
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.67.21"
|
30
30
|
): ...
|
31
31
|
def is_closed(self) -> bool: ...
|
32
32
|
@property
|
@@ -81,7 +81,7 @@ class Client:
|
|
81
81
|
_stub: typing.Optional[modal_proto.api_grpc.ModalClientStub]
|
82
82
|
|
83
83
|
def __init__(
|
84
|
-
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.67.
|
84
|
+
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.67.21"
|
85
85
|
): ...
|
86
86
|
def is_closed(self) -> bool: ...
|
87
87
|
@property
|
modal/functions.py
CHANGED
@@ -912,9 +912,8 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
|
|
912
912
|
function_data.ranked_functions.extend(ranked_functions)
|
913
913
|
function_definition = None # function_definition is not used in this case
|
914
914
|
else:
|
915
|
-
# TODO(irfansharif): Assert on this specific type once
|
916
|
-
#
|
917
|
-
# assert isinstance(gpu, GPU_T) # includes the case where gpu==None case
|
915
|
+
# TODO(irfansharif): Assert on this specific type once we get rid of python 3.9.
|
916
|
+
# assert isinstance(gpu, GPU_T) # includes the case where gpu==None case
|
918
917
|
function_definition.resources.CopyFrom(
|
919
918
|
convert_fn_config_to_resources_config(
|
920
919
|
cpu=cpu, memory=memory, gpu=gpu, ephemeral_disk=ephemeral_disk
|
modal/mount.py
CHANGED
@@ -749,8 +749,7 @@ def get_auto_mounts() -> list[_Mount]:
|
|
749
749
|
continue
|
750
750
|
|
751
751
|
for local_path, remote_path in mount_paths:
|
752
|
-
|
753
|
-
if any(str(local_path).startswith(str(p)) for p in SYS_PREFIXES) or _is_modal_path(remote_path):
|
752
|
+
if any(local_path.is_relative_to(p) for p in SYS_PREFIXES) or _is_modal_path(remote_path):
|
754
753
|
# skip any module that has paths in SYS_PREFIXES, or would overwrite the modal Package in the container
|
755
754
|
break
|
756
755
|
else:
|
modal/volume.py
CHANGED
@@ -677,16 +677,11 @@ def _open_files_error_annotation(mount_path: str) -> Optional[str]:
|
|
677
677
|
cmdline = " ".join([part.decode() for part in parts]).rstrip(" ")
|
678
678
|
|
679
679
|
cwd = PurePosixPath(os.readlink(f"/proc/{pid}/cwd"))
|
680
|
-
|
681
|
-
# we drop Python 3.8 support.
|
682
|
-
try:
|
683
|
-
_rel_cwd = cwd.relative_to(mount_path)
|
680
|
+
if cwd.is_relative_to(mount_path):
|
684
681
|
if pid == self_pid:
|
685
682
|
return "cwd is inside volume"
|
686
683
|
else:
|
687
684
|
return f"cwd of '{cmdline}' is inside volume"
|
688
|
-
except ValueError:
|
689
|
-
pass
|
690
685
|
|
691
686
|
for fd in os.listdir(f"/proc/{pid}/fd"):
|
692
687
|
try:
|
@@ -19,7 +19,7 @@ modal/app.py,sha256=EJ7FUN6rWnSwLJoYJh8nmKg_t-8hdN8_rt0OrkP7JvQ,46084
|
|
19
19
|
modal/app.pyi,sha256=BE5SlR5tRECuc6-e2lUuOknDdov3zxgZ4N0AsLb5ZVQ,25270
|
20
20
|
modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
|
21
21
|
modal/client.py,sha256=VMg_aIuo_LOEe2ttxBHEND3PLhTp5lo-onH4wELhIyY,16375
|
22
|
-
modal/client.pyi,sha256=
|
22
|
+
modal/client.pyi,sha256=oYWcFp3N3gJRuNuTVk65Ked0qAsUEO8hCWLknmxebVo,7354
|
23
23
|
modal/cloud_bucket_mount.py,sha256=G7T7jWLD0QkmrfKR75mSTwdUZ2xNfj7pkVqb4ipmxmI,5735
|
24
24
|
modal/cloud_bucket_mount.pyi,sha256=CEi7vrH3kDUF4LAy4qP6tfImy2UJuFRcRbsgRNM1wo8,1403
|
25
25
|
modal/cls.py,sha256=F2jk5zFCAA8h-GfM0dbdBG3Mu5wiG9k9Z9JLYRYuT2Q,24758
|
@@ -33,14 +33,14 @@ modal/environments.py,sha256=5cgA-zbm6ngKLsRA19zSOgtgo9-BarJK3FJK0BiF2Lo,6505
|
|
33
33
|
modal/environments.pyi,sha256=XalNpiPkAtHWAvOU2Cotq0ozmtl-Jv0FDsR8h9mr27Q,3521
|
34
34
|
modal/exception.py,sha256=EBkdWVved2XEPsXaoPRu56xfxFFHL9iuqvUsdj42WDA,6392
|
35
35
|
modal/experimental.py,sha256=jFuNbwrNHos47viMB9q-cHJSvf2RDxDdoEcss9plaZE,2302
|
36
|
-
modal/functions.py,sha256=
|
36
|
+
modal/functions.py,sha256=p1d3JWrhEWJeUoqACeJT8a480NmemxuynHA47B5RiVM,69829
|
37
37
|
modal/functions.pyi,sha256=fifvDS5GDEYmXjko1UGZrKqmhfnQn6GRwCblM9hrRWo,25107
|
38
38
|
modal/gpu.py,sha256=r4rL6uH3UJIQthzYvfWauXNyh01WqCPtKZCmmSX1fd4,6881
|
39
39
|
modal/image.py,sha256=ZIC8tgjJnqWamN4sZ0Gch3x2VmcM671MWfRLR5SMmoc,79423
|
40
40
|
modal/image.pyi,sha256=JjicLNuaBsfuPZ_xo_eN0zKZkDrEm2alYg-szENhJjM,24591
|
41
41
|
modal/io_streams.py,sha256=YfKAlWQAxzPCHE0-wVlAlX5vldrpfKMdr9ggL0c5VJo,15063
|
42
42
|
modal/io_streams.pyi,sha256=bCCVSxkMcosYd8O3PQDDwJw7TQ8JEcnYonLJ5t27TQs,4804
|
43
|
-
modal/mount.py,sha256=
|
43
|
+
modal/mount.py,sha256=liaid5p42o0OKnzoocJJ_oCovDVderk3-JuCTa5pqtA,27656
|
44
44
|
modal/mount.pyi,sha256=3e4nkXUeeVmUmOyK8Tiyk_EQlHeWruN3yGJVnmDUVrI,9761
|
45
45
|
modal/network_file_system.py,sha256=mwtYp25XtFaiGpSG7U0KSkiTzJWrxgGTcoxfPZ9yGR0,14141
|
46
46
|
modal/network_file_system.pyi,sha256=kRqK-n8FxZfyboV3MQuaH40RqAeBU2VA2WfZrhj4hwk,7242
|
@@ -71,7 +71,7 @@ modal/serving.pyi,sha256=ncV-9jY_vZYFnGs5ZnMb3ffrX8LmcLdIMHBC56xRbtE,1711
|
|
71
71
|
modal/stream_type.py,sha256=A6320qoAAWhEfwOCZfGtymQTu5AfLfJXXgARqooTPvY,417
|
72
72
|
modal/token_flow.py,sha256=LcgSce_MSQ2p7j55DPwpVRpiAtCDe8GRSEwzO7muNR8,6774
|
73
73
|
modal/token_flow.pyi,sha256=gOYtYujrWt_JFZeiI8EmfahXPx5GCR5Na-VaPQcWgEY,1937
|
74
|
-
modal/volume.py,sha256=
|
74
|
+
modal/volume.py,sha256=IISuMeXq9MoSkhXg8Q6JG0F-2n9NTkWk0xGuJB8l3d8,29159
|
75
75
|
modal/volume.pyi,sha256=St0mDiaojfep6Bs4sBbkRJmeacYHF6lh6FKOWGmheHA,11182
|
76
76
|
modal/_runtime/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
|
77
77
|
modal/_runtime/asgi.py,sha256=GvuxZqWnIHMIR-Bx5f7toCQlkERaJO8CHjTPNM9IFIw,21537
|
@@ -108,7 +108,7 @@ modal/cli/container.py,sha256=lRSrxnl7bTLLW9T6hzkqOxqFzzV9qHyXPOuOHY8zkc4,3194
|
|
108
108
|
modal/cli/dict.py,sha256=gwX4ZBsrr0dpWf_B5_5GN_ealcVzpcGyvY24dEY4y3Y,4455
|
109
109
|
modal/cli/entry_point.py,sha256=aaNxFAqZcmtSjwzkYIA_Ba9CkL4cL4_i2gy5VjoXxkM,4228
|
110
110
|
modal/cli/environment.py,sha256=Ayddkiq9jdj3XYDJ8ZmUqFpPPH8xajYlbexRkzGtUcg,4334
|
111
|
-
modal/cli/import_refs.py,sha256=
|
111
|
+
modal/cli/import_refs.py,sha256=wnqE5AMeyAN3IZmQvJCp54KRnJh8Nq_5fMqB6u6GEL8,9147
|
112
112
|
modal/cli/launch.py,sha256=uyI-ouGvYRjHLGxGQ2lYBZq32BiRT1i0L8ksz5iy7K8,2935
|
113
113
|
modal/cli/network_file_system.py,sha256=tDwTJ3LP2H5TP-SkHlRFnsP3Zsk7XEeRF_Hxej5jViM,7528
|
114
114
|
modal/cli/profile.py,sha256=rLXfjJObfPNjaZvNfHGIKqs7y9bGYyGe-K7V0w-Ni0M,3110
|
@@ -140,7 +140,7 @@ modal_global_objects/images/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0
|
|
140
140
|
modal_global_objects/images/base_images.py,sha256=tFc7tzQRJHtq23kURd6DTrnnO4Yp5ujr34WdJOM5ubI,775
|
141
141
|
modal_global_objects/mounts/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
|
142
142
|
modal_global_objects/mounts/modal_client_package.py,sha256=W0E_yShsRojPzWm6LtIQqNVolapdnrZkm2hVEQuZK_4,767
|
143
|
-
modal_global_objects/mounts/python_standalone.py,sha256=
|
143
|
+
modal_global_objects/mounts/python_standalone.py,sha256=SL_riIxpd8mP4i4CLDCWiFFNj0Ltknm9c_UIGfX5d60,1836
|
144
144
|
modal_proto/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
|
145
145
|
modal_proto/api.proto,sha256=I36DzPZ4fs045HqQCEdgEiiJr1Dcd6T6fFA1RbQW7aE,78014
|
146
146
|
modal_proto/api_grpc.py,sha256=cQOfwiGd2Nyj9esTgtu39EK1QKGZJXharISgWG7_lQ8,99814
|
@@ -159,10 +159,10 @@ modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0y
|
|
159
159
|
modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
160
160
|
modal_version/__init__.py,sha256=3IY-AWLH55r35_mQXIaut0jrJvoPuf1NZJBQQfSbPuo,470
|
161
161
|
modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
|
162
|
-
modal_version/_version_generated.py,sha256=
|
163
|
-
modal-0.67.
|
164
|
-
modal-0.67.
|
165
|
-
modal-0.67.
|
166
|
-
modal-0.67.
|
167
|
-
modal-0.67.
|
168
|
-
modal-0.67.
|
162
|
+
modal_version/_version_generated.py,sha256=b8dp2FU8YSXT6Zooyfknv53ksux_sDA1EwKWbdbsDoU,149
|
163
|
+
modal-0.67.21.dist-info/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
|
164
|
+
modal-0.67.21.dist-info/METADATA,sha256=loev_bxlE1VfpenLfOnG4Fe6QZH7kyoMORDRT8itHE8,2329
|
165
|
+
modal-0.67.21.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
|
166
|
+
modal-0.67.21.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
|
167
|
+
modal-0.67.21.dist-info/top_level.txt,sha256=1nvYbOSIKcmU50fNrpnQnrrOpj269ei3LzgB6j9xGqg,64
|
168
|
+
modal-0.67.21.dist-info/RECORD,,
|
@@ -17,7 +17,7 @@ def publish_python_standalone_mount(client, version: str) -> None:
|
|
17
17
|
release, full_version = PYTHON_STANDALONE_VERSIONS[version]
|
18
18
|
|
19
19
|
libc = "gnu"
|
20
|
-
arch = "
|
20
|
+
arch = "x86_64_v3"
|
21
21
|
url = (
|
22
22
|
"https://github.com/indygreg/python-build-standalone/releases/download"
|
23
23
|
+ f"/{release}/cpython-{full_version}+{release}-{arch}-unknown-linux-gnu-install_only.tar.gz"
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|