arpakitlib 1.8.233__py3-none-any.whl → 1.8.235__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.
- arpakitlib/_arpakit_project_template_v_5/arpakitlib_project_template_info.json +1 -1
- arpakitlib/_arpakit_project_template_v_5/project/api/exception.py +36 -15
- arpakitlib/_arpakit_project_template_v_5/project/api/raise_own_exception_if_exception_in_api_router.py +34 -0
- arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/common/error.py +4 -1
- arpakitlib/raise_own_exception_if_exception.py +2 -2
- {arpakitlib-1.8.233.dist-info → arpakitlib-1.8.235.dist-info}/METADATA +1 -1
- {arpakitlib-1.8.233.dist-info → arpakitlib-1.8.235.dist-info}/RECORD +10 -9
- {arpakitlib-1.8.233.dist-info → arpakitlib-1.8.235.dist-info}/LICENSE +0 -0
- {arpakitlib-1.8.233.dist-info → arpakitlib-1.8.235.dist-info}/WHEEL +0 -0
- {arpakitlib-1.8.233.dist-info → arpakitlib-1.8.235.dist-info}/entry_points.txt +0 -0
@@ -11,31 +11,52 @@ class APIException(fastapi.exceptions.HTTPException):
|
|
11
11
|
self,
|
12
12
|
*,
|
13
13
|
status_code: int = fastapi.status.HTTP_400_BAD_REQUEST,
|
14
|
+
error_common_so: ErrorCommonSO | None = None,
|
14
15
|
error_code: str | None = APIErrorCodes.unknown_error,
|
15
16
|
error_specification_code: str | None = None,
|
16
17
|
error_description: str | None = None,
|
18
|
+
error_description_data: dict[str, Any] | None = None,
|
17
19
|
error_data: dict[str, Any] | None = None,
|
18
|
-
kwargs_: dict[str, Any] | None = None
|
20
|
+
kwargs_: dict[str, Any] | None = None,
|
21
|
+
kwargs_create_story_log: bool = True,
|
22
|
+
kwargs_logging_full_error: bool = True,
|
19
23
|
):
|
20
24
|
self.status_code = status_code
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
25
|
+
|
26
|
+
if error_common_so is None:
|
27
|
+
self.error_code = error_code
|
28
|
+
self.error_specification_code = error_specification_code
|
29
|
+
self.error_description = error_description
|
30
|
+
if error_description_data is None:
|
31
|
+
error_description_data = {}
|
32
|
+
self.error_description_data = error_description_data
|
33
|
+
if error_data is None:
|
34
|
+
error_data = {}
|
35
|
+
self.error_data = error_data
|
36
|
+
self.error_common_so = ErrorCommonSO(
|
37
|
+
has_error=True,
|
38
|
+
error_code=self.error_code,
|
39
|
+
error_specification_code=self.error_specification_code,
|
40
|
+
error_description=self.error_description,
|
41
|
+
error_description_data=self.error_description_data,
|
42
|
+
error_data=self.error_data
|
43
|
+
)
|
44
|
+
else:
|
45
|
+
self.error_common_so = error_common_so
|
46
|
+
self.error_code = error_common_so.error_code
|
47
|
+
self.error_specification_code = error_common_so.error_specification_code
|
48
|
+
self.error_description = error_common_so.error_description
|
49
|
+
self.error_description_data = error_common_so.error_description_data
|
50
|
+
self.error_data = error_common_so.error_data
|
51
|
+
|
27
52
|
if kwargs_ is None:
|
28
53
|
kwargs_ = {}
|
54
|
+
if "create_story_log" not in kwargs_:
|
55
|
+
kwargs_["create_story_log"] = kwargs_create_story_log
|
56
|
+
if "logging" not in kwargs_:
|
57
|
+
kwargs_["logging_full_error"] = kwargs_logging_full_error
|
29
58
|
self.kwargs_ = kwargs_
|
30
59
|
|
31
|
-
self.error_common_so = ErrorCommonSO(
|
32
|
-
has_error=True,
|
33
|
-
error_code=self.error_code,
|
34
|
-
error_specification_code=self.error_specification_code,
|
35
|
-
error_description=self.error_description,
|
36
|
-
error_data=self.error_data
|
37
|
-
)
|
38
|
-
|
39
60
|
super().__init__(
|
40
61
|
status_code=self.status_code,
|
41
62
|
detail=self.error_common_so.model_dump(mode="json")
|
@@ -0,0 +1,34 @@
|
|
1
|
+
from typing import Any
|
2
|
+
|
3
|
+
import fastapi
|
4
|
+
from arpakitlib.raise_own_exception_if_exception import raise_own_exception_if_exception
|
5
|
+
|
6
|
+
from project.api.exception import APIException
|
7
|
+
from project.api.schema.out.common.error import ErrorCommonSO
|
8
|
+
|
9
|
+
|
10
|
+
def raise_own_exception_if_exception_in_api_router(
|
11
|
+
*,
|
12
|
+
status_code: int = fastapi.status.HTTP_400_BAD_REQUEST,
|
13
|
+
error_common_so: ErrorCommonSO | None = None,
|
14
|
+
kwargs_: dict[str, Any] | None = None,
|
15
|
+
kwargs_create_story_log: bool = True,
|
16
|
+
kwargs_logging_full_error: bool = True,
|
17
|
+
):
|
18
|
+
"""Обертка над декоратором raise_own_exception_if_exception"""
|
19
|
+
|
20
|
+
def decorator(func):
|
21
|
+
# просто возвращаем результат применения исходного декоратора
|
22
|
+
return raise_own_exception_if_exception(
|
23
|
+
catching_exceptions=Exception,
|
24
|
+
own_exception=APIException,
|
25
|
+
forward_kwargs_in_own_exception={
|
26
|
+
"status_code": status_code,
|
27
|
+
"error_common_so": error_common_so,
|
28
|
+
"kwargs_": kwargs_,
|
29
|
+
"kwargs_create_story_log": kwargs_create_story_log,
|
30
|
+
"kwargs_logging_full_error": kwargs_logging_full_error
|
31
|
+
}
|
32
|
+
)(func)
|
33
|
+
|
34
|
+
return decorator
|
@@ -1,5 +1,7 @@
|
|
1
1
|
from typing import Any
|
2
2
|
|
3
|
+
from pydantic import Field
|
4
|
+
|
3
5
|
from project.api.schema.common import BaseSO
|
4
6
|
|
5
7
|
|
@@ -8,4 +10,5 @@ class ErrorCommonSO(BaseSO):
|
|
8
10
|
error_code: str | None = None
|
9
11
|
error_specification_code: str | None = None
|
10
12
|
error_description: str | None = None
|
11
|
-
|
13
|
+
error_description_data: dict[str, Any] = Field(default_factory=dict)
|
14
|
+
error_data: dict[str, Any] = Field(default_factory=dict)
|
@@ -74,7 +74,7 @@ def raise_own_exception_if_exception(
|
|
74
74
|
try:
|
75
75
|
_kwargs = {}
|
76
76
|
if kwargs_in_own_exception is not None:
|
77
|
-
_kwargs = {"
|
77
|
+
_kwargs = {"kwargs_in_own_exception": copied_kwargs_in_own_exception}
|
78
78
|
if forward_kwargs_in_own_exception is not None:
|
79
79
|
_kwargs.update(forward_kwargs_in_own_exception)
|
80
80
|
raise own_exception(**_kwargs) from caught_exception
|
@@ -97,7 +97,7 @@ def raise_own_exception_if_exception(
|
|
97
97
|
try:
|
98
98
|
_kwargs = {}
|
99
99
|
if kwargs_in_own_exception is not None:
|
100
|
-
_kwargs = {"
|
100
|
+
_kwargs = {"kwargs_in_own_exception": copied_kwargs_in_own_exception}
|
101
101
|
if forward_kwargs_in_own_exception is not None:
|
102
102
|
_kwargs.update(forward_kwargs_in_own_exception)
|
103
103
|
raise own_exception(**_kwargs) from caught_exception
|
@@ -8,7 +8,7 @@ arpakitlib/_arpakit_project_template_v_5/alembic/env.py,sha256=Qesmnj5A2kB-Doeuf
|
|
8
8
|
arpakitlib/_arpakit_project_template_v_5/alembic/script.py.mako,sha256=MEqL-2qATlST9TAOeYgscMn1uy6HUS9NFvDgl93dMj8,635
|
9
9
|
arpakitlib/_arpakit_project_template_v_5/alembic/versions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
10
10
|
arpakitlib/_arpakit_project_template_v_5/alembic.ini,sha256=8fuyeEvGBiPGbxEFy8ISBV3xX_fgVmuhEGpB10_B5Uo,3733
|
11
|
-
arpakitlib/_arpakit_project_template_v_5/arpakitlib_project_template_info.json,sha256=
|
11
|
+
arpakitlib/_arpakit_project_template_v_5/arpakitlib_project_template_info.json,sha256=zvYnveSfv5GgCQr3J2tmByBGeJ9LQ7qucpvueiUjYL8,98
|
12
12
|
arpakitlib/_arpakit_project_template_v_5/command/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
13
13
|
arpakitlib/_arpakit_project_template_v_5/command/alembic_history.sh,sha256=OMnDNtHIksGh9iavWnzbtxcudZW4vjdcISsBXvzZSPw,22
|
14
14
|
arpakitlib/_arpakit_project_template_v_5/command/alembic_revision_autogenerate.sh,sha256=yW2i-SBOtBx15Ya0poVQqKkJM5t2JZp06r9AEW-DmGE,46
|
@@ -92,12 +92,13 @@ arpakitlib/_arpakit_project_template_v_5/project/api/blank/common.py,sha256=ug1F
|
|
92
92
|
arpakitlib/_arpakit_project_template_v_5/project/api/create_api_app.py,sha256=-xJLrNuiUC8K-L2Q_1YbQzi_2bquW3HgVx7Ye2haHNk,3076
|
93
93
|
arpakitlib/_arpakit_project_template_v_5/project/api/create_first_data.py,sha256=BgqmD-7gXQ_zoz3ATqVacQzkg9lbvKnCSvQxm0M0Vxw,1824
|
94
94
|
arpakitlib/_arpakit_project_template_v_5/project/api/event.py,sha256=P8gV2Bq6LeLH0JDN9Z3O401PMbyNr2n-tme2gPvT-m4,996
|
95
|
-
arpakitlib/_arpakit_project_template_v_5/project/api/exception.py,sha256=
|
95
|
+
arpakitlib/_arpakit_project_template_v_5/project/api/exception.py,sha256=_lQ-qX0SxU8_XBDUYz924ZjxJ-FnOvXFaVbyptGuRyw,2600
|
96
96
|
arpakitlib/_arpakit_project_template_v_5/project/api/exception_handler.py,sha256=Se4Bj1Sdp6KXW7-G5xm0obJAFu3MfPA5NTm6yEEjgqU,11556
|
97
97
|
arpakitlib/_arpakit_project_template_v_5/project/api/middleware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
98
98
|
arpakitlib/_arpakit_project_template_v_5/project/api/middleware/add_api_middlewares.py,sha256=TrWn0yPDCn0yTlHqLf19ypGtRumNjDxm0sM60yVsqXE,468
|
99
99
|
arpakitlib/_arpakit_project_template_v_5/project/api/middleware/limit_content_length.py,sha256=cEtGcJSh3e2EyuQCFqKzRcrl3qS6oIvpSv5UEbYsvR4,1622
|
100
100
|
arpakitlib/_arpakit_project_template_v_5/project/api/openapi_ui.py,sha256=7yg9ZNu6BjTAregnfbRFpwvqa-gTIY6o6NCz5pmsbeo,976
|
101
|
+
arpakitlib/_arpakit_project_template_v_5/project/api/raise_own_exception_if_exception_in_api_router.py,sha256=6wBvzf0et1Jw7GSYKzZ6typmIubPn2SMJJMAZUBPsz0,1304
|
101
102
|
arpakitlib/_arpakit_project_template_v_5/project/api/response.py,sha256=xZMymP2BuQaRNVWLeIp3UgUUo-MFN8MJnsn9Al4vOb8,1028
|
102
103
|
arpakitlib/_arpakit_project_template_v_5/project/api/router/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
103
104
|
arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -162,7 +163,7 @@ arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/client/user.py,s
|
|
162
163
|
arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/client/user_token.py,sha256=Emhpawd_jGWu9xzyYyXk9h0YDSnHGDkyfP-hIgenzpA,508
|
163
164
|
arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
164
165
|
arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/common/datetime_.py,sha256=YFo29Qc7JMVq-OR398kPy4ypjh9kYAxPuZZUsobhDdc,942
|
165
|
-
arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/common/error.py,sha256=
|
166
|
+
arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/common/error.py,sha256=QAJPTEVf4257fdWmmJes081TWqGb5eglDamQOO1ZHkE,412
|
166
167
|
arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/common/ok.py,sha256=t0uT5WIO7hiHG6rQBkb10l37GCAUbki14v-E8-mWzNs,96
|
167
168
|
arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/common/raw_data.py,sha256=T7DWPHlno37-2qfQLLGXY2_4Ajs_l9_UxDDF1VGdpqk,136
|
168
169
|
arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/general/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -421,9 +422,9 @@ arpakitlib/ar_type_util.py,sha256=Cs_tef-Fc5xeyAF54KgISCsP11NHyzIsglm4S3Xx7iM,40
|
|
421
422
|
arpakitlib/ar_yookassa_api_client_util.py,sha256=VozuZeCJjmLd1zj2BdC9WfiAQ3XYOrIMsdpNK-AUlm0,5347
|
422
423
|
arpakitlib/clone_pydantic_model_fields.py,sha256=xxLwtvJzDf8EWMvBE4psWIj8c-cyeCxLRX76oCY_4zk,1214
|
423
424
|
arpakitlib/pydantic_schema_from_sqlalchemy_model.py,sha256=_5Y79kQ4lLIOL6_afIFVwxY1EXzTMpi-veRR-WkPFOs,2879
|
424
|
-
arpakitlib/raise_own_exception_if_exception.py,sha256=
|
425
|
-
arpakitlib-1.8.
|
426
|
-
arpakitlib-1.8.
|
427
|
-
arpakitlib-1.8.
|
428
|
-
arpakitlib-1.8.
|
429
|
-
arpakitlib-1.8.
|
425
|
+
arpakitlib/raise_own_exception_if_exception.py,sha256=hJMNKp-GCIhLuRMktLBpmRn04MhuBBYHTwgOjb48fcI,5573
|
426
|
+
arpakitlib-1.8.235.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
|
427
|
+
arpakitlib-1.8.235.dist-info/METADATA,sha256=5kUZWFMcpjwmf7enT9I48Sf0cxcrzng7F5l2jgb2vMY,3741
|
428
|
+
arpakitlib-1.8.235.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
429
|
+
arpakitlib-1.8.235.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
|
430
|
+
arpakitlib-1.8.235.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|