arpakitlib 1.7.69__py3-none-any.whl → 1.7.71__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,4 +1,5 @@
1
- from src.core.util import setup_logging, get_cached_sqlalchemy_db
1
+ from src.core.util import setup_logging
2
+ from src.db.util import get_cached_sqlalchemy_db
2
3
 
3
4
 
4
5
  def command():
@@ -1,4 +1,5 @@
1
- from src.core.util import setup_logging, get_cached_sqlalchemy_db
1
+ from src.core.util import setup_logging
2
+ from src.db.util import get_cached_sqlalchemy_db
2
3
 
3
4
 
4
5
  def command():
@@ -1,4 +1,5 @@
1
- from src.core.util import setup_logging, get_cached_sqlalchemy_db
1
+ from src.core.util import setup_logging
2
+ from src.db.util import get_cached_sqlalchemy_db
2
3
 
3
4
 
4
5
  def command():
@@ -12,8 +12,9 @@ from src.api.router.main_router import main_api_router
12
12
  from src.api.transmitted_api_data import TransmittedAPIData
13
13
  from src.core.const import STATIC_DIRPATH
14
14
  from src.core.settings import get_cached_settings
15
- from src.core.util import get_cached_sqlalchemy_db, get_cached_media_file_storage_in_dir, \
15
+ from src.core.util import get_cached_media_file_storage_in_dir, \
16
16
  get_cached_cache_file_storage_in_dir, get_cached_dump_file_storage_in_dir, setup_logging
17
+ from src.db.util import get_cached_sqlalchemy_db
17
18
  from src.operation_execution.operation_executor import OperationExecutor
18
19
  from src.operation_execution.scheduled_operations import ALL_SCHEDULED_OPERATIONS
19
20
 
@@ -13,7 +13,7 @@ from src.core.const import BASE_DIRPATH, ENV_FILEPATH
13
13
  class Settings(SimpleSettings):
14
14
  sql_db_url: str | None = (
15
15
  "postgresql://{PROJECT_NAME}:{PROJECT_NAME}@127.0.0.1:{SQL_DB_PORT}/{PROJECT_NAME}"
16
- )
16
+ ) if (str("{PROJECT_NAME}") and str("{SQL_DB_PORT}").strip().isdigit()) else None
17
17
 
18
18
  sql_db_echo: bool = False
19
19
 
@@ -29,9 +29,9 @@ class Settings(SimpleSettings):
29
29
 
30
30
  api_start_scheduled_operation_creator_worker: bool = False
31
31
 
32
- api_port: int | None = int("{API_PORT}") if "{API_PORT}".isdigit() else None
32
+ api_port: int | None = int("{API_PORT}") if "{API_PORT}".strip().isdigit() else None
33
33
 
34
- api_correct_api_key: str | None = None
34
+ api_correct_api_key: str | None = "1"
35
35
 
36
36
  var_dirname: str | None = "var"
37
37
 
@@ -1,13 +1,10 @@
1
1
  import asyncio
2
- import importlib
3
- from contextlib import suppress
4
2
  from datetime import datetime
5
3
  from functools import lru_cache
6
4
 
7
5
  from arpakitlib.ar_datetime_util import now_dt
8
6
  from arpakitlib.ar_file_storage_in_dir_util import FileStorageInDir
9
7
  from arpakitlib.ar_logging_util import setup_normal_logging
10
- from arpakitlib.ar_sqlalchemy_util import SQLAlchemyDB
11
8
  from arpakitlib.ar_type_util import raise_if_none
12
9
  from src.core.settings import get_cached_settings
13
10
 
@@ -43,21 +40,6 @@ def get_cached_dump_file_storage_in_dir() -> FileStorageInDir:
43
40
  return create_dump_file_storage_in_dir()
44
41
 
45
42
 
46
- def create_sqlalchemy_db() -> SQLAlchemyDB:
47
- with suppress(Exception):
48
- importlib.import_module("src.db.sqlalchemy_model")
49
-
50
- return SQLAlchemyDB(
51
- db_url=get_cached_settings().sql_db_url,
52
- db_echo=get_cached_settings().sql_db_echo
53
- )
54
-
55
-
56
- @lru_cache()
57
- def get_cached_sqlalchemy_db() -> SQLAlchemyDB:
58
- return create_sqlalchemy_db()
59
-
60
-
61
43
  def now_local_dt() -> datetime:
