Skip to content

Commit 3e0af65

Browse files
committed
Ensure we can support a not-just-int enum variant later
1 parent 5b631e4 commit 3e0af65

1 file changed

Lines changed: 30 additions & 6 deletions

File tree

temporalio/service.py

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from collections.abc import Mapping
1212
from dataclasses import dataclass, field
1313
from datetime import timedelta
14-
from enum import Enum, IntEnum
14+
from enum import IntEnum
1515
from typing import ClassVar, TypeVar
1616

1717
import google.protobuf.message
@@ -158,15 +158,39 @@ def _to_bridge_config(
158158
DnsLoadBalancingConfig.default = DnsLoadBalancingConfig()
159159

160160

161-
class GrpcCompression(Enum):
162-
"""Transport-level gRPC compression mode."""
161+
class GrpcCompression(ABC):
162+
"""Transport-level gRPC compression mode.
163163
164-
NONE = "none"
164+
This is a base type for concrete compression modes. Current modes are
165+
available as singleton constants on this class.
166+
"""
167+
168+
NONE: ClassVar[GrpcCompression]
165169
"""Do not compress gRPC requests or advertise support for compressed responses."""
166170

167-
GZIP = "gzip"
171+
GZIP: ClassVar[GrpcCompression]
168172
"""Gzip-compress gRPC requests and accept gzip-compressed responses."""
169173

174+
@abstractmethod
175+
def _to_bridge_config(self) -> str:
176+
raise NotImplementedError
177+
178+
179+
@dataclass(frozen=True)
180+
class _NoGrpcCompression(GrpcCompression):
181+
def _to_bridge_config(self) -> str:
182+
return "none"
183+
184+
185+
@dataclass(frozen=True)
186+
class _GzipGrpcCompression(GrpcCompression):
187+
def _to_bridge_config(self) -> str:
188+
return "gzip"
189+
190+
191+
GrpcCompression.NONE = _NoGrpcCompression()
192+
GrpcCompression.GZIP = _GzipGrpcCompression()
193+
170194

171195
@dataclass
172196
class ConnectConfig:
@@ -246,7 +270,7 @@ def _to_bridge_config(self) -> temporalio.bridge.client.ClientConfig:
246270
if self.dns_load_balancing_config
247271
else None
248272
),
249-
grpc_compression=self.grpc_compression.value,
273+
grpc_compression=self.grpc_compression._to_bridge_config(),
250274
)
251275

252276

0 commit comments

Comments
 (0)