arpakitlib 1.5.30__tar.gz → 1.5.33__tar.gz

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.
Files changed (71) hide show
  1. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/PKG-INFO +1 -1
  2. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_fastapi_util.py +15 -10
  3. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_operation_execution_util.py +2 -5
  4. arpakitlib-1.5.33/arpakitlib/ar_story_log_util.py +37 -0
  5. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/pyproject.toml +1 -1
  6. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/LICENSE +0 -0
  7. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/NOTICE +0 -0
  8. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/README.md +0 -0
  9. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/AUTHOR.md +0 -0
  10. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/LICENSE +0 -0
  11. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/NOTICE +0 -0
  12. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/README.md +0 -0
  13. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/__init__.py +0 -0
  14. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_additional_model_util.py +0 -0
  15. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_aiogram_util.py +0 -0
  16. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_arpakit_lib_module_util.py +0 -0
  17. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_arpakit_schedule_uust_api_client.py +0 -0
  18. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_arpakitlib_info.py +0 -0
  19. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_base64_util.py +0 -0
  20. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_base_worker.py +0 -0
  21. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_cache_file.py +0 -0
  22. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_datetime_util.py +0 -0
  23. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_dict_util.py +0 -0
  24. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_dream_ai_api_client.py +0 -0
  25. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_easy_sqlalchemy_util.py +0 -0
  26. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_encrypt_and_decrypt_util.py +0 -0
  27. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_enumeration.py +0 -0
  28. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_fastapi_static/redoc/redoc.standalone.js +0 -0
  29. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_fastapi_static/swagger-ui/favicon-16x16.png +0 -0
  30. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_fastapi_static/swagger-ui/favicon-32x32.png +0 -0
  31. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_fastapi_static/swagger-ui/index.css +0 -0
  32. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_fastapi_static/swagger-ui/index.html +0 -0
  33. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_fastapi_static/swagger-ui/oauth2-redirect.html +0 -0
  34. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-initializer.js +0 -0
  35. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-bundle.js +0 -0
  36. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-bundle.js.map +0 -0
  37. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle-core.js +0 -0
  38. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle-core.js.map +0 -0
  39. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle.js +0 -0
  40. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle.js.map +0 -0
  41. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-standalone-preset.js +0 -0
  42. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-standalone-preset.js.map +0 -0
  43. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css +0 -0
  44. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css.map +0 -0
  45. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js +0 -0
  46. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js.map +0 -0
  47. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_file_storage_in_dir.py +0 -0
  48. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_generate_env_example.py +0 -0
  49. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_hash_util.py +0 -0
  50. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_http_request_util.py +0 -0
  51. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_ip_util.py +0 -0
  52. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_json_db.py +0 -0
  53. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_json_util.py +0 -0
  54. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_jwt_util.py +0 -0
  55. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_list_of_dicts_to_xlsx.py +0 -0
  56. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_list_util.py +0 -0
  57. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_logging_util.py +0 -0
  58. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_mongodb_util.py +0 -0
  59. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_need_type_util.py +0 -0
  60. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_openai_util.py +0 -0
  61. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_parse_command.py +0 -0
  62. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_postgresql_util.py +0 -0
  63. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_run_cmd.py +0 -0
  64. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_schedule_uust_api_client.py +0 -0
  65. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_sleep_util.py +0 -0
  66. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_sqlalchemy_model_util.py +0 -0
  67. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_ssh_runner.py +0 -0
  68. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_str_util.py +0 -0
  69. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_type_util.py +0 -0
  70. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_yookassa_api_client.py +0 -0
  71. {arpakitlib-1.5.30 → arpakitlib-1.5.33}/arpakitlib/ar_zabbix_util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: arpakitlib
3
- Version: 1.5.30
3
+ Version: 1.5.33
4
4
  Summary: arpakitlib
5
5
  Home-page: https://github.com/ARPAKIT-Company/arpakitlib
6
6
  License: Apache-2.0
@@ -6,6 +6,7 @@ import asyncio
6
6
  import logging
7
7
  import os.path
8
8
  import pathlib
9
+ from datetime import datetime
9
10
  from typing import Any, Callable
10
11
 
11
12
  import fastapi.exceptions
@@ -52,6 +53,16 @@ class BaseAPISO(BaseAPISchema):
52
53
  pass
53
54
 
54
55
 
56
+ class APISimpleDataSO(BaseAPISO):
57
+ data: dict[str, Any] = {}
58
+
59
+
60
+ class BaseAPISimpleSO(BaseAPISO):
61
+ id: int
62
+ long_id: str
63
+ creation_dt: datetime
64
+
65
+
55
66
  class APIErrorSO(BaseAPISO):
56
67
  class APIErrorCodes(EasyEnumeration):
57
68
  cannot_authorize = "CANNOT_AUTHORIZE"
