arpakitlib 1.7.132__py3-none-any.whl → 1.7.207__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/manage/sandbox/sandbox_1.py +4 -4
- arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_2.py +4 -4
- arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_3.py +4 -4
- arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_4.py +4 -4
- arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_5.py +4 -4
- arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_6.py +4 -4
- arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_7.py +4 -4
- arpakitlib/_arpakit_project_template/src/additional_model/additional_model.py +2 -0
- arpakitlib/_arpakit_project_template/src/admin1/add_admin_in_app.py +8 -2
- arpakitlib/_arpakit_project_template/src/admin1/model_view.py +0 -18
- arpakitlib/_arpakit_project_template/src/api/{start_api_for_dev_with_reload.py → _start_api_with_reload.py} +2 -2
- arpakitlib/_arpakit_project_template/src/api/{start_api_for_dev_without_reload.py → _start_api_without_reload.py} +2 -2
- arpakitlib/_arpakit_project_template/src/api/event.py +2 -8
- arpakitlib/_arpakit_project_template/src/api/router/v1/get_api_error_info.py +1 -0
- arpakitlib/_arpakit_project_template/src/api/router/v1/main_router.py +4 -0
- arpakitlib/_arpakit_project_template/src/api/schema/v1/in_.py +1 -0
- arpakitlib/_arpakit_project_template/src/api/schema/v1/out.py +2 -0
- arpakitlib/_arpakit_project_template/src/api/transmitted_api_data.py +2 -0
- arpakitlib/_arpakit_project_template/src/business_service/hello_world.py +4 -1
- arpakitlib/_arpakit_project_template/src/core/{check_logging.py → _check_logging.py} +2 -2
- arpakitlib/_arpakit_project_template/src/core/{check_settings.py → _check_settings.py} +2 -4
- arpakitlib/_arpakit_project_template/src/core/{generate_settings_env_example.py → _generate_settings_env_example.py} +2 -4
- arpakitlib/_arpakit_project_template/src/core/const.py +5 -11
- arpakitlib/_arpakit_project_template/src/core/settings.py +14 -13
- arpakitlib/_arpakit_project_template/src/core/util.py +3 -0
- arpakitlib/_arpakit_project_template/src/db/{check_conn_sqlalchemy_db.py → _check_conn_sqlalchemy_db.py} +2 -2
- arpakitlib/_arpakit_project_template/src/db/{init_sqlalchemy_db.py → _init_sqlalchemy_db.py} +2 -2
- arpakitlib/_arpakit_project_template/src/db/{reinit_sqlalchemy_db.py → _reinit_sqlalchemy_db.py} +3 -3
- arpakitlib/_arpakit_project_template/src/db/const.py +1 -0
- arpakitlib/_arpakit_project_template/src/db/util.py +2 -0
- arpakitlib/_arpakit_project_template/src/operation_execution/{start_operation_executor_worker.py → _start_operation_executor_worker.py} +2 -4
- arpakitlib/_arpakit_project_template/src/operation_execution/{start_scheduled_operation_creator_worker.py → _start_scheduled_operation_creator_worker.py} +2 -4
- arpakitlib/_arpakit_project_template/src/operation_execution/scheduled_operations.py +12 -8
- arpakitlib/_arpakit_project_template/src/operation_execution/util.py +1 -0
- arpakitlib/_arpakit_project_template/src/test_data/make_test_data_1.py +2 -0
- arpakitlib/_arpakit_project_template/src/test_data/make_test_data_2.py +2 -0
- arpakitlib/_arpakit_project_template/src/test_data/make_test_data_3.py +2 -0
- arpakitlib/_arpakit_project_template/src/test_data/make_test_data_4.py +2 -0
- arpakitlib/_arpakit_project_template/src/test_data/make_test_data_5.py +2 -0
- arpakitlib/ar_class_util.py +17 -0
- arpakitlib/ar_enumeration_util.py +19 -1
- arpakitlib/ar_operation_execution_util.py +1 -0
- arpakitlib/ar_settings_util.py +2 -2
- arpakitlib/ar_sqladmin_util.py +101 -0
- arpakitlib/ar_type_util.py +15 -0
- {arpakitlib-1.7.132.dist-info → arpakitlib-1.7.207.dist-info}/METADATA +1 -1
- {arpakitlib-1.7.132.dist-info → arpakitlib-1.7.207.dist-info}/RECORD +51 -52
- arpakitlib/_arpakit_project_template/NOTICE +0 -16
- arpakitlib/_arpakit_project_template/manage/poetry_generate_requirements.txt.sh +0 -1
- arpakitlib-1.7.132.dist-info/NOTICE +0 -16
- /arpakitlib/{api_key_util.py → ar_api_key_util.py} +0 -0
- {arpakitlib-1.7.132.dist-info → arpakitlib-1.7.207.dist-info}/LICENSE +0 -0
- {arpakitlib-1.7.132.dist-info → arpakitlib-1.7.207.dist-info}/WHEEL +0 -0
- {arpakitlib-1.7.132.dist-info → arpakitlib-1.7.207.dist-info}/entry_points.txt +0 -0
@@ -1,14 +1,14 @@
|
|
1
1
|
import asyncio
|
2
2
|
|
3
3
|
|
4
|
-
def
|
4
|
+
def _sandbox():
|
5
5
|
pass
|
6
6
|
|
7
7
|
|
8
|
-
async def
|
8
|
+
async def _async_sandbox():
|
9
9
|
pass
|
10
10
|
|
11
11
|
|
12
12
|
if __name__ == '__main__':
|
13
|
-
|
14
|
-
asyncio.run(
|
13
|
+
_sandbox()
|
14
|
+
asyncio.run(_async_sandbox())
|
@@ -1,14 +1,14 @@
|
|
1
1
|
import asyncio
|
2
2
|
|
3
3
|
|
4
|
-
def
|
4
|
+
def _sandbox():
|
5
5
|
pass
|
6
6
|
|
7
7
|
|
8
|
-
async def
|
8
|
+
async def _async_sandbox():
|
9
9
|
pass
|
10
10
|
|
11
11
|
|
12
12
|
if __name__ == '__main__':
|
13
|
-
|
14
|
-
asyncio.run(
|
13
|
+
_sandbox()
|
14
|
+
asyncio.run(_async_sandbox())
|
@@ -1,14 +1,14 @@
|
|
1
1
|
import asyncio
|
2
2
|
|
3
3
|
|
4
|
-
def
|
4
|
+
def _sandbox():
|
5
5
|
pass
|
6
6
|
|
7
7
|
|
8
|
-
async def
|
8
|
+
async def _async_sandbox():
|
9
9
|
pass
|
10
10
|
|
11
11
|
|
12
12
|
if __name__ == '__main__':
|
13
|
-
|
14
|
-
asyncio.run(
|
13
|
+
_sandbox()
|
14
|
+
asyncio.run(_async_sandbox())
|
@@ -1,14 +1,14 @@
|
|
1
1
|
import asyncio
|
2
2
|
|
3
3
|
|
4
|
-
def
|
4
|
+
def _sandbox():
|
5
5
|
pass
|
6
6
|
|
7
7
|
|
8
|
-
async def
|
8
|
+
async def _async_sandbox():
|
9
9
|
pass
|
10
10
|
|
11
11
|
|
12
12
|
if __name__ == '__main__':
|
13
|
-
|
14
|
-
asyncio.run(
|
13
|
+
_sandbox()
|
14
|
+
asyncio.run(_async_sandbox())
|
@@ -1,14 +1,14 @@
|
|
1
1
|
import asyncio
|
2
2
|
|
3
3
|
|
4
|
-
def
|
4
|
+
def _sandbox():
|
5
5
|
pass
|
6
6
|
|
7
7
|
|
8
|
-
async def
|
8
|
+
async def _async_sandbox():
|
9
9
|
pass
|
10
10
|
|
11
11
|
|
12
12
|
if __name__ == '__main__':
|
13
|
-
|
14
|
-
asyncio.run(
|
13
|
+
_sandbox()
|
14
|
+
asyncio.run(_async_sandbox())
|
@@ -1,14 +1,14 @@
|
|
1
1
|
import asyncio
|
2
2
|
|
3
3
|
|
4
|
-
def
|
4
|
+
def _sandbox():
|
5
5
|
pass
|
6
6
|
|
7
7
|
|
8
|
-
async def
|
8
|
+
async def _async_sandbox():
|
9
9
|
pass
|
10
10
|
|
11
11
|
|
12
12
|
if __name__ == '__main__':
|
13
|
-
|
14
|
-
asyncio.run(
|
13
|
+
_sandbox()
|
14
|
+
asyncio.run(_async_sandbox())
|
@@ -1,14 +1,14 @@
|
|
1
1
|
import asyncio
|
2
2
|
|
3
3
|
|
4
|
-
def
|
4
|
+
def _sandbox():
|
5
5
|
pass
|
6
6
|
|
7
7
|
|
8
|
-
async def
|
8
|
+
async def _async_sandbox():
|
9
9
|
pass
|
10
10
|
|
11
11
|
|
12
12
|
if __name__ == '__main__':
|
13
|
-
|
14
|
-
asyncio.run(
|
13
|
+
_sandbox()
|
14
|
+
asyncio.run(_async_sandbox())
|
@@ -1,8 +1,11 @@
|
|
1
|
+
import importlib
|
2
|
+
from contextlib import suppress
|
3
|
+
|
1
4
|
from fastapi import FastAPI
|
2
5
|
from sqladmin import Admin
|
3
6
|
|
7
|
+
from arpakitlib.ar_sqladmin_util import SimpleModelView
|
4
8
|
from src.admin1.admin_auth import AdminAuth
|
5
|
-
from src.admin1.model_view import MODEL_VIEWS
|
6
9
|
from src.api.transmitted_api_data import TransmittedAPIData
|
7
10
|
from src.core.settings import get_cached_settings
|
8
11
|
|
@@ -20,7 +23,10 @@ def add_admin1_in_app(*, app: FastAPI) -> FastAPI:
|
|
20
23
|
title=get_cached_settings().project_name
|
21
24
|
)
|
22
25
|
|
23
|
-
|
26
|
+
with suppress(Exception):
|
27
|
+
importlib.import_module("src.admin1.model_view")
|
28
|
+
|
29
|
+
for model_view in SimpleModelView.all_subclasses:
|
24
30
|
admin.add_model_view(model_view)
|
25
31
|
|
26
32
|
return app
|
@@ -1,19 +1 @@
|
|
1
|
-
from sqladmin import ModelView
|
2
|
-
|
3
|
-
|
4
|
-
class BaseModelView(ModelView):
|
5
|
-
can_create = True
|
6
|
-
can_edit = True
|
7
|
-
can_delete = True
|
8
|
-
can_view_details = True
|
9
|
-
can_export = True
|
10
|
-
page_size = 50
|
11
|
-
page_size_options = [25, 50, 100, 200]
|
12
|
-
save_as = True
|
13
|
-
save_as_continue = True
|
14
|
-
export_types = ["xlsx", "csv", "json"]
|
15
|
-
|
16
|
-
|
17
|
-
MODEL_VIEWS = []
|
18
|
-
|
19
1
|
# ...
|
@@ -3,7 +3,7 @@ import uvicorn
|
|
3
3
|
from src.core.settings import get_cached_settings
|
4
4
|
|
5
5
|
|
6
|
-
def
|
6
|
+
def _start_api_for_dev_with_reload():
|
7
7
|
uvicorn.run(
|
8
8
|
"src.api.asgi:app",
|
9
9
|
port=get_cached_settings().api_port,
|
@@ -14,4 +14,4 @@ def __command():
|
|
14
14
|
|
15
15
|
|
16
16
|
if __name__ == '__main__':
|
17
|
-
|
17
|
+
_start_api_for_dev_with_reload()
|
@@ -3,7 +3,7 @@ import uvicorn
|
|
3
3
|
from src.core.settings import get_cached_settings
|
4
4
|
|
5
5
|
|
6
|
-
def
|
6
|
+
def _start_api_for_dev_without_reload():
|
7
7
|
uvicorn.run(
|
8
8
|
"src.api.asgi:app",
|
9
9
|
port=get_cached_settings().api_port,
|
@@ -14,4 +14,4 @@ def __command():
|
|
14
14
|
|
15
15
|
|
16
16
|
if __name__ == '__main__':
|
17
|
-
|
17
|
+
_start_api_for_dev_without_reload()
|
@@ -35,10 +35,7 @@ class StartupAPIEvent(BaseStartupAPIEvent):
|
|
35
35
|
worker=OperationExecutorWorker(
|
36
36
|
sqlalchemy_db=self.transmitted_api_data.sqlalchemy_db,
|
37
37
|
operation_executor=OperationExecutor(sqlalchemy_db=self.transmitted_api_data.sqlalchemy_db),
|
38
|
-
filter_operation_types=None
|
39
|
-
startup_funcs=[
|
40
|
-
self.transmitted_api_data.sqlalchemy_db.init
|
41
|
-
]
|
38
|
+
filter_operation_types=None
|
42
39
|
),
|
43
40
|
mode=SafeRunInBackgroundModes.thread
|
44
41
|
)
|
@@ -48,10 +45,7 @@ class StartupAPIEvent(BaseStartupAPIEvent):
|
|
48
45
|
_ = safe_run_worker_in_background(
|
49
46
|
worker=ScheduledOperationCreatorWorker(
|
50
47
|
sqlalchemy_db=self.transmitted_api_data.sqlalchemy_db,
|
51
|
-
scheduled_operations=SCHEDULED_OPERATIONS
|
52
|
-
startup_funcs=[
|
53
|
-
self.transmitted_api_data.sqlalchemy_db.init
|
54
|
-
]
|
48
|
+
scheduled_operations=SCHEDULED_OPERATIONS
|
55
49
|
),
|
56
50
|
mode=SafeRunInBackgroundModes.async_task
|
57
51
|
)
|
@@ -4,8 +4,12 @@ from src.api.router.v1 import get_api_error_info
|
|
4
4
|
|
5
5
|
main_v1_api_router = APIRouter()
|
6
6
|
|
7
|
+
# API Error Info
|
8
|
+
|
7
9
|
main_v1_api_router.include_router(
|
8
10
|
router=get_api_error_info.api_router,
|
9
11
|
prefix="/get_api_error_info",
|
10
12
|
tags=["API Error Info"]
|
11
13
|
)
|
14
|
+
|
15
|
+
# ...
|
@@ -0,0 +1 @@
|
|
1
|
+
# ...
|
@@ -5,10 +5,10 @@ from src.core.util import setup_logging
|
|
5
5
|
_logger = logging.getLogger(__name__)
|
6
6
|
|
7
7
|
|
8
|
-
def
|
8
|
+
def _check_logging():
|
9
9
|
setup_logging()
|
10
10
|
_logger.info("logging is good")
|
11
11
|
|
12
12
|
|
13
13
|
if __name__ == '__main__':
|
14
|
-
|
14
|
+
_check_logging()
|
@@ -1,12 +1,10 @@
|
|
1
1
|
from arpakitlib.ar_json_util import safely_transfer_obj_to_json_str
|
2
2
|
from src.core.settings import get_cached_settings
|
3
|
-
from src.core.util import setup_logging
|
4
3
|
|
5
4
|
|
6
|
-
def
|
7
|
-
setup_logging()
|
5
|
+
def _check_settings():
|
8
6
|
print(safely_transfer_obj_to_json_str(get_cached_settings().model_dump(mode="json")))
|
9
7
|
|
10
8
|
|
11
9
|
if __name__ == '__main__':
|
12
|
-
|
10
|
+
_check_settings()
|
@@ -3,14 +3,12 @@ import os.path
|
|
3
3
|
from arpakitlib.ar_json_util import safely_transfer_obj_to_json_str
|
4
4
|
from src.core.const import ProjectPaths
|
5
5
|
from src.core.settings import Settings, get_cached_settings
|
6
|
-
from src.core.util import setup_logging
|
7
6
|
|
8
7
|
|
9
|
-
def
|
10
|
-
setup_logging()
|
8
|
+
def _generate_settings_env_example():
|
11
9
|
print(safely_transfer_obj_to_json_str(get_cached_settings().model_dump(mode="json")))
|
12
10
|
Settings.save_env_example_to_file(filepath=os.path.join(ProjectPaths.base_dirpath, "example.env"))
|
13
11
|
|
14
12
|
|
15
13
|
if __name__ == '__main__':
|
16
|
-
|
14
|
+
_generate_settings_env_example()
|
@@ -3,6 +3,7 @@ import os
|
|
3
3
|
import pathlib
|
4
4
|
|
5
5
|
from arpakitlib.ar_enumeration_util import Enumeration
|
6
|
+
from arpakitlib.ar_json_util import safely_transfer_obj_to_json_str
|
6
7
|
|
7
8
|
|
8
9
|
class ProjectPaths(Enumeration):
|
@@ -24,18 +25,11 @@ class ProjectPaths(Enumeration):
|
|
24
25
|
static_dirpath: str = os.path.join(resource_dirpath, static_dirname)
|
25
26
|
|
26
27
|
|
28
|
+
# ...
|
29
|
+
|
30
|
+
|
27
31
|
def __example():
|
28
|
-
print(
|
29
|
-
print(f"env_filename: {ProjectPaths.env_filename}")
|
30
|
-
print(f"env_filepath: {ProjectPaths.env_filepath}")
|
31
|
-
print(f"src_dirname: {ProjectPaths.src_dirname}")
|
32
|
-
print(f"src_dirpath: {ProjectPaths.src_dirpath}")
|
33
|
-
print(f"manage_dirname: {ProjectPaths.manage_dirname}")
|
34
|
-
print(f"manage_dirpath: {ProjectPaths.manage_dirpath}")
|
35
|
-
print(f"resource_dirname: {ProjectPaths.resource_dirname}")
|
36
|
-
print(f"resource_dirpath: {ProjectPaths.resource_dirpath}")
|
37
|
-
print(f"static_dirname: {ProjectPaths.static_dirname}")
|
38
|
-
print(f"static_dirpath: {ProjectPaths.static_dirpath}")
|
32
|
+
print(safely_transfer_obj_to_json_str(ProjectPaths.key_to_value()))
|
39
33
|
|
40
34
|
|
41
35
|
async def __async_example():
|
@@ -1,4 +1,3 @@
|
|
1
|
-
import asyncio
|
2
1
|
import os
|
3
2
|
from functools import lru_cache
|
4
3
|
from typing import Any
|
@@ -13,11 +12,22 @@ from src.core.const import ProjectPaths
|
|
13
12
|
class Settings(SimpleSettings):
|
14
13
|
project_name: str = "{{PROJECT_NAME}}"
|
15
14
|
|
15
|
+
sql_db_user: str | None = project_name
|
16
|
+
|
17
|
+
sql_db_password: str | None = project_name
|
18
|
+
|
16
19
|
sql_db_port: int | None = int("{{SQL_DB_PORT}}") if "{{SQL_DB_PORT}}".strip().isdigit() else None
|
17
20
|
|
21
|
+
sql_db_database: str | None = project_name
|
22
|
+
|
18
23
|
sql_db_url: str | None = (
|
19
|
-
f"postgresql://{
|
20
|
-
) if
|
24
|
+
f"postgresql://{sql_db_user}:{sql_db_password}@127.0.0.1:{sql_db_port}/{sql_db_database}"
|
25
|
+
) if (
|
26
|
+
sql_db_user is not None
|
27
|
+
and sql_db_password is not None
|
28
|
+
and sql_db_port is not None
|
29
|
+
and sql_db_database is not None
|
30
|
+
) else None
|
21
31
|
|
22
32
|
sql_db_echo: bool = False
|
23
33
|
|
@@ -79,14 +89,5 @@ def get_cached_settings() -> Settings:
|
|
79
89
|
return Settings()
|
80
90
|
|
81
91
|
|
82
|
-
def __example():
|
83
|
-
print(safely_transfer_obj_to_json_str(get_cached_settings().model_dump(mode="json")))
|
84
|
-
|
85
|
-
|
86
|
-
async def __async_example():
|
87
|
-
pass
|
88
|
-
|
89
|
-
|
90
92
|
if __name__ == '__main__':
|
91
|
-
|
92
|
-
asyncio.run(__async_example())
|
93
|
+
print(safely_transfer_obj_to_json_str(get_cached_settings().model_dump(mode="json")))
|
@@ -2,10 +2,10 @@ from src.core.util import setup_logging
|
|
2
2
|
from src.db.util import get_cached_sqlalchemy_db
|
3
3
|
|
4
4
|
|
5
|
-
def
|
5
|
+
def _check_conn_sqlalchemy_db():
|
6
6
|
setup_logging()
|
7
7
|
get_cached_sqlalchemy_db().check_conn()
|
8
8
|
|
9
9
|
|
10
10
|
if __name__ == '__main__':
|
11
|
-
|
11
|
+
_check_conn_sqlalchemy_db()
|
arpakitlib/_arpakit_project_template/src/db/{init_sqlalchemy_db.py → _init_sqlalchemy_db.py}
RENAMED
@@ -2,10 +2,10 @@ from src.core.util import setup_logging
|
|
2
2
|
from src.db.util import get_cached_sqlalchemy_db
|
3
3
|
|
4
4
|
|
5
|
-
def
|
5
|
+
def _init_sqlalchemy_db():
|
6
6
|
setup_logging()
|
7
7
|
get_cached_sqlalchemy_db().init()
|
8
8
|
|
9
9
|
|
10
10
|
if __name__ == '__main__':
|
11
|
-
|
11
|
+
_init_sqlalchemy_db()
|
arpakitlib/_arpakit_project_template/src/db/{reinit_sqlalchemy_db.py → _reinit_sqlalchemy_db.py}
RENAMED
@@ -3,11 +3,11 @@ from src.core.util import setup_logging
|
|
3
3
|
from src.db.util import get_cached_sqlalchemy_db
|
4
4
|
|
5
5
|
|
6
|
-
def
|
6
|
+
def _reinit_sqlalchemy_db():
|
7
7
|
setup_logging()
|
8
|
-
get_cached_settings().
|
8
|
+
get_cached_settings().raise_if_mode_type_prod()
|
9
9
|
get_cached_sqlalchemy_db().reinit()
|
10
10
|
|
11
11
|
|
12
12
|
if __name__ == '__main__':
|
13
|
-
|
13
|
+
_reinit_sqlalchemy_db()
|
@@ -0,0 +1 @@
|
|
1
|
+
# ...
|
@@ -1,13 +1,11 @@
|
|
1
1
|
from arpakitlib.ar_operation_execution_util import OperationExecutorWorker
|
2
|
-
from src.core.settings import get_cached_settings
|
3
2
|
from src.core.util import setup_logging
|
4
3
|
from src.db.util import get_cached_sqlalchemy_db
|
5
4
|
from src.operation_execution.operation_executor import OperationExecutor
|
6
5
|
|
7
6
|
|
8
|
-
def
|
7
|
+
def _start_operation_executor_worker():
|
9
8
|
setup_logging()
|
10
|
-
get_cached_settings().raise_if_mode_type_prod()
|
11
9
|
worker = OperationExecutorWorker(
|
12
10
|
sqlalchemy_db=get_cached_sqlalchemy_db(),
|
13
11
|
operation_executor=OperationExecutor(sqlalchemy_db=get_cached_sqlalchemy_db())
|
@@ -16,4 +14,4 @@ def start_operation_executor_worker():
|
|
16
14
|
|
17
15
|
|
18
16
|
if __name__ == '__main__':
|
19
|
-
|
17
|
+
_start_operation_executor_worker()
|
@@ -1,13 +1,11 @@
|
|
1
1
|
from arpakitlib.ar_operation_execution_util import ScheduledOperationCreatorWorker
|
2
|
-
from src.core.settings import get_cached_settings
|
3
2
|
from src.core.util import setup_logging
|
4
3
|
from src.db.util import get_cached_sqlalchemy_db
|
5
4
|
from src.operation_execution.scheduled_operations import SCHEDULED_OPERATIONS
|
6
5
|
|
7
6
|
|
8
|
-
def
|
7
|
+
def _start_scheduled_operation_creator_worker():
|
9
8
|
setup_logging()
|
10
|
-
get_cached_settings().raise_if_mode_type_prod()
|
11
9
|
worker = ScheduledOperationCreatorWorker(
|
12
10
|
sqlalchemy_db=get_cached_sqlalchemy_db(),
|
13
11
|
scheduled_operations=SCHEDULED_OPERATIONS
|
@@ -16,4 +14,4 @@ def start_scheduled_operation_creator_worker():
|
|
16
14
|
|
17
15
|
|
18
16
|
if __name__ == '__main__':
|
19
|
-
|
17
|
+
_start_scheduled_operation_creator_worker()
|
@@ -3,23 +3,27 @@ from datetime import timedelta, time
|
|
3
3
|
from arpakitlib.ar_operation_execution_util import ScheduledOperation, every_timedelta_is_time_func, \
|
4
4
|
between_different_times_is_time_func
|
5
5
|
from arpakitlib.ar_sqlalchemy_model_util import BaseOperationTypes
|
6
|
+
from src.core.settings import get_cached_settings
|
6
7
|
|
7
8
|
SCHEDULED_OPERATIONS = []
|
8
9
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
)
|
14
|
-
|
10
|
+
if get_cached_settings().is_mode_type_not_prod:
|
11
|
+
healthcheck_1_scheduled_operation = ScheduledOperation(
|
12
|
+
type=BaseOperationTypes.healthcheck_,
|
13
|
+
input_data={"healthcheck_1": "healthcheck_1"},
|
14
|
+
is_time_func=every_timedelta_is_time_func(td=timedelta(seconds=15))
|
15
|
+
)
|
16
|
+
SCHEDULED_OPERATIONS.append(healthcheck_1_scheduled_operation)
|
15
17
|
|
16
18
|
healthcheck_2_scheduled_operation = ScheduledOperation(
|
17
19
|
type=BaseOperationTypes.healthcheck_,
|
18
20
|
input_data={"healthcheck_2": "healthcheck_2"},
|
19
21
|
is_time_func=between_different_times_is_time_func(
|
20
|
-
from_time=time(hour=
|
21
|
-
to_time=time(hour=
|
22
|
+
from_time=time(hour=0, minute=0),
|
23
|
+
to_time=time(hour=0, minute=30)
|
22
24
|
),
|
23
25
|
timeout_after_creation=timedelta(seconds=60)
|
24
26
|
)
|
25
27
|
SCHEDULED_OPERATIONS.append(healthcheck_2_scheduled_operation)
|
28
|
+
|
29
|
+
# ...
|
@@ -0,0 +1 @@
|
|
1
|
+
# ...
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# arpakit
|
2
|
+
|
3
|
+
|
4
|
+
_ARPAKIT_LIB_MODULE_VERSION = "3.0"
|
5
|
+
|
6
|
+
|
7
|
+
class CollectingSubclassesMeta(type):
|
8
|
+
"""
|
9
|
+
Метакласс для автоматического сбора всех наследников в поле ALL_SUBCLASSES.
|
10
|
+
"""
|
11
|
+
|
12
|
+
def __init__(cls, name, bases, dct, **kwargs):
|
13
|
+
super().__init__(name, bases, dct, **kwargs)
|
14
|
+
if not hasattr(cls, "all_subclasses"):
|
15
|
+
cls.all_subclasses = []
|
16
|
+
elif bases:
|
17
|
+
cls.all_subclasses.append(cls)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# arpakit
|
2
2
|
|
3
|
-
from typing import Union, Iterator, Iterable
|
3
|
+
from typing import Union, Iterator, Iterable, Any
|
4
4
|
|
5
5
|
_ARPAKIT_LIB_MODULE_VERSION = "3.0"
|
6
6
|
|
@@ -80,6 +80,24 @@ class Enumeration:
|
|
80
80
|
def print(cls):
|
81
81
|
print(cls.str_for_print())
|
82
82
|
|
83
|
+
@classmethod
|
84
|
+
def key_to_value(cls) -> dict[str, Any]:
|
85
|
+
big_dict = {}
|
86
|
+
for class_ in reversed(cls.mro()):
|
87
|
+
big_dict.update(class_.__dict__)
|
88
|
+
big_dict.update(cls.__dict__)
|
89
|
+
|
90
|
+
result = {}
|
91
|
+
for key, value in big_dict.items():
|
92
|
+
if (
|
93
|
+
isinstance(key, str)
|
94
|
+
and not (key.startswith("__") or key.endswith("__"))
|
95
|
+
and isinstance(value, (str, int))
|
96
|
+
):
|
97
|
+
result[key] = value
|
98
|
+
|
99
|
+
return result
|
100
|
+
|
83
101
|
|
84
102
|
def __example():
|
85
103
|
pass
|
@@ -411,6 +411,7 @@ class ScheduledOperationCreatorWorker(BaseWorker):
|
|
411
411
|
session.add(operation_dbm)
|
412
412
|
session.commit()
|
413
413
|
session.refresh(operation_dbm)
|
414
|
+
self._logger.info(f"scheduled operation (id={operation_dbm.id}) was created")
|
414
415
|
|
415
416
|
if scheduled_operation.timeout_after_creation is not None:
|
416
417
|
if timeout is not None:
|
arpakitlib/ar_settings_util.py
CHANGED
@@ -39,7 +39,7 @@ class SimpleSettings(BaseSettings):
|
|
39
39
|
|
40
40
|
@property
|
41
41
|
def is_mode_type_not_prod(self) -> bool:
|
42
|
-
return self.mode_type ==
|
42
|
+
return self.mode_type == ModeTypes.not_prod
|
43
43
|
|
44
44
|
def raise_if_mode_type_not_prod(self):
|
45
45
|
if self.is_mode_type_not_prod:
|
@@ -47,7 +47,7 @@ class SimpleSettings(BaseSettings):
|
|
47
47
|
|
48
48
|
@property
|
49
49
|
def is_mode_type_prod(self) -> bool:
|
50
|
-
return self.mode_type ==
|
50
|
+
return self.mode_type == ModeTypes.prod
|
51
51
|
|
52
52
|
def raise_if_mode_type_prod(self):
|
53
53
|
if self.is_mode_type_prod:
|
@@ -0,0 +1,101 @@
|
|
1
|
+
# arpakit
|
2
|
+
from sqladmin import ModelView
|
3
|
+
from sqladmin.models import ModelViewMeta
|
4
|
+
|
5
|
+
from arpakitlib.ar_class_util import CollectingSubclassesMeta
|
6
|
+
from arpakitlib.ar_sqlalchemy_model_util import OperationDBM, StoryLogDBM
|
7
|
+
|
8
|
+
_ARPAKIT_LIB_MODULE_VERSION = "3.0"
|
9
|
+
|
10
|
+
|
11
|
+
def create_combined_meta(*metas):
|
12
|
+
"""
|
13
|
+
Создает объединённый метакласс для устранения конфликтов.
|
14
|
+
"""
|
15
|
+
|
16
|
+
class CombinedMeta(*metas):
|
17
|
+
pass
|
18
|
+
|
19
|
+
return CombinedMeta
|
20
|
+
|
21
|
+
|
22
|
+
class SimpleModelView(ModelView, metaclass=create_combined_meta(CollectingSubclassesMeta, ModelViewMeta)):
|
23
|
+
can_create = True
|
24
|
+
can_edit = True
|
25
|
+
can_delete = True
|
26
|
+
can_view_details = True
|
27
|
+
can_export = True
|
28
|
+
page_size = 50
|
29
|
+
page_size_options = [25, 50, 100, 200]
|
30
|
+
save_as = True
|
31
|
+
save_as_continue = True
|
32
|
+
export_types = ["xlsx", "csv", "json"]
|
33
|
+
|
34
|
+
|
35
|
+
class OperationMV(SimpleModelView, model=OperationDBM):
|
36
|
+
name = "Operation"
|
37
|
+
name_plural = "Operations"
|
38
|
+
column_list = [
|
39
|
+
OperationDBM.id,
|
40
|
+
OperationDBM.long_id,
|
41
|
+
OperationDBM.creation_dt,
|
42
|
+
OperationDBM.status,
|
43
|
+
OperationDBM.type,
|
44
|
+
OperationDBM.execution_start_dt,
|
45
|
+
OperationDBM.execution_finish_dt,
|
46
|
+
OperationDBM.input_data,
|
47
|
+
OperationDBM.output_data,
|
48
|
+
OperationDBM.error_data
|
49
|
+
]
|
50
|
+
form_columns = [
|
51
|
+
OperationDBM.status,
|
52
|
+
OperationDBM.type,
|
53
|
+
OperationDBM.execution_start_dt,
|
54
|
+
OperationDBM.execution_finish_dt,
|
55
|
+
OperationDBM.input_data,
|
56
|
+
OperationDBM.output_data,
|
57
|
+
OperationDBM.error_data
|
58
|
+
]
|
59
|
+
column_default_sort = [(OperationDBM.creation_dt, True)]
|
60
|
+
column_searchable_list = [
|
61
|
+
OperationDBM.id,
|
62
|
+
OperationDBM.long_id,
|
63
|
+
OperationDBM.status,
|
64
|
+
OperationDBM.type,
|
65
|
+
]
|
66
|
+
|
67
|
+
|
68
|
+
class StoryLogMV(SimpleModelView, model=StoryLogDBM):
|
69
|
+
name = "Operation"
|
70
|
+
name_plural = "Operations"
|
71
|
+
column_list = [
|
72
|
+
StoryLogDBM.id,
|
73
|
+
StoryLogDBM.long_id,
|
74
|
+
StoryLogDBM.creation_dt,
|
75
|
+
StoryLogDBM.level,
|
76
|
+
StoryLogDBM.title,
|
77
|
+
StoryLogDBM.data
|
78
|
+
]
|
79
|
+
form_columns = [
|
80
|
+
StoryLogDBM.level,
|
81
|
+
StoryLogDBM.title,
|
82
|
+
StoryLogDBM.data
|
83
|
+
]
|
84
|
+
column_default_sort = [(StoryLogDBM.creation_dt, True)]
|
85
|
+
column_searchable_list = [
|
86
|
+
StoryLogDBM.id,
|
87
|
+
StoryLogDBM.long_id,
|
88
|
+
StoryLogDBM.level,
|
89
|
+
StoryLogDBM.title,
|
90
|
+
StoryLogDBM.data
|
91
|
+
]
|
92
|
+
|
93
|
+
|
94
|
+
def __example():
|
95
|
+
print(len(SimpleModelView.all_subclasses))
|
96
|
+
for model_view in SimpleModelView.all_subclasses:
|
97
|
+
print(model_view)
|
98
|
+
|
99
|
+
|
100
|
+
if __name__ == '__main__':
|
101
|
+
__example()
|
arpakitlib/ar_type_util.py
CHANGED
@@ -84,6 +84,19 @@ def raise_if_not_none(v: Any) -> Any:
|
|
84
84
|
return v
|
85
85
|
|
86
86
|
|
87
|
+
def get_setted_elements_as_dict_from_dict(d: dict) -> dict[str, Any]:
|
88
|
+
raise_for_type(d, dict)
|
89
|
+
setted_ = {}
|
90
|
+
for k, v in d.items():
|
91
|
+
if is_set(v):
|
92
|
+
setted_[k] = v
|
93
|
+
return setted_
|
94
|
+
|
95
|
+
|
96
|
+
def get_setted_keys_from_dict(d: dict) -> list[Any]:
|
97
|
+
return list(get_setted_elements_as_dict_from_dict(d).keys())
|
98
|
+
|
99
|
+
|
87
100
|
def __example():
|
88
101
|
print("is_set:")
|
89
102
|
print(is_set(v=NotSet)) # False
|
@@ -138,6 +151,8 @@ def __example():
|
|
138
151
|
except TypeError as e:
|
139
152
|
print(e)
|
140
153
|
|
154
|
+
print(get_setted_elements_as_dict_from_dict({"afs": "ASfa", "asfasf": NotSet}))
|
155
|
+
|
141
156
|
|
142
157
|
if __name__ == '__main__':
|
143
158
|
__example()
|
@@ -3,7 +3,6 @@ arpakitlib/_arpakit_project_template/.gitignore,sha256=Q8n7q3-hKsnFVN5NcACPs71Z9
|
|
3
3
|
arpakitlib/_arpakit_project_template/.python-version,sha256=XMd40XBnlTFfBSmMldd-7VdqXNyFCy6wtxhw5e1mnhc,7
|
4
4
|
arpakitlib/_arpakit_project_template/ARPAKITLIB,sha256=3-iAkMXtesLzJXHw_IIv2k2M0oH8cTjHzW22Vvbi0IE,4
|
5
5
|
arpakitlib/_arpakit_project_template/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
|
6
|
-
arpakitlib/_arpakit_project_template/NOTICE,sha256=95aUzaPJjVpDsGAsNzVnq7tHTxAl0s5UFznCTkVCau4,763
|
7
6
|
arpakitlib/_arpakit_project_template/README.md,sha256=AwqCtmMeywF2dJhZbKwCBA_wPnLF_VmoLGfPbFjH3bM,62
|
8
7
|
arpakitlib/_arpakit_project_template/example.env,sha256=dJC2sjtywxm6ChP5jtIicGaaPvhI0NMNIhMmScg69b8,558
|
9
8
|
arpakitlib/_arpakit_project_template/manage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -35,7 +34,6 @@ arpakitlib/_arpakit_project_template/manage/poetry_check.sh,sha256=mxkbFqw-mVlAk
|
|
35
34
|
arpakitlib/_arpakit_project_template/manage/poetry_clear_cache.sh,sha256=5NmoMsA377JCeTMLERzE2GZywgi8mXQDTQ_yhIJtR8k,139
|
36
35
|
arpakitlib/_arpakit_project_template/manage/poetry_config.sh,sha256=gIctNLSvRJmER_iU_HwPpHR83adZV12LoXcoWfY9M00,26
|
37
36
|
arpakitlib/_arpakit_project_template/manage/poetry_config_virtualenvs_in_project_true.sh,sha256=CHAGXfmyztxgimUQ4MC4IwnLzd2uZ7Da1Xvem_lw60w,47
|
38
|
-
arpakitlib/_arpakit_project_template/manage/poetry_generate_requirements.txt.sh,sha256=Df2ms0GlmAymMGqf9Bp2i3_DI61Ii1xYKf7S0By7tdw,76
|
39
37
|
arpakitlib/_arpakit_project_template/manage/poetry_install.sh,sha256=oLSrFGHKIRWc-1VEiM9wPRUNPTjtYJ3hEKwbeCpCvlk,153
|
40
38
|
arpakitlib/_arpakit_project_template/manage/poetry_lock.sh,sha256=9oiTdi8ynGQWctQjI3g4ThGkvpT07-g5ajLmG47iVh8,17
|
41
39
|
arpakitlib/_arpakit_project_template/manage/poetry_remove_and_add_arpakitlib.sh,sha256=-DvxXI-oaAQxIZFtiCfNBhqpRgJcWWuxhoHb9Nou0a4,197
|
@@ -45,13 +43,13 @@ arpakitlib/_arpakit_project_template/manage/poetry_show_arpakitlib.sh,sha256=q2b
|
|
45
43
|
arpakitlib/_arpakit_project_template/manage/poetry_update.sh,sha256=ZtoXIC4Qq7PMTDxQMwUxvkYC6lTc5LC23ILTywWbyoU,164
|
46
44
|
arpakitlib/_arpakit_project_template/manage/poetry_update_arpakitlib.sh,sha256=hh7vj-yKgKqLfaGb8cjsJ_NTa7fBtE4s3yxzte4D8bw,163
|
47
45
|
arpakitlib/_arpakit_project_template/manage/sandbox/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
48
|
-
arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_1.py,sha256=
|
49
|
-
arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_2.py,sha256=
|
50
|
-
arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_3.py,sha256=
|
51
|
-
arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_4.py,sha256=
|
52
|
-
arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_5.py,sha256=
|
53
|
-
arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_6.py,sha256=
|
54
|
-
arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_7.py,sha256=
|
46
|
+
arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_1.py,sha256=dr5K0bdhF-1PlzJuG5wCYqyJ9KeBoNCz6363ZVnxcsk,159
|
47
|
+
arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_2.py,sha256=dr5K0bdhF-1PlzJuG5wCYqyJ9KeBoNCz6363ZVnxcsk,159
|
48
|
+
arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_3.py,sha256=dr5K0bdhF-1PlzJuG5wCYqyJ9KeBoNCz6363ZVnxcsk,159
|
49
|
+
arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_4.py,sha256=dr5K0bdhF-1PlzJuG5wCYqyJ9KeBoNCz6363ZVnxcsk,159
|
50
|
+
arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_5.py,sha256=dr5K0bdhF-1PlzJuG5wCYqyJ9KeBoNCz6363ZVnxcsk,159
|
51
|
+
arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_6.py,sha256=dr5K0bdhF-1PlzJuG5wCYqyJ9KeBoNCz6363ZVnxcsk,159
|
52
|
+
arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_7.py,sha256=dr5K0bdhF-1PlzJuG5wCYqyJ9KeBoNCz6363ZVnxcsk,159
|
55
53
|
arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_8.sh,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
56
54
|
arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_9.sh,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
57
55
|
arpakitlib/_arpakit_project_template/resource/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -60,66 +58,66 @@ arpakitlib/_arpakit_project_template/resource/static/healthcheck,sha256=IIO7Wvjw
|
|
60
58
|
arpakitlib/_arpakit_project_template/resource/static/helloworld,sha256=eH7Hbcr9IMGQjrCTahL5Ht0QWrXNfswrGuIDJkg0Xf8,11
|
61
59
|
arpakitlib/_arpakit_project_template/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
62
60
|
arpakitlib/_arpakit_project_template/src/additional_model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
63
|
-
arpakitlib/_arpakit_project_template/src/additional_model/additional_model.py,sha256=
|
61
|
+
arpakitlib/_arpakit_project_template/src/additional_model/additional_model.py,sha256=rCjK4hbog2kF-37SGHet0mrSjGXrAi1LxCgLT1IzzW8,141
|
64
62
|
arpakitlib/_arpakit_project_template/src/admin1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
65
|
-
arpakitlib/_arpakit_project_template/src/admin1/add_admin_in_app.py,sha256=
|
63
|
+
arpakitlib/_arpakit_project_template/src/admin1/add_admin_in_app.py,sha256=7zF-9Xa15bAbzqRQD18hAbzUQTflASoTjVProcdGWTM,922
|
66
64
|
arpakitlib/_arpakit_project_template/src/admin1/admin_auth.py,sha256=qEC7gMy9E6mwuQRxnSsmVthXahVai4zjiC6Z8O3MZn8,804
|
67
|
-
arpakitlib/_arpakit_project_template/src/admin1/model_view.py,sha256=
|
65
|
+
arpakitlib/_arpakit_project_template/src/admin1/model_view.py,sha256=dcvj5C9E2F2KCsGZPBBncQf_EvVJAC1qQgnyD8P4ZEw,6
|
68
66
|
arpakitlib/_arpakit_project_template/src/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
67
|
+
arpakitlib/_arpakit_project_template/src/api/_start_api_with_reload.py,sha256=3IjlhcleK2JoG-rYDHxVKpJA8uq4dTW_-_lbgPXsufI,333
|
68
|
+
arpakitlib/_arpakit_project_template/src/api/_start_api_without_reload.py,sha256=SRU3vahgxvVAzb8nIRDspXusK8_SS5QGblJE824Y12s,340
|
69
69
|
arpakitlib/_arpakit_project_template/src/api/asgi.py,sha256=a5UBxOyNC8NG3E0ayhiDo3t5tPoB3WtOf2gbZJFWBAA,74
|
70
70
|
arpakitlib/_arpakit_project_template/src/api/auth.py,sha256=dcvj5C9E2F2KCsGZPBBncQf_EvVJAC1qQgnyD8P4ZEw,6
|
71
71
|
arpakitlib/_arpakit_project_template/src/api/const.py,sha256=7d4qD5hedqr7QxVzbfsA7E1bNZn2Pm2U8joXGtpANu0,287
|
72
72
|
arpakitlib/_arpakit_project_template/src/api/create_api_app.py,sha256=5NJ50NqReuCTs-CH4_C_lcgpqKR9XuBONJOl2IRqOQI,2769
|
73
|
-
arpakitlib/_arpakit_project_template/src/api/event.py,sha256=
|
73
|
+
arpakitlib/_arpakit_project_template/src/api/event.py,sha256=Jd1eWUpPzGSg-wBIsCh1SNywemykQuXrf_6IlsoSO5w,2999
|
74
74
|
arpakitlib/_arpakit_project_template/src/api/router/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
75
75
|
arpakitlib/_arpakit_project_template/src/api/router/main_router.py,sha256=Yv699WCJDcdiJMXFg1kPTvolqj-NAGoXfqe-vzbMzIU,228
|
76
76
|
arpakitlib/_arpakit_project_template/src/api/router/v1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
77
|
-
arpakitlib/_arpakit_project_template/src/api/router/v1/get_api_error_info.py,sha256=
|
78
|
-
arpakitlib/_arpakit_project_template/src/api/router/v1/main_router.py,sha256=
|
77
|
+
arpakitlib/_arpakit_project_template/src/api/router/v1/get_api_error_info.py,sha256=FetRdIytQFOFlpo310jYEtrQSQm-SJ_6FOXB1Gbeq04,875
|
78
|
+
arpakitlib/_arpakit_project_template/src/api/router/v1/main_router.py,sha256=QG-uAwxvFAWoY1g6U0wOBz-X4jmKnpVp1R904PPIp9E,281
|
79
79
|
arpakitlib/_arpakit_project_template/src/api/schema/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
80
80
|
arpakitlib/_arpakit_project_template/src/api/schema/v1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
81
|
-
arpakitlib/_arpakit_project_template/src/api/schema/v1/in_.py,sha256=
|
82
|
-
arpakitlib/_arpakit_project_template/src/api/schema/v1/out.py,sha256=
|
83
|
-
arpakitlib/_arpakit_project_template/src/api/
|
84
|
-
arpakitlib/_arpakit_project_template/src/api/start_api_for_dev_without_reload.py,sha256=n30lbivzh1EJ8p8LY4YYlreQ14gfHWkU2zNxiwQ6ej4,292
|
85
|
-
arpakitlib/_arpakit_project_template/src/api/transmitted_api_data.py,sha256=fEWpfjnIrGluDrjgbsJwucQoiXKTP1cUYYORTFKdOJY,531
|
81
|
+
arpakitlib/_arpakit_project_template/src/api/schema/v1/in_.py,sha256=dcvj5C9E2F2KCsGZPBBncQf_EvVJAC1qQgnyD8P4ZEw,6
|
82
|
+
arpakitlib/_arpakit_project_template/src/api/schema/v1/out.py,sha256=zeHXIoRZYl4TlXEUKv1GMFYFmlNPVZ9jdMTJs3ZmBIk,171
|
83
|
+
arpakitlib/_arpakit_project_template/src/api/transmitted_api_data.py,sha256=T17h65JMwfFqHTQRKcUUfwtm4NmlGAvs5wUZr0m0zks,542
|
86
84
|
arpakitlib/_arpakit_project_template/src/api/util.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
87
85
|
arpakitlib/_arpakit_project_template/src/business_service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
88
|
-
arpakitlib/_arpakit_project_template/src/business_service/hello_world.py,sha256=
|
86
|
+
arpakitlib/_arpakit_project_template/src/business_service/hello_world.py,sha256=mEVxsTFsd5u_T88l4mtCfoPre9QixAmQvzQmM2J8Okc,247
|
89
87
|
arpakitlib/_arpakit_project_template/src/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
90
|
-
arpakitlib/_arpakit_project_template/src/core/
|
91
|
-
arpakitlib/_arpakit_project_template/src/core/
|
92
|
-
arpakitlib/_arpakit_project_template/src/core/
|
93
|
-
arpakitlib/_arpakit_project_template/src/core/
|
94
|
-
arpakitlib/_arpakit_project_template/src/core/settings.py,sha256=
|
95
|
-
arpakitlib/_arpakit_project_template/src/core/util.py,sha256=
|
88
|
+
arpakitlib/_arpakit_project_template/src/core/_check_logging.py,sha256=APQp8jQa3vQwuEt6nayPdu6GmCPHvVdAvv63RaCdHTs,225
|
89
|
+
arpakitlib/_arpakit_project_template/src/core/_check_settings.py,sha256=BQUcr-yj3cxz5GQo0jXe99wMoqHKrrrKD3-UovsJAt0,284
|
90
|
+
arpakitlib/_arpakit_project_template/src/core/_generate_settings_env_example.py,sha256=SiEJe8AYQPOWicsaCwf9RdXp6UAmfkBdBT18AAInGb4,483
|
91
|
+
arpakitlib/_arpakit_project_template/src/core/const.py,sha256=e2Y0NIQHfzm3bmnbQnGy3Z5YKt6OYnIsRoqVY8oIV2E,1008
|
92
|
+
arpakitlib/_arpakit_project_template/src/core/settings.py,sha256=yKuakhs8fFOEX-9G3w-ACvm-Mqdu58GrK94zVjjTD6g,2635
|
93
|
+
arpakitlib/_arpakit_project_template/src/core/util.py,sha256=mcikqcjljZa2qhYeoR1tR9JUSprrVSod8XcIK_PqS6o,1547
|
96
94
|
arpakitlib/_arpakit_project_template/src/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
97
|
-
arpakitlib/_arpakit_project_template/src/db/
|
98
|
-
arpakitlib/_arpakit_project_template/src/db/
|
99
|
-
arpakitlib/_arpakit_project_template/src/db/
|
100
|
-
arpakitlib/_arpakit_project_template/src/db/
|
95
|
+
arpakitlib/_arpakit_project_template/src/db/_check_conn_sqlalchemy_db.py,sha256=GPK7-w7x8ESqbZ0v1nI8m_ysWfnmjgRwyyh6kM8vYBQ,249
|
96
|
+
arpakitlib/_arpakit_project_template/src/db/_init_sqlalchemy_db.py,sha256=tHJ1NBUAR-9uAktx2RfPikzGGguhwEWfrWdj1y0XV-w,231
|
97
|
+
arpakitlib/_arpakit_project_template/src/db/_reinit_sqlalchemy_db.py,sha256=_4O_xr6FXt3qcWOmO82CKG3XX6_RqbqaOYSEygxpBfA,339
|
98
|
+
arpakitlib/_arpakit_project_template/src/db/const.py,sha256=dcvj5C9E2F2KCsGZPBBncQf_EvVJAC1qQgnyD8P4ZEw,6
|
101
99
|
arpakitlib/_arpakit_project_template/src/db/sqlalchemy_model.py,sha256=nXtayUkBaVb6tWx5qJgXZLbLOTVAjnSLpSDxBm7yZLc,234
|
102
|
-
arpakitlib/_arpakit_project_template/src/db/util.py,sha256=
|
100
|
+
arpakitlib/_arpakit_project_template/src/db/util.py,sha256=a8lj54I-vVGjhDg4SLOxahDjYuiPOSFxU86myCfE1M0,557
|
103
101
|
arpakitlib/_arpakit_project_template/src/operation_execution/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
102
|
+
arpakitlib/_arpakit_project_template/src/operation_execution/_start_operation_executor_worker.py,sha256=K861UI9LFNxfCoPpQ5AJX-oUwjB6bfFNKScKsyU9Xd8,575
|
103
|
+
arpakitlib/_arpakit_project_template/src/operation_execution/_start_scheduled_operation_creator_worker.py,sha256=i6bKSrdCElclkVWMQrIdwDtOCiy8YvrL5OTMNpQ3drE,577
|
104
104
|
arpakitlib/_arpakit_project_template/src/operation_execution/const.py,sha256=HjupGEDUWVijQlbzxZPI9vBbAVOETUYzYU9pdnc9IcI,176
|
105
105
|
arpakitlib/_arpakit_project_template/src/operation_execution/operation_executor.py,sha256=TuAlF3QPJq-Zsq693NHQ00dvCWAzuwce2q6ozesWFYY,725
|
106
|
-
arpakitlib/_arpakit_project_template/src/operation_execution/scheduled_operations.py,sha256=
|
107
|
-
arpakitlib/_arpakit_project_template/src/operation_execution/
|
108
|
-
arpakitlib/_arpakit_project_template/src/operation_execution/start_scheduled_operation_creator_worker.py,sha256=GW1G8pi6yV_zODbqOs8VtEEM2e0iADFV6RXIxdPPPDY,677
|
109
|
-
arpakitlib/_arpakit_project_template/src/operation_execution/util.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
106
|
+
arpakitlib/_arpakit_project_template/src/operation_execution/scheduled_operations.py,sha256=DwEzbsQtO_7mSah25uOoV7IrlsMNEIU2j2gA-MGqUMQ,1100
|
107
|
+
arpakitlib/_arpakit_project_template/src/operation_execution/util.py,sha256=dcvj5C9E2F2KCsGZPBBncQf_EvVJAC1qQgnyD8P4ZEw,6
|
110
108
|
arpakitlib/_arpakit_project_template/src/test_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
111
|
-
arpakitlib/_arpakit_project_template/src/test_data/make_test_data_1.py,sha256=
|
112
|
-
arpakitlib/_arpakit_project_template/src/test_data/make_test_data_2.py,sha256=
|
113
|
-
arpakitlib/_arpakit_project_template/src/test_data/make_test_data_3.py,sha256=
|
114
|
-
arpakitlib/_arpakit_project_template/src/test_data/make_test_data_4.py,sha256=
|
115
|
-
arpakitlib/_arpakit_project_template/src/test_data/make_test_data_5.py,sha256=
|
109
|
+
arpakitlib/_arpakit_project_template/src/test_data/make_test_data_1.py,sha256=w24o2vrlqaoCfPYftWogHCV8MoUjqctwLTI3-tFlgf4,100
|
110
|
+
arpakitlib/_arpakit_project_template/src/test_data/make_test_data_2.py,sha256=bhriAB1GtC2dPWb0lltj145EhotgE6X1I7O8WnJmOyk,100
|
111
|
+
arpakitlib/_arpakit_project_template/src/test_data/make_test_data_3.py,sha256=t51BUgjQl59NofTQkOK_keHSMOuow3OePShsdhRSg8c,100
|
112
|
+
arpakitlib/_arpakit_project_template/src/test_data/make_test_data_4.py,sha256=t1iYFim7v9NNR7Y10rUVRMVyq76Pdc82d5tQKpNlUFI,100
|
113
|
+
arpakitlib/_arpakit_project_template/src/test_data/make_test_data_5.py,sha256=ptptUxpEa7sX7coToAYZHvy8oxXXQExxS1zqng5ET2I,100
|
116
114
|
arpakitlib/_arpakit_project_template/src/tg_bot/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
117
115
|
arpakitlib/_arpakit_project_template/src/tg_bot/router/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
118
116
|
arpakitlib/_arpakit_project_template/src/tg_bot/start_tg_bot.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
119
117
|
arpakitlib/_arpakit_project_template/src/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
120
|
-
arpakitlib/api_key_util.py,sha256=E84JlJXiDHtxLQmV8BNHvqNKu_G8-Dox0XxknYJQ37Q,422
|
121
118
|
arpakitlib/ar_additional_model_util.py,sha256=GFg-glLCxH9X95R2bhTJsscVwv37FgE1qbaAAyXrnIE,917
|
122
119
|
arpakitlib/ar_aiogram_util.py,sha256=5JPCDZpdBGTE-EIWPRez9amCZAX7XemFIVu5YrQK7Pw,12264
|
120
|
+
arpakitlib/ar_api_key_util.py,sha256=E84JlJXiDHtxLQmV8BNHvqNKu_G8-Dox0XxknYJQ37Q,422
|
123
121
|
arpakitlib/ar_arpakit_lib_module_util.py,sha256=UEPU8wk29R_bBP_RENnhXYzNbj_RF9FWjowrj_yxWLA,5931
|
124
122
|
arpakitlib/ar_arpakit_project_template_util.py,sha256=c7yc8w2IvZGH5hH8eOpL7JuD005hUxZ0GVDcSkJF5iI,3705
|
125
123
|
arpakitlib/ar_arpakit_schedule_uust_api_client_util.py,sha256=jGbP6egs2yhgfheyqhM0J-SeM2qp2YrW7dV-u9djv4Q,19223
|
@@ -127,11 +125,12 @@ arpakitlib/ar_arpakitlib_cli_util.py,sha256=8lhEDxnwMSRX2PGV2xQtQru1AYKSA92SVolo
|
|
127
125
|
arpakitlib/ar_base64_util.py,sha256=aZkg2cZTuAaP2IWeG_LXJ6RO7qhyskVwec-Lks0iM-k,676
|
128
126
|
arpakitlib/ar_base_worker_util.py,sha256=Qm_C7PFH5W-LPu1AGX1zp29zbqZ04i71Su1U-eeQBkA,5674
|
129
127
|
arpakitlib/ar_cache_file_util.py,sha256=Fo2pH-Zqm966KWFBHG_pbiySGZvhIFCYqy7k1weRfJ0,3476
|
128
|
+
arpakitlib/ar_class_util.py,sha256=Eb4orGm2EFSaHfmrY2A_Nis5iwFMDKFaz1_nxTnfmnQ,487
|
130
129
|
arpakitlib/ar_datetime_util.py,sha256=Xe1NiT9oPQzNSG7RVRkhukhbg4i-hhS5ImmV7sPUc8o,971
|
131
130
|
arpakitlib/ar_dict_util.py,sha256=cF5LQJ6tLqyGoEXfDljMDZrikeZoWPw7CgINHIFGvXM,419
|
132
131
|
arpakitlib/ar_dream_ai_api_client_util.py,sha256=QF9XK7xK5ny1fvkcG4e0pfCySNNFRNPy0x0cmxfsAak,2818
|
133
132
|
arpakitlib/ar_encrypt_decrypt_util.py,sha256=GhWnp7HHkbhwFVVCzO1H07m-5gryr4yjWsXjOaNQm1Y,520
|
134
|
-
arpakitlib/ar_enumeration_util.py,sha256=
|
133
|
+
arpakitlib/ar_enumeration_util.py,sha256=ZOkH1-duDcjQelJrdJ-nJ8h7wePFAgmpg_8e63Cyp0E,3072
|
135
134
|
arpakitlib/ar_exception_util.py,sha256=3hZKsj34TZVdmd4JAQz7w515smWqB8o3gTwAEjuMdnI,408
|
136
135
|
arpakitlib/ar_fastapi_static/healthcheck,sha256=IIO7Wvjwlr2-LPSQ7Y8O35hcI6t0_s8zqITDxkYCO8I,11
|
137
136
|
arpakitlib/ar_fastapi_static/redoc/redoc.standalone.js,sha256=WCuodUNv1qVh0oW5fjnJDwb5AwOue73jKHdI9z8iGKU,909365
|
@@ -169,23 +168,23 @@ arpakitlib/ar_logging_util.py,sha256=mx3H6CzX9dsh29ruFmYnva8lL6mwvdBXmeHH9E2tvu8
|
|
169
168
|
arpakitlib/ar_mongodb_util.py,sha256=2ECkTnGAZ92qxioL-fmN6R4yZOSr3bXdXLWTzT1C3vk,4038
|
170
169
|
arpakitlib/ar_need_type_util.py,sha256=GETiREPMEYhch-yU6T--Bdawlbb04Jp1Qy7cOsUlIeA,2228
|
171
170
|
arpakitlib/ar_openai_api_client_util.py,sha256=_XmlApvHFMSyjvZydPa_kASIt9LsFrZmSC7YEzIG8Bg,1806
|
172
|
-
arpakitlib/ar_operation_execution_util.py,sha256=
|
171
|
+
arpakitlib/ar_operation_execution_util.py,sha256=uWLDJWYbfsYItUQ48qOSWy4qxCTCFMjElWEXswKtaWk,17617
|
173
172
|
arpakitlib/ar_parse_command.py,sha256=-s61xcATIsfw1eV_iD3xi-grsitbGzSDoAFc5V0OFy4,3447
|
174
173
|
arpakitlib/ar_postgresql_util.py,sha256=1AuLjEaa1Lg4pzn-ukCVnDi35Eg1k91APRTqZhIJAdo,945
|
175
174
|
arpakitlib/ar_run_cmd_util.py,sha256=D_rPavKMmWkQtwvZFz-Io5Ak8eSODHkcFeLPzNVC68g,1072
|
176
175
|
arpakitlib/ar_schedule_uust_api_client_util.py,sha256=0Ns0mMEXYEkVmP6YTAXHyNcrhNsvCJ8X-G_5XwILhJ4,6855
|
177
|
-
arpakitlib/ar_settings_util.py,sha256=
|
176
|
+
arpakitlib/ar_settings_util.py,sha256=752EDXXnrA1uUbSD4InCHCZWEodLBwVUHrgOdOD2Xhw,1856
|
178
177
|
arpakitlib/ar_sleep_util.py,sha256=OaLtRaJQWMkGjfj_mW1RB2P4RaSWsAIH8LUoXqsH0zM,1061
|
178
|
+
arpakitlib/ar_sqladmin_util.py,sha256=vQTRlf36VjW6l_zslZmjkHinMVuQfI-QZsXIlnXUpgE,2634
|
179
179
|
arpakitlib/ar_sqlalchemy_model_util.py,sha256=nKJGN32eg3Gn5kmJwHdVJznPT5TydLsfUfwJGdypdUo,6264
|
180
180
|
arpakitlib/ar_sqlalchemy_util.py,sha256=Hcg1THrDsSR_-8dsY1CG3NWPEv0FqCbkPXFXLtjlSJ0,4207
|
181
181
|
arpakitlib/ar_ssh_runner_util.py,sha256=e9deuUdBW7Eh0Exx2nTBhk57SaOZYaJaSjNk8q6dbJk,6804
|
182
182
|
arpakitlib/ar_str_util.py,sha256=yU5gOwNXUQaH5b_tM5t6fXUn9oUcv5EQbVnq2wXXIpQ,3378
|
183
|
-
arpakitlib/ar_type_util.py,sha256=
|
183
|
+
arpakitlib/ar_type_util.py,sha256=9C3ErtUVs0tAUqtK-foFzjJOykfBOntfCz2IogDOgfA,4134
|
184
184
|
arpakitlib/ar_yookassa_api_client_util.py,sha256=sh4fcUkAkdOetFn9JYoTvjcSXP-M1wU04KEY-ECLfLg,5137
|
185
185
|
arpakitlib/ar_zabbix_api_client_util.py,sha256=Q-VR4MvoZ9aHwZeYZr9G3LwN-ANx1T5KFmF6pvPM-9M,6402
|
186
|
-
arpakitlib-1.7.
|
187
|
-
arpakitlib-1.7.
|
188
|
-
arpakitlib-1.7.
|
189
|
-
arpakitlib-1.7.
|
190
|
-
arpakitlib-1.7.
|
191
|
-
arpakitlib-1.7.132.dist-info/RECORD,,
|
186
|
+
arpakitlib-1.7.207.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
|
187
|
+
arpakitlib-1.7.207.dist-info/METADATA,sha256=xHtqDWfe_1LGr338oSBni_My5SAZqUiCidQLX4nkuMY,3176
|
188
|
+
arpakitlib-1.7.207.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
|
189
|
+
arpakitlib-1.7.207.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
|
190
|
+
arpakitlib-1.7.207.dist-info/RECORD,,
|
@@ -1,16 +0,0 @@
|
|
1
|
-
Copyright 2024-present Sabirzyanov Arsen
|
2
|
-
|
3
|
-
This project includes software developed by Sabirzyanov Arsen.
|
4
|
-
|
5
|
-
This project is licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
you may not use this file except in compliance with the License.
|
7
|
-
You may obtain a copy of the License at
|
8
|
-
|
9
|
-
./LICENSE
|
10
|
-
|
11
|
-
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
-
See the License for the specific language governing permissions and limitations under the License.
|
14
|
-
|
15
|
-
Additional notices:
|
16
|
-
- This project may include third-party components that are subject to other licenses. See the LICENSE file for more information.
|
@@ -1 +0,0 @@
|
|
1
|
-
poetry export -f requirements.txt --without-hashes --output requirements.txt
|
@@ -1,16 +0,0 @@
|
|
1
|
-
Copyright 2024-present Sabirzyanov Arsen
|
2
|
-
|
3
|
-
This project includes software developed by Sabirzyanov Arsen.
|
4
|
-
|
5
|
-
This project is licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
you may not use this file except in compliance with the License.
|
7
|
-
You may obtain a copy of the License at
|
8
|
-
|
9
|
-
./LICENSE
|
10
|
-
|
11
|
-
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
-
See the License for the specific language governing permissions and limitations under the License.
|
14
|
-
|
15
|
-
Additional notices:
|
16
|
-
- This project may include third-party components that are subject to other licenses. See the LICENSE file for more information.
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|