arpakitlib 1.7.53__py3-none-any.whl → 1.7.55__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()
@@ -59,7 +59,7 @@ def sync_make_http_request(
59
59
  response.raise_for_status()
60
60
  return response
61
61
  except BaseException as exception:
62
- _logger.warning(f"{tries_counter}/{max_tries_} {method} {url} {params}")
62
+ _logger.warning(f"{tries_counter}/{max_tries_}. {method} {url} {params}, exception={exception}")
63
63
  if tries_counter >= max_tries_:
64
64
  raise exception
65
65
  sync_safe_sleep(timedelta(seconds=0.1).total_seconds())
@@ -105,7 +105,7 @@ async def async_make_http_request(
105
105
  await response.read()
106
106
  return response
107
107
  except BaseException as exception:
108
- _logger.warning(f"{tries_counter}/{max_tries_} {method} {url} {params}")
108
+ _logger.warning(f"{tries_counter}/{max_tries_}. {method} {url} {params}, exception={exception}")
109
109
  if tries_counter >= max_tries_:
110
110
  raise exception
111
111
  await async_safe_sleep(timedelta(seconds=0.1).total_seconds())
@@ -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.53
3
+ Version: 1.7.55
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
@@ -148,7 +149,7 @@ arpakitlib/ar_fastapi_util.py,sha256=e4Tgz7sPJk-wqMc2sNsBZ7ZVXo2lMnaOq5WY7CbgvMk
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
151
- arpakitlib/ar_http_request_util.py,sha256=DfzITtgbWJLkyaAIa0cBZZZqLE0EXx-TsHZkiaRy3Tg,3649
152
+ arpakitlib/ar_http_request_util.py,sha256=_HWsB6FSwnrendUfduFAzpn3zcaeH59TpYbHqAFR5m4,3697
152
153
  arpakitlib/ar_ip_util.py,sha256=aEAa1Hvobh9DWX7cmBAPLqnXSTiKe2hRk-WJaiKMaI8,1009
153
154
  arpakitlib/ar_json_db_util.py,sha256=CEyhIU4WuNmX5mqwBVYxUKSdpFelXvWmf_tJ1fuxMSE,7187
154
155
  arpakitlib/ar_json_util.py,sha256=GwHDdrBWiJBHSc07Qe0aN1Gp_uM0pYpTwzU9JAgsKAo,972
@@ -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.53.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
177
- arpakitlib-1.7.53.dist-info/METADATA,sha256=R6rpr30FSIE0znfxONeHTUI9xoXUiCUqxmBU6KYFPCU,2824
178
- arpakitlib-1.7.53.dist-info/NOTICE,sha256=95aUzaPJjVpDsGAsNzVnq7tHTxAl0s5UFznCTkVCau4,763
179
- arpakitlib-1.7.53.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
180
- arpakitlib-1.7.53.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
181
- arpakitlib-1.7.53.dist-info/RECORD,,
177
+ arpakitlib-1.7.55.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
178
+ arpakitlib-1.7.55.dist-info/METADATA,sha256=qpPGyXE5Wi7kdR23LoVyEMOiYlsRzxGwRXrQDgwvjEM,2824
179
+ arpakitlib-1.7.55.dist-info/NOTICE,sha256=95aUzaPJjVpDsGAsNzVnq7tHTxAl0s5UFznCTkVCau4,763
180
+ arpakitlib-1.7.55.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
181
+ arpakitlib-1.7.55.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
182
+ arpakitlib-1.7.55.dist-info/RECORD,,