Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions .python-version
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
3.7.11
3.9.2
3.10.1
3.11.0
3.12.0
3.13.0
3.14.0
2,945 changes: 1,751 additions & 1,194 deletions poetry.lock

Large diffs are not rendered by default.

36 changes: 19 additions & 17 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,43 +7,45 @@ license = "Apache-2.0"
homepage = "https://github.com/public/sonora"

[tool.poetry.dependencies]
python = "^3.7"
grpcio = "^1.57.0"
urllib3 = "^1.26.4"
aiohttp = "^3.7.4"
async-timeout = ">= 3.0.1, < 5"
python = "^3.10"
grpcio = "^1.76.0"
urllib3 = "^2.6.3"
aiohttp = "^3.13.3"
async-timeout = ">=3.0.1,<5"
multidict = "^6.7.0"
frozenlist = "^1.8.0"

[tool.poetry.dev-dependencies]
grpcio-tools = "^1.57.0"
pytest = "^6.2.3"
[tool.poetry.group.dev.dependencies]
grpcio-tools = "^1.76.0"
pytest = "^9.0.2"
pytest-mockservers = "^0.6.0"
pytest-asyncio = "^0.15.1"
pytest-benchmark = "^3.4.1"
hypothesis = "^6.10.1"
hypothesis = "^6.150.2"
bjoern = "^3.2.2"
uvicorn = "^0.13.4"
aiohttp = {extras = ["speedups"], version = "^3.7.4"}
uvicorn = "^0.40.0"
aiohttp = {extras = ["speedups"], version = "^3.13.3"}
tox = "^3.23.0"
daphne = "^3.0.2"
mypy = "0.910"
daphne = "^4.2.1"
mypy = "1.19"
types-protobuf = "^3.17.4"
grpc-stubs = "^1.24.7"
black = {version = "^21.12b0", allow-prereleases = true}

[build-system]
requires = ["poetry-core>=1.0.0"]
requires = ["poetry-core>=1.7.0"]
build-backend = "poetry.core.masonry.api"

[tool.mypy]
exclude = ".*_pb2.py$|echotest.py$"
python_version = "3.10"

[[tool.mypy.overrides]]
module = [
"grpc.*",
"urllib3.*",
"uvicorn.*",
"daphne.*",
"bjoern.*"

"bjoern.*",
]
ignore_missing_imports = true
ignore_missing_imports = true
8 changes: 4 additions & 4 deletions sonora/aio.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,20 +30,20 @@ async def __aexit__(self, exception_type, exception_value, traceback):
def __await__(self):
yield self

def unary_unary(self, path, request_serializer, response_deserializer):
def unary_unary(self, path, request_serializer, response_deserializer, **kwargs):
return UnaryUnaryMulticallable(
self._session, self._url, path, request_serializer, response_deserializer
)

def unary_stream(self, path, request_serializer, response_deserializer):
def unary_stream(self, path, request_serializer, response_deserializer, **kwargs):
return UnaryStreamMulticallable(
self._session, self._url, path, request_serializer, response_deserializer
)

def stream_unary(self, path, request_serializer, response_deserializer):
def stream_unary(self, path, request_serializer, response_deserializer, **kwargs):
return sonora.client.NotImplementedMulticallable()

def stream_stream(self, path, request_serializer, response_deserializer):
def stream_stream(self, path, request_serializer, response_deserializer, **kwargs):
return sonora.client.NotImplementedMulticallable()


Expand Down
8 changes: 4 additions & 4 deletions sonora/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,20 +29,20 @@ def __enter__(self):
def __exit__(self, exception_type, exception_value, traceback):
self._session.clear()

def unary_unary(self, path, request_serializer, response_deserializer):
def unary_unary(self, path, request_serializer, response_deserializer, **kwargs):
return UnaryUnaryMulticallable(
self._session, self._url, path, request_serializer, response_deserializer
)

def unary_stream(self, path, request_serializer, response_deserializer):
def unary_stream(self, path, request_serializer, response_deserializer, **kwargs):
return UnaryStreamMulticallable(
self._session, self._url, path, request_serializer, response_deserializer
)

def stream_unary(self, path, request_serializer, response_deserializer):
def stream_unary(self, path, request_serializer, response_deserializer, **kwargs):
return NotImplementedMulticallable()

def stream_stream(self, path, request_serializer, response_deserializer):
def stream_stream(self, path, request_serializer, response_deserializer, **kwargs):
return NotImplementedMulticallable()


Expand Down
4 changes: 3 additions & 1 deletion tests/test_protocol.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,9 @@ async def receive():
assert resp_messages == messages


@given(st.floats(allow_nan=False, allow_infinity=False))
@given(
st.floats(min_value=0.0, max_value=1_000_000, allow_nan=False, allow_infinity=False)
)
def test_timeout_serdes(timeout):
ser = protocol.serialize_timeout(timeout).encode("ascii")
des = protocol.parse_timeout(ser)
Expand Down
4 changes: 2 additions & 2 deletions tox.ini
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[tox]
envlist = py37,py39,py310,black,interop
envlist = py310,py311,py312,py313,py314,black,interop
isolated_build = True

[testenv]
Expand Down Expand Up @@ -33,4 +33,4 @@ allowlist_externals=docker
commands=
docker compose up -d asgi-server
docker compose run interop-grpcweb
docker compose stop asgi-server
docker compose stop asgi-server