Skip to content

Commit 52da892

Browse files
author
Raphael Krupinski
committed
🚨 Fix mypy issues.
1 parent 2ac4e8e commit 52da892

File tree

2 files changed

+10
-13
lines changed

2 files changed

+10
-13
lines changed

‎src/lapidary/runtime/model/op.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
from typing import Union
55

66
import httpx
7-
import pydantic.fields
87
import typing_extensions as typing
98

109
from ..response import find_type
@@ -46,20 +45,19 @@ def handle_response(self, response: httpx.Response) -> typing.Any:
4645
if typ is None:
4746
return None
4847

49-
fields = {}
48+
fields: typing.MutableMapping[str, typing.Any] = {}
5049
for field_name, field_info in typ.model_fields.items():
51-
field_info: pydantic.fields.FieldInfo
5250
handlers: Sequence[Union[ResponsePartHandler, type[ResponsePartHandler]]] = [
5351
anno
5452
for anno in field_info.metadata
5553
if isinstance(anno, ResponsePartHandler) or (inspect.isclass(anno) and issubclass(anno, ResponsePartHandler))
5654
]
5755
assert len(handlers) == 1
5856
handler = handlers[0]
59-
if inspect.isclass(handler):
60-
handler = handler()
6157
if isinstance(handler, PropertyAnnotation):
62-
handler.supply_formal(field_name, field_info.annotation)
58+
field_type = field_info.annotation
59+
assert field_type
60+
handler.supply_formal(field_name, field_type)
6361
handler.apply(fields, response)
6462
obj = typ.parse_obj(fields)
6563
# obj: typing.Any = parse_model(response, typ)
@@ -81,7 +79,7 @@ def get_response_map(return_anno: type) -> ResponseMap:
8179
for media_type_map in responses.values():
8280
for media_type, typ in media_type_map.items():
8381
if not issubclass(typ, ResponseEnvelope):
84-
media_type_map[media_type] = DefaultEnvelope[typ]
82+
media_type_map[media_type] = DefaultEnvelope[typ] # type: ignore[valid-type]
8583
return responses
8684

8785

‎src/lapidary/runtime/model/response.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import abc
22
import dataclasses as dc
33
from collections.abc import Callable
4-
from typing import Any
54

65
import httpx
76
import pydantic
@@ -23,9 +22,9 @@ class Responses:
2322
class ResponseEnvelopeBuilder:
2423
def __init__(self, typ: type[pydantic.BaseModel]) -> None:
2524
self._type = typ
26-
self.fields = {}
25+
self.fields: typing.MutableMapping[str, typing.Any] = {}
2726

28-
def build(self) -> Any:
27+
def build(self) -> typing.Any:
2928
return self._type.model_construct(**self.fields)
3029

3130

@@ -45,14 +44,14 @@ def supply_formal(self, name: str, type_: type) -> None:
4544

4645

4746
class Body(ResponsePartHandler, PropertyAnnotation):
48-
_parse: Callable[[...], Any]
47+
_parse: Callable[[bytes], typing.Any]
4948

5049
def supply_formal(self, name: str, type_: type) -> None:
5150
super().supply_formal(name, type_)
5251
self._parse = pydantic.TypeAdapter(type_).validate_json
5352

5453
def apply(self, fields: typing.MutableMapping, response: httpx.Response) -> None:
55-
fields[self._name] = self._parse(response.text)
54+
fields[self._name] = self._parse(response.content)
5655

5756

5857
class Header(ResponsePartHandler, PropertyAnnotation):
@@ -71,4 +70,4 @@ class ResponseEnvelope(abc.ABC, pydantic.BaseModel):
7170

7271

7372
class DefaultEnvelope(ResponseEnvelope, typing.Generic[BodyT]):
74-
body: typing.Annotated[BodyT, Body]
73+
body: typing.Annotated[BodyT, Body()]

0 commit comments

Comments
 (0)