arpakitlib 1.8.172__py3-none-any.whl → 1.8.174__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.
Files changed (52) hide show
  1. arpakitlib/_arpakit_project_template_v_5/arpakitlib_project_template_info.json +1 -1
  2. arpakitlib/_arpakit_project_template_v_5/command/check_logging.py +1 -1
  3. arpakitlib/_arpakit_project_template_v_5/command/check_sqlalchemy_db.py +1 -1
  4. arpakitlib/_arpakit_project_template_v_5/command/drop_json_db.py +1 -1
  5. arpakitlib/_arpakit_project_template_v_5/command/drop_sqlalchemy_db.py +1 -1
  6. arpakitlib/_arpakit_project_template_v_5/command/init_json_db.py +1 -1
  7. arpakitlib/_arpakit_project_template_v_5/command/init_sqlalchemy_db.py +1 -1
  8. arpakitlib/_arpakit_project_template_v_5/command/reinit_all_sqlalchemy_db.py +1 -1
  9. arpakitlib/_arpakit_project_template_v_5/command/reinit_json_db.py +1 -1
  10. arpakitlib/_arpakit_project_template_v_5/command/reinit_sqlalchemy_db.py +1 -1
  11. arpakitlib/_arpakit_project_template_v_5/command/remove_operations.py +1 -1
  12. arpakitlib/_arpakit_project_template_v_5/command/remove_rows_from_tables_sqlalchemy_db.py +1 -1
  13. arpakitlib/_arpakit_project_template_v_5/command/remove_story_logs.py +1 -1
  14. arpakitlib/_arpakit_project_template_v_5/command/rm_all_records_in_json_db.py +1 -1
  15. arpakitlib/_arpakit_project_template_v_5/command/set_tg_bot_commands.py +1 -1
  16. arpakitlib/_arpakit_project_template_v_5/command/show_sqlalchemy_db_table_name_to_amount.py +1 -1
  17. arpakitlib/_arpakit_project_template_v_5/command/start_operation_executor_worker.py +1 -1
  18. arpakitlib/_arpakit_project_template_v_5/command/start_operation_executor_workers_mode_async_task.py +1 -1
  19. arpakitlib/_arpakit_project_template_v_5/command/start_operation_executor_workers_mode_thread.py +1 -1
  20. arpakitlib/_arpakit_project_template_v_5/command/start_scheduled_operation_creator_worker.py +1 -1
  21. arpakitlib/_arpakit_project_template_v_5/command/start_sqladmin.py +1 -1
  22. arpakitlib/_arpakit_project_template_v_5/command/start_sqladmin_for_prod.py +1 -1
  23. arpakitlib/_arpakit_project_template_v_5/command/start_sqladmin_with_reload.py +1 -1
  24. arpakitlib/_arpakit_project_template_v_5/command/start_tg_bot.py +1 -1
  25. arpakitlib/_arpakit_project_template_v_5/command/start_tg_bot_for_prod.py +1 -1
  26. arpakitlib/_arpakit_project_template_v_5/project/api/create_api_app.py +1 -1
  27. arpakitlib/_arpakit_project_template_v_5/project/api/create_first_data.py +1 -1
  28. arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/main_router.py +0 -1
  29. arpakitlib/_arpakit_project_template_v_5/project/api/start_api.py +1 -1
  30. arpakitlib/_arpakit_project_template_v_5/project/business_service/hello_world.py +1 -1
  31. arpakitlib/_arpakit_project_template_v_5/project/core/easy_openai_api_client.py +1 -2
  32. arpakitlib/_arpakit_project_template_v_5/project/core/setup_logging.py +55 -0
  33. arpakitlib/_arpakit_project_template_v_5/project/core/util.py +0 -19
  34. arpakitlib/_arpakit_project_template_v_5/project/emailer/send_email.py +1 -1
  35. arpakitlib/_arpakit_project_template_v_5/project/emailer/send_simple_email.py +1 -1
  36. arpakitlib/_arpakit_project_template_v_5/project/site/create_site_app.py +1 -1
  37. arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/create_sqladmin_app.py +1 -1
  38. arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/common.py +2 -2
  39. arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/start_sqladmin.py +1 -1
  40. arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/user.py +9 -0
  41. arpakitlib/_arpakit_project_template_v_5/project/test_data/make_test_data_1.py +1 -1
  42. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/start_tg_bot.py +1 -1
  43. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/util/notify_admins.py +1 -1
  44. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/util/set_tg_bot_commands.py +1 -1
  45. arpakitlib/_arpakit_project_template_v_5/project/tg_bot_notifier/tg_bot_notifier.py +1 -1
  46. arpakitlib/_arpakit_project_template_v_5/project/util/send_email_.py +1 -1
  47. arpakitlib/ar_logging_util.py +2 -2
  48. {arpakitlib-1.8.172.dist-info → arpakitlib-1.8.174.dist-info}/METADATA +1 -1
  49. {arpakitlib-1.8.172.dist-info → arpakitlib-1.8.174.dist-info}/RECORD +52 -51
  50. {arpakitlib-1.8.172.dist-info → arpakitlib-1.8.174.dist-info}/LICENSE +0 -0
  51. {arpakitlib-1.8.172.dist-info → arpakitlib-1.8.174.dist-info}/WHEEL +0 -0
  52. {arpakitlib-1.8.172.dist-info → arpakitlib-1.8.174.dist-info}/entry_points.txt +0 -0
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "arpakitlib_project_template_version": "5",
3
- "arpakitlib_project_template_subversion": "37"
3
+ "arpakitlib_project_template_subversion": "39"
4
4
  }
@@ -1,6 +1,6 @@
1
1
  import logging
2
2
 
3
- from project.core.util import setup_logging
3
+ from project.core.setup_logging import setup_logging
4
4
 
5
5
  _logger = logging.getLogger(__name__)
6
6
 
@@ -1,4 +1,4 @@
1
- from project.core.util import setup_logging
1
+ from project.core.setup_logging import setup_logging
2
2
  from project.sqlalchemy_db_.sqlalchemy_db import get_cached_sqlalchemy_db
3
3
 
4
4
 
@@ -1,5 +1,5 @@
1
1
  from project.core.settings import get_cached_settings
2
- from project.core.util import setup_logging
2
+ from project.core.setup_logging import setup_logging
3
3
  from project.json_db.json_db import get_cached_json_db
4
4
 
5
5
 
@@ -1,5 +1,5 @@
1
1
  from project.core.settings import get_cached_settings
2
- from project.core.util import setup_logging
2
+ from project.core.setup_logging import setup_logging
3
3
  from project.sqlalchemy_db_.sqlalchemy_db import get_cached_sqlalchemy_db
4
4
 
5
5
 
@@ -1,4 +1,4 @@
1
- from project.core.util import setup_logging
1
+ from project.core.setup_logging import setup_logging
2
2
  from project.json_db.json_db import get_cached_json_db
3
3
 
4
4
 
@@ -1,4 +1,4 @@
1
- from project.core.util import setup_logging
1
+ from project.core.setup_logging import setup_logging
2
2
  from project.sqlalchemy_db_.sqlalchemy_db import get_cached_sqlalchemy_db
3
3
 
4
4
 
@@ -1,5 +1,5 @@
1
1
  from project.core.settings import get_cached_settings
2
- from project.core.util import setup_logging
2
+ from project.core.setup_logging import setup_logging
3
3
  from project.sqlalchemy_db_.sqlalchemy_db import get_cached_sqlalchemy_db
4
4
 
5
5
 
@@ -1,5 +1,5 @@
1
1
  from project.core.settings import get_cached_settings
2
- from project.core.util import setup_logging
2
+ from project.core.setup_logging import setup_logging
3
3
  from project.json_db.json_db import get_cached_json_db
4
4
 
5
5
 
@@ -1,5 +1,5 @@
1
1
  from project.core.settings import get_cached_settings
2
- from project.core.util import setup_logging
2
+ from project.core.setup_logging import setup_logging
3
3
  from project.sqlalchemy_db_.sqlalchemy_db import get_cached_sqlalchemy_db
4
4
 
5
5
 
@@ -1,6 +1,6 @@
1
1
  from project.business_service.remove_operations import remove_operations
2
2
  from project.core.settings import get_cached_settings
3
- from project.core.util import setup_logging
3
+ from project.core.setup_logging import setup_logging
4
4
 
5
5
 
6
6
  def __command():
@@ -1,4 +1,4 @@
1
- from project.core.util import setup_logging
1
+ from project.core.setup_logging import setup_logging
2
2
  from project.sqlalchemy_db_.sqlalchemy_db import get_cached_sqlalchemy_db
