arpakitlib 1.7.52__py3-none-any.whl → 1.7.54__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/src/api/start_api_for_dev_with_reload.py +9 -0
- arpakitlib/ar_fastapi_util.py +2 -2
- arpakitlib/ar_operation_execution_util.py +76 -13
- {arpakitlib-1.7.52.dist-info → arpakitlib-1.7.54.dist-info}/METADATA +1 -1
- {arpakitlib-1.7.52.dist-info → arpakitlib-1.7.54.dist-info}/RECORD +9 -8
- {arpakitlib-1.7.52.dist-info → arpakitlib-1.7.54.dist-info}/LICENSE +0 -0
- {arpakitlib-1.7.52.dist-info → arpakitlib-1.7.54.dist-info}/NOTICE +0 -0
- {arpakitlib-1.7.52.dist-info → arpakitlib-1.7.54.dist-info}/WHEEL +0 -0
- {arpakitlib-1.7.52.dist-info → arpakitlib-1.7.54.dist-info}/entry_points.txt +0 -0
arpakitlib/ar_fastapi_util.py
CHANGED
@@ -354,7 +354,7 @@ def add_needed_api_router_to_app(*, app: FastAPI):
|
|
354
354
|
|
355
355
|
@api_router.get(
|
356
356
|
"/healthcheck",
|
357
|
-
response_model=ErrorSO,
|
357
|
+
response_model=RawDataSO | ErrorSO,
|
358
358
|
status_code=starlette.status.HTTP_200_OK,
|
359
359
|
tags=["Healthcheck"]
|
360
360
|
)
|
@@ -366,7 +366,7 @@ def add_needed_api_router_to_app(*, app: FastAPI):
|
|
366
366
|
|
367
367
|
@api_router.get(
|
368
368
|
"/arpakitlib",
|
369
|
-
response_model=ErrorSO,
|
369
|
+
response_model=RawDataSO | ErrorSO,
|
370
370
|
status_code=starlette.status.HTTP_200_OK,
|
371
371
|
tags=["arpakitlib"]
|
372
372
|
)
|
@@ -19,6 +19,7 @@ from arpakitlib.ar_dict_util import combine_dicts
|
|
19
19
|
from arpakitlib.ar_sleep_util import sync_safe_sleep, async_safe_sleep
|
20
20
|
from arpakitlib.ar_sqlalchemy_model_util import OperationDBM, StoryLogDBM, BaseOperationTypes
|
21
21
|
from arpakitlib.ar_sqlalchemy_util import SQLAlchemyDB
|
22
|
+
from arpakitlib.ar_type_util import raise_for_type
|
22
23
|
|
23
24
|
_ARPAKIT_LIB_MODULE_VERSION = "3.0"
|
24
25
|
|
@@ -27,14 +28,16 @@ _logger = logging.getLogger(__name__)
|
|
27
28
|
|
28
29
|
def get_operation_for_execution(
|
29
30
|
*,
|
30
|
-
|
31
|
+
session: Session | None = None,
|
32
|
+
sqlalchemy_db: SQLAlchemyDB | None = None,
|
31
33
|
filter_operation_types: list[str] | str | None = None
|
32
34
|
) -> OperationDBM | None:
|
33
35
|
if isinstance(filter_operation_types, str):
|
34
36
|
filter_operation_types = [filter_operation_types]
|
35
|
-
|
37
|
+
|
38
|
+
def func(session_: Session):
|
36
39
|
query = (
|
37
|
-
|
40
|
+
session_
|
38
41
|
.query(OperationDBM)
|
39
42
|
.filter(OperationDBM.status == OperationDBM.Statuses.waiting_for_execution)
|
40
43
|
)
|
@@ -42,24 +45,84 @@ def get_operation_for_execution(
|
|
42
45
|
query = query.filter(OperationDBM.type.in_(filter_operation_types))
|
43
46
|
query = query.order_by(asc(OperationDBM.creation_dt))
|
44
47
|
operation_dbm: OperationDBM | None = query.first()
|
45
|
-
|
48
|
+
return operation_dbm
|
49
|
+
|
50
|
+
if session is not None:
|
51
|
+
return func(session_=session)
|
52
|
+
elif sqlalchemy_db is not None:
|
53
|
+
with sqlalchemy_db.new_session() as session:
|
54
|
+
return func(session_=session)
|
55
|
+
else:
|
56
|
+
raise ValueError("session is None and sqlalchemy_db is None")
|
46
57
|
|
47
58
|
|
48
59
|
def get_operation_by_id(
|
49
60
|
*,
|
50
|
-
session: Session,
|
61
|
+
session: Session | None = None,
|
62
|
+
sqlalchemy_db: SQLAlchemyDB | None = None,
|
51
63
|
filter_operation_id: int,
|
52
64
|
raise_if_not_found: bool = False
|
53
65
|
) -> OperationDBM | None:
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
66
|
+
def func(session_: Session):
|
67
|
+
query = (
|
68
|
+
session_
|
69
|
+
.query(OperationDBM)
|
70
|
+
.filter(OperationDBM.id == filter_operation_id)
|
71
|
+
)
|
72
|
+
if raise_if_not_found:
|
73
|
+
return query.one()
|
74
|
+
else:
|
75
|
+
return query.one_or_none()
|
76
|
+
|
77
|
+
if session is not None:
|
78
|
+
return func(session_=session)
|
79
|
+
elif sqlalchemy_db is not None:
|
80
|
+
with sqlalchemy_db.new_session() as session:
|
81
|
+
return func(session_=session)
|
82
|
+
else:
|
83
|
+
raise ValueError("session is None and sqlalchemy_db is None")
|
84
|
+
|
85
|
+
|
86
|
+
def remove_operations(
|
87
|
+
*,
|
88
|
+
session: Session | None = None,
|
89
|
+
sqlalchemy_db: SQLAlchemyDB | None = None,
|
90
|
+
filter_operation_ids: list[int] | int | None = None,
|
91
|
+
filter_operation_types: list[str] | str | None = None,
|
92
|
+
filter_operation_statuses: list[str] | str | None = None
|
93
|
+
):
|
94
|
+
if isinstance(filter_operation_ids, int):
|
95
|
+
filter_operation_ids = [filter_operation_ids]
|
96
|
+
if isinstance(filter_operation_types, str):
|
97
|
+
filter_operation_types = [filter_operation_types]
|
98
|
+
if isinstance(filter_operation_statuses, str):
|
99
|
+
filter_operation_statuses = [filter_operation_statuses]
|
100
|
+
|
101
|
+
if filter_operation_ids is not None:
|
102
|
+
raise_for_type(filter_operation_ids, list)
|
103
|
+
if filter_operation_types is not None:
|
104
|
+
raise_for_type(filter_operation_types, list)
|
105
|
+
if filter_operation_statuses is not None:
|
106
|
+
raise_for_type(filter_operation_statuses, list)
|
107
|
+
|
108
|
+
def func(session_: Session):
|
109
|
+
query = session_.query(OperationDBM)
|
110
|
+
if filter_operation_ids is not None:
|
111
|
+
query = query.filter(OperationDBM.id.in_(filter_operation_ids))
|
112
|
+
if filter_operation_types is not None:
|
113
|
+
query = query.filter(OperationDBM.type.in_(filter_operation_types))
|
114
|
+
if filter_operation_statuses is not None:
|
115
|
+
query = query.filter(OperationDBM.status.in_(filter_operation_statuses))
|
116
|
+
query.delete()
|
117
|
+
session_.commit()
|
118
|
+
|
119
|
+
if session is not None:
|
120
|
+
return func(session_=session)
|
121
|
+
elif sqlalchemy_db is not None:
|
122
|
+
with sqlalchemy_db.new_session() as session:
|
123
|
+
return func(session_=session)
|
61
124
|
else:
|
62
|
-
|
125
|
+
raise ValueError("session is None and sqlalchemy_db is None")
|
63
126
|
|
64
127
|
|
65
128
|
class BaseOperationExecutor:
|
@@ -86,6 +86,7 @@ arpakitlib/_arpakit_project_template/src/api/schema/v1/__init__.py,sha256=47DEQp
|
|
86
86
|
arpakitlib/_arpakit_project_template/src/api/schema/v1/in_.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
87
87
|
arpakitlib/_arpakit_project_template/src/api/schema/v1/out.py,sha256=odc-UyxBwUPh4t0H6qIuzAsBA_Qrm3H2qP-YBgJpaKc,164
|
88
88
|
arpakitlib/_arpakit_project_template/src/api/start_api_for_dev.py,sha256=BwROGTR8Hm1ewx_Z0k8HXeql4RIItCdCtP_hmhTT_PM,344
|
89
|
+
arpakitlib/_arpakit_project_template/src/api/start_api_for_dev_with_reload.py,sha256=xg2SFemhe8KmmoYvaG8zkFZyonzxdxcHuugjS3i0q0I,151
|
89
90
|
arpakitlib/_arpakit_project_template/src/api/transmitted_api_data.py,sha256=YtpATqzN216e76W5QOuzN-Vo6343PVDiHpKWYQ6oqyU,278
|
90
91
|
arpakitlib/_arpakit_project_template/src/api/util.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
91
92
|
arpakitlib/_arpakit_project_template/src/business_service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -144,7 +145,7 @@ arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css,sha256=jzPZlgJTFwSdSphk9C
|
|
144
145
|
arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css.map,sha256=5wq8eXMLU6Zxb45orZPL1zAsBFJReFw6GjYqGpUX3hg,262650
|
145
146
|
arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js,sha256=ffrLZHHEQ_g84A-ul3yWa10Kk09waOAxHcQXPuZuavg,339292
|
146
147
|
arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js.map,sha256=9UhIW7MqCOZPAz1Sl1IKfZUuhWU0p-LJqrnjjJD9Xhc,1159454
|
147
|
-
arpakitlib/ar_fastapi_util.py,sha256=
|
148
|
+
arpakitlib/ar_fastapi_util.py,sha256=e4Tgz7sPJk-wqMc2sNsBZ7ZVXo2lMnaOq5WY7CbgvMk,24203
|
148
149
|
arpakitlib/ar_file_storage_in_dir_util.py,sha256=D3e3rGuHoI6xqAA5mVvEpVVpOWY1jyjNsjj2UhyHRbE,3674
|
149
150
|
arpakitlib/ar_file_util.py,sha256=07xCF7paAUP2JUyfpeX0l3N1oCSma7qAcBmrCIZVi3g,452
|
150
151
|
arpakitlib/ar_hash_util.py,sha256=Iqy6KBAOLBQMFLWv676boI5sV7atT2B-fb7aCdHOmIQ,340
|
@@ -159,7 +160,7 @@ arpakitlib/ar_logging_util.py,sha256=Gyd7B9k0glIXPm6dASiigWLq9LC9lw6vhXTCeWpY5PY
|
|
159
160
|
arpakitlib/ar_mongodb_util.py,sha256=2ECkTnGAZ92qxioL-fmN6R4yZOSr3bXdXLWTzT1C3vk,4038
|
160
161
|
arpakitlib/ar_need_type_util.py,sha256=xq5bbAXJG-93CRVZUcLW0ZdM22rj-ZUW17C5hX_5grg,1699
|
161
162
|
arpakitlib/ar_openai_api_client_util.py,sha256=dHUbfg1sVVCjsNl_fra3iCMEz1bR-Hk9fE-DdYbu7Wc,1215
|
162
|
-
arpakitlib/ar_operation_execution_util.py,sha256=
|
163
|
+
arpakitlib/ar_operation_execution_util.py,sha256=XMS5bLM-NubLv7HuTnt0Vi6YnE42pu3dJso7HRpBBKk,17454
|
163
164
|
arpakitlib/ar_parse_command.py,sha256=-s61xcATIsfw1eV_iD3xi-grsitbGzSDoAFc5V0OFy4,3447
|
164
165
|
arpakitlib/ar_postgresql_util.py,sha256=1AuLjEaa1Lg4pzn-ukCVnDi35Eg1k91APRTqZhIJAdo,945
|
165
166
|
arpakitlib/ar_run_cmd_util.py,sha256=D_rPavKMmWkQtwvZFz-Io5Ak8eSODHkcFeLPzNVC68g,1072
|
@@ -173,9 +174,9 @@ arpakitlib/ar_str_util.py,sha256=oCEtQ_TTn35OEz9jCNLjbhopq76JmaifD_iYR-nEJJ4,214
|
|
173
174
|
arpakitlib/ar_type_util.py,sha256=e6Ch8I_B3FMJMj-fiZvTwtGde4hxSa48fGt5g8RlV6I,2301
|
174
175
|
arpakitlib/ar_yookassa_api_client_util.py,sha256=sh4fcUkAkdOetFn9JYoTvjcSXP-M1wU04KEY-ECLfLg,5137
|
175
176
|
arpakitlib/ar_zabbix_api_client_util.py,sha256=Q-VR4MvoZ9aHwZeYZr9G3LwN-ANx1T5KFmF6pvPM-9M,6402
|
176
|
-
arpakitlib-1.7.
|
177
|
-
arpakitlib-1.7.
|
178
|
-
arpakitlib-1.7.
|
179
|
-
arpakitlib-1.7.
|
180
|
-
arpakitlib-1.7.
|
181
|
-
arpakitlib-1.7.
|
177
|
+
arpakitlib-1.7.54.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
|
178
|
+
arpakitlib-1.7.54.dist-info/METADATA,sha256=BFELpFNE5b0L340gZI0ohoxH4tx5-Go-XV0_sCxHx_U,2824
|
179
|
+
arpakitlib-1.7.54.dist-info/NOTICE,sha256=95aUzaPJjVpDsGAsNzVnq7tHTxAl0s5UFznCTkVCau4,763
|
180
|
+
arpakitlib-1.7.54.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
181
|
+
arpakitlib-1.7.54.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
|
182
|
+
arpakitlib-1.7.54.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|