62
44
  raise_if_none(get_cached_settings().local_timezone_as_pytz)
63
45
  return now_dt(tz=get_cached_settings().local_timezone_as_pytz)
@@ -0,0 +1,21 @@
1
+ import importlib
2
+ from contextlib import suppress
3
+ from functools import lru_cache
4
+
5
+ from arpakitlib.ar_sqlalchemy_util import SQLAlchemyDB
6
+ from src.core.settings import get_cached_settings
7
+
8
+
9
+ def create_sqlalchemy_db() -> SQLAlchemyDB:
10
+ with suppress(Exception):
11
+ importlib.import_module("src.db.sqlalchemy_model")
12
+
13
+ return SQLAlchemyDB(
14
+ db_url=get_cached_settings().sql_db_url,
15
+ db_echo=get_cached_settings().sql_db_echo
16
+ )
17
+
18
+
19
+ @lru_cache()
20
+ def get_cached_sqlalchemy_db() -> SQLAlchemyDB:
21
+ return create_sqlalchemy_db()
@@ -1,5 +1,6 @@
1
1
  from arpakitlib.ar_operation_execution_util import OperationExecutorWorker
2
- from src.core.util import get_cached_sqlalchemy_db, setup_logging
2
+ from src.core.util import setup_logging
3
+ from src.db.util import get_cached_sqlalchemy_db
3
4
  from src.operation_execution.operation_executor import OperationExecutor
4
5
 
5
6
 
@@ -1,5 +1,6 @@
1
1
  from arpakitlib.ar_operation_execution_util import ScheduledOperationCreatorWorker
2
- from src.core.util import get_cached_sqlalchemy_db, setup_logging
2
+ from src.core.util import setup_logging
3
+ from src.db.util import get_cached_sqlalchemy_db
3
4
  from src.operation_execution.scheduled_operations import ALL_SCHEDULED_OPERATIONS
4
5
 
5
6
 
@@ -0,0 +1,21 @@
1
+ from datetime import timedelta
2
+ from functools import lru_cache
3
+
4
+ from arpakitlib.ar_operation_execution_util import ScheduledOperationCreatorWorker
5
+ from src.db.util import get_cached_sqlalchemy_db
6
+
7
+
8
+ def create_scheduled_operation_creator_worker() -> ScheduledOperationCreatorWorker:
9
+ from src.operation_execution.scheduled_operations import ALL_SCHEDULED_OPERATIONS
10
+ scheduled_operation_creator_worker = ScheduledOperationCreatorWorker(
11
+ sqlalchemy_db=get_cached_sqlalchemy_db(),
12
+ scheduled_operations=ALL_SCHEDULED_OPERATIONS,
13
+ timeout_after_run=timedelta(seconds=0.1).total_seconds(),
14
+ timeout_after_err_in_run=timedelta(seconds=1).total_seconds()
15
+ )
16
+ return scheduled_operation_creator_worker
17
+
18
+
19
+ @lru_cache()
20
+ def get_scheduled_operation_creator_worker() -> ScheduledOperationCreatorWorker:
21
+ return create_scheduled_operation_creator_worker()
@@ -21,6 +21,7 @@ from fastapi import FastAPI, APIRouter, Query, Security, Depends
21
21
  from fastapi.openapi.docs import get_swagger_ui_html, get_redoc_html
22
22
  from fastapi.security import APIKeyHeader
23
23
  from pydantic import BaseModel, ConfigDict
24
+ from starlette import status
24
25
  from starlette.middleware.cors import CORSMiddleware
25
26
  from starlette.staticfiles import StaticFiles
26
27
 
@@ -221,6 +222,9 @@ def create_handle_exception(
221
222
  error_so.error_specification_code.upper().replace(" ", "_").strip()
222
223
  )
223
224
 
225
+ if error_so.error_code == BaseAPIErrorCodes.not_found:
226
+ status_code = status.HTTP_404_NOT_FOUND
227
+
224
228
  if _need_exc_info:
