kaq-quant-common 0.2.5__py3-none-any.whl → 0.2.7__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
-
1
+
@@ -1,38 +1,38 @@
1
- from abc import ABC
2
- from functools import wraps
3
- from typing import Callable, Type
4
-
5
- from pydantic import BaseModel
6
-
7
-
8
- def api_method(request_model: Type[BaseModel], response_model: Type[BaseModel]):
9
- """
10
- api 方法注解
11
- :param request_model: 请求模型
12
- :param response_model: 响应模型
13
- :return:
14
- """
15
-
16
- def decorator(func: Callable):
17
- # 将注解信息绑定到原始函数
18
- func._is_api_method = True
19
- func._request_model = request_model
20
- func._response_model = response_model
21
-
22
- @wraps(func)
23
- def wrapper(*args, **kwargs):
24
- return func(*args, **kwargs)
25
-
26
- # 同步注解信息到包装函数,便于通过inspect发现
27
- wrapper._is_api_method = True
28
- wrapper._request_model = request_model
29
- wrapper._response_model = response_model
30
-
31
- return wrapper
32
-
33
- return decorator
34
-
35
-
36
- # 定义 api 接口,暂时没啥用
37
- class ApiInterface(ABC):
38
- pass
1
+ from abc import ABC
2
+ from functools import wraps
3
+ from typing import Callable, Type
4
+
5
+ from pydantic import BaseModel
6
+
7
+
8
+ def api_method(request_model: Type[BaseModel], response_model: Type[BaseModel]):
9
+ """
10
+ api 方法注解
11
+ :param request_model: 请求模型
12
+ :param response_model: 响应模型
13
+ :return:
14
+ """
15
+
16
+ def decorator(func: Callable):
17
+ # 将注解信息绑定到原始函数
18
+ func._is_api_method = True
19
+ func._request_model = request_model
20
+ func._response_model = response_model
21
+
22
+ @wraps(func)
23
+ def wrapper(*args, **kwargs):
24
+ return func(*args, **kwargs)
25
+
26
+ # 同步注解信息到包装函数,便于通过inspect发现
27
+ wrapper._is_api_method = True
28
+ wrapper._request_model = request_model
29
+ wrapper._response_model = response_model
30
+
31
+ return wrapper
32
+
33
+ return decorator
34
+
35
+
36
+ # 定义 api 接口,暂时没啥用
37
+ class ApiInterface(ABC):
38
+ pass
@@ -1,42 +1,42 @@
1
- from typing import Optional, Type, TypeVar
2
-
3
- import requests
4
- from kaq_quant_common.api.common.auth import get_auth_token
5
- from kaq_quant_common.utils import logger_utils
6
- from pydantic import BaseModel
7
-
8
- R = TypeVar("R", bound=BaseModel)
9
-
10
-
11
- class ApiClientBase:
12
- """
13
- api 客户端
14
- """
15
-
16
- def __init__(self, base_url: str, token: Optional[str] = None):
17
- self._base_url = base_url.rstrip("/")
18
- self._token = token if token is not None else get_auth_token()
19
- self._logger = logger_utils.get_logger(self)
20
-
21
- # 发送请求
22
- def _make_request(self, method_name: str, request_data: BaseModel, response_model: Type[R]) -> R:
23
- url = f"{self._base_url}/api/{method_name}"
24
- headers = {}
25
- if self._token:
26
- headers["Authorization"] = f"Bearer {self._token}"
27
- try:
28
- # 发送post请求
29
- response = requests.post(url, json=request_data.model_dump(), headers=headers or None)
30
- # 检查响应状态码,如果不成功,则尝试解析错误信息并抛出异常
31
- if not response.ok:
32
- try:
33
- error_data = response.json()
34
- error_message = error_data.get("error", response.text)
35
- except ValueError:
36
- error_message = response.text
37
- raise requests.exceptions.HTTPError(f"HTTP error occurred: {response.status_code} - {error_message}", response=response)
38
- # 返回请求结果
39
- return response_model(**response.json())
40
- except requests.exceptions.RequestException as e:
41
- self._logger.error(f"An error occurred: {e}")
42
- raise
1
+ from typing import Optional, Type, TypeVar
2
+
3
+ import requests
4
+ from kaq_quant_common.api.common.auth import get_auth_token
5
+ from kaq_quant_common.utils import logger_utils
6
+ from pydantic import BaseModel
7
+
8
+ R = TypeVar("R", bound=BaseModel)
9
+
10
+
11
+ class ApiClientBase:
12
+ """
13
+ api 客户端
14
+ """
15
+
16
+ def __init__(self, base_url: str, token: Optional[str] = None):
17
+ self._base_url = base_url.rstrip("/")
18
+ self._token = token if token is not None else get_auth_token()
19
+ self._logger = logger_utils.get_logger(self)
20
+
21
+ # 发送请求
22
+ def _make_request(self, method_name: str, request_data: BaseModel, response_model: Type[R]) -> R:
23
+ url = f"{self._base_url}/api/{method_name}"
24
+ headers = {}
25
+ if self._token:
26
+ headers["Authorization"] = f"Bearer {self._token}"
27
+ try:
28
+ # 发送post请求
29
+ response = requests.post(url, json=request_data.model_dump(), headers=headers or None)
30
+ # 检查响应状态码,如果不成功,则尝试解析错误信息并抛出异常
31
+ if not response.ok:
32
+ try:
33
+ error_data = response.json()
34
+ error_message = error_data.get("error", response.text)
35
+ except ValueError:
36
+ error_message = response.text
37
+ raise requests.exceptions.HTTPError(f"HTTP error occurred: {response.status_code} - {error_message}", response=response)
38
+ # 返回请求结果
39
+ return response_model(**response.json())
40
+ except requests.exceptions.RequestException as e:
41
+ self._logger.error(f"An error occurred: {e}")
42
+ raise