Skip to content

Commit a1928ab

Browse files
author
huangsong
committed
define the do_request return type
1 parent 25060ba commit a1928ab

File tree

6 files changed

+19
-13
lines changed

6 files changed

+19
-13
lines changed

pydantic_client/clients/abstract_client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ def __init__(self, config: ClientConfig):
1313
def get_session(self):
1414
return self.config.client_session
1515

16-
def do_request(self, request: HttpRequest) -> Any:
16+
def do_request(self, request: HttpRequest) -> Dict[str, Any]:
1717
raise NotImplementedError
1818

1919
def parse(self, request: HttpRequest) -> Dict[str, Any]:

pydantic_client/clients/aiohttp.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Any, Callable
1+
from typing import Any, Callable, Dict
22

33
from pydantic_client.clients.abstract_client import AbstractClient
44
from pydantic_client.schema.http_request import HttpRequest
@@ -15,7 +15,7 @@ def get_session(self) -> Callable[[], ClientSession]:
1515
session = super().get_session()
1616
return lambda: ClientSession() if not session else session()
1717

18-
async def do_request(self, request: HttpRequest) -> Any:
18+
async def do_request(self, request: HttpRequest) -> Dict[str, Any]:
1919
session_factory = self.get_session()
2020
s = session_factory()
2121
async with s as session:

pydantic_client/clients/httpx.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Any
1+
from typing import Any, Dict
22

33
from pydantic_client.clients.abstract_client import AbstractClient
44
from pydantic_client.schema.http_request import HttpRequest
@@ -16,7 +16,7 @@ def get_session(self):
1616
return session if isinstance(session, AsyncClient) \
1717
else AsyncClient(http2=self.config.http2)
1818

19-
async def do_request(self, request: HttpRequest) -> Any:
19+
async def do_request(self, request: HttpRequest) -> Dict[str, Any]:
2020
async with self.get_session() as session:
2121
try:
2222
response = await session.request(**self.parse(request))

pydantic_client/clients/requests.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Any
1+
from typing import Any, Dict
22

33
from pydantic_client.clients.abstract_client import AbstractClient
44
from pydantic_client.schema.http_request import HttpRequest
@@ -16,7 +16,7 @@ def get_session(self) -> Session:
1616
session = super().get_session()
1717
return session if isinstance(session, Session) else self.session
1818

19-
def do_request(self, request: HttpRequest) -> Any:
19+
def do_request(self, request: HttpRequest) -> Dict[str, Any]:
2020
try:
2121
return self.get_session().request(**self.parse(request)).json()
2222
except BaseException as e:

pydantic_client/main.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,27 @@
1+
import logging
2+
13
from pydantic_client.container import container
24
from pydantic_client.schema.client_config import ClientConfig
35

6+
logger = logging.getLogger(__name__)
7+
48

59
class PydanticClientManager:
610
def __init__(self):
7-
# proto_class
11+
# proto_class: protocol_object
812
self.pydantic_clients = {}
9-
# self.config = config
1013

1114
def register(
1215
self,
1316
client_config: ClientConfig
1417
):
1518
def wrapper(protocol_class):
16-
web_client = client_config.get_client()(client_config)
19+
web_client = client_config.get_client()
1720
protocol = protocol_class()
1821
container.bind_protocol(protocol, web_client)
22+
if protocol_class in self.pydantic_clients:
23+
logger.warning(
24+
f"protocol {protocol_class} already registered, will be overwritten")
1925
self.pydantic_clients[protocol_class] = protocol
2026
return protocol_class
2127

pydantic_client/schema/client_config.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,13 @@ class ClientConfig(BaseModel):
2828
def get_client(self):
2929
if self.client_type.value == "requests":
3030
from pydantic_client.clients import RequestsClient
31-
return RequestsClient
31+
return RequestsClient(self)
3232
elif self.client_type.value == "httpx":
3333
from pydantic_client.clients import HttpxClient
34-
return HttpxClient
34+
return HttpxClient(self)
3535
else:
3636
from pydantic_client.clients import AIOHttpClient
37-
return AIOHttpClient
37+
return AIOHttpClient(self)
3838

3939
@classmethod
4040
def load_toml(cls, path: str):

0 commit comments

Comments
 (0)