arpakitlib 1.5.30__tar.gz → 1.5.31__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.31}/PKG-INFO +1 -1
  2. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_fastapi_util.py +11 -10
  3. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_operation_execution_util.py +2 -5
  4. arpakitlib-1.5.31/arpakitlib/ar_story_log_util.py +37 -0
  5. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/pyproject.toml +1 -1
  6. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/LICENSE +0 -0
  7. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/NOTICE +0 -0
  8. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/README.md +0 -0
  9. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/AUTHOR.md +0 -0
  10. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/LICENSE +0 -0
  11. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/NOTICE +0 -0
  12. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/README.md +0 -0
  13. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/__init__.py +0 -0
  14. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_additional_model_util.py +0 -0
  15. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_aiogram_util.py +0 -0
  16. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_arpakit_lib_module_util.py +0 -0
  17. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_arpakit_schedule_uust_api_client.py +0 -0
  18. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_arpakitlib_info.py +0 -0
  19. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_base64_util.py +0 -0
  20. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_base_worker.py +0 -0
  21. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_cache_file.py +0 -0
  22. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_datetime_util.py +0 -0
  23. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_dict_util.py +0 -0
  24. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_dream_ai_api_client.py +0 -0
  25. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_easy_sqlalchemy_util.py +0 -0
  26. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_encrypt_and_decrypt_util.py +0 -0
  27. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_enumeration.py +0 -0
  28. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_fastapi_static/redoc/redoc.standalone.js +0 -0
  29. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_fastapi_static/swagger-ui/favicon-16x16.png +0 -0
  30. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_fastapi_static/swagger-ui/favicon-32x32.png +0 -0
  31. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_fastapi_static/swagger-ui/index.css +0 -0
  32. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_fastapi_static/swagger-ui/index.html +0 -0
  33. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_fastapi_static/swagger-ui/oauth2-redirect.html +0 -0
  34. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-initializer.js +0 -0
  35. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-bundle.js +0 -0
  36. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-bundle.js.map +0 -0
  37. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle-core.js +0 -0
  38. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle-core.js.map +0 -0
  39. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle.js +0 -0
  40. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle.js.map +0 -0
  41. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-standalone-preset.js +0 -0
  42. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-standalone-preset.js.map +0 -0
  43. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css +0 -0
  44. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css.map +0 -0
  45. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js +0 -0
  46. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js.map +0 -0
  47. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_file_storage_in_dir.py +0 -0
  48. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_generate_env_example.py +0 -0
  49. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_hash_util.py +0 -0
  50. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_http_request_util.py +0 -0
  51. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_ip_util.py +0 -0
  52. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_json_db.py +0 -0
  53. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_json_util.py +0 -0
  54. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_jwt_util.py +0 -0
  55. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_list_of_dicts_to_xlsx.py +0 -0
  56. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_list_util.py +0 -0
  57. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_logging_util.py +0 -0
  58. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_mongodb_util.py +0 -0
  59. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_need_type_util.py +0 -0
  60. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_openai_util.py +0 -0
  61. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_parse_command.py +0 -0
  62. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_postgresql_util.py +0 -0
  63. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_run_cmd.py +0 -0
  64. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_schedule_uust_api_client.py +0 -0
  65. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_sleep_util.py +0 -0
  66. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_sqlalchemy_model_util.py +0 -0
  67. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_ssh_runner.py +0 -0
  68. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_str_util.py +0 -0
  69. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_type_util.py +0 -0
  70. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/arpakitlib/ar_yookassa_api_client.py +0 -0
  71. {arpakitlib-1.5.30 → arpakitlib-1.5.31}/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.31
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,12 @@ class BaseAPISO(BaseAPISchema):
52
53
  pass
53
54
 
54
55
 
56
+ class BaseAPISimpleSO(BaseAPISO):
57
+ id: int
58
+ long_id: str
59
+ creation_dt: datetime
60
+
61
+
55
62
  class APIErrorSO(BaseAPISO):
56
63
  class APIErrorCodes(EasyEnumeration):
57
64
  cannot_authorize = "CANNOT_AUTHORIZE"
@@ -243,7 +250,7 @@ def add_ar_fastapi_static_docs_and_redoc_handlers_to_fastapi_app(
243
250
  return fastapi_app
244
251
 
245
252
 
246
- class BaseAPIStartupEvent:
253
+ class BaseAPIEvent:
247
254
  def __init__(self, *args, **kwargs):
248
255
  self._logger = logging.getLogger(self.__class__.__name__)
249
256
 
@@ -251,11 +258,6 @@ class BaseAPIStartupEvent:
251
258
  self._logger.info("on_startup starts")
252
259
  self._logger.info("on_startup ends")
253
260
 
254
-
255
- class BaseAPIShutdownEvent:
256
- def __init__(self, *args, **kwargs):
257
- self._logger = logging.getLogger(self.__class__.__name__)
258
-
259
261
  async def on_shutdown(self, *args, **kwargs):
260
262
  self._logger.info("on_shutdown starts")
261
263
  self._logger.info("on_shutdown ends")
@@ -265,8 +267,7 @@ def create_fastapi_app(
265
267
  *,
266
268
  title: str,
267
269
  description: str | None = None,
268
- api_startup_event: BaseAPIStartupEvent | None = BaseAPIStartupEvent(),
269
- api_shutdown_event: BaseAPIShutdownEvent | None = BaseAPIShutdownEvent(),
270
+ api_event: BaseAPIEvent | None = BaseAPIEvent(),
270
271
  api_handle_exception_: Callable | None = simple_api_handle_exception
271
272
  ):
272
273
  app = FastAPI(
@@ -275,8 +276,8 @@ def create_fastapi_app(
275
276
  docs_url=None,
276
277
  redoc_url=None,
277
278
  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 []
279
+ on_startup=[api_event.on_startup] if api_event else [],
280
+ on_shutdown=[api_event.on_shutdown] if api_event else []
280
281
  )
281
282
 
282
283
  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.31"
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