modal 1.1.5.dev45__py3-none-any.whl → 1.1.5.dev47__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 modal might be problematic. Click here for more details.

modal_proto/api_pb2.pyi CHANGED
@@ -8590,6 +8590,7 @@ class Sandbox(google.protobuf.message.Message):
8590
8590
  EXPERIMENTAL_OPTIONS_FIELD_NUMBER: builtins.int
8591
8591
  PRELOAD_PATH_PREFIXES_FIELD_NUMBER: builtins.int
8592
8592
  IDLE_TIMEOUT_SECS_FIELD_NUMBER: builtins.int
8593
+ DIRECT_SANDBOX_COMMANDS_ENABLED_FIELD_NUMBER: builtins.int
8593
8594
  @property
8594
8595
  def entrypoint_args(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
8595
8596
  @property
@@ -8656,6 +8657,11 @@ class Sandbox(google.protobuf.message.Message):
8656
8657
  """Internal use only."""
8657
8658
  idle_timeout_secs: builtins.int
8658
8659
  """Optional idle timeout in seconds. If set, the sandbox will be terminated after being idle for this duration."""
8660
+ direct_sandbox_commands_enabled: builtins.bool
8661
+ """If set, the sandbox will be created with direct sandbox commands enabled.
8662
+ Exec commands for the sandbox will be issued directly to the sandbox
8663
+ command router running on the Modal worker.
8664
+ """
8659
8665
  def __init__(
8660
8666
  self,
8661
8667
  *,
@@ -8690,9 +8696,10 @@ class Sandbox(google.protobuf.message.Message):
8690
8696
  experimental_options: collections.abc.Mapping[builtins.str, builtins.bool] | None = ...,
8691
8697
  preload_path_prefixes: collections.abc.Iterable[builtins.str] | None = ...,
8692
8698
  idle_timeout_secs: builtins.int | None = ...,
8699
+ direct_sandbox_commands_enabled: builtins.bool = ...,
8693
8700
  ) -> None: ...
8694
8701
  def HasField(self, field_name: typing_extensions.Literal["_idle_timeout_secs", b"_idle_timeout_secs", "_name", b"_name", "_proxy_id", b"_proxy_id", "_runsc_runtime_version", b"_runsc_runtime_version", "_runtime", b"_runtime", "_scheduler_placement", b"_scheduler_placement", "_snapshot_version", b"_snapshot_version", "_workdir", b"_workdir", "idle_timeout_secs", b"idle_timeout_secs", "name", b"name", "network_access", b"network_access", "open_ports", b"open_ports", "open_ports_oneof", b"open_ports_oneof", "proxy_id", b"proxy_id", "pty_info", b"pty_info", "resources", b"resources", "runsc_runtime_version", b"runsc_runtime_version", "runtime", b"runtime", "scheduler_placement", b"scheduler_placement", "snapshot_version", b"snapshot_version", "workdir", b"workdir"]) -> builtins.bool: ...
8695
- def ClearField(self, field_name: typing_extensions.Literal["_idle_timeout_secs", b"_idle_timeout_secs", "_name", b"_name", "_proxy_id", b"_proxy_id", "_runsc_runtime_version", b"_runsc_runtime_version", "_runtime", b"_runtime", "_scheduler_placement", b"_scheduler_placement", "_snapshot_version", b"_snapshot_version", "_workdir", b"_workdir", "block_network", b"block_network", "cloud_bucket_mounts", b"cloud_bucket_mounts", "cloud_provider", b"cloud_provider", "cloud_provider_str", b"cloud_provider_str", "enable_snapshot", b"enable_snapshot", "entrypoint_args", b"entrypoint_args", "experimental_options", b"experimental_options", "i6pn_enabled", b"i6pn_enabled", "idle_timeout_secs", b"idle_timeout_secs", "image_id", b"image_id", "mount_ids", b"mount_ids", "name", b"name", "network_access", b"network_access", "nfs_mounts", b"nfs_mounts", "open_ports", b"open_ports", "open_ports_oneof", b"open_ports_oneof", "preload_path_prefixes", b"preload_path_prefixes", "proxy_id", b"proxy_id", "pty_info", b"pty_info", "resources", b"resources", "runsc_runtime_version", b"runsc_runtime_version", "runtime", b"runtime", "runtime_debug", b"runtime_debug", "s3_mounts", b"s3_mounts", "scheduler_placement", b"scheduler_placement", "secret_ids", b"secret_ids", "snapshot_version", b"snapshot_version", "timeout_secs", b"timeout_secs", "verbose", b"verbose", "volume_mounts", b"volume_mounts", "workdir", b"workdir", "worker_id", b"worker_id"]) -> None: ...
8702
+ def ClearField(self, field_name: typing_extensions.Literal["_idle_timeout_secs", b"_idle_timeout_secs", "_name", b"_name", "_proxy_id", b"_proxy_id", "_runsc_runtime_version", b"_runsc_runtime_version", "_runtime", b"_runtime", "_scheduler_placement", b"_scheduler_placement", "_snapshot_version", b"_snapshot_version", "_workdir", b"_workdir", "block_network", b"block_network", "cloud_bucket_mounts", b"cloud_bucket_mounts", "cloud_provider", b"cloud_provider", "cloud_provider_str", b"cloud_provider_str", "direct_sandbox_commands_enabled", b"direct_sandbox_commands_enabled", "enable_snapshot", b"enable_snapshot", "entrypoint_args", b"entrypoint_args", "experimental_options", b"experimental_options", "i6pn_enabled", b"i6pn_enabled", "idle_timeout_secs", b"idle_timeout_secs", "image_id", b"image_id", "mount_ids", b"mount_ids", "name", b"name", "network_access", b"network_access", "nfs_mounts", b"nfs_mounts", "open_ports", b"open_ports", "open_ports_oneof", b"open_ports_oneof", "preload_path_prefixes", b"preload_path_prefixes", "proxy_id", b"proxy_id", "pty_info", b"pty_info", "resources", b"resources", "runsc_runtime_version", b"runsc_runtime_version", "runtime", b"runtime", "runtime_debug", b"runtime_debug", "s3_mounts", b"s3_mounts", "scheduler_placement", b"scheduler_placement", "secret_ids", b"secret_ids", "snapshot_version", b"snapshot_version", "timeout_secs", b"timeout_secs", "verbose", b"verbose", "volume_mounts", b"volume_mounts", "workdir", b"workdir", "worker_id", b"worker_id"]) -> None: ...
8696
8703
  @typing.overload
8697
8704
  def WhichOneof(self, oneof_group: typing_extensions.Literal["_idle_timeout_secs", b"_idle_timeout_secs"]) -> typing_extensions.Literal["idle_timeout_secs"] | None: ...
8698
8705
  @typing.overload
@@ -8785,6 +8792,42 @@ class SandboxCreateResponse(google.protobuf.message.Message):
8785
8792
 
8786
8793
  global___SandboxCreateResponse = SandboxCreateResponse
8787
8794
 
8795
+ class SandboxGetCommandRouterAccessRequest(google.protobuf.message.Message):
8796
+ """Used to get a JWT and URL for direct access to a sandbox router server
8797
+ running on the modal-worker, so the client can issue exec commands (and other
8798
+ operations as they become available) directly to the worker.
8799
+ """
8800
+
8801
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
8802
+
8803
+ SANDBOX_ID_FIELD_NUMBER: builtins.int
8804
+ sandbox_id: builtins.str
8805
+ def __init__(
8806
+ self,
8807
+ *,
8808
+ sandbox_id: builtins.str = ...,
8809
+ ) -> None: ...
8810
+ def ClearField(self, field_name: typing_extensions.Literal["sandbox_id", b"sandbox_id"]) -> None: ...
8811
+
8812
+ global___SandboxGetCommandRouterAccessRequest = SandboxGetCommandRouterAccessRequest
8813
+
8814
+ class SandboxGetCommandRouterAccessResponse(google.protobuf.message.Message):
8815
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
8816
+
8817
+ JWT_FIELD_NUMBER: builtins.int
8818
+ URL_FIELD_NUMBER: builtins.int
8819
+ jwt: builtins.str
8820
+ url: builtins.str
8821
+ def __init__(
8822
+ self,
8823
+ *,
8824
+ jwt: builtins.str = ...,
8825
+ url: builtins.str = ...,
8826
+ ) -> None: ...
8827
+ def ClearField(self, field_name: typing_extensions.Literal["jwt", b"jwt", "url", b"url"]) -> None: ...
8828
+
8829
+ global___SandboxGetCommandRouterAccessResponse = SandboxGetCommandRouterAccessResponse
8830
+
8788
8831
  class SandboxGetFromNameRequest(google.protobuf.message.Message):
8789
8832
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
8790
8833
 
@@ -580,6 +580,11 @@ class ModalClientStub(object):
580
580
  request_serializer=modal__proto_dot_api__pb2.SandboxCreateConnectTokenRequest.SerializeToString,
581
581
  response_deserializer=modal__proto_dot_api__pb2.SandboxCreateConnectTokenResponse.FromString,
582
582
  )