3
3
 
4
4
 
@@ -1,5 +1,5 @@
1
1
  from project.core.settings import get_cached_settings
2
- from project.core.util import setup_logging
2
+ from project.core.setup_logging import setup_logging
3
3
  from project.sqlalchemy_db_.sqlalchemy_db import get_cached_sqlalchemy_db
4
4
  from project.sqlalchemy_db_.sqlalchemy_model import StoryLogDBM
5
5
 
@@ -1,5 +1,5 @@
1
1
  from project.core.settings import get_cached_settings
2
- from project.core.util import setup_logging
2
+ from project.core.setup_logging import setup_logging
3
3
  from project.json_db.json_db import get_cached_json_db
4
4
 
5
5
 
@@ -1,6 +1,6 @@
1
1
  import asyncio
2
2
 
3
- from project.core.util import setup_logging
3
+ from project.core.setup_logging import setup_logging
4
4
  from project.tg_bot.tg_bot import get_cached_tg_bot
5
5
  from project.tg_bot.util.set_tg_bot_commands import set_client_tg_bot_commands, set_admin_tg_bot_commands
6
6
 
@@ -1,7 +1,7 @@
1
1
  import logging
2
2
 
3
3
  from arpakitlib.ar_json_util import transfer_data_to_json_str
4
- from project.core.util import setup_logging
4
+ from project.core.setup_logging import setup_logging
5
5
  from project.sqlalchemy_db_.sqlalchemy_db import get_cached_sqlalchemy_db
6
6
 
7
7
  _logger = logging.getLogger()
@@ -1,4 +1,4 @@
1
- from project.core.util import setup_logging
1
+ from project.core.setup_logging import setup_logging
2
2
  from project.operation_execution.operation_executor_worker import OperationExecutorWorker
3
3
  from project.sqlalchemy_db_.sqlalchemy_db import get_cached_sqlalchemy_db
4
4
 
@@ -1,7 +1,7 @@
1
1
  import asyncio
2
2
 
3
3
  from arpakitlib.ar_base_worker_util import safe_run_workers_in_background, SafeRunInBackgroundModes
4
- from project.core.util import setup_logging
4
+ from project.core.setup_logging import setup_logging
5
5
  from project.operation_execution.operation_executor_worker import OperationExecutorWorker
6
6
  from project.sqlalchemy_db_.sqlalchemy_db import get_cached_sqlalchemy_db
7
7
 
@@ -1,6 +1,6 @@
1
1
  from arpakitlib.ar_base_worker_util import safe_run_workers_in_background, SafeRunInBackgroundModes
2
2
 
3
- from project.core.util import setup_logging
3
+ from project.core.setup_logging import setup_logging
4
4
  from project.operation_execution.operation_executor_worker import OperationExecutorWorker
5
5
  from project.sqlalchemy_db_.sqlalchemy_db import get_cached_sqlalchemy_db
6
6
 
@@ -1,4 +1,4 @@
1
- from project.core.util import setup_logging
1
+ from project.core.setup_logging import setup_logging
2
2
  from project.operation_execution.scheduled_operation_creator_worker import create_scheduled_operation_creator_worker
3
3
 
4
4
 
@@ -1,7 +1,7 @@
1
1
  import uvicorn
2
2
 
3
3
  from project.core.settings import get_cached_settings
4
- from project.core.util import setup_logging
4
+ from project.core.setup_logging import setup_logging
5
5
 
6
6
 
7
7
  def __command():
@@ -1,7 +1,7 @@
1
1
  import uvicorn
2
2
 
3
3
  from project.core.settings import get_cached_settings
4
- from project.core.util import setup_logging
4
+ from project.core.setup_logging import setup_logging
5
5
 
6
6
 
7
7
  def __command():
@@ -1,7 +1,7 @@
1
1
  import uvicorn
2
2
 
3
3
  from project.core.settings import get_cached_settings
4
- from project.core.util import setup_logging
4
+ from project.core.setup_logging import setup_logging
5
5
 
6
6
 
7
7
  def __command():
@@ -1,4 +1,4 @@
1
- from project.core.util import setup_logging
1
+ from project.core.setup_logging import setup_logging
2
2
  from project.tg_bot.start_tg_bot import start_tg_bot
3
3
 
4
4
 
@@ -1,4 +1,4 @@
1
- from project.core.util import setup_logging
1
+ from project.core.setup_logging import setup_logging
2
2
  from project.tg_bot.start_tg_bot import start_tg_bot
3
3
 
4
4
 
@@ -12,7 +12,7 @@ from project.api.openapi_ui import add_local_openapi_ui_to_api_app
12
12
  from project.api.router.main_router import main_api_router
13
13
  from project.core.const import ProjectPaths
14
14
  from project.core.settings import get_cached_settings
15
- from project.core.util import setup_logging
15
+ from project.core.setup_logging import setup_logging
16
16
 
17
17
  _logger = logging.getLogger(__name__)
18
18
 
@@ -1,6 +1,6 @@
1
1
  import logging
2
2
 
3
- from project.core.util import setup_logging
3
+ from project.core.setup_logging import setup_logging
4
4
  from project.sqlalchemy_db_.sqlalchemy_db import get_cached_sqlalchemy_db
5
5
  from project.sqlalchemy_db_.sqlalchemy_model import UserDBM, ApiKeyDBM, UserTokenDBM
6
6
 
@@ -23,7 +23,6 @@ main_admin_api_router.include_router(
23
23
  prefix="/raise_fake_error"
24
24
  )
25
25
 
