arpakitlib 1.7.206__py3-none-any.whl → 1.7.212__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,9 @@
1
1
  # mode_type=
2
2
  # project_name=
3
+ # sql_db_user=
4
+ # sql_db_password=
3
5
  # sql_db_port=
6
+ # sql_db_database=
4
7
  # sql_db_url=
5
8
  # sql_db_echo=
6
9
  # api_init_sql_db_at_start=
@@ -1,9 +1,11 @@
1
1
  import uvicorn
2
2
 
3
3
  from src.core.settings import get_cached_settings
4
+ from src.core.util import setup_logging
4
5
 
5
6
 
6
7
  def _start_api_for_dev_with_reload():
8
+ setup_logging()
7
9
  uvicorn.run(
8
10
  "src.api.asgi:app",
9
11
  port=get_cached_settings().api_port,
@@ -1,9 +1,11 @@
1
1
  import uvicorn
2
2
 
3
3
  from src.core.settings import get_cached_settings
4
+ from src.core.util import setup_logging
4
5
 
5
6
 
6
7
  def _start_api_for_dev_without_reload():
8
+ setup_logging()
7
9
  uvicorn.run(
8
10
  "src.api.asgi:app",
9
11
  port=get_cached_settings().api_port,
@@ -3,6 +3,8 @@ from functools import lru_cache
3
3
  from typing import Any
4
4
 
5
5
  import pytz
6
+ from pydantic import field_validator
7
+ from pydantic_core.core_schema import ValidationInfo
6
8
 
7
9
  from arpakitlib.ar_json_util import safely_transfer_obj_to_json_str
8
10
  from arpakitlib.ar_settings_util import SimpleSettings
@@ -12,11 +14,27 @@ from src.core.const import ProjectPaths
12
14
  class Settings(SimpleSettings):
13
15
  project_name: str = "{{PROJECT_NAME}}"
14
16
 
17
+ sql_db_user: str | None = project_name
18
+
19
+ sql_db_password: str | None = project_name
20
+
15
21
  sql_db_port: int | None = int("{{SQL_DB_PORT}}") if "{{SQL_DB_PORT}}".strip().isdigit() else None
16
22
 
17
- sql_db_url: str | None = (
18
- f"postgresql://{{PROJECT_NAME}}:{{PROJECT_NAME}}@127.0.0.1:{sql_db_port}/{{PROJECT_NAME}}"
19
- ) if sql_db_port is not None else None
23
+ sql_db_database: str | None = project_name
24
+
25
+ sql_db_url: str | None = None
26
+
27
+ @field_validator("sql_db_url", mode="after")
28
+ def validate_sql_db_url(cls, v: Any, validation_info: ValidationInfo) -> str | None:
29
+ if v is not None:
30
+ return None
31
+ user = validation_info.data.get('sql_db_user')
32
+ password = validation_info.data.get('sql_db_password')
33
+ port = validation_info.data.get('sql_db_port')
34
+ database = validation_info.data.get('sql_db_database')
35
+ if user is not None and password is not None and port is not None and database is not None:
36
+ return f"postgresql://{user}:{password}@127.0.0.1:{port}/{database}"
37
+ return None
20
38
 
21
39
  sql_db_echo: bool = False
22
40
 
@@ -1,8 +1,8 @@
1
1
  # arpakit
2
2
 
3
- from typing import Union
3
+ from typing import Union, Any
4
4
 
5
- from pydantic import ConfigDict, field_validator
5
+ from pydantic import ConfigDict, field_validator, model_validator
6
6
  from pydantic_core import PydanticUndefined
7
7
  from pydantic_settings import BaseSettings
8
8
 
@@ -31,6 +31,14 @@ class SimpleSettings(BaseSettings):
31
31
 
32
32
  mode_type: str = ModeTypes.not_prod
33
33
 
34
+ @model_validator(mode="before")
35
+ @classmethod
36
+ def validate_all_fields(cls, values: dict[str, Any]) -> dict[str, Any]:
37
+ for key, value in values.items():
38
+ if isinstance(value, str) and value.lower().strip() in {"null", "none", "nil"}:
39
+ values[key] = None
40
+ return values
41
+
34
42
  @field_validator("mode_type")
35
43
  @classmethod
36
44
  def validate_mode_type(cls, v: str):
@@ -56,7 +56,9 @@ class OperationMV(SimpleModelView, model=OperationDBM):
56
56
  OperationDBM.output_data,
57
57
  OperationDBM.error_data
58
58
  ]
59
- column_default_sort = [(OperationDBM.creation_dt, True)]
59
+ column_default_sort = [
60
+ (OperationDBM.creation_dt, True)
61
+ ]
60
62
  column_searchable_list = [
61
63
  OperationDBM.id,
62
64
  OperationDBM.long_id,
@@ -66,8 +68,8 @@ class OperationMV(SimpleModelView, model=OperationDBM):
66
68
 
67
69
 
68
70
  class StoryLogMV(SimpleModelView, model=StoryLogDBM):
69
- name = "Operation"
70
- name_plural = "Operations"
71
+ name = "StoryLog"
72
+ name_plural = "StoryLogs"
71
73
  column_list = [
72
74
  StoryLogDBM.id,
73
75
  StoryLogDBM.long_id,
@@ -81,7 +83,9 @@ class StoryLogMV(SimpleModelView, model=StoryLogDBM):
81
83
  StoryLogDBM.title,
82
84
  StoryLogDBM.data
83
85
  ]
84
- column_default_sort = [(StoryLogDBM.creation_dt, True)]
86
+ column_default_sort = [
87
+ (StoryLogDBM.creation_dt, True)
88
+ ]
85
89
  column_searchable_list = [
86
90
  StoryLogDBM.id,
87
91
  StoryLogDBM.long_id,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: arpakitlib
3
- Version: 1.7.206
3
+ Version: 1.7.212
4
4
  Summary: arpakitlib
5
5
  License: Apache-2.0
6
6
  Keywords: arpakitlib,arpakit,arpakit-company,arpakitcompany,arpakit_company
@@ -4,7 +4,7 @@ arpakitlib/_arpakit_project_template/.python-version,sha256=XMd40XBnlTFfBSmMldd-
4
4
  arpakitlib/_arpakit_project_template/ARPAKITLIB,sha256=3-iAkMXtesLzJXHw_IIv2k2M0oH8cTjHzW22Vvbi0IE,4
5
5
  arpakitlib/_arpakit_project_template/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
6
6
  arpakitlib/_arpakit_project_template/README.md,sha256=AwqCtmMeywF2dJhZbKwCBA_wPnLF_VmoLGfPbFjH3bM,62
7
- arpakitlib/_arpakit_project_template/example.env,sha256=dJC2sjtywxm6ChP5jtIicGaaPvhI0NMNIhMmScg69b8,558
7
+ arpakitlib/_arpakit_project_template/example.env,sha256=Ko4SnDj-vlgfjmSDiZsu3qw8SJQaDgeTCnwc5RZfHFI,611
8
8
  arpakitlib/_arpakit_project_template/manage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
9
  arpakitlib/_arpakit_project_template/manage/docker_ps.sh,sha256=uwm8vHgeuNLCOn0o9hgP_uc-PUkS9FwLyzZh6ItZ3do,15
10
10
  arpakitlib/_arpakit_project_template/manage/docker_ps_a.sh,sha256=nOQejihYlzstg9oROvYwHIsSLt2Sw0DWQEeT3GBaBNs,18
@@ -64,8 +64,8 @@ arpakitlib/_arpakit_project_template/src/admin1/add_admin_in_app.py,sha256=7zF-9
64
64
  arpakitlib/_arpakit_project_template/src/admin1/admin_auth.py,sha256=qEC7gMy9E6mwuQRxnSsmVthXahVai4zjiC6Z8O3MZn8,804
65
65
  arpakitlib/_arpakit_project_template/src/admin1/model_view.py,sha256=dcvj5C9E2F2KCsGZPBBncQf_EvVJAC1qQgnyD8P4ZEw,6
66
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
67
+ arpakitlib/_arpakit_project_template/src/api/_start_api_with_reload.py,sha256=rqcjJ9ceDsyFwFUE-PAJXb3CHlIk0ww7-UQ9XxvGh0A,393
68
+ arpakitlib/_arpakit_project_template/src/api/_start_api_without_reload.py,sha256=bM3FItgtj0UizGDo_9CvykioSFZF_HWr3uZdd__B4cY,400
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
@@ -89,7 +89,7 @@ arpakitlib/_arpakit_project_template/src/core/_check_logging.py,sha256=APQp8jQa3
89
89
  arpakitlib/_arpakit_project_template/src/core/_check_settings.py,sha256=BQUcr-yj3cxz5GQo0jXe99wMoqHKrrrKD3-UovsJAt0,284
90
90
  arpakitlib/_arpakit_project_template/src/core/_generate_settings_env_example.py,sha256=SiEJe8AYQPOWicsaCwf9RdXp6UAmfkBdBT18AAInGb4,483
91
91
  arpakitlib/_arpakit_project_template/src/core/const.py,sha256=e2Y0NIQHfzm3bmnbQnGy3Z5YKt6OYnIsRoqVY8oIV2E,1008
92
- arpakitlib/_arpakit_project_template/src/core/settings.py,sha256=Sie05LqTfxBOqnYz8trM3sAQdfYAJSQ2Xv4Xwt0aJbI,2348
92
+ arpakitlib/_arpakit_project_template/src/core/settings.py,sha256=a_HfbAkl0hUbDJHDsdkjL3rLAcC8Mkaf9hXZgc5laRc,3065
93
93
  arpakitlib/_arpakit_project_template/src/core/util.py,sha256=mcikqcjljZa2qhYeoR1tR9JUSprrVSod8XcIK_PqS6o,1547
94
94
  arpakitlib/_arpakit_project_template/src/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
95
95
  arpakitlib/_arpakit_project_template/src/db/_check_conn_sqlalchemy_db.py,sha256=GPK7-w7x8ESqbZ0v1nI8m_ysWfnmjgRwyyh6kM8vYBQ,249
@@ -173,9 +173,9 @@ arpakitlib/ar_parse_command.py,sha256=-s61xcATIsfw1eV_iD3xi-grsitbGzSDoAFc5V0OFy
173
173
  arpakitlib/ar_postgresql_util.py,sha256=1AuLjEaa1Lg4pzn-ukCVnDi35Eg1k91APRTqZhIJAdo,945
174
174
  arpakitlib/ar_run_cmd_util.py,sha256=D_rPavKMmWkQtwvZFz-Io5Ak8eSODHkcFeLPzNVC68g,1072
175
175
  arpakitlib/ar_schedule_uust_api_client_util.py,sha256=0Ns0mMEXYEkVmP6YTAXHyNcrhNsvCJ8X-G_5XwILhJ4,6855
176
- arpakitlib/ar_settings_util.py,sha256=752EDXXnrA1uUbSD4InCHCZWEodLBwVUHrgOdOD2Xhw,1856
176
+ arpakitlib/ar_settings_util.py,sha256=rnoTqbRuhiq7294D4crD5kbnU8-gNWJbwGU_Ls2gJoU,2199
177
177
  arpakitlib/ar_sleep_util.py,sha256=OaLtRaJQWMkGjfj_mW1RB2P4RaSWsAIH8LUoXqsH0zM,1061
178
- arpakitlib/ar_sqladmin_util.py,sha256=vQTRlf36VjW6l_zslZmjkHinMVuQfI-QZsXIlnXUpgE,2634
178
+ arpakitlib/ar_sqladmin_util.py,sha256=6Nv9VQssk9PB0piyuss__soYKdjVhdbIeXIv4AgUxmQ,2660
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
@@ -183,8 +183,8 @@ arpakitlib/ar_str_util.py,sha256=yU5gOwNXUQaH5b_tM5t6fXUn9oUcv5EQbVnq2wXXIpQ,337
183
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.206.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
187
- arpakitlib-1.7.206.dist-info/METADATA,sha256=MwALBdVyl8K4gLJ9C-_MruUGQ1Caln_f7eJOPIthOXw,3176
188
- arpakitlib-1.7.206.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
189
- arpakitlib-1.7.206.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
190
- arpakitlib-1.7.206.dist-info/RECORD,,
186
+ arpakitlib-1.7.212.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
187
+ arpakitlib-1.7.212.dist-info/METADATA,sha256=F1DoUYryVsjSst03zhO0qKSffrGXtmoClJoQt2uC36M,3176
188
+ arpakitlib-1.7.212.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
189
+ arpakitlib-1.7.212.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
190
+ arpakitlib-1.7.212.dist-info/RECORD,,