583
+ self.SandboxGetCommandRouterAccess = channel.unary_unary(
584
+ '/modal.client.ModalClient/SandboxGetCommandRouterAccess',
585
+ request_serializer=modal__proto_dot_api__pb2.SandboxGetCommandRouterAccessRequest.SerializeToString,
586
+ response_deserializer=modal__proto_dot_api__pb2.SandboxGetCommandRouterAccessResponse.FromString,
587
+ )
583
588
  self.SandboxGetFromName = channel.unary_unary(
584
589
  '/modal.client.ModalClient/SandboxGetFromName',
585
590
  request_serializer=modal__proto_dot_api__pb2.SandboxGetFromNameRequest.SerializeToString,
@@ -1572,6 +1577,12 @@ class ModalClientServicer(object):
1572
1577
  context.set_details('Method not implemented!')
1573
1578
  raise NotImplementedError('Method not implemented!')
1574
1579
 
1580
+ def SandboxGetCommandRouterAccess(self, request, context):
1581
+ """Missing associated documentation comment in .proto file."""
1582
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
1583
+ context.set_details('Method not implemented!')
1584
+ raise NotImplementedError('Method not implemented!')
1585
+
1575
1586
  def SandboxGetFromName(self, request, context):
1576
1587
  """Missing associated documentation comment in .proto file."""
1577
1588
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
@@ -2491,6 +2502,11 @@ def add_ModalClientServicer_to_server(servicer, server):
2491
2502
  request_deserializer=modal__proto_dot_api__pb2.SandboxCreateConnectTokenRequest.FromString,
2492
2503
  response_serializer=modal__proto_dot_api__pb2.SandboxCreateConnectTokenResponse.SerializeToString,
2493
2504
  ),