225
229
  _logger.error(str(exception), exc_info=exception)
226
230
  else:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: arpakitlib
3
- Version: 1.7.69
3
+ Version: 1.7.71
4
4
  Summary: arpakitlib
5
5
  Home-page: https://github.com/ARPAKIT-Company/arpakitlib
6
6
  License: Apache-2.0
@@ -61,11 +61,12 @@ arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_8.sh,sha256=47DEQpj8
61
61
  arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_9.sh,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
62
  arpakitlib/_arpakit_project_template/manage/settings_check.py,sha256=DeOGoWXgk2_VXpCIFbQgf1k2zcnv4hOLWIVc5BDv80c,260
63
63
  arpakitlib/_arpakit_project_template/manage/settings_generate_env_example.py,sha256=BLLeF4JenexXbO1mMj8X-lB81TG3-QTmN4DjPYEUI8o,288
64
- arpakitlib/_arpakit_project_template/manage/sqlalchemy_db_check_conn.py,sha256=3Q4QfvFVBZsbMMH5yr6v3a6v6UjQuIEIujlxGpvykNA,190
65
- arpakitlib/_arpakit_project_template/manage/sqlalchemy_db_init.py,sha256=FqKVuakafDndHKBsyPcSowhss6MZb0Soy5oREUPVLUw,184
66
- arpakitlib/_arpakit_project_template/manage/sqlalchemy_db_reinit.py,sha256=twBWh64WU-sqHUte8v9ZJUZ_bCsFABExgIWLOnfLu4w,186
64
+ arpakitlib/_arpakit_project_template/manage/sqlalchemy_db_check_conn.py,sha256=wv1N33nTGpsT9nk94OePlOSZ-O9UVKlMfRf8y5UeK1Y,213
65
+ arpakitlib/_arpakit_project_template/manage/sqlalchemy_db_init.py,sha256=cBkdDS4i1dbt0HsV6vyTTZvtCXYTfCdkvCHgVFrafUU,207
66
+ arpakitlib/_arpakit_project_template/manage/sqlalchemy_db_reinit.py,sha256=YhXC7zwdN3L4MDrNxCaI379M7u27n-BXw5qIAG1uZEE,209
67
67
  arpakitlib/_arpakit_project_template/resource/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
68
68
  arpakitlib/_arpakit_project_template/resource/static/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
69
+ arpakitlib/_arpakit_project_template/resource/static/healthcheck,sha256=IIO7Wvjwlr2-LPSQ7Y8O35hcI6t0_s8zqITDxkYCO8I,11
69
70
  arpakitlib/_arpakit_project_template/resource/static/helloworld,sha256=eH7Hbcr9IMGQjrCTahL5Ht0QWrXNfswrGuIDJkg0Xf8,11
70
71
  arpakitlib/_arpakit_project_template/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
71
72
  arpakitlib/_arpakit_project_template/src/additional_model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -74,7 +75,7 @@ arpakitlib/_arpakit_project_template/src/api/__init__.py,sha256=47DEQpj8HBSa-_TI
74
75
  arpakitlib/_arpakit_project_template/src/api/asgi.py,sha256=a5UBxOyNC8NG3E0ayhiDo3t5tPoB3WtOf2gbZJFWBAA,74
75
76
  arpakitlib/_arpakit_project_template/src/api/auth.py,sha256=Ljq_VjjiAaW3HEzq60nkSI-HkHfuv6j5-8Q6Qs8V9bU,261
76
77
  arpakitlib/_arpakit_project_template/src/api/const.py,sha256=7d4qD5hedqr7QxVzbfsA7E1bNZn2Pm2U8joXGtpANu0,287
77
- arpakitlib/_arpakit_project_template/src/api/create_api_app.py,sha256=sSVf1Ft8VqdW_IAApYsL4C9mnK4M0wNUw8YafKXYJO4,4571
78
+ arpakitlib/_arpakit_project_template/src/api/create_api_app.py,sha256=lDE77W6WkeAeRB_vJY3TXRTa3HeiO-t26eTtG7v8j6U,4594
78
79
  arpakitlib/_arpakit_project_template/src/api/event.py,sha256=58wCVyVSIe_kydWi44M0Wvp7bTnV8xvO30gMXzjbFYc,750
