Skip to content

Commit b8685c8

Browse files
Use lowest-direct resolution by default (#15)
Signed-off-by: Stefan VanBuren <[email protected]> Co-authored-by: Anuraag (Rag) Agrawal <[email protected]>
1 parent 8bf7c8a commit b8685c8

24 files changed

+433
-500
lines changed

.github/workflows/ci.yaml

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ jobs:
2121
runs-on: ${{ matrix.os }}
2222
strategy:
2323
matrix:
24+
resolution: ["highest", "lowest-direct"]
2425
os:
2526
- macos-15
2627
- ubuntu-24.04
@@ -36,16 +37,23 @@ jobs:
3637
- os: ubuntu-24.04
3738
python: "3.11"
3839
coverage: "nocov"
40+
resolution: "lowest-direct"
3941
- os: ubuntu-24.04
4042
python: "3.12"
4143
coverage: "nocov"
44+
resolution: "lowest-direct"
4245
# Enable coverage on just one job
4346
- os: ubuntu-24.04
4447
python: "3.13"
4548
coverage: "cov"
49+
resolution: "lowest-direct"
4650
- os: ubuntu-24.04
4751
python: "3.14.0-rc.2"
4852
coverage: "nocov"
53+
resolution: "lowest-direct"
54+
env:
55+
# Shared env variables for all the tests
56+
UV_RESOLUTION: '${{ matrix.resolution }}'
4957

5058
steps:
5159
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
@@ -89,7 +97,8 @@ jobs:
8997

9098
- name: check running `just generate` does not create a diff
9199
# NOTE: running on macOS as our sed command only works there
92-
if: startsWith(matrix.os, 'macos-')
100+
# We expect uv.lock to change when matrix.resolution == "highest", so we don't check it there.
101+
if: ${{ startsWith(matrix.os, 'macos-') && matrix.resolution == 'lowest-direct' }}
93102
run: uv run just checkgenerate
94103

95104
- uses: codecov/codecov-action@v5

conformance/buf.gen.yaml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@ version: v2
22
inputs:
33
- module: buf.build/connectrpc/conformance:v1.0.4
44
plugins:
5-
- remote: buf.build/protocolbuffers/python:v32.0
5+
# NOTE: v26.0 is the earliest version supporting protobuf==5.
6+
- remote: buf.build/protocolbuffers/python:v26.0
67
out: test/gen
7-
- remote: buf.build/protocolbuffers/pyi:v32.0
8+
- remote: buf.build/protocolbuffers/pyi:v26.0
89
out: test/gen
910
- local:
1011
- go

conformance/pyproject.toml

Lines changed: 0 additions & 17 deletions
This file was deleted.

conformance/test/client.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,6 @@
1010

1111
import httpx
1212
from _util import create_standard_streams
13-
from connectrpc.client import ResponseMetadata
14-
from connectrpc.code import Code
15-
from connectrpc.errors import ConnectError
16-
from connectrpc.request import Headers
1713
from gen.connectrpc.conformance.v1.client_compat_pb2 import (
1814
ClientCompatRequest,
1915
ClientCompatResponse,
@@ -33,9 +29,14 @@
3329
UnaryRequest,
3430
UnimplementedRequest,
3531
)
36-
from google.protobuf.any import Any
32+
from google.protobuf.any_pb2 import Any
3733
from google.protobuf.message import Message
3834

35+
from connectrpc.client import ResponseMetadata
36+
from connectrpc.code import Code
37+
from connectrpc.errors import ConnectError
38+
from connectrpc.request import Headers
39+
3940

4041
def _convert_code(error: Code) -> ConformanceCode:
4142
match error:

conformance/test/gen/connectrpc/conformance/v1/client_compat_pb2.py

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

conformance/test/gen/connectrpc/conformance/v1/client_compat_pb2.pyi

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ from google.protobuf import struct_pb2 as _struct_pb2
66
from google.protobuf.internal import containers as _containers
77
from google.protobuf import descriptor as _descriptor
88
from google.protobuf import message as _message
9-
from collections.abc import Iterable as _Iterable, Mapping as _Mapping
10-
from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union
9+
from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union
1110

1211
DESCRIPTOR: _descriptor.FileDescriptor
1312

@@ -62,7 +61,7 @@ class ClientCompatRequest(_message.Message):
6261
request_delay_ms: int
6362
cancel: ClientCompatRequest.Cancel
6463
raw_request: _service_pb2.RawHTTPRequest
65-
def __init__(self, test_name: _Optional[str] = ..., http_version: _Optional[_Union[_config_pb2.HTTPVersion, str]] = ..., protocol: _Optional[_Union[_config_pb2.Protocol, str]] = ..., codec: _Optional[_Union[_config_pb2.Codec, str]] = ..., compression: _Optional[_Union[_config_pb2.Compression, str]] = ..., host: _Optional[str] = ..., port: _Optional[int] = ..., server_tls_cert: _Optional[bytes] = ..., client_tls_creds: _Optional[_Union[_config_pb2.TLSCreds, _Mapping]] = ..., message_receive_limit: _Optional[int] = ..., service: _Optional[str] = ..., method: _Optional[str] = ..., stream_type: _Optional[_Union[_config_pb2.StreamType, str]] = ..., use_get_http_method: _Optional[bool] = ..., request_headers: _Optional[_Iterable[_Union[_service_pb2.Header, _Mapping]]] = ..., request_messages: _Optional[_Iterable[_Union[_any_pb2.Any, _Mapping]]] = ..., timeout_ms: _Optional[int] = ..., request_delay_ms: _Optional[int] = ..., cancel: _Optional[_Union[ClientCompatRequest.Cancel, _Mapping]] = ..., raw_request: _Optional[_Union[_service_pb2.RawHTTPRequest, _Mapping]] = ...) -> None: ...
64+
def __init__(self, test_name: _Optional[str] = ..., http_version: _Optional[_Union[_config_pb2.HTTPVersion, str]] = ..., protocol: _Optional[_Union[_config_pb2.Protocol, str]] = ..., codec: _Optional[_Union[_config_pb2.Codec, str]] = ..., compression: _Optional[_Union[_config_pb2.Compression, str]] = ..., host: _Optional[str] = ..., port: _Optional[int] = ..., server_tls_cert: _Optional[bytes] = ..., client_tls_creds: _Optional[_Union[_config_pb2.TLSCreds, _Mapping]] = ..., message_receive_limit: _Optional[int] = ..., service: _Optional[str] = ..., method: _Optional[str] = ..., stream_type: _Optional[_Union[_config_pb2.StreamType, str]] = ..., use_get_http_method: bool = ..., request_headers: _Optional[_Iterable[_Union[_service_pb2.Header, _Mapping]]] = ..., request_messages: _Optional[_Iterable[_Union[_any_pb2.Any, _Mapping]]] = ..., timeout_ms: _Optional[int] = ..., request_delay_ms: _Optional[int] = ..., cancel: _Optional[_Union[ClientCompatRequest.Cancel, _Mapping]] = ..., raw_request: _Optional[_Union[_service_pb2.RawHTTPRequest, _Mapping]] = ...) -> None: ...
6665

6766
class ClientCompatResponse(_message.Message):
6867
__slots__ = ("test_name", "response", "error")

conformance/test/gen/connectrpc/conformance/v1/config_pb2.py

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

conformance/test/gen/connectrpc/conformance/v1/config_pb2.pyi

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ from google.protobuf.internal import containers as _containers
22
from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
33
from google.protobuf import descriptor as _descriptor
44
from google.protobuf import message as _message
5-
from collections.abc import Iterable as _Iterable, Mapping as _Mapping
6-
from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union
5+
from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union
76

87
DESCRIPTOR: _descriptor.FileDescriptor
98

@@ -145,7 +144,7 @@ class Features(_message.Message):
145144
supports_half_duplex_bidi_over_http1: bool
146145
supports_connect_get: bool
147146
supports_message_receive_limit: bool
148-
def __init__(self, versions: _Optional[_Iterable[_Union[HTTPVersion, str]]] = ..., protocols: _Optional[_Iterable[_Union[Protocol, str]]] = ..., codecs: _Optional[_Iterable[_Union[Codec, str]]] = ..., compressions: _Optional[_Iterable[_Union[Compression, str]]] = ..., stream_types: _Optional[_Iterable[_Union[StreamType, str]]] = ..., supports_h2c: _Optional[bool] = ..., supports_tls: _Optional[bool] = ..., supports_tls_client_certs: _Optional[bool] = ..., supports_trailers: _Optional[bool] = ..., supports_half_duplex_bidi_over_http1: _Optional[bool] = ..., supports_connect_get: _Optional[bool] = ..., supports_message_receive_limit: _Optional[bool] = ...) -> None: ...
147+
def __init__(self, versions: _Optional[_Iterable[_Union[HTTPVersion, str]]] = ..., protocols: _Optional[_Iterable[_Union[Protocol, str]]] = ..., codecs: _Optional[_Iterable[_Union[Codec, str]]] = ..., compressions: _Optional[_Iterable[_Union[Compression, str]]] = ..., stream_types: _Optional[_Iterable[_Union[StreamType, str]]] = ..., supports_h2c: bool = ..., supports_tls: bool = ..., supports_tls_client_certs: bool = ..., supports_trailers: bool = ..., supports_half_duplex_bidi_over_http1: bool = ..., supports_connect_get: bool = ..., supports_message_receive_limit: bool = ...) -> None: ...
149148

150149
class ConfigCase(_message.Message):
151150
__slots__ = ("version", "protocol", "codec", "compression", "stream_type", "use_tls", "use_tls_client_certs", "use_message_receive_limit")
@@ -165,7 +164,7 @@ class ConfigCase(_message.Message):
165164
use_tls: bool
166165
use_tls_client_certs: bool
167166
use_message_receive_limit: bool
168-
def __init__(self, version: _Optional[_Union[HTTPVersion, str]] = ..., protocol: _Optional[_Union[Protocol, str]] = ..., codec: _Optional[_Union[Codec, str]] = ..., compression: _Optional[_Union[Compression, str]] = ..., stream_type: _Optional[_Union[StreamType, str]] = ..., use_tls: _Optional[bool] = ..., use_tls_client_certs: _Optional[bool] = ..., use_message_receive_limit: _Optional[bool] = ...) -> None: ...
167+
def __init__(self, version: _Optional[_Union[HTTPVersion, str]] = ..., protocol: _Optional[_Union[Protocol, str]] = ..., codec: _Optional[_Union[Codec, str]] = ..., compression: _Optional[_Union[Compression, str]] = ..., stream_type: _Optional[_Union[StreamType, str]] = ..., use_tls: bool = ..., use_tls_client_certs: bool = ..., use_message_receive_limit: bool = ...) -> None: ...
169168

170169
class TLSCreds(_message.Message):
171170
__slots__ = ("cert", "key")

conformance/test/gen/connectrpc/conformance/v1/server_compat_pb2.py

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

conformance/test/gen/connectrpc/conformance/v1/server_compat_pb2.pyi

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
from gen.connectrpc.conformance.v1 import config_pb2 as _config_pb2
22
from google.protobuf import descriptor as _descriptor
33
from google.protobuf import message as _message
4-
from collections.abc import Mapping as _Mapping
5-
from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union
4+
from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Optional, Union as _Union
65

76
DESCRIPTOR: _descriptor.FileDescriptor
87

@@ -20,7 +19,7 @@ class ServerCompatRequest(_message.Message):
2019
client_tls_cert: bytes
2120
message_receive_limit: int
2221
server_creds: _config_pb2.TLSCreds
23-
def __init__(self, protocol: _Optional[_Union[_config_pb2.Protocol, str]] = ..., http_version: _Optional[_Union[_config_pb2.HTTPVersion, str]] = ..., use_tls: _Optional[bool] = ..., client_tls_cert: _Optional[bytes] = ..., message_receive_limit: _Optional[int] = ..., server_creds: _Optional[_Union[_config_pb2.TLSCreds, _Mapping]] = ...) -> None: ...
22+
def __init__(self, protocol: _Optional[_Union[_config_pb2.Protocol, str]] = ..., http_version: _Optional[_Union[_config_pb2.HTTPVersion, str]] = ..., use_tls: bool = ..., client_tls_cert: _Optional[bytes] = ..., message_receive_limit: _Optional[int] = ..., server_creds: _Optional[_Union[_config_pb2.TLSCreds, _Mapping]] = ...) -> None: ...
2423

2524
class ServerCompatResponse(_message.Message):
2625
__slots__ = ("host", "port", "pem_cert")

0 commit comments

Comments
 (0)