Skip to content

Commit f6dca4a

Browse files
authored
Replace getter functions with properties for meta access (#256)
Signed-off-by: Anuraag Agrawal <anuraaga@gmail.com>
1 parent fa120f6 commit f6dca4a

19 files changed

Lines changed: 72 additions & 64 deletions

conformance/test/client.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -674,13 +674,13 @@ async def send_unary_request(
674674

675675
test_response.response.payloads.extend(payloads)
676676

677-
for name in meta.headers():
677+
for name in meta.headers:
678678
test_response.response.response_headers.add(
679-
name=name, value=meta.headers().getall(name)
679+
name=name, value=meta.headers.getall(name)
680680
)
681-
for name in meta.trailers():
681+
for name in meta.trailers:
682682
test_response.response.response_trailers.add(
683-
name=name, value=meta.trailers().getall(name)
683+
name=name, value=meta.trailers.getall(name)
684684
)
685685

686686
return test_response

conformance/test/server.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -122,22 +122,22 @@ def _send_headers(
122122
) -> None:
123123
for header in definition.response_headers:
124124
for value in header.value:
125-
ctx.response_headers().add(header.name, value)
125+
ctx.response_headers.add(header.name, value)
126126
for trailer in definition.response_trailers:
127127
for value in trailer.value:
128-
ctx.response_trailers().add(trailer.name, value)
128+
ctx.response_trailers.add(trailer.name, value)
129129

130130

131131
def _create_request_info(
132132
ctx: RequestContext, reqs: list[Any]
133133
) -> ConformancePayload.RequestInfo:
134134
request_info = ConformancePayload.RequestInfo(requests=reqs)
135-
timeout_ms = ctx.timeout_ms()
135+
timeout_ms = ctx.timeout_ms
136136
if timeout_ms is not None:
137137
request_info.timeout_ms = int(timeout_ms)
138-
for key in ctx.request_headers():
138+
for key in ctx.request_headers:
139139
request_info.request_headers.add(
140-
name=key, value=ctx.request_headers().getall(key)
140+
name=key, value=ctx.request_headers.getall(key)
141141
)
142142
return request_info
143143

connectrpc-otel/connectrpc_otel/_instrumentor.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from opentelemetry.metrics import MeterProvider
1717
from opentelemetry.trace import TracerProvider
1818

19-
_instruments = ("connectrpc>=0.9.0",)
19+
_instruments = ("connectrpc>=0.11.0",)
2020

2121
P = ParamSpec("P")
2222
R = TypeVar("R")

connectrpc-otel/connectrpc_otel/_interceptor.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -102,13 +102,13 @@ async def on_start(self, ctx: RequestContext) -> Token:
102102
def on_start_sync(self, ctx: RequestContext) -> Token:
103103
start_time = time.perf_counter()
104104

105-
rpc_method = f"{ctx.method().service_name}/{ctx.method().name}"
105+
rpc_method = f"{ctx.method.service_name}/{ctx.method.name}"
106106
shared_attrs: dict[str, AttributeValue] = {
107107
RPC_SYSTEM_NAME: RpcSystemNameValues.CONNECTRPC.value,
108108
RPC_METHOD: rpc_method,
109109
}
110110

111-
if sa := ctx.server_address():
111+
if sa := ctx.server_address:
112112
addr, port = sa.rsplit(":", 1)
113113
shared_attrs[SERVER_ADDRESS] = addr
114114
shared_attrs[SERVER_PORT] = int(port)
@@ -150,18 +150,18 @@ def _start_span(
150150
parent_otel_ctx = None
151151
if self._client:
152152
span_kind = SpanKind.CLIENT
153-
carrier = ctx.request_headers()
153+
carrier = ctx.request_headers
154154
self._propagator.inject(carrier, setter=_DEFAULT_TEXTMAP_SETTER)
155155
else:
156156
span_kind = SpanKind.SERVER
157157
parent_span = get_current_span()
158158
if not parent_span.get_span_context().is_valid:
159-
carrier = ctx.request_headers()
159+
carrier = ctx.request_headers
160160
parent_otel_ctx = self._propagator.extract(carrier)
161161

162162
attrs: dict[str, AttributeValue] = shared_attrs.copy()
163163

164-
if ca := ctx.client_address():
164+
if ca := ctx.client_address:
165165
addr, port = ca.rsplit(":", 1)
166166
attrs[CLIENT_ADDRESS] = addr
167167
attrs[CLIENT_PORT] = int(port)

connectrpc-otel/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ dev = [
6161
# have a real dependency to avoid any possible version conflicts. But for Python,
6262
# the ecosystem vastly favors auto-instrumentation, and it is easier to add than remove
6363
# a transitive dependency, so we go ahead and leave it out.
64-
"connectrpc>=0.8.0",
64+
"connectrpc>=0.11.0",
6565

6666
"connect-python-example",
6767
"pytest",

protoc-gen-connect-python/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "protoc-gen-connectrpc"
3-
version = "0.10.1"
3+
version = "0.11.0"
44
description = "Code generator for connect-python"
55
readme = "README.md"
66
requires-python = ">= 3.10"

protoc-gen-connect-python/uv.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "connectrpc"
3-
version = "0.10.1"
3+
version = "0.11.0"
44
description = "Server and client runtime library for Connect RPC"
55
readme = "README.md"
66
requires-python = ">= 3.10"

src/connectrpc/_client_async.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -283,9 +283,9 @@ async def _send_request_unary(
283283
self._send_request_bidi_stream(_yield_single_message(request), ctx)
284284
)
285285

286-
request_headers = HTTPHeaders(ctx.request_headers().allitems())
287-
url = f"{self._address}/{ctx.method().service_name}/{ctx.method().name}"
288-
if (timeout_ms := ctx.timeout_ms()) is not None:
286+
request_headers = HTTPHeaders(ctx.request_headers.allitems())
287+
url = f"{self._address}/{ctx.method.service_name}/{ctx.method.name}"
288+
if (timeout_ms := ctx.timeout_ms) is not None:
289289
timeout_s = timeout_ms / 1000.0
290290
else:
291291
timeout_s = None
@@ -295,7 +295,7 @@ async def _send_request_unary(
295295
if self._send_compression:
296296
request_data = self._send_compression.compress(request_data)
297297

298-
if ctx.http_method() == "GET":
298+
if ctx.http_method == "GET":
299299
params = _client_shared.prepare_get_params(
300300
self._codec, request_data, request_headers
301301
)
@@ -333,7 +333,7 @@ async def _send_request_unary(
333333
f"message is larger than configured max {self._read_max_bytes}",
334334
)
335335

336-
response = ctx.method().output()
336+
response = ctx.method.output()
337337
self._codec.decode(resp.content, response)
338338
return response
339339
raise ConnectWireError.from_response(resp).to_exception()
@@ -361,9 +361,9 @@ def _send_request_server_stream(
361361
async def _send_request_bidi_stream(
362362
self, request: AsyncIterator[REQ], ctx: RequestContext[REQ, RES]
363363
) -> AsyncIterator[RES]:
364-
request_headers = HTTPHeaders(ctx.request_headers().allitems())
365-
url = f"{self._address}/{ctx.method().service_name}/{ctx.method().name}"
366-
if (timeout_ms := ctx.timeout_ms()) is not None:
364+
request_headers = HTTPHeaders(ctx.request_headers.allitems())
365+
url = f"{self._address}/{ctx.method.service_name}/{ctx.method.name}"
366+
if (timeout_ms := ctx.timeout_ms) is not None:
367367
timeout_s = timeout_ms / 1000.0
368368
else:
369369
timeout_s = None
@@ -390,7 +390,7 @@ async def _send_request_bidi_stream(
390390
resp.headers, self._response_compressions, stream=True
391391
)
392392
reader = self._protocol.create_envelope_reader(
393-
ctx.method().output,
393+
ctx.method.output,
394394
self._codec,
395395
compression,
396396
self._read_max_bytes,

src/connectrpc/_client_shared.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ def maybe_map_stream_reset(
5656
case StreamErrorCode.CANCEL:
5757
# Some servers use CANCEL when deadline expires. We can't differentiate
5858
# that from normal cancel without checking our own deadline.
59-
if (t := ctx.timeout_ms()) is not None and t <= 0:
59+
if (t := ctx.timeout_ms) is not None and t <= 0:
6060
return ConnectError(Code.DEADLINE_EXCEEDED, msg)
6161
return ConnectError(Code.CANCELED, msg)
6262
case StreamErrorCode.ENHANCE_YOUR_CALM:

0 commit comments

Comments
 (0)