modal 1.0.0.dev7__tar.gz → 1.0.0.dev10__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.
Potentially problematic release.
This version of modal might be problematic. Click here for more details.
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/PKG-INFO +1 -1
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_functions.py +1 -25
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_serialization.py +2 -2
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_utils/function_utils.py +3 -6
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_utils/grpc_utils.py +6 -1
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/cli/programs/run_jupyter.py +1 -1
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/cli/programs/vscode.py +1 -1
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/client.pyi +2 -2
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/config.py +0 -5
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal.egg-info/PKG-INFO +1 -1
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal_version/__init__.py +1 -1
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/LICENSE +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/README.md +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/__init__.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/__main__.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_clustered_functions.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_clustered_functions.pyi +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_container_entrypoint.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_ipython.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_location.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_object.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_output.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_partial_function.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_pty.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_resolver.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_resources.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_runtime/__init__.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_runtime/asgi.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_runtime/container_io_manager.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_runtime/container_io_manager.pyi +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_runtime/execution_context.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_runtime/execution_context.pyi +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_runtime/gpu_memory_snapshot.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_runtime/telemetry.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_runtime/user_code_imports.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_traceback.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_tunnel.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_tunnel.pyi +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_type_manager.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_utils/__init__.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_utils/app_utils.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_utils/async_utils.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_utils/blob_utils.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_utils/bytes_io_segment_payload.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_utils/deprecation.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_utils/docker_utils.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_utils/git_utils.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_utils/grpc_testing.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_utils/hash_utils.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_utils/http_utils.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_utils/jwt_utils.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_utils/logger.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_utils/mount_utils.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_utils/name_utils.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_utils/package_utils.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_utils/pattern_utils.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_utils/rand_pb_testing.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_utils/shell_utils.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_vendor/__init__.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_vendor/a2wsgi_wsgi.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_vendor/cloudpickle.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_vendor/tblib.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/_watcher.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/app.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/app.pyi +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/call_graph.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/cli/__init__.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/cli/_download.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/cli/_traceback.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/cli/app.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/cli/cluster.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/cli/config.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/cli/container.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/cli/dict.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/cli/entry_point.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/cli/environment.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/cli/import_refs.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/cli/launch.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/cli/network_file_system.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/cli/profile.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/cli/programs/__init__.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/cli/queues.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/cli/run.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/cli/secret.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/cli/token.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/cli/utils.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/cli/volume.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/client.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/cloud_bucket_mount.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/cloud_bucket_mount.pyi +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/cls.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/cls.pyi +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/container_process.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/container_process.pyi +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/dict.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/dict.pyi +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/environments.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/environments.pyi +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/exception.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/experimental/__init__.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/experimental/ipython.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/file_io.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/file_io.pyi +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/file_pattern_matcher.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/functions.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/functions.pyi +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/gpu.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/image.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/image.pyi +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/io_streams.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/io_streams.pyi +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/mount.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/mount.pyi +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/network_file_system.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/network_file_system.pyi +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/object.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/object.pyi +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/output.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/parallel_map.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/parallel_map.pyi +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/partial_function.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/partial_function.pyi +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/proxy.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/proxy.pyi +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/py.typed +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/queue.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/queue.pyi +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/requirements/2023.12.312.txt +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/requirements/2023.12.txt +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/requirements/2024.04.txt +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/requirements/2024.10.txt +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/requirements/PREVIEW.txt +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/requirements/README.md +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/requirements/base-images.json +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/retries.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/runner.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/runner.pyi +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/running_app.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/sandbox.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/sandbox.pyi +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/schedule.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/scheduler_placement.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/secret.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/secret.pyi +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/serving.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/serving.pyi +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/snapshot.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/snapshot.pyi +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/stream_type.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/token_flow.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/token_flow.pyi +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/volume.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal/volume.pyi +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal.egg-info/SOURCES.txt +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal.egg-info/dependency_links.txt +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal.egg-info/entry_points.txt +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal.egg-info/requires.txt +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal.egg-info/top_level.txt +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal_docs/__init__.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal_docs/gen_cli_docs.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal_docs/gen_reference_docs.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal_docs/mdmd/__init__.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal_docs/mdmd/mdmd.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal_docs/mdmd/signatures.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal_proto/__init__.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal_proto/api.proto +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal_proto/api_grpc.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal_proto/api_pb2.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal_proto/api_pb2.pyi +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal_proto/api_pb2_grpc.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal_proto/api_pb2_grpc.pyi +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal_proto/modal_api_grpc.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal_proto/modal_options_grpc.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal_proto/options.proto +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal_proto/options_grpc.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal_proto/options_pb2.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal_proto/options_pb2.pyi +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal_proto/options_pb2_grpc.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal_proto/options_pb2_grpc.pyi +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal_proto/py.typed +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/modal_version/__main__.py +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/pyproject.toml +0 -0
- {modal-1.0.0.dev7 → modal-1.0.0.dev10}/setup.cfg +0 -0
@@ -71,7 +71,7 @@ from .exception import (
|
|
71
71
|
)
|
72
72
|
from .gpu import GPU_T, parse_gpu_config
|
73
73
|
from .image import _Image
|
74
|
-
from .mount import _get_client_mount, _Mount
|
74
|
+
from .mount import _get_client_mount, _Mount
|
75
75
|
from .network_file_system import _NetworkFileSystem, network_file_system_mount_protos
|
76
76
|
from .output import _get_output_manager
|
77
77
|
from .parallel_map import (
|
@@ -581,30 +581,6 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
|
|
581
581
|
*entrypoint_mounts.values(),
|
582
582
|
]
|
583
583
|
|
584
|
-
if include_source_mode is IncludeSourceMode.INCLUDE_FIRST_PARTY and is_local():
|
585
|
-
auto_mounts = get_sys_modules_mounts()
|
586
|
-
# don't need to add entrypoint modules to automounts:
|
587
|
-
for entrypoint_module in entrypoint_mounts:
|
588
|
-
auto_mounts.pop(entrypoint_module, None)
|
589
|
-
|
590
|
-
warn_missing_modules = set(auto_mounts.keys()) - image._added_python_source_set
|
591
|
-
|
592
|
-
if warn_missing_modules:
|
593
|
-
python_stringified_modules = ", ".join(f'"{mod}"' for mod in sorted(warn_missing_modules))
|
594
|
-
deprecation_warning(
|
595
|
-
(2025, 2, 3),
|
596
|
-
(
|
597
|
-
'Modal will stop implicitly adding local Python modules to the Image ("automounting") in a '
|
598
|
-
"future update. The following modules need to be explicitly added for future "
|
599
|
-
"compatibility:\n"
|
600
|
-
)
|
601
|
-
+ "\n".join(sorted([f"* {m}" for m in warn_missing_modules]))
|
602
|
-
+ "\n\n"
|
603
|
-
+ (f"e.g.:\nimage_with_source = my_image.add_local_python_source({python_stringified_modules})\n\n")
|
604
|
-
+ "For more information, see https://modal.com/docs/guide/modal-1-0-migration",
|
605
|
-
)
|
606
|
-
all_mounts += auto_mounts.values()
|
607
|
-
|
608
584
|
retry_policy = _parse_retries(
|
609
585
|
retries, f"Function '{info.get_tag()}'" if info.raw_f else f"Class '{info.get_tag()}'"
|
610
586
|
)
|
@@ -324,8 +324,8 @@ def _deserialize_asgi(asgi: api_pb2.Asgi) -> Any:
|
|
324
324
|
elif msg_type == "websocket_send":
|
325
325
|
return {
|
326
326
|
"type": "websocket.send",
|
327
|
-
"bytes": asgi.websocket_send.bytes if asgi.websocket_send.HasField("bytes") else
|
328
|
-
"text": asgi.websocket_send.text if asgi.websocket_send.HasField("text") else
|
327
|
+
**({"bytes": asgi.websocket_send.bytes} if asgi.websocket_send.HasField("bytes") else {}),
|
328
|
+
**({"text": asgi.websocket_send.text} if asgi.websocket_send.HasField("text") else {}),
|
329
329
|
}
|
330
330
|
elif msg_type == "websocket_disconnect":
|
331
331
|
return {
|
@@ -23,7 +23,7 @@ from .._serialization import (
|
|
23
23
|
signature_to_parameter_specs,
|
24
24
|
)
|
25
25
|
from .._traceback import append_modal_tb
|
26
|
-
from ..config import
|
26
|
+
from ..config import logger
|
27
27
|
from ..exception import (
|
28
28
|
DeserializationError,
|
29
29
|
ExecutionError,
|
@@ -627,8 +627,7 @@ class FunctionCreationStatus:
|
|
627
627
|
|
628
628
|
class IncludeSourceMode(enum.Enum):
|
629
629
|
INCLUDE_NOTHING = False # can only be set in source, can't be set in config
|
630
|
-
INCLUDE_MAIN_PACKAGE = True #
|
631
|
-
INCLUDE_FIRST_PARTY = "legacy" # mounts all "local" modules in sys.modules - represented by AUTOMOUNT=1 in config
|
630
|
+
INCLUDE_MAIN_PACKAGE = True # Default behavior
|
632
631
|
|
633
632
|
|
634
633
|
def get_include_source_mode(function_or_app_specific) -> IncludeSourceMode:
|
@@ -650,6 +649,4 @@ def get_include_source_mode(function_or_app_specific) -> IncludeSourceMode:
|
|
650
649
|
# explicitly set in app/function
|
651
650
|
return IncludeSourceMode(function_or_app_specific)
|
652
651
|
|
653
|
-
|
654
|
-
legacy_automount_mode: bool = config.get("automount")
|
655
|
-
return IncludeSourceMode.INCLUDE_FIRST_PARTY if legacy_automount_mode else IncludeSourceMode.INCLUDE_MAIN_PACKAGE
|
652
|
+
return IncludeSourceMode.INCLUDE_MAIN_PACKAGE
|
@@ -148,15 +148,20 @@ def create_channel(
|
|
148
148
|
|
149
149
|
logger.debug(f"Sending request to {event.method_name}")
|
150
150
|
|
151
|
-
async def
|
151
|
+
async def recv_initial_metadata(initial_metadata: grpclib.events.RecvInitialMetadata) -> None:
|
152
152
|
# If we receive an auth token from the server, include it in all future requests.
|
153
153
|
# TODO(nathan): This isn't perfect because the metadata isn't propagated when the
|
154
154
|
# process is forked and a new channel is created. This is OK for now since this
|
155
155
|
# token is only used by the experimental input plane
|
156
|
+
if token := initial_metadata.metadata.get("x-modal-auth-token"):
|
157
|
+
metadata["x-modal-auth-token"] = str(token)
|
158
|
+
|
159
|
+
async def recv_trailing_metadata(trailing_metadata: grpclib.events.RecvTrailingMetadata) -> None:
|
156
160
|
if token := trailing_metadata.metadata.get("x-modal-auth-token"):
|
157
161
|
metadata["x-modal-auth-token"] = str(token)
|
158
162
|
|
159
163
|
grpclib.events.listen(channel, grpclib.events.SendRequest, send_request)
|
164
|
+
grpclib.events.listen(channel, grpclib.events.RecvInitialMetadata, recv_initial_metadata)
|
160
165
|
grpclib.events.listen(channel, grpclib.events.RecvTrailingMetadata, recv_trailing_metadata)
|
161
166
|
|
162
167
|
return channel
|
@@ -15,7 +15,7 @@ from modal import App, Image, Queue, Secret, Volume, forward
|
|
15
15
|
# Passed by `modal launch` locally via CLI, plumbed to remote runner through secrets.
|
16
16
|
args: dict[str, Any] = json.loads(os.environ.get("MODAL_LAUNCH_ARGS", "{}"))
|
17
17
|
|
18
|
-
app = App(
|
18
|
+
app = App()
|
19
19
|
|
20
20
|
image = Image.from_registry(args.get("image"), add_python=args.get("add_python")).pip_install("jupyterlab")
|
21
21
|
|
@@ -22,7 +22,7 @@ CODE_SERVER_ENTRYPOINT = (
|
|
22
22
|
FIXUD_INSTALLER = "https://github.com/boxboat/fixuid/releases/download/v0.6.0/fixuid-0.6.0-linux-$ARCH.tar.gz"
|
23
23
|
|
24
24
|
|
25
|
-
app = App(
|
25
|
+
app = App()
|
26
26
|
image = (
|
27
27
|
Image.from_registry(args.get("image"), add_python="3.11")
|
28
28
|
.apt_install("curl", "dumb-init", "git", "git-lfs")
|
@@ -31,7 +31,7 @@ class _Client:
|
|
31
31
|
server_url: str,
|
32
32
|
client_type: int,
|
33
33
|
credentials: typing.Optional[tuple[str, str]],
|
34
|
-
version: str = "1.0.0.
|
34
|
+
version: str = "1.0.0.dev10",
|
35
35
|
): ...
|
36
36
|
def is_closed(self) -> bool: ...
|
37
37
|
@property
|
@@ -94,7 +94,7 @@ class Client:
|
|
94
94
|
server_url: str,
|
95
95
|
client_type: int,
|
96
96
|
credentials: typing.Optional[tuple[str, str]],
|
97
|
-
version: str = "1.0.0.
|
97
|
+
version: str = "1.0.0.dev10",
|
98
98
|
): ...
|
99
99
|
def is_closed(self) -> bool: ...
|
100
100
|
@property
|
@@ -51,10 +51,6 @@ Other possible configuration options are:
|
|
51
51
|
Defaults to 10.
|
52
52
|
Number of seconds to wait for logs to drain when closing the session,
|
53
53
|
before giving up.
|
54
|
-
* `automount` (in the .toml file) / `MODAL_AUTOMOUNT` (as an env var).
|
55
|
-
Defaults to True.
|
56
|
-
By default, Modal automatically mounts modules imported in the current scope, that
|
57
|
-
are deemed to be "local". This can be turned off by setting this to False.
|
58
54
|
* `force_build` (in the .toml file) / `MODAL_FORCE_BUILD` (as an env var).
|
59
55
|
Defaults to False.
|
60
56
|
When set, ignores the Image cache and builds all Image layers. Note that this
|
@@ -233,7 +229,6 @@ _SETTINGS = {
|
|
233
229
|
"sync_entrypoint": _Setting(),
|
234
230
|
"logs_timeout": _Setting(10, float),
|
235
231
|
"image_id": _Setting(),
|
236
|
-
"automount": _Setting(True, transform=_to_boolean),
|
237
232
|
"heartbeat_interval": _Setting(15, float),
|
238
233
|
"function_runtime": _Setting(),
|
239
234
|
"function_runtime_debug": _Setting(False, transform=_to_boolean), # For internal debugging use.
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|