grpc-server-kit 0.1.1__tar.gz → 0.2.0__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.
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/CHANGELOG.md +11 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/PKG-INFO +1 -1
- grpc_server_kit-0.2.0/grpc_server_kit/__version__.py +1 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/settings.py +13 -0
- grpc_server_kit-0.1.1/grpc_server_kit/__version__.py +0 -1
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/.gitignore +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/LICENSE +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/README.md +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/__init__.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/__init__.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/app.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/builder.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/dishka/__init__.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/dishka/bundle.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/dishka/interceptors.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/dishka/metrics.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/dishka/observability.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/dishka/server.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/health/__init__.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/health/cache.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/health/checkers/__init__.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/health/checkers/postgres.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/health/checkers/redis.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/health/checkers/utils.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/health/orchestrator.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/health/protocols.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/health/servicer.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/interceptors/__init__.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/interceptors/base.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/interceptors/context.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/interceptors/exception_handler.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/interceptors/metadata.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/interceptors/metrics.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/interceptors/protocols.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/interceptors/request_logger.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/interceptors/sentry.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/interceptors/tracing.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/observability/__init__.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/observability/tracing.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/runtime.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/server.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/config.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/constants.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/credentials.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/dishka/__init__.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/dishka/settings.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/interceptors/__init__.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/interceptors/constants.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/interceptors/utils.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/observability/__init__.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/observability/metrics.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/observability/naming.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/observability/protocols.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/observability/sentry.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/options.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/protocols.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/py.typed +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/server.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/signals.py +0 -0
- {grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/pyproject.toml +0 -0
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.2.0](https://github.com/bedrock-python/grpc-server-kit/compare/grpc-server-kit-v0.1.1...grpc-server-kit-v0.2.0) (2026-09-14)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### ⚠ BREAKING CHANGES
|
|
7
|
+
|
|
8
|
+
* `BaseGrpcServerSettings(port=0)` now raises `ValidationError`; pass `allow_ephemeral_port=True` (or `GRPC__ALLOW_EPHEMERAL_PORT=true`) to bind an ephemeral port on purpose.
|
|
9
|
+
|
|
10
|
+
### Features
|
|
11
|
+
|
|
12
|
+
* BaseGrpcServerSettings rejects port=0 unless allow_ephemeral_port=True ([4a450e4](https://github.com/bedrock-python/grpc-server-kit/commit/4a450e4dbc7ffe0a7d5fd107e9b2d0e7e2c2d279)), closes [#24](https://github.com/bedrock-python/grpc-server-kit/issues/24)
|
|
13
|
+
|
|
3
14
|
## [0.1.1](https://github.com/bedrock-python/grpc-server-kit/compare/grpc-server-kit-v0.1.0...grpc-server-kit-v0.1.1) (2026-09-06)
|
|
4
15
|
|
|
5
16
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: grpc-server-kit
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: Batteries-optional async gRPC server toolkit (app facade, builder, TLS, lifecycle, health, streaming-aware interceptors, observability)
|
|
5
5
|
Project-URL: Repository, https://github.com/bedrock-python/grpc-server-kit
|
|
6
6
|
Project-URL: Documentation, https://bedrock-python.github.io/grpc-server-kit/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.2.0"
|
|
@@ -62,6 +62,10 @@ class BaseGrpcServerSettings(BaseModel):
|
|
|
62
62
|
# Basic
|
|
63
63
|
host: str = Field(default=DEFAULT_HOST, min_length=1, description="gRPC server host")
|
|
64
64
|
port: int = Field(default=DEFAULT_PORT, ge=0, le=65535, description="gRPC server port (0 = ephemeral)")
|
|
65
|
+
allow_ephemeral_port: bool = Field(
|
|
66
|
+
default=False,
|
|
67
|
+
description="Accept port=0 (ephemeral); off by default, a Service targeting a fixed port cannot reach one",
|
|
68
|
+
)
|
|
65
69
|
|
|
66
70
|
# TLS/SSL settings
|
|
67
71
|
ssl_enabled: bool = Field(default=False, description="Enable TLS/SSL")
|
|
@@ -135,6 +139,15 @@ class BaseGrpcServerSettings(BaseModel):
|
|
|
135
139
|
# Health (consumed by GrpcApp.enable_health as its defaults)
|
|
136
140
|
health: BaseHealthSettings = Field(default_factory=BaseHealthSettings, description="Health check configuration")
|
|
137
141
|
|
|
142
|
+
@model_validator(mode="after")
|
|
143
|
+
def _validate_port(self) -> "BaseGrpcServerSettings":
|
|
144
|
+
if self.port == 0 and not self.allow_ephemeral_port:
|
|
145
|
+
raise ValueError(
|
|
146
|
+
"gRPC port=0 binds an ephemeral port and a Service targeting a fixed port will not reach this "
|
|
147
|
+
"process; set allow_ephemeral_port=True if that is intended"
|
|
148
|
+
)
|
|
149
|
+
return self
|
|
150
|
+
|
|
138
151
|
@model_validator(mode="after")
|
|
139
152
|
def _validate_ssl(self) -> "BaseGrpcServerSettings":
|
|
140
153
|
if self.ssl_enabled:
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.1.1"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/health/checkers/__init__.py
RENAMED
|
File without changes
|
{grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/health/checkers/postgres.py
RENAMED
|
File without changes
|
{grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/health/checkers/redis.py
RENAMED
|
File without changes
|
{grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/health/checkers/utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/interceptors/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/interceptors/metadata.py
RENAMED
|
File without changes
|
|
File without changes
|
{grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/interceptors/protocols.py
RENAMED
|
File without changes
|
{grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/interceptors/request_logger.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/observability/__init__.py
RENAMED
|
File without changes
|
{grpc_server_kit-0.1.1 → grpc_server_kit-0.2.0}/grpc_server_kit/aio/observability/tracing.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|