79
80
  arpakitlib/_arpakit_project_template/src/api/router/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
81
  arpakitlib/_arpakit_project_template/src/api/router/main_router.py,sha256=__Z-pGoeooYCub7besFXGJJvZR3V-4IakXd3cKo6ZIM,209
@@ -92,18 +93,18 @@ arpakitlib/_arpakit_project_template/src/api/util.py,sha256=47DEQpj8HBSa-_TImW-5
92
93
  arpakitlib/_arpakit_project_template/src/business_service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
93
94
  arpakitlib/_arpakit_project_template/src/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
94
95
  arpakitlib/_arpakit_project_template/src/core/const.py,sha256=CZZew674y7LhCAlYhvuF5cV4Zb9nQ17j2Tcuj2GEBf4,1232
95
- arpakitlib/_arpakit_project_template/src/core/settings.py,sha256=O3uVuw9TSSIR2R32EWALAuUK05B6ufdWHl0LKVOuY98,2060
96
- arpakitlib/_arpakit_project_template/src/core/util.py,sha256=J1_AiI4DW_VB8ldLNATP6mjxz254CSxceGcqUbT0SVU,2006
96
+ arpakitlib/_arpakit_project_template/src/core/settings.py,sha256=QbW0A2UuYMmYG4wOHPbsrm0YdaqA3a1rsmA7k2gQyv8,2147
97
+ arpakitlib/_arpakit_project_template/src/core/util.py,sha256=5R8gvcZdvuDQes45FBnLC2IDv2Jhajp1VhJJYNKYjMQ,1539
97
98
  arpakitlib/_arpakit_project_template/src/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
98
99
  arpakitlib/_arpakit_project_template/src/db/sqlalchemy_model.py,sha256=nXtayUkBaVb6tWx5qJgXZLbLOTVAjnSLpSDxBm7yZLc,234
99
- arpakitlib/_arpakit_project_template/src/db/util.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
100
+ arpakitlib/_arpakit_project_template/src/db/util.py,sha256=8Jg9TtTwvyxVYIN_W5_lk9y-Pyh8To1aMRFUKCRDuuA,550
100
101
  arpakitlib/_arpakit_project_template/src/operation_execution/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
101
102
  arpakitlib/_arpakit_project_template/src/operation_execution/const.py,sha256=HjupGEDUWVijQlbzxZPI9vBbAVOETUYzYU9pdnc9IcI,176
102
103
  arpakitlib/_arpakit_project_template/src/operation_execution/operation_executor.py,sha256=5sZpn3tVxnmcuIVRD5sbBhiMY5SAqPCc4tHzoNzDe4c,619
103
104
  arpakitlib/_arpakit_project_template/src/operation_execution/scheduled_operations.py,sha256=hBPZIOJAX7ym54s2tJ2QRky15FqqDF9r4yTr8Nh2YqI,985
104
- arpakitlib/_arpakit_project_template/src/operation_execution/start_operation_executor_worker_for_dev.py,sha256=DC0UYP6XpFz-AoatzvqYSBqSYRwK7mvIUhbqxDkaiPk,603
105
- arpakitlib/_arpakit_project_template/src/operation_execution/start_scheduled_operation_creator_worker_for_dev.py,sha256=RyHCafGTJaY-o3mgt7MReqgJ2txoBDhhsFzrjRiZWe4,574
106
- arpakitlib/_arpakit_project_template/src/operation_execution/util.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
+ arpakitlib/_arpakit_project_template/src/operation_execution/start_operation_executor_worker_for_dev.py,sha256=uC9KxA3n9ul4YVg2bD4626ikUIv_kLc6TqyUQV_tWtc,626
106
+ arpakitlib/_arpakit_project_template/src/operation_execution/start_scheduled_operation_creator_worker_for_dev.py,sha256=qZFXZqdrL_vMSeajwhVFZrWhAlyU9G1PjKYMMgZn4sA,597
107
+ arpakitlib/_arpakit_project_template/src/operation_execution/util.py,sha256=wEplkGcSCA9PV2-BgUNHRpuZnaC6z4FouyzVT-UFm48,886
107
108
  arpakitlib/_arpakit_project_template/src/test_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