2505
+ 'SandboxGetCommandRouterAccess': grpc.unary_unary_rpc_method_handler(
2506
+ servicer.SandboxGetCommandRouterAccess,
2507
+ request_deserializer=modal__proto_dot_api__pb2.SandboxGetCommandRouterAccessRequest.FromString,
2508
+ response_serializer=modal__proto_dot_api__pb2.SandboxGetCommandRouterAccessResponse.SerializeToString,
2509
+ ),
2494
2510
  'SandboxGetFromName': grpc.unary_unary_rpc_method_handler(
2495
2511
  servicer.SandboxGetFromName,
2496
2512
  request_deserializer=modal__proto_dot_api__pb2.SandboxGetFromNameRequest.FromString,
@@ -4707,6 +4723,23 @@ class ModalClient(object):
4707
4723
  options, channel_credentials,
4708
4724
  insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
4709
4725
 
4726
+ @staticmethod
4727
+ def SandboxGetCommandRouterAccess(request,
4728
+ target,
4729
+ options=(),
4730
+ channel_credentials=None,
4731
+ call_credentials=None,
4732
+ insecure=False,
4733
+ compression=None,
4734
+ wait_for_ready=None,
4735
+ timeout=None,
4736
+ metadata=None):
4737
+ return grpc.experimental.unary_unary(request, target, '/modal.client.ModalClient/SandboxGetCommandRouterAccess',
4738
+ modal__proto_dot_api__pb2.SandboxGetCommandRouterAccessRequest.SerializeToString,
4739
+ modal__proto_dot_api__pb2.SandboxGetCommandRouterAccessResponse.FromString,
4740
+ options, channel_credentials,
4741
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
4742
+
4710
4743
  @staticmethod
4711
4744
  def SandboxGetFromName(request,
4712
4745
  target,
@@ -486,6 +486,10 @@ class ModalClientStub:
486
486
  modal_proto.api_pb2.SandboxCreateConnectTokenRequest,
487
487
  modal_proto.api_pb2.SandboxCreateConnectTokenResponse,
488
488
  ]
489
+ SandboxGetCommandRouterAccess: grpc.UnaryUnaryMultiCallable[
490
+ modal_proto.api_pb2.SandboxGetCommandRouterAccessRequest,
491
+ modal_proto.api_pb2.SandboxGetCommandRouterAccessResponse,
492
+ ]
489
493
  SandboxGetFromName: grpc.UnaryUnaryMultiCallable[
490
494
  modal_proto.api_pb2.SandboxGetFromNameRequest,
491
495
  modal_proto.api_pb2.SandboxGetFromNameResponse,
@@ -1428,6 +1432,12 @@ class ModalClientServicer(metaclass=abc.ABCMeta):
1428
1432
  context: grpc.ServicerContext,
1429
1433
  ) -> modal_proto.api_pb2.SandboxCreateConnectTokenResponse: ...
1430
1434
  @abc.abstractmethod
1435
+ def SandboxGetCommandRouterAccess(
1436
+ self,
1437
+ request: modal_proto.api_pb2.SandboxGetCommandRouterAccessRequest,
1438
+ context: grpc.ServicerContext,
1439
+ ) -> modal_proto.api_pb2.SandboxGetCommandRouterAccessResponse: ...
1440
+ @abc.abstractmethod
1431
1441
  def SandboxGetFromName(
1432
1442
  self,
1433
1443
  request: modal_proto.api_pb2.SandboxGetFromNameRequest,
@@ -131,6 +131,7 @@ class ModalClientModal:
131
131
  self.QueuePut = modal.client.UnaryUnaryWrapper(grpclib_stub.QueuePut, client, server_url)
132
132
  self.SandboxCreate = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxCreate, client, server_url)
133
133
  self.SandboxCreateConnectToken = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxCreateConnectToken, client, server_url)
134
+ self.SandboxGetCommandRouterAccess = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxGetCommandRouterAccess, client, server_url)
134
135
  self.SandboxGetFromName = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxGetFromName, client, server_url)
135
136
  self.SandboxGetLogs = modal.client.UnaryStreamWrapper(grpclib_stub.SandboxGetLogs, client, server_url)
136
137
  self.SandboxGetResourceUsage = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxGetResourceUsage, client, server_url)
modal_version/__init__.py CHANGED
@@ -1,4 +1,4 @@
1
1
  # Copyright Modal Labs 2025
2
2
  """Supplies the current version of the modal client library."""
3
3
 
4
- __version__ = "1.1.5.dev45"
4
+ __version__ = "1.1.5.dev47"