@@ -243,7 +254,7 @@ def add_ar_fastapi_static_docs_and_redoc_handlers_to_fastapi_app(
243
254
  return fastapi_app
244
255
 
245
256
 
246
- class BaseAPIStartupEvent:
257
+ class BaseAPIEvent:
247
258
  def __init__(self, *args, **kwargs):
248
259
  self._logger = logging.getLogger(self.__class__.__name__)
249
260
 
@@ -251,11 +262,6 @@ class BaseAPIStartupEvent:
251
262
  self._logger.info("on_startup starts")
252
263
  self._logger.info("on_startup ends")
253
264
 
254
-
255
- class BaseAPIShutdownEvent:
256
- def __init__(self, *args, **kwargs):
257
- self._logger = logging.getLogger(self.__class__.__name__)
258
-
259
265
  async def on_shutdown(self, *args, **kwargs):
260
266
  self._logger.info("on_shutdown starts")
261
267
  self._logger.info("on_shutdown ends")
@@ -265,8 +271,7 @@ def create_fastapi_app(
265
271
  *,
266
272
  title: str,
267
273
  description: str | None = None,
268
- api_startup_event: BaseAPIStartupEvent | None = BaseAPIStartupEvent(),
269
- api_shutdown_event: BaseAPIShutdownEvent | None = BaseAPIShutdownEvent(),
274
+ api_event: BaseAPIEvent | None = BaseAPIEvent(),
270
275
  api_handle_exception_: Callable | None = simple_api_handle_exception
271
276
  ):
272
277
  app = FastAPI(
@@ -275,8 +280,8 @@ def create_fastapi_app(
275
280
  docs_url=None,
276
281
  redoc_url=None,
277
282
  openapi_url="/openapi",
278
- on_startup=[api_startup_event.on_startup] if api_startup_event else [],
279
- on_shutdown=[api_shutdown_event.on_shutdown] if api_shutdown_event else []
283
+ on_startup=[api_event.on_startup] if api_event else [],
284
+ on_shutdown=[api_event.on_shutdown] if api_event else []
280
285
  )
281
286
 
282
287
  add_middleware_cors_to_fastapi_app(fastapi_app=app)
@@ -16,7 +16,7 @@ from arpakitlib.ar_datetime_util import now_utc_dt
16
16
  from arpakitlib.ar_dict_util import combine_dicts
17
17
  from arpakitlib.ar_easy_sqlalchemy_util import EasySQLAlchemyDB
18
18
  from arpakitlib.ar_enumeration import EasyEnumeration
19
- from arpakitlib.ar_fastapi_util import BaseAPISO
19
+ from arpakitlib.ar_fastapi_util import BaseAPISO, BaseAPISimpleSO
20
20
  from arpakitlib.ar_sqlalchemy_model_util import SimpleDBM
21
21
 
22
22
  _ARPAKIT_LIB_MODULE_VERSION = "3.0"
@@ -78,10 +78,7 @@ class OperationDBM(SimpleDBM):
78
78
  return self.duration.total_seconds()
79
79
 
80
80
 
81
- class OperationSO(BaseAPISO):
82
- id: int
83
- long_id: str
84
- creation_dt: datetime
81
+ class OperationSO(BaseAPISimpleSO):
85
82
  execution_start_dt: datetime | None
86
83
  execution_finish_dt: datetime | None
87
84
  status: str
@@ -0,0 +1,37 @@
1
+ from datetime import datetime
2
+ from typing import Any
3
+
4
+ from sqlalchemy import TEXT
5
+ from sqlalchemy.dialects.postgresql import JSONB
6
+ from sqlalchemy.orm import Mapped, mapped_column
7
+
8
+ from arpakitlib.ar_enumeration import EasyEnumeration
9
+ from arpakitlib.ar_fastapi_util import BaseAPISO, BaseAPISimpleSO
10
+ from arpakitlib.ar_sqlalchemy_model_util import BaseDBM, SimpleDBM
11
+
12
+ _ARPAKIT_LIB_MODULE_VERSION = "3.0"
13
+
14
+
15
+ class StoryLogDBM(SimpleDBM):
16
+ __tablename__ = "story_log"
17
+
18
+ class Levels(EasyEnumeration):
19
+ info = "info"
20
+ warning = "warning"
21
+ error = "error"
22
+
23
+ level: Mapped[str] = mapped_column(
24
+ TEXT, insert_default=Levels.info, server_default=Levels.info, index=True, nullable=False
25
+ )
26
+ title: Mapped[str | None] = mapped_column(TEXT, index=True, default=None, nullable=True)
27
+ data: Mapped[dict[str, Any]] = mapped_column(
28
+ JSONB, insert_default={}, server_default="{}", index=True, nullable=False
29
+ )
30
+
31
+
32
+ class AdminStoryLogSO(BaseAPISimpleSO):
33
+ level: str
34
+ title: str | None
35
+ data: dict[str, Any]
36
+
37
+
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "arpakitlib"
3
- version = "1.5.30"
3
+ version = "1.5.33"
4
4
  description = "arpakitlib"
5
5
  authors = ["arpakit <arpakit@gmail.com>"]
6
6
  license = "Apache License 2.0"
File without changes
File without changes
File without changes