108
109
  arpakitlib/_arpakit_project_template/src/test_data/make_test_data_1.py,sha256=3WVPgRsNCIxWpA-6t_Phe-nFULdHPhS1S_DO11XRmqk,80
109
110
  arpakitlib/_arpakit_project_template/src/test_data/make_test_data_2.py,sha256=MVDc71sj5I1muWin50GwrSxMwYtOOSDOtRmeFErHcXs,80
@@ -147,7 +148,7 @@ arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css,sha256=jzPZlgJTFwSdSphk9C
147
148
  arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css.map,sha256=5wq8eXMLU6Zxb45orZPL1zAsBFJReFw6GjYqGpUX3hg,262650
148
149
  arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js,sha256=ffrLZHHEQ_g84A-ul3yWa10Kk09waOAxHcQXPuZuavg,339292
149
150
  arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js.map,sha256=9UhIW7MqCOZPAz1Sl1IKfZUuhWU0p-LJqrnjjJD9Xhc,1159454
150
- arpakitlib/ar_fastapi_util.py,sha256=eOErnvI8ujwC_yN0XGN2xHm2RUoDk103OCpIkFGJ8A4,24555
151
+ arpakitlib/ar_fastapi_util.py,sha256=7NcRLArsrZgzihbDLWzI9JAH8i2SKwPwig8UdANq-jw,24700
151
152
  arpakitlib/ar_file_storage_in_dir_util.py,sha256=D3e3rGuHoI6xqAA5mVvEpVVpOWY1jyjNsjj2UhyHRbE,3674
152
153
  arpakitlib/ar_file_util.py,sha256=GUdJYm1tUZnYpY-SIPRHAZBHGra8NKy1eYEI0D5AfhY,489
153
154
  arpakitlib/ar_hash_util.py,sha256=Iqy6KBAOLBQMFLWv676boI5sV7atT2B-fb7aCdHOmIQ,340
@@ -176,9 +177,9 @@ arpakitlib/ar_str_util.py,sha256=tFoGSDYoGpfdVHWor5Li9pEOFmDFlHkX-Z8iOy1LK7Y,353
176
177
  arpakitlib/ar_type_util.py,sha256=46ZMuWls3uN0Re5T0sfEAmyNUDnxn9yvj6dHivSDZKs,3915
177
178
  arpakitlib/ar_yookassa_api_client_util.py,sha256=sh4fcUkAkdOetFn9JYoTvjcSXP-M1wU04KEY-ECLfLg,5137
178
179
  arpakitlib/ar_zabbix_api_client_util.py,sha256=Q-VR4MvoZ9aHwZeYZr9G3LwN-ANx1T5KFmF6pvPM-9M,6402
179
- arpakitlib-1.7.69.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
180
- arpakitlib-1.7.69.dist-info/METADATA,sha256=dxNepy8YzjKwnSx2U3JkJXMfSueYkKre7eKe-c1G8U8,2824
181
- arpakitlib-1.7.69.dist-info/NOTICE,sha256=95aUzaPJjVpDsGAsNzVnq7tHTxAl0s5UFznCTkVCau4,763
182
- arpakitlib-1.7.69.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
183
- arpakitlib-1.7.69.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
184
- arpakitlib-1.7.69.dist-info/RECORD,,
180
+ arpakitlib-1.7.71.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
181
+ arpakitlib-1.7.71.dist-info/METADATA,sha256=qnzJ63_6S3mfsYCd1NzDVXVh8brXxO9JAvpW_sS0KCI,2824
182
+ arpakitlib-1.7.71.dist-info/NOTICE,sha256=95aUzaPJjVpDsGAsNzVnq7tHTxAl0s5UFznCTkVCau4,763
183
+ arpakitlib-1.7.71.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
184
+ arpakitlib-1.7.71.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
185
+ arpakitlib-1.7.71.dist-info/RECORD,,