modal 1.1.5.dev57__tar.gz → 1.1.5.dev59__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.1.5.dev57 → modal-1.1.5.dev59}/PKG-INFO +1 -1
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_output.py +14 -4
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/client.pyi +2 -2
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal.egg-info/PKG-INFO +1 -1
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal_version/__init__.py +1 -1
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/pyproject.toml +16 -2
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/LICENSE +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/README.md +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/__init__.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/__main__.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_clustered_functions.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_clustered_functions.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_container_entrypoint.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_functions.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_ipython.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_location.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_object.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_partial_function.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_pty.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_resolver.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_resources.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_runtime/__init__.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_runtime/asgi.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_runtime/container_io_manager.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_runtime/container_io_manager.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_runtime/execution_context.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_runtime/execution_context.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_runtime/gpu_memory_snapshot.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_runtime/telemetry.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_runtime/user_code_imports.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_serialization.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_traceback.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_tunnel.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_tunnel.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_type_manager.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_utils/__init__.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_utils/app_utils.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_utils/async_utils.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_utils/auth_token_manager.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_utils/blob_utils.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_utils/bytes_io_segment_payload.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_utils/deprecation.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_utils/docker_utils.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_utils/function_utils.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_utils/git_utils.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_utils/grpc_testing.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_utils/grpc_utils.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_utils/hash_utils.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_utils/http_utils.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_utils/jwt_utils.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_utils/logger.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_utils/mount_utils.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_utils/name_utils.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_utils/package_utils.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_utils/pattern_utils.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_utils/rand_pb_testing.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_utils/shell_utils.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_utils/time_utils.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_vendor/__init__.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_vendor/a2wsgi_wsgi.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_vendor/cloudpickle.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_vendor/tblib.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/_watcher.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/app.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/app.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/builder/2023.12.312.txt +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/builder/2023.12.txt +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/builder/2024.04.txt +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/builder/2024.10.txt +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/builder/2025.06.txt +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/builder/PREVIEW.txt +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/builder/README.md +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/builder/base-images.json +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/call_graph.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/cli/__init__.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/cli/_download.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/cli/_traceback.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/cli/app.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/cli/cluster.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/cli/config.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/cli/container.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/cli/dict.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/cli/entry_point.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/cli/environment.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/cli/import_refs.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/cli/launch.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/cli/network_file_system.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/cli/profile.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/cli/programs/__init__.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/cli/programs/launch_instance_ssh.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/cli/programs/run_jupyter.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/cli/programs/run_marimo.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/cli/programs/vscode.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/cli/queues.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/cli/run.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/cli/secret.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/cli/token.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/cli/utils.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/cli/volume.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/client.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/cloud_bucket_mount.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/cloud_bucket_mount.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/cls.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/cls.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/config.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/container_process.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/container_process.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/dict.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/dict.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/environments.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/environments.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/exception.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/experimental/__init__.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/experimental/flash.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/experimental/flash.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/experimental/ipython.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/file_io.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/file_io.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/file_pattern_matcher.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/functions.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/functions.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/gpu.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/image.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/image.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/io_streams.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/io_streams.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/mount.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/mount.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/network_file_system.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/network_file_system.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/object.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/object.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/output.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/parallel_map.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/parallel_map.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/partial_function.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/partial_function.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/proxy.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/proxy.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/py.typed +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/queue.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/queue.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/retries.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/runner.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/runner.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/running_app.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/sandbox.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/sandbox.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/schedule.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/scheduler_placement.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/secret.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/secret.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/serving.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/serving.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/snapshot.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/snapshot.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/stream_type.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/token_flow.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/token_flow.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/volume.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal/volume.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal.egg-info/SOURCES.txt +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal.egg-info/dependency_links.txt +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal.egg-info/entry_points.txt +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal.egg-info/requires.txt +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal.egg-info/top_level.txt +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal_docs/__init__.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal_docs/gen_cli_docs.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal_docs/gen_reference_docs.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal_docs/mdmd/__init__.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal_docs/mdmd/mdmd.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal_docs/mdmd/signatures.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal_proto/__init__.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal_proto/api.proto +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal_proto/api_grpc.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal_proto/api_pb2.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal_proto/api_pb2.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal_proto/api_pb2_grpc.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal_proto/api_pb2_grpc.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal_proto/modal_api_grpc.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal_proto/modal_options_grpc.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal_proto/options.proto +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal_proto/options_grpc.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal_proto/options_pb2.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal_proto/options_pb2.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal_proto/options_pb2_grpc.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal_proto/options_pb2_grpc.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal_proto/py.typed +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal_proto/sandbox_router.proto +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal_proto/sandbox_router_grpc.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal_proto/sandbox_router_pb2.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal_proto/sandbox_router_pb2.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal_proto/sandbox_router_pb2_grpc.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal_proto/sandbox_router_pb2_grpc.pyi +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/modal_version/__main__.py +0 -0
- {modal-1.1.5.dev57 → modal-1.1.5.dev59}/setup.cfg +0 -0
|
@@ -552,14 +552,22 @@ async def get_app_logs_loop(
|
|
|
552
552
|
pty_shell_stdout = None
|
|
553
553
|
pty_shell_finish_event: asyncio.Event | None = None
|
|
554
554
|
pty_shell_task_id: str | None = None
|
|
555
|
+
pty_shell_input_task: asyncio.Task | None = None
|
|
555
556
|
|
|
556
557
|
async def stop_pty_shell():
|
|
557
|
-
nonlocal pty_shell_finish_event
|
|
558
|
+
nonlocal pty_shell_finish_event, pty_shell_input_task
|
|
558
559
|
if pty_shell_finish_event:
|
|
559
560
|
print("\r", end="") # move cursor to beginning of line
|
|
560
561
|
pty_shell_finish_event.set()
|
|
561
562
|
pty_shell_finish_event = None
|
|
562
|
-
|
|
563
|
+
|
|
564
|
+
if pty_shell_input_task:
|
|
565
|
+
try:
|
|
566
|
+
await pty_shell_input_task
|
|
567
|
+
except Exception as exc:
|
|
568
|
+
logger.exception(f"Exception in PTY shell input task: {exc}")
|
|
569
|
+
finally:
|
|
570
|
+
pty_shell_input_task = None
|
|
563
571
|
|
|
564
572
|
async def _put_log(log_batch: api_pb2.TaskLogsBatch, log: api_pb2.TaskLogs):
|
|
565
573
|
if log.task_state:
|
|
@@ -587,7 +595,7 @@ async def get_app_logs_loop(
|
|
|
587
595
|
|
|
588
596
|
async def _get_logs():
|
|
589
597
|
nonlocal last_log_batch_entry_id
|
|
590
|
-
nonlocal pty_shell_stdout, pty_shell_finish_event, pty_shell_task_id
|
|
598
|
+
nonlocal pty_shell_stdout, pty_shell_finish_event, pty_shell_task_id, pty_shell_input_task
|
|
591
599
|
|
|
592
600
|
request = api_pb2.AppGetLogsRequest(
|
|
593
601
|
app_id=app_id or "",
|
|
@@ -622,7 +630,9 @@ async def get_app_logs_loop(
|
|
|
622
630
|
pty_shell_finish_event = asyncio.Event()
|
|
623
631
|
pty_shell_task_id = log_batch.task_id
|
|
624
632
|
output_mgr.disable()
|
|
625
|
-
asyncio.create_task(
|
|
633
|
+
pty_shell_input_task = asyncio.create_task(
|
|
634
|
+
stream_pty_shell_input(client, log_batch.pty_exec_id, pty_shell_finish_event)
|
|
635
|
+
)
|
|
626
636
|
else:
|
|
627
637
|
for log in log_batch.items:
|
|
628
638
|
await _put_log(log_batch, log)
|
|
@@ -33,7 +33,7 @@ class _Client:
|
|
|
33
33
|
server_url: str,
|
|
34
34
|
client_type: int,
|
|
35
35
|
credentials: typing.Optional[tuple[str, str]],
|
|
36
|
-
version: str = "1.1.5.
|
|
36
|
+
version: str = "1.1.5.dev59",
|
|
37
37
|
):
|
|
38
38
|
"""mdmd:hidden
|
|
39
39
|
The Modal client object is not intended to be instantiated directly by users.
|
|
@@ -164,7 +164,7 @@ class Client:
|
|
|
164
164
|
server_url: str,
|
|
165
165
|
client_type: int,
|
|
166
166
|
credentials: typing.Optional[tuple[str, str]],
|
|
167
|
-
version: str = "1.1.5.
|
|
167
|
+
version: str = "1.1.5.dev59",
|
|
168
168
|
):
|
|
169
169
|
"""mdmd:hidden
|
|
170
170
|
The Modal client object is not intended to be instantiated directly by users.
|
|
@@ -98,8 +98,19 @@ exclude = [
|
|
|
98
98
|
'modal/_vendor',
|
|
99
99
|
]
|
|
100
100
|
line-length = 120
|
|
101
|
-
|
|
102
|
-
lint
|
|
101
|
+
|
|
102
|
+
[tool.ruff.lint]
|
|
103
|
+
ignore = ['E741', 'F841']
|
|
104
|
+
select = [
|
|
105
|
+
'E',
|
|
106
|
+
'F',
|
|
107
|
+
'W',
|
|
108
|
+
'I',
|
|
109
|
+
'RUF006', # asyncio-dangling-task
|
|
110
|
+
]
|
|
111
|
+
preview = true
|
|
112
|
+
explicit-preview-rules = true
|
|
113
|
+
extend-select = ['PLR1702']
|
|
103
114
|
|
|
104
115
|
[tool.ruff.lint.per-file-ignores]
|
|
105
116
|
"*_test.py" = ['E712']
|
|
@@ -115,6 +126,9 @@ known-first-party = [
|
|
|
115
126
|
]
|
|
116
127
|
extra-standard-library = ["pytest"]
|
|
117
128
|
|
|
129
|
+
[tool.ruff.lint.pylint]
|
|
130
|
+
max-nested-blocks = 7
|
|
131
|
+
|
|
118
132
|
[tool.pyright]
|
|
119
133
|
reportUnnecessaryComparison = true
|
|
120
134
|
venvPath = ".venv/"
|
|
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
|
|
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
|