26
-
27
26
  main_admin_api_router.include_router(
28
27
  router=raise_api_exception_1.api_router,
29
28
  prefix="/raise_api_exception_1"
@@ -2,7 +2,7 @@ import uvicorn
2
2
 
3
3
  from project.api.before_start_api import before_start_api
4
4
  from project.core.settings import get_cached_settings
5
- from project.core.util import setup_logging
5
+ from project.core.setup_logging import setup_logging
6
6
 
7
7
 
8
8
  def start_api():
@@ -1,6 +1,6 @@
1
1
  import logging
2
2
 
3
- from project.core.util import setup_logging
3
+ from project.core.setup_logging import setup_logging
4
4
 
5
5
  _logger = logging.getLogger(__name__)
6
6
 
@@ -4,7 +4,6 @@ from functools import lru_cache
4
4
  import httpx
5
5
  from openai import OpenAI, AsyncOpenAI
6
6
 
7
- from arpakitlib.ar_logging_util import setup_normal_logging
8
7
  from arpakitlib.ar_openai_api_client_util import EasyOpenAIAPIClient
9
8
  from project.core.settings import get_cached_settings
10
9
 
@@ -38,7 +37,7 @@ def get_cached_easy_openai_api_client() -> EasyOpenAIAPIClient | None:
38
37
 
39
38
 
40
39
  async def __async_example():
41
- setup_normal_logging()
40
+ pass
42
41
 
43
42
 
44
43
  if __name__ == '__main__':
@@ -0,0 +1,55 @@
1
+ import asyncio
2
+ import logging
3
+
4
+ from arpakitlib.ar_logging_util import init_log_file
5
+ from project.core.settings import get_cached_settings
6
+
7
+ _logging_was_setup: bool = False
8
+
9
+
10
+ def setup_logging():
11
+ global _logging_was_setup
12
+ if _logging_was_setup:
13
+ return
14
+
15
+ if get_cached_settings().log_filepath:
16
+ init_log_file(log_filepath=get_cached_settings().log_filepath)
17
+
18
+ logger = logging.getLogger()
19
+ logger.setLevel(logging.INFO)
20
+
21
+ stream_handler = logging.StreamHandler()
22
+ stream_handler.setLevel(logging.INFO)
23
+ stream_formatter = logging.Formatter(
24
+ "%(asctime)s %(msecs)03d | %(levelname)s | %(filename)s | %(funcName)s:%(lineno)d - %(message)s",
25
+ datefmt="%d.%m.%Y %I:%M:%S %p"
26
+ )
27
+ stream_handler.setFormatter(stream_formatter)
28
+ logger.addHandler(stream_handler)
29
+
30
+ if get_cached_settings().log_filepath:
31
+ file_handler = logging.FileHandler(get_cached_settings().log_filepath)
32
+ file_handler.setLevel(logging.WARNING)
33
+ file_formatter = logging.Formatter(
34
+ "%(asctime)s | %(levelname)s | %(filename)s | %(funcName)s:%(lineno)d - %(message)s",
35
+ datefmt="%d.%m.%Y %I:%M:%S%p"
36
+ )
37
+ file_handler.setFormatter(file_formatter)
38
+ logger.addHandler(file_handler)
39
+
40
+ _logging_was_setup = True
41
+
42
+ logger.info("normal logging was setup")
43
+
44
+
45
+ def __example():
46
+ pass
47
+
48
+
49
+ async def __async_example():
50
+ pass
51
+
52
+
53
+ if __name__ == '__main__':
54
+ __example()
55
+ asyncio.run(__async_example())
@@ -1,29 +1,10 @@
1
- import asyncio
2
1
  from datetime import datetime
3
2
 
4
3
  from arpakitlib.ar_datetime_util import now_dt
5
- from arpakitlib.ar_logging_util import setup_normal_logging
6
4
  from arpakitlib.ar_type_util import raise_if_none
7
5
  from project.core.settings import get_cached_settings
8
6
 
9
7
 
10
- def setup_logging():
11
- setup_normal_logging(log_filepath=get_cached_settings().log_filepath)
12
-
13
-
14
8
  def now_local_dt() -> datetime:
15
9
  raise_if_none(get_cached_settings().local_timezone_as_pytz)
16
10
  return now_dt(tz=get_cached_settings().local_timezone_as_pytz)
17
-
18
-
19
- def __example():
20
- pass
21
-
22
-
23
- async def __async_example():
24
- pass
25
-
26
-
27
- if __name__ == '__main__':
28
- __example()
29
- asyncio.run(__async_example())
@@ -6,7 +6,7 @@ from email.message import EmailMessage
6
6
  import aiosmtplib
7
7
 
8
8
  from project.core.settings import get_cached_settings
9
- from project.core.util import setup_logging
9
+ from project.core.setup_logging import setup_logging
10
10
 
11
11
  _logger = logging.getLogger(__name__)
12
12
 
@@ -1,7 +1,7 @@
1
1
  import asyncio
2
2
 
3
3
  from project.core.jinja2_templates import get_cached_jinja2_templates
4
- from project.core.util import setup_logging
4
+ from project.core.setup_logging import setup_logging
5
5
  from project.emailer.send_email import async_send_email
6
6
 
7
7
 
@@ -1,4 +1,4 @@
1
- from project.core.util import setup_logging
1
+ from project.core.setup_logging import setup_logging
2
2
 
3
3
 
4
4
  def create_site_app():
@@ -4,7 +4,7 @@ from fastapi import FastAPI
4
4
  from fastapi.middleware.cors import CORSMiddleware
5
5
 
6
6
  from project.core.settings import get_cached_settings
7
- from project.core.util import setup_logging
7
+ from project.core.setup_logging import setup_logging
8
8
  from project.sqladmin_.add_admin_in_app import add_sqladmin_in_app
9
9
  from project.sqladmin_.event import get_sqladmin_startup_events, get_sqladmin_shutdown_events
10
10
 
@@ -7,7 +7,7 @@ import starlette.responses
7
7
  from openpyxl import Workbook
8
8
  from sqladmin import ModelView
9
9
 
10
- from project.core.util import now_local_dt
10
+ from arpakitlib.ar_datetime_util import now_utc_dt
11
11
 
12
12
 
13
13
  class SimpleMV(ModelView):
@@ -48,7 +48,7 @@ class SimpleMV(ModelView):
48
48
  wb.save(output)
49
49
  output.seek(0)
50
50
 
51
- filename = f"{self.model.__name__}_export_{now_local_dt().strftime("%d.%m.%YT%H-%M-%S-%Z%z")}.xlsx"
51
+ filename = f"{self.model.__name__}_export_{now_utc_dt().strftime("%d.%m.%YT%H-%M-%S-%Z%z")}.xlsx"
52
52
 
53
53
  return starlette.responses.StreamingResponse(
54
54
  output,
@@ -1,7 +1,7 @@
1
1
  import uvicorn
2
2
 
3
3
  from project.core.settings import get_cached_settings
4
- from project.core.util import setup_logging
4
+ from project.core.setup_logging import setup_logging
5
5
 
6
6
 
7
7
  def __command():
@@ -115,6 +115,15 @@ class UserDBM(SimpleDBM):
115
115
  parts.append(f"username={self.username}")
116
116
  return f"{self.entity_name} ({', '.join(parts)})"
117
117
 
118
+ @validates("fullname")
119
+ def _validate_fullname(self, key, value, *args, **kwargs):
120
+ if value is None:
121
+ return None
122
+ if not isinstance(value, str):
123
+ raise ValueError(f"{key=}, {value=}, value is not str")
124
+ value = make_none_if_blank(value.strip())
125
+ return value
126
+
118
127
  @validates("email")
119
128
  def _validate_email(self, key, value, *args, **kwargs):
120
129
  if value is None:
@@ -3,7 +3,7 @@ import logging
3
3
 
4
4
  from arpakitlib.ar_datetime_util import now_utc_dt
5
5
  from project.core.settings import get_cached_settings
6
- from project.core.util import setup_logging
6
+ from project.core.setup_logging import setup_logging
7
7
  from project.sqlalchemy_db_.sqlalchemy_db import get_cached_sqlalchemy_db
8
8
  from project.sqlalchemy_db_.sqlalchemy_model import ApiKeyDBM, UserDBM, UserTokenDBM
9
9
 
@@ -5,7 +5,7 @@ import aiohttp.web
5
5
  from aiogram.webhook.aiohttp_server import SimpleRequestHandler, setup_application
6
6
 
7
7
  from project.core.settings import get_cached_settings
8
- from project.core.util import setup_logging
8
+ from project.core.setup_logging import setup_logging
9
9
  from project.tg_bot.tg_bot import get_cached_tg_bot
10
10
  from project.tg_bot.tg_bot_dispatcher import create_tg_bot_dispatcher
11
11
 
@@ -8,7 +8,7 @@ from emoji import emojize
8
8
 
9
9
  from arpakitlib.ar_str_util import remove_tags_and_html
10
10
  from project.core.settings import get_cached_settings
11
- from project.core.util import setup_logging
11
+ from project.core.setup_logging import setup_logging
12
12
  from project.sqlalchemy_db_.sqlalchemy_db import get_cached_sqlalchemy_db
13
13
  from project.sqlalchemy_db_.sqlalchemy_model import UserDBM
14
14
  from project.tg_bot.tg_bot import get_cached_tg_bot
@@ -5,7 +5,7 @@ from aiogram.types import BotCommand, BotCommandScopeChat
5
5
 
6
6
  from arpakitlib.ar_str_util import return_str_if_none
7
7
  from project.core.settings import get_cached_settings
8
- from project.core.util import setup_logging
8
+ from project.core.setup_logging import setup_logging
9
9
  from project.sqlalchemy_db_.sqlalchemy_db import get_cached_sqlalchemy_db
10
10
  from project.sqlalchemy_db_.sqlalchemy_model import UserDBM
11
11
  from project.tg_bot.blank.client import get_cached_rus_client_tg_bot_blank
@@ -5,7 +5,7 @@ from aiogram.client.session.aiohttp import AiohttpSession
5
5
  from aiogram.enums import ParseMode
6
6
 
7
7
  from project.core.settings import get_cached_settings
8
- from project.core.util import setup_logging
8
+ from project.core.setup_logging import setup_logging
9
9
 
10
10
 
11
11
  def create_async_tg_bot_notifier() -> aiogram.Bot | None:
@@ -9,7 +9,7 @@ from email.utils import formataddr
9
9
  import aiosmtplib
10
10
 
11
11
  from project.core.settings import get_cached_settings
12
- from project.core.util import setup_logging
12
+ from project.core.setup_logging import setup_logging
13
13
 
14
14
  _logger = logging.getLogger(__name__)
15
15
 
@@ -16,11 +16,11 @@ def init_log_file(*, log_filepath: str):
16
16
  file.write("")
17
17
 
18
18
 
19
- _normal_logging_was_setup: bool = False
19
+ _logging_was_setup: bool = False
20
20
 
21
21
 
22
22
  def setup_normal_logging(log_filepath: Optional[str] = None):
23
- global _normal_logging_was_setup
23
+ global _logging_was_setup
24
24
  if _normal_logging_was_setup is True:
25
25
  return
26
26
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: arpakitlib
3
- Version: 1.8.172
3
+ Version: 1.8.174
4
4
  Summary: arpakitlib
5
5
  License: Apache-2.0
6
6
  Keywords: arpakitlib,arpakit,arpakit-company,arpakitcompany,arpakit_company
@@ -8,22 +8,22 @@ arpakitlib/_arpakit_project_template_v_5/alembic/env.py,sha256=Qesmnj5A2kB-Doeuf
8
8
  arpakitlib/_arpakit_project_template_v_5/alembic/script.py.mako,sha256=MEqL-2qATlST9TAOeYgscMn1uy6HUS9NFvDgl93dMj8,635
9
9
  arpakitlib/_arpakit_project_template_v_5/alembic/versions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
10
  arpakitlib/_arpakit_project_template_v_5/alembic.ini,sha256=8fuyeEvGBiPGbxEFy8ISBV3xX_fgVmuhEGpB10_B5Uo,3733
11
- arpakitlib/_arpakit_project_template_v_5/arpakitlib_project_template_info.json,sha256=_e3ADooaJ8Kdzw2tN7wSvy_vfxwW32acNlCY3c8ALXw,98
11
+ arpakitlib/_arpakit_project_template_v_5/arpakitlib_project_template_info.json,sha256=MzKG0FxkZBCKhNfL0Y8R-9gGmPGWb7RLo3HoNW9pEVc,98
12
12
  arpakitlib/_arpakit_project_template_v_5/command/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
13
  arpakitlib/_arpakit_project_template_v_5/command/alembic_history.sh,sha256=OMnDNtHIksGh9iavWnzbtxcudZW4vjdcISsBXvzZSPw,22
14
14
  arpakitlib/_arpakit_project_template_v_5/command/alembic_revision_autogenerate.sh,sha256=yW2i-SBOtBx15Ya0poVQqKkJM5t2JZp06r9AEW-DmGE,46
15
15
  arpakitlib/_arpakit_project_template_v_5/command/alembic_upgrade_head.sh,sha256=RIkhv5e5ERZHoxmTvvo_nCeDeVqeVIam7CjVoE9_E4k,38
16
16
  arpakitlib/_arpakit_project_template_v_5/command/beautify_json.py,sha256=oyxkT3wGqCwGNgwGHW-gPLJd063V8-SXA5OXkszAE2g,215
17
- arpakitlib/_arpakit_project_template_v_5/command/check_logging.py,sha256=KeqcmJ2O-q4j87G9y13a9dRdWfuFs2-AXRO4EqUS7UI,219
18
- arpakitlib/_arpakit_project_template_v_5/command/check_sqlalchemy_db.py,sha256=NgbakDecP2tFs_XjGyI1OPqMNRzi_azAdKwpGNrPtsk,246
17
+ arpakitlib/_arpakit_project_template_v_5/command/check_logging.py,sha256=7vTaDOl82Eiuc9KfuxZCuxiH2CXh9VjdBhhedctNiek,228
18
+ arpakitlib/_arpakit_project_template_v_5/command/check_sqlalchemy_db.py,sha256=t9Hu9tl_pggSjSN5ZQhBeIBfHrZGBoQ805Kdv7-n2lg,255
19
19
  arpakitlib/_arpakit_project_template_v_5/command/demojize.py,sha256=RGzFHgOPfNfwsmlBT1YiV69IfnuNDEoJO-UUvvpC-Kw,136
20
20
  arpakitlib/_arpakit_project_template_v_5/command/docker_ps_a.sh,sha256=nOQejihYlzstg9oROvYwHIsSLt2Sw0DWQEeT3GBaBNs,18
21
21
  arpakitlib/_arpakit_project_template_v_5/command/docker_rm_postgres.sh,sha256=8aSvrtBK6kaRpvUv5rDnzzQ6Hh1IqrmqQpl9AmcVJJc,68
22
22
  arpakitlib/_arpakit_project_template_v_5/command/docker_run_postgres.sh,sha256=JDrEZId04-1qnAQXXEj7ylP1zZRxbV145DYdwPKWsmk,364
23
23
  arpakitlib/_arpakit_project_template_v_5/command/docker_start_postgres.sh,sha256=Rrwmjt2_3m1rqiHuvymAC5bbsQmyiiyhwG_DVscINqA,68
24
24
  arpakitlib/_arpakit_project_template_v_5/command/docker_stop_postgres.sh,sha256=ZhXUvRZQ4iJG1KnIpSIqNq7ED3Mp0UOxXbbxhDxEOpo,67
25
- arpakitlib/_arpakit_project_template_v_5/command/drop_json_db.py,sha256=cojYWq44is6lqE6G2IfhO75InQDAGmg_k3f-CvL0GKQ,316
26
- arpakitlib/_arpakit_project_template_v_5/command/drop_sqlalchemy_db.py,sha256=oR4CQ74HpeWJtJH77nLaLiWbMCT8LzCm4Nmnu1jrZIc,446
25
+ arpakitlib/_arpakit_project_template_v_5/command/drop_json_db.py,sha256=TjdM4kW6F4BBa07PoJmXgA5HX-vqoqK2oT-aAB4nF7s,325
26
+ arpakitlib/_arpakit_project_template_v_5/command/drop_sqlalchemy_db.py,sha256=U4eG5w9At8bTcU8PzB6GfZhxox836CRPWODXqgx4HOU,455
27
27
  arpakitlib/_arpakit_project_template_v_5/command/emojize.py,sha256=RpIBA60HXqHvWGrB8pFGJ5glpI4tWfPGkw9QRy32YLg,134
28
28
  arpakitlib/_arpakit_project_template_v_5/command/generate_settings_env_example.py,sha256=v05NKSG-hFZyFiMfV6n8uObv-1qoS59UdztSsq4lF1c,437
29
29
  arpakitlib/_arpakit_project_template_v_5/command/git_commit.sh,sha256=AW1NEel-ZHaYeVWFlRbgZSYPQdnVKsTkpR_07RQL1Mw,42
@@ -37,8 +37,8 @@ arpakitlib/_arpakit_project_template_v_5/command/git_set_arpakit_origin.sh,sha25
37
37
  arpakitlib/_arpakit_project_template_v_5/command/git_set_divarteam_origin.sh,sha256=XJ8m822bosZ6HqbfJDsWe-IqBNcAgGsKjMyDWygdP2Y,150
38
38
  arpakitlib/_arpakit_project_template_v_5/command/git_status.sh,sha256=N9JGYX5_UfCdirw4EQYzu4sS7pMLGrF4-QrTSTcpUtA,16
39
39
  arpakitlib/_arpakit_project_template_v_5/command/hello_world.py,sha256=6aDbntxZ6e4Mbf2sQEb4uVazUDbJX7kEaSJn6SYwR6U,87
40
- arpakitlib/_arpakit_project_template_v_5/command/init_json_db.py,sha256=PbznS7t2nuk1NCaf_6TCssjjuUW4G2lEQIjkQTmt-ys,215
41
- arpakitlib/_arpakit_project_template_v_5/command/init_sqlalchemy_db.py,sha256=70EiEJHvsRmuOh9t-lY5D_jOF0y6mtSa_iW1cu-HBAk,240
40
+ arpakitlib/_arpakit_project_template_v_5/command/init_json_db.py,sha256=RQYstMAUDJfjNC8WYWcPvioGSmRFG5LF0Aa2CqaSedw,224
41
+ arpakitlib/_arpakit_project_template_v_5/command/init_sqlalchemy_db.py,sha256=o_58KX3phGXYPSt_FvWC6lhZYDWsKKepSkJaxRzYPOA,249
42
42
  arpakitlib/_arpakit_project_template_v_5/command/poetry_check.sh,sha256=mxkbFqw-mVlAkP_klLoXDANbIoKEu6Uj98tZ3pLKlpU,19
43
43
  arpakitlib/_arpakit_project_template_v_5/command/poetry_clear_cache.sh,sha256=5NmoMsA377JCeTMLERzE2GZywgi8mXQDTQ_yhIJtR8k,139
44
44
  arpakitlib/_arpakit_project_template_v_5/command/poetry_config.sh,sha256=gIctNLSvRJmER_iU_HwPpHR83adZV12LoXcoWfY9M00,26
@@ -49,28 +49,28 @@ arpakitlib/_arpakit_project_template_v_5/command/poetry_show.sh,sha256=pclR9efCN
49
49
  arpakitlib/_arpakit_project_template_v_5/command/poetry_show_arpakitlib.sh,sha256=q2bMtxwfr24-qGRrDi6aw6ryumqrBe42fht-V19NqxY,37
50
50
  arpakitlib/_arpakit_project_template_v_5/command/poetry_update.sh,sha256=ZtoXIC4Qq7PMTDxQMwUxvkYC6lTc5LC23ILTywWbyoU,164
51
51
  arpakitlib/_arpakit_project_template_v_5/command/poetry_update_arpakitlib.sh,sha256=hh7vj-yKgKqLfaGb8cjsJ_NTa7fBtE4s3yxzte4D8bw,163
52
- arpakitlib/_arpakit_project_template_v_5/command/reinit_all_sqlalchemy_db.py,sha256=-70vNhWGAlTlG1ngN800qRuk1HJ2hK6geqfP8PtgUxU,347
53
- arpakitlib/_arpakit_project_template_v_5/command/reinit_json_db.py,sha256=NYY1dPVbJ_mO9aCu8VTiDT7kfloiGvG624hJ_5g2tBM,318
54
- arpakitlib/_arpakit_project_template_v_5/command/reinit_sqlalchemy_db.py,sha256=aCoLtUvB_dubMHMGlOFgVzxkhhPAL4lHeMU0LM4CBCs,343
55
- arpakitlib/_arpakit_project_template_v_5/command/remove_operations.py,sha256=l1BMAT9kQMy_aZ2ZNc20vTi1xXktmDrJvKDvo85b8xA,326
56
- arpakitlib/_arpakit_project_template_v_5/command/remove_rows_from_tables_sqlalchemy_db.py,sha256=9XDeYhjdELLq1T7ArskaMjzqpGerYuP38PjOwUFDnqQ,259
57
- arpakitlib/_arpakit_project_template_v_5/command/remove_story_logs.py,sha256=l-whsYahKY6ssk-c24ufiybF-U24iFqMdkNlnlASm2U,498
58
- arpakitlib/_arpakit_project_template_v_5/command/rm_all_records_in_json_db.py,sha256=qF5c_Aso7XpNcBZOInz7MWXX9Wm8L73rcOZBKGXlFfg,326
59
- arpakitlib/_arpakit_project_template_v_5/command/set_tg_bot_commands.py,sha256=6HbuL6acw-U8vkUdqLVIEffe_FcBsDWRKZ90AakZbv8,456
52
+ arpakitlib/_arpakit_project_template_v_5/command/reinit_all_sqlalchemy_db.py,sha256=ENkdaBsleaExqVRd1UImvPKAY18mJkERMz1jqb0mr-A,356
53
+ arpakitlib/_arpakit_project_template_v_5/command/reinit_json_db.py,sha256=fVFHABiP6WtHPxQRsLNVOe0c4A8DNlkYM8VI5Kwa8Ps,327
54
+ arpakitlib/_arpakit_project_template_v_5/command/reinit_sqlalchemy_db.py,sha256=_XLOSoj2RC2gbv9z06hiDtyJCRiNG4JyrVSmcNIDgi4,352
55
+ arpakitlib/_arpakit_project_template_v_5/command/remove_operations.py,sha256=iathPqcgTM-J6vmnYNn_F0bkAmBz4PQpcWTo6xnzMhU,335
56
+ arpakitlib/_arpakit_project_template_v_5/command/remove_rows_from_tables_sqlalchemy_db.py,sha256=hXxxW2nIEu-YJWa32YVjdawpLEf7vBhTIhCHdBd0k6k,268
57
+ arpakitlib/_arpakit_project_template_v_5/command/remove_story_logs.py,sha256=YNDZar3OuE5RJxnDIqXm_ucBC5GbRJnEpZPcbnGfw70,507
58
+ arpakitlib/_arpakit_project_template_v_5/command/rm_all_records_in_json_db.py,sha256=33kwtdrNLEF0Y8z1KqXZ2gR_7mP1NDL-_8d8_PVl6ck,335
59
+ arpakitlib/_arpakit_project_template_v_5/command/set_tg_bot_commands.py,sha256=5NLsSC2XFwXRUIyW5pLNvQ3CwAwrQWQFJ5X35ogofJk,465
60
60
  arpakitlib/_arpakit_project_template_v_5/command/show_arpakitlib_project_template_info.py,sha256=AoemyIrxS49kp34jsuJHKTa4Cvyycl17woXwk8oy9nU,209
61
61
  arpakitlib/_arpakit_project_template_v_5/command/show_settings.py,sha256=c07DRqJ08tPm2nFSLAxm_h1dNSQIbWT_hL65g869CWw,264
62
- arpakitlib/_arpakit_project_template_v_5/command/show_sqlalchemy_db_table_name_to_amount.py,sha256=4KCP-ud5tDKLdTxJLZTDnPzbbNwY33XIUR_qRXjbkH8,410
62
+ arpakitlib/_arpakit_project_template_v_5/command/show_sqlalchemy_db_table_name_to_amount.py,sha256=gZKzoiUC4gwyLUrohvUfunY8lwjl9p44ydR9xBn68po,419
63
63
  arpakitlib/_arpakit_project_template_v_5/command/start_api.py,sha256=EPRfugVhXqa4UcLGvaSINExPKT_fquUeTCQt6QVUkDE,124
64
64
  arpakitlib/_arpakit_project_template_v_5/command/start_api_for_prod.py,sha256=EPRfugVhXqa4UcLGvaSINExPKT_fquUeTCQt6QVUkDE,124
65
- arpakitlib/_arpakit_project_template_v_5/command/start_operation_executor_worker.py,sha256=X8dE5OcTEVKjbcXdU0QMstXbi8RyYWPzATHtbQHyBIs,413
66
- arpakitlib/_arpakit_project_template_v_5/command/start_operation_executor_workers_mode_async_task.py,sha256=C5aoJmI9LB9d25g_ZTvRccwkWUglUdcCcPb-03HoA0s,793
67
- arpakitlib/_arpakit_project_template_v_5/command/start_operation_executor_workers_mode_thread.py,sha256=QjInoDY7XGQZCs2A-Kh5Ul0P4CgcS9Tom6FfXcseeFs,718
68
- arpakitlib/_arpakit_project_template_v_5/command/start_scheduled_operation_creator_worker.py,sha256=NuimX6etxQ9EU0VYOWw43AGiuOsZf8a4wilAd3ZzmRY,329
69
- arpakitlib/_arpakit_project_template_v_5/command/start_sqladmin.py,sha256=g3kNKPR4X-PKpiSe4oFLHbZ-EJIwmWUOK6a5FABat_Y,375
70
- arpakitlib/_arpakit_project_template_v_5/command/start_sqladmin_for_prod.py,sha256=g3kNKPR4X-PKpiSe4oFLHbZ-EJIwmWUOK6a5FABat_Y,375
71
- arpakitlib/_arpakit_project_template_v_5/command/start_sqladmin_with_reload.py,sha256=KmbadM6bmsQfP23xTn8aBzlvCQ1J2rLAuFk0_RCChjs,374
72
- arpakitlib/_arpakit_project_template_v_5/command/start_tg_bot.py,sha256=AJ1AxfdpbayBhScy6yAPVkSWnHJjzOTHxEewwGKaJMQ,200
73
- arpakitlib/_arpakit_project_template_v_5/command/start_tg_bot_for_prod.py,sha256=AJ1AxfdpbayBhScy6yAPVkSWnHJjzOTHxEewwGKaJMQ,200
65
+ arpakitlib/_arpakit_project_template_v_5/command/start_operation_executor_worker.py,sha256=ExGT5jZGdd2clQg9yvzoEeGeVJHqRYmyTKPflAW1lgg,422
66
+ arpakitlib/_arpakit_project_template_v_5/command/start_operation_executor_workers_mode_async_task.py,sha256=FsZXQfdDBgONJDmzIYfvGqESFH2soQOtzFlDHue07ac,802
67
+ arpakitlib/_arpakit_project_template_v_5/command/start_operation_executor_workers_mode_thread.py,sha256=czQmkzEJgMdo5St9WctbqLgHHefpKKEzdwolS5OFoqQ,727
68
+ arpakitlib/_arpakit_project_template_v_5/command/start_scheduled_operation_creator_worker.py,sha256=D8qE3uiY4fZDziqSKvM1b98qzlMRmt3lUHesCcElDyA,338
69
+ arpakitlib/_arpakit_project_template_v_5/command/start_sqladmin.py,sha256=jaAOq7Kf7HYziJslWbjqzr41kX4dJ9CXDPtMXj8rWok,384
70
+ arpakitlib/_arpakit_project_template_v_5/command/start_sqladmin_for_prod.py,sha256=jaAOq7Kf7HYziJslWbjqzr41kX4dJ9CXDPtMXj8rWok,384
71
+ arpakitlib/_arpakit_project_template_v_5/command/start_sqladmin_with_reload.py,sha256=W7UULXDtbjg7Pwu6kT9E45QVtKjWjgLxXk_IW9aPDek,383
72
+ arpakitlib/_arpakit_project_template_v_5/command/start_tg_bot.py,sha256=40H2J0GbCewxTIoC3J-CpG3CzCLviwGGiQvDaOWMjfI,209
73
+ arpakitlib/_arpakit_project_template_v_5/command/start_tg_bot_for_prod.py,sha256=40H2J0GbCewxTIoC3J-CpG3CzCLviwGGiQvDaOWMjfI,209
74
74
  arpakitlib/_arpakit_project_template_v_5/example.env,sha256=i6U782eTATww-PDjFmy9QQZcDr56Bup1DXpz1ZLvupY,1366
75
75
  arpakitlib/_arpakit_project_template_v_5/note/note_1.txt,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
76
  arpakitlib/_arpakit_project_template_v_5/note/note_2.txt,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -89,8 +89,8 @@ arpakitlib/_arpakit_project_template_v_5/project/api/blank/admin.py,sha256=ii1zL
89
89
  arpakitlib/_arpakit_project_template_v_5/project/api/blank/client.py,sha256=rvJKtAB26Qy2pKVSHSMUM_70oI4v8Yr6Vmpr6r4EzNk,101
90
90
  arpakitlib/_arpakit_project_template_v_5/project/api/blank/common.py,sha256=ug1FylE_CVC5eij-u4nh-IHNO-gwkbBGo5KgyWDujC8,91
91
91
  arpakitlib/_arpakit_project_template_v_5/project/api/const.py,sha256=J9bqaRRiIc3RLn6SJTvdfDvFrSsM_Ixii9t2M8dA5Jc,433
92
- arpakitlib/_arpakit_project_template_v_5/project/api/create_api_app.py,sha256=R9NJXGss1oO-T1ztInFetQ8SoqIXsV5UyKelU7R2-og,2913
93
- arpakitlib/_arpakit_project_template_v_5/project/api/create_first_data.py,sha256=sc98-xW74QbhFCT6AW5-fUJVd8RLRxClAOEW5-ec9T0,1815
92
+ arpakitlib/_arpakit_project_template_v_5/project/api/create_api_app.py,sha256=7lJim1RcHOr-vSobSOmO40qTZqtZtsf0C3OUOYnG1zc,2922
93
+ arpakitlib/_arpakit_project_template_v_5/project/api/create_first_data.py,sha256=BgqmD-7gXQ_zoz3ATqVacQzkg9lbvKnCSvQxm0M0Vxw,1824
94
94
  arpakitlib/_arpakit_project_template_v_5/project/api/event.py,sha256=P8gV2Bq6LeLH0JDN9Z3O401PMbyNr2n-tme2gPvT-m4,996
95
95
  arpakitlib/_arpakit_project_template_v_5/project/api/exception.py,sha256=DubhdZtgR6tXG6EEhAMxuEut8IRgGOGsQi5LGELpaE0,1417
96
96
  arpakitlib/_arpakit_project_template_v_5/project/api/exception_handler.py,sha256=AqT5l_GyTMWZsW-eI4ZD5FU4zMR0HKhsxsMX3p2KukY,11535
@@ -112,7 +112,7 @@ arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/get_sqlalchemy
112
112
  arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/get_story_log.py,sha256=sK0FvNzoG-pE5rD2Q62t6yK5Bx1Y2JZA_04sOk14loQ,2033
113
113
  arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/get_user.py,sha256=lBTR7eyjVbf0I8yG1yTovlrz2H4h-6O3wggQLsMPdsw,2763
114
114
  arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/init_sqlalchemy_db.py,sha256=HUDaDeyb5ldpiEaA2mJIsAuGF6H-XupGvKfxjrkxMTE,1333
115
- arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/main_router.py,sha256=CcwWdr_ECBwFX7SdnY4k5VAFBmEWxo-zLNpgzU_9aZg,3441
115
+ arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/main_router.py,sha256=sAJCElzS5PSHPhCAtobjg8Dm5xjlXIdi7keRxCTnsTY,3440
116
116
  arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/make_test_data_1.py,sha256=tITqtXW2C7od04_ECQudR_5kupVoKrYVnUVU2YcZp-g,1178
117
117
  arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/make_test_data_2.py,sha256=w003vLYnCUmM5GMaPDFGYcKd04OUf6rvonAQSEToZ5c,1178
118
118
  arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/make_test_data_3.py,sha256=P0IF-awERehfABlE68O1GjxTYVaBEUl-s5tQL2tQ-Qg,1178
@@ -167,24 +167,25 @@ arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/general/api_key.
167
167
  arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/general/common.py,sha256=y-p4QJhvKnFL1I6ud3m_nzE0xtreT3CNApPkkkLAbG0,541
168
168
  arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/general/user.py,sha256=AvYwqaowd1V_6VQjrIGxt8SwqNEgmirLcHbtSHPwWmQ,1080
169
169
  arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/general/user_token.py,sha256=iiuZXu_zo3FJX0W5qyyMGasUx-_d32yjqc_2KY3xpUA,513
170
- arpakitlib/_arpakit_project_template_v_5/project/api/start_api.py,sha256=3caGU5XPwMZTOkwT4MwmKxy7CaeYI82r5VT2UuLzOA8,523
170
+ arpakitlib/_arpakit_project_template_v_5/project/api/start_api.py,sha256=P5KMtYXujQUP2uAAKgUFyCxG99Fj2vfNf1ZEm8eFH80,532
171
171
  arpakitlib/_arpakit_project_template_v_5/project/api/util.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
172
172
  arpakitlib/_arpakit_project_template_v_5/project/business_service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
173
- arpakitlib/_arpakit_project_template_v_5/project/business_service/hello_world.py,sha256=lvWlVF6SlnC33swSCd-_QK6guxBg50myOd8cPS7hZrA,251
173
+ arpakitlib/_arpakit_project_template_v_5/project/business_service/hello_world.py,sha256=K0UcmwXuhUxHslOpwQ7h_igIFY4G63ekdhI2RwTWQbE,260
174
174
  arpakitlib/_arpakit_project_template_v_5/project/business_service/remove_operations.py,sha256=E2F8xonPeZovKKOHv-XDmsQUHvks8A6R89PVhF_pAQI,1780
175
175
  arpakitlib/_arpakit_project_template_v_5/project/celery_/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
176
176
  arpakitlib/_arpakit_project_template_v_5/project/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
177
177
  arpakitlib/_arpakit_project_template_v_5/project/core/cache_file_storage_in_dir.py,sha256=0lKPKvrs30DlAZwNS5ydPsQ9ETFLBjZqEcNv8LoQVCU,623
178
178
  arpakitlib/_arpakit_project_template_v_5/project/core/const.py,sha256=hgiiPIYL9543-eEnNAhZWYgX7ZzLKjOqRD0skkROSOw,951
179
179
  arpakitlib/_arpakit_project_template_v_5/project/core/dump_file_storage_in_dir.py,sha256=u3-vStMGaseMsRLuJmQK04UDhaez9vw6o5jyHb1fwNg,617
180
- arpakitlib/_arpakit_project_template_v_5/project/core/easy_openai_api_client.py,sha256=G4J9s0gerNlnvl1LvaWSYy1gdvaMbxyz0ZP35U9nx_Q,1219
180
+ arpakitlib/_arpakit_project_template_v_5/project/core/easy_openai_api_client.py,sha256=ssQ8Ju6CBQeXSOa_lfLaqycSf0a-NIj6ucOhEsPseVc,1141
181
181
  arpakitlib/_arpakit_project_template_v_5/project/core/jinja2_templates.py,sha256=jCNLaBauGC7YNvZdTLNHuPp7hmRGt94O23Skg6ewo7o,352
182
182
  arpakitlib/_arpakit_project_template_v_5/project/core/media_file_storage_in_dir.py,sha256=fMofTsfJtA8pp5lEUhucEUu3PBsmj-elaRZzExDsdLI,623
183
183
  arpakitlib/_arpakit_project_template_v_5/project/core/settings.py,sha256=ciIBp9xSGVpUIYRone_PSDvjMmkoeHfuMO3Q_3Q76EI,6589
184
- arpakitlib/_arpakit_project_template_v_5/project/core/util.py,sha256=1ha9UrguVPsTSjoMHhVZVCD0_mNBfhIDGEvcG1nA4Zw,667
184
+ arpakitlib/_arpakit_project_template_v_5/project/core/setup_logging.py,sha256=7VRejVMUNeR-MywrVw7B1RxVkIBHwVNQJFC4wlpBJco,1497
185
+ arpakitlib/_arpakit_project_template_v_5/project/core/util.py,sha256=iCwpuRqr6TfW0sKVH-3asQjhueJuad3ffq6sPI6ZUrs,347
185
186
  arpakitlib/_arpakit_project_template_v_5/project/emailer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
186
- arpakitlib/_arpakit_project_template_v_5/project/emailer/send_email.py,sha256=lw-nUFtEYiGEChSZrfuXCtTkoY6fNT45M_Y6QfzOk90,2175
187
- arpakitlib/_arpakit_project_template_v_5/project/emailer/send_simple_email.py,sha256=yv4fAtUuneK6nmIVn2vAoXqjBVFSoEliBcGssTeHoVs,932
187
+ arpakitlib/_arpakit_project_template_v_5/project/emailer/send_email.py,sha256=U3DaXSB1y4bRClT8cODgUbV2sDNyqL55NFByQPJCAwI,2184
188
+ arpakitlib/_arpakit_project_template_v_5/project/emailer/send_simple_email.py,sha256=iOfx3h8rImsMqiqMqlKlOy0tnkRzT2IDdLAvKzcUsZ4,941
188
189
  arpakitlib/_arpakit_project_template_v_5/project/json_db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
189
190
  arpakitlib/_arpakit_project_template_v_5/project/json_db/json_db.py,sha256=tBML-z4Y7uY8f_0ggcxvlDNt15Sf93Jr_OUeHwWxqOA,724
190
191
  arpakitlib/_arpakit_project_template_v_5/project/more/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -233,7 +234,7 @@ arpakitlib/_arpakit_project_template_v_5/project/sandbox/sandbox_7.py,sha256=xKS
233
234
  arpakitlib/_arpakit_project_template_v_5/project/site/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
234
235
  arpakitlib/_arpakit_project_template_v_5/project/site/asgi.py,sha256=uaRqA6QhXxDrYaNZil1USIIASRu0t5_hW0-DrbehF1g,82
235
236
  arpakitlib/_arpakit_project_template_v_5/project/site/consts.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
236
- arpakitlib/_arpakit_project_template_v_5/project/site/create_site_app.py,sha256=j2VtoUE47TSIDYs0sonSMnEa01R8YqO9WEcJF4_rtYE,89
237
+ arpakitlib/_arpakit_project_template_v_5/project/site/create_site_app.py,sha256=iqmZdvMM1kwfp-ba_0X5aoe50T_fYPdQESyAVsB8lZM,98
237
238
  arpakitlib/_arpakit_project_template_v_5/project/site/event.py,sha256=bNe5LvPGRiKZoR1RuuPU3Qn6t9LIPvinRwo9xPENUPk,290
238
239
  arpakitlib/_arpakit_project_template_v_5/project/site/exception_handler.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
239
240
  arpakitlib/_arpakit_project_template_v_5/project/site/router/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -242,17 +243,17 @@ arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/__init__.py,sha256=47
242
243
  arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/add_admin_in_app.py,sha256=JTXLf18DQVsZtoe6yFpZIVJI95rgJofnTe9YKyVwwhQ,851
243
244
  arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/admin_authorize.py,sha256=eIJ-oG8-piqSsnEPN3aJT_U5XOnxL7ZW3BCbLfVKS-E,5349
244
245
  arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/asgi.py,sha256=DRlRPkcOGXOccfP73oKEXolZTsc5VWdQgEG-qoW03ms,99
245
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/create_sqladmin_app.py,sha256=B7El1tFvoc2zdMj25QscgGcW5Qad1zAPW0ew0_3VZKk,1299
246
+ arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/create_sqladmin_app.py,sha256=JGCHgqJJvAjpc8xnbXPqCeUiLeKO7eo6OA6uPYzzqlk,1308
246
247
  arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/event.py,sha256=LjAUYNlsX9Sj_QLMzYuTQbbYYbIMHhbsSjTXt-G7lOE,849
247
248
  arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/__init__.py,sha256=dc_swzjkRDj85SWQ3cGGgsrp_cq5evUYQYUg0g7C5nw,435
248
249
  arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/api_key.py,sha256=VTpepKLCKrPnftGD-8Ibp75S0dwUrLlUytRfcXDDcKg,1597
249
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/common.py,sha256=aQOpWlxcZnlHoQlxfN-aDP17wlsgt9uQC_UA1680ZQA,2498
250
+ arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/common.py,sha256=s8mmdwb5eRcdNM_lZpj2UOhvc1ckRhUubjniQ-dDIK0,2504
250
251
  arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/operation.py,sha256=KUC-EZYFlLca92b6PwI0l5leOT8DzjlWm6y-a0PCvQc,3234
251
252
  arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/story_log.py,sha256=EePtnFQsDKvhHcPYQU4ahgo24jC6uBZkuzu2alrTviE,2180
252
253
  arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user.py,sha256=AbD0QPbAkwOE3i9aDirVBrIntQBCrU1xwX2IZlMS8Rk,2576
253
254
  arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user_token.py,sha256=pyeyDTg4rss8-67hIE3-SQlAvNfje6HazuaVnyFBpN8,2054
254
255
  arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/verification_code.py,sha256=8dfmXKVsmLNf6Id6Ql52uVaZuQtqNCq5nJgBOv3N66A,2883
255
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/start_sqladmin.py,sha256=g3kNKPR4X-PKpiSe4oFLHbZ-EJIwmWUOK6a5FABat_Y,375
256
+ arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/start_sqladmin.py,sha256=jaAOq7Kf7HYziJslWbjqzr41kX4dJ9CXDPtMXj8rWok,384
256
257
  arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
257
258
  arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/util/etc.py,sha256=jm65ZB0K8e6WpgcL2Y6pxcIuQjioIyMtBIOOFbbWfgk,1070
258
259
  arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -263,14 +264,14 @@ arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model
263
264
  arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/common.py,sha256=9j3QwBkaQSmsqXZbAYZDysGXP3xPPAHJfqIja5UnLcc,3229
264
265
  arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/operation.py,sha256=op5cSkTlHJyGjULgcSWE9-_PNinKSneHLxhG5DUkd9M,5913
265
266
  arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/story_log.py,sha256=hMYVJq837ZeIO3J2neOAzuzxeZ7hdR5PY93-YdgHftU,2472
266
- arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/user.py,sha256=-gmBWOAHJsUl-YY7U_2ZcKK5GV9dPHpvpdTRQnfbA_0,7579
267
+ arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/user.py,sha256=22TE8y2Vm9byLLkIE6RVAMa29d9ILCVg1e1QYi4ONIQ,7898
267
268
  arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/user_token.py,sha256=dCCiRZcOiUpqd-DZZ-A6tVM0PzJwa030KFOzPXNyM7A,1929
268
269
  arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/verification_code.py,sha256=xrrNPXn5PeCnZ2VWVBdXDUft83EEYtc6b4pvs0oh1uw,3078
269
270
  arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
270
271
  arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/util/execute_func_with_story_log.py,sha256=HrDlG8Y1gbMNVIuDHvCndXbnp8vxc8T8l-_XBVn7zR8,6091
271
272
  arpakitlib/_arpakit_project_template_v_5/project/test_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
272
273
  arpakitlib/_arpakit_project_template_v_5/project/test_data/make_test_api_keys.py,sha256=9F2bMfymaqx_Czh_tF945BKpKqNrVNjSIfCQl13Dkxw,911
273
- arpakitlib/_arpakit_project_template_v_5/project/test_data/make_test_data_1.py,sha256=F7vCmfWjItw5QzYR7_OAPSHdJt9louuvqXvcfOkU0AU,2246
274
+ arpakitlib/_arpakit_project_template_v_5/project/test_data/make_test_data_1.py,sha256=KaRXJmT8yfE7MrfmnWO08LnAa3lrR0UsxzI9f4AKfGI,2255
274
275
  arpakitlib/_arpakit_project_template_v_5/project/test_data/make_test_data_2.py,sha256=VcCvxRLA0XnLaQcsaoZkIVV8rTO3uMyLTYoEsdxKtYE,416
275
276
  arpakitlib/_arpakit_project_template_v_5/project/test_data/make_test_data_3.py,sha256=9QJTgM4qsJXPgFhfVueQ9vObXr_dAldzP_p8dPO42uA,416
276
277
  arpakitlib/_arpakit_project_template_v_5/project/test_data/make_test_data_4.py,sha256=OyU9601WACF7cCpPT33x6CpizNJeQIPDDFezIvEO01A,416
@@ -344,7 +345,7 @@ arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/client/start.py,s
344
345
  arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/client/support.py,sha256=MCvb-yJCBrJWBoESdU2X8Uft50oxEVe_m5YhZ_oHY4M,1096
345
346
  arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/client/voice_.py,sha256=XscGPPQ__1QoWmQcSLtR3XU94KHfxjMYGiL2khsX1Eg,645
346
347
  arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/main_router.py,sha256=5r9wZLjhxWTL89I_NF8NUwcMcBkyOQR7IRw9y4gWXWY,2435
347
- arpakitlib/_arpakit_project_template_v_5/project/tg_bot/start_tg_bot.py,sha256=vHARWETCD4hlK624aFxnkjsytgEbZY20bt973Oc_Peo,1253
348
+ arpakitlib/_arpakit_project_template_v_5/project/tg_bot/start_tg_bot.py,sha256=7sy0Jx_UhvRmKkt_pXvig2bBW6zDo_ksFQpUysxBYc0,1262
348
349
  arpakitlib/_arpakit_project_template_v_5/project/tg_bot/state/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
349
350
  arpakitlib/_arpakit_project_template_v_5/project/tg_bot/state/admin.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
350
351
  arpakitlib/_arpakit_project_template_v_5/project/tg_bot/state/client.py,sha256=B1mslhGJEibHDS-YHtWncAnd3UVeyzJmVsdQK4UAzB4,119
@@ -354,15 +355,15 @@ arpakitlib/_arpakit_project_template_v_5/project/tg_bot/tg_bot.py,sha256=jMX_awQ
354
355
  arpakitlib/_arpakit_project_template_v_5/project/tg_bot/tg_bot_dispatcher.py,sha256=1uxUooMhkDzUVHrHZgWU-SqwElh9KETgD5JtkkV4wAs,653
355
356
  arpakitlib/_arpakit_project_template_v_5/project/tg_bot/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
356
357
  arpakitlib/_arpakit_project_template_v_5/project/tg_bot/util/etc.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
357
- arpakitlib/_arpakit_project_template_v_5/project/tg_bot/util/notify_admins.py,sha256=ikjp5J0qgq6LGxh6iFcVIKtO3cUed3p39NwcFLcatVE,2096
358
- arpakitlib/_arpakit_project_template_v_5/project/tg_bot/util/set_tg_bot_commands.py,sha256=eTVOpwp8zn74QhLgmbLkxn3cH4xPzQN02euS-7UP-Eg,3489
358
+ arpakitlib/_arpakit_project_template_v_5/project/tg_bot/util/notify_admins.py,sha256=SB_HSjG2IMc54l40_E_RMxUDonAARcTIEHLffqSKIyA,2105
359
+ arpakitlib/_arpakit_project_template_v_5/project/tg_bot/util/set_tg_bot_commands.py,sha256=auqsJMk2LwUeSXVWDWh4kEkb4Ty7aSyfllDrlHpKDwc,3498
359
360
  arpakitlib/_arpakit_project_template_v_5/project/tg_bot_notifier/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
360
361
  arpakitlib/_arpakit_project_template_v_5/project/tg_bot_notifier/blank.py,sha256=0rspOC-xS9qdQ58pAJI-tNTgbylQIXCrEr79MMgvU1k,406
361
- arpakitlib/_arpakit_project_template_v_5/project/tg_bot_notifier/tg_bot_notifier.py,sha256=QMVOgvW4xJvi46vsdpw27IDrmI76W_Go_GJFUCvHfAc,1552
362
+ arpakitlib/_arpakit_project_template_v_5/project/tg_bot_notifier/tg_bot_notifier.py,sha256=SWbzhwiMlkPpmO61AWCCyg8Wpbfgt8nOInqrIELbAZI,1561
362
363
  arpakitlib/_arpakit_project_template_v_5/project/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
363
364
  arpakitlib/_arpakit_project_template_v_5/project/util/arpakitlib_project_template_util.py,sha256=syA_IuszHVub0zm0sVdB4_7rPJXwXRW4JmQ4qHbjXPk,396
364
365
  arpakitlib/_arpakit_project_template_v_5/project/util/etc.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
365
- arpakitlib/_arpakit_project_template_v_5/project/util/send_email_.py,sha256=Yhopk2ot_g4bA_3gy7SNz1SQr2xB2WXrZdRI_GDl9Is,4739
366
+ arpakitlib/_arpakit_project_template_v_5/project/util/send_email_.py,sha256=AZ2PHRQh-l7H3WLxgxygEKD8c_WPguIq4weP2zqfF9I,4748
366
367
  arpakitlib/_arpakit_project_template_v_5/todo.txt,sha256=q132Jbx229ThY77S3YiN-Cj5AVm7k1VlJcMYIbZUHUY,3
367
368
  arpakitlib/ar_additional_model_util.py,sha256=GFg-glLCxH9X95R2bhTJsscVwv37FgE1qbaAAyXrnIE,917
368
369
  arpakitlib/ar_aiogram_util.py,sha256=4bizX5Xg-E2-r2TXXGQGanJozsIWPVf5luO3vKUN8p8,8471
@@ -393,7 +394,7 @@ arpakitlib/ar_json_util.py,sha256=jnVfpQ6QSDq8NgIlh_6ZzXDveOiybr7QSQkXutE7d2s,26
393
394
  arpakitlib/ar_jwt_util.py,sha256=Rhm4ywoTAn6yOV8NLjDASfAtAtheROxxDP40G3XjnuQ,761
394
395
  arpakitlib/ar_list_of_dicts_to_xlsx.py,sha256=MyjEl4Jl4beLVZqLVQMMv0-XDtBD3Xh4Z_ZPDJeFu04,745
395
396
  arpakitlib/ar_list_util.py,sha256=2woOAHAU8oTIiVjZ8GLnx15odEaoQUq3Q0JPxlufFF0,457
396
- arpakitlib/ar_logging_util.py,sha256=GLw87L6qUASHS4-eAoBW0kN2hHXVdmWcmE9huw-J5aI,1681
397
+ arpakitlib/ar_logging_util.py,sha256=teqLzOkY-toeOAWtsGnW3iIfrR0NwG7jJ-dBzPrFUvU,1667
397
398
  arpakitlib/ar_mongodb_util.py,sha256=2ECkTnGAZ92qxioL-fmN6R4yZOSr3bXdXLWTzT1C3vk,4038
398
399
  arpakitlib/ar_need_type_util.py,sha256=XmY1kswz8j9oo5f9CxRu0_zgfvxWrXPYKOj6MM04sGk,2604
399
400
  arpakitlib/ar_openai_api_client_util.py,sha256=dWgsSPXtxNBxS5VRi_NharGQrUXF_YjIfhU3Bj5cW9M,5651
@@ -410,8 +411,8 @@ arpakitlib/ar_sqlalchemy_util.py,sha256=w_tGPTWIMVjHkTEYo9tVe1sfK_4vvfd3zGATLiYC
410
411
  arpakitlib/ar_str_util.py,sha256=2lGpnXDf2h1cBZpVf5i1tX_HCv5iBd6IGnrCw4QWWlY,4350
411
412
  arpakitlib/ar_type_util.py,sha256=Cs_tef-Fc5xeyAF54KgISCsP11NHyzIsglm4S3Xx7iM,4049
412
413
  arpakitlib/ar_yookassa_api_client_util.py,sha256=VozuZeCJjmLd1zj2BdC9WfiAQ3XYOrIMsdpNK-AUlm0,5347
413
- arpakitlib-1.8.172.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
414
- arpakitlib-1.8.172.dist-info/METADATA,sha256=vq6aEhKgZA_7pDdYWeQX-RMo4SmrThVESCFFNioovpE,3706
415
- arpakitlib-1.8.172.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
416
- arpakitlib-1.8.172.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
417
- arpakitlib-1.8.172.dist-info/RECORD,,
414
+ arpakitlib-1.8.174.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
415
+ arpakitlib-1.8.174.dist-info/METADATA,sha256=7nQJRVCxFTvsuwIlsBOXbmWaD8bO-U-xsi4DpZxKyZQ,3706
416
+ arpakitlib-1.8.174.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
417
+ arpakitlib-1.8.174.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
418
+ arpakitlib-1.8.174.dist-info/RECORD,,