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.
@@ -0,0 +1,9 @@
1
+ from src.api.start_api_for_dev import start_api_for_dev
2
+
3
+
4
+ def command():
5
+ start_api_for_dev(reload=True)
6
+
7
+
8
+ if __name__ == '__main__':
9
+ command()
@@ -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
- sqlalchemy_db: SQLAlchemyDB,
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
- with sqlalchemy_db.new_session() as session:
37
+
38
+ def func(session_: Session):
36
39
  query = (
37
- session
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
- return operation_dbm
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
- query = (
55
- session
56
- .query(OperationDBM)
57
- .filter(OperationDBM.id == filter_operation_id)
58
- )
59
- if raise_if_not_found:
60
- return query.one()
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
- return query.one_or_none()
125
+ raise ValueError("session is None and sqlalchemy_db is None")
63
126
 
64
127
 
65
128
  class BaseOperationExecutor:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: arpakitlib
3
- Version: 1.7.52
3
+ Version: 1.7.54
4
4
  Summary: arpakitlib
5
5
  Home-page: https://github.com/ARPAKIT-Company/arpakitlib
6
6
  License: Apache-2.0
@@ -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=VA81jgoTAfDzu4UGLB9X5qSeHpiGmWqig12meAA4ZVU,24179
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=EL7X7vN2GlOjlps3lCNoJPOP5lyqpbz4VTKmOWz7gVE,14948
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.52.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
177
- arpakitlib-1.7.52.dist-info/METADATA,sha256=JlHwwX3e3HDjTu52a-iWi-fQFeojr2O5YlmXJ4JH1_Y,2824
178
- arpakitlib-1.7.52.dist-info/NOTICE,sha256=95aUzaPJjVpDsGAsNzVnq7tHTxAl0s5UFznCTkVCau4,763
179
- arpakitlib-1.7.52.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
180
- arpakitlib-1.7.52.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
181
- arpakitlib-1.7.52.dist-info/RECORD,,
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,,