arpakitlib 1.8.9__py3-none-any.whl → 1.8.10__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.
@@ -2,7 +2,7 @@ from functools import lru_cache
2
2
 
3
3
  from arpakitlib.ar_sqlalchemy_util import SQLAlchemyDb
4
4
  from project.core.settings import get_cached_settings
5
- from project.sqlalchemy_db_.sqlalchemy_model.common import get_simple_dbm
5
+ from project.sqlalchemy_db_.sqlalchemy_model import SimpleDBM
6
6
 
7
7
 
8
8
  def create_sqlalchemy_db() -> SQLAlchemyDb | None:
@@ -13,7 +13,7 @@ def create_sqlalchemy_db() -> SQLAlchemyDb | None:
13
13
  sync_db_url=get_cached_settings().sqlalchemy_sync_db_url,
14
14
  async_db_url=get_cached_settings().sqlalchemy_async_db_url,
15
15
  db_echo=get_cached_settings().sqlalchemy_db_echo,
16
- base_dbm=get_simple_dbm()
16
+ base_dbm=SimpleDBM
17
17
  )
18
18
 
19
19
 
@@ -1,3 +1,7 @@
1
+ from arpakitlib.ar_sqlalchemy_util import get_string_info_from_declarative_base
1
2
  from project.sqlalchemy_db_.sqlalchemy_model.common import SimpleDBM
2
3
  from project.sqlalchemy_db_.sqlalchemy_model.operation import OperationDBM
3
4
  from project.sqlalchemy_db_.sqlalchemy_model.story_log import StoryLogDBM
5
+
6
+ if __name__ == '__main__':
7
+ print(get_string_info_from_declarative_base(SimpleDBM))
@@ -33,9 +33,10 @@ class SimpleDBM(BaseDBM):
33
33
  return f"{self.__class__.__name__.removesuffix('DBM')} (id={self.id}, slug={self.slug})"
34
34
 
35
35
 
36
- def get_simple_dbm() -> type[SimpleDBM]:
36
+ def get_simple_dbm_class() -> type[SimpleDBM]:
37
+ from project.sqlalchemy_db_.sqlalchemy_model import SimpleDBM
37
38
  return SimpleDBM
38
39
 
39
40
 
40
41
  if __name__ == '__main__':
41
- print(get_string_info_from_declarative_base(SimpleDBM))
42
+ print(get_string_info_from_declarative_base(get_simple_dbm_class()))
@@ -1,5 +1,7 @@
1
+ from __future__ import annotations
2
+
1
3
  from datetime import datetime, timedelta
2
- from typing import Any
4
+ from typing import Any, TYPE_CHECKING
3
5
 
4
6
  import sqlalchemy
5
7
  from sqlalchemy.dialects import postgresql
@@ -8,6 +10,9 @@ from sqlalchemy.orm import mapped_column, Mapped
8
10
  from arpakitlib.ar_enumeration_util import Enumeration
9
11
  from project.sqlalchemy_db_.sqlalchemy_model.common import SimpleDBM
10
12
 
13
+ if TYPE_CHECKING:
14
+ pass
15
+
11
16
 
12
17
  class OperationDBM(SimpleDBM):
13
18
  __tablename__ = "operation"
@@ -20,7 +25,7 @@ class OperationDBM(SimpleDBM):
20
25
 
21
26
  class Types(Enumeration):
22
27
  healthcheck_ = "healthcheck"
23
- raise_fake_error_ = "raise_fake_error_"
28
+ raise_fake_error_ = "raise_fake_error"
24
29
 
25
30
  status: Mapped[str] = mapped_column(
26
31
  sqlalchemy.TEXT, index=True, insert_default=Statuses.waiting_for_execution,
@@ -29,6 +34,7 @@ class OperationDBM(SimpleDBM):
29
34
  type: Mapped[str] = mapped_column(
30
35
  sqlalchemy.TEXT, index=True, insert_default=Types.healthcheck_, nullable=False
31
36
  )
37
+ title: Mapped[str | None] = mapped_column(sqlalchemy.TEXT, insert_default=None, nullable=True)
32
38
  execution_start_dt: Mapped[datetime | None] = mapped_column(sqlalchemy.TIMESTAMP(timezone=True), nullable=True)
33
39
  execution_finish_dt: Mapped[datetime | None] = mapped_column(sqlalchemy.TIMESTAMP(timezone=True), nullable=True)
34
40
  input_data: Mapped[dict[str, Any]] = mapped_column(
@@ -38,10 +44,16 @@ class OperationDBM(SimpleDBM):
38
44
  nullable=False
39
45
  )
40
46
  output_data: Mapped[dict[str, Any]] = mapped_column(
41
- postgresql.JSON, insert_default={}, server_default="{}", nullable=False
47
+ postgresql.JSON,
48
+ insert_default={},
49
+ server_default="{}",
50
+ nullable=False
42
51
  )
43
52
  error_data: Mapped[dict[str, Any]] = mapped_column(
44
- postgresql.JSON, insert_default={}, server_default="{}", nullable=False
53
+ postgresql.JSON,
54
+ insert_default={},
55
+ server_default="{}",
56
+ nullable=False
45
57
  )
46
58
 
47
59
  def raise_if_executed_with_error(self):
@@ -70,6 +82,10 @@ class OperationDBM(SimpleDBM):
70
82
 
71
83
  @property
72
84
  def sdp_duration_total_seconds(self) -> float | None:
85
+ """
86
+ При использовании у данной модели .simple_dict данное свойство будет представлено как поле.
87
+ То есть префикс sdp_ и даёт этот бонус.
88
+ """
73
89
  return self.duration_total_seconds
74
90
 
75
91
 
@@ -1,4 +1,6 @@
1
- from typing import Any
1
+ from __future__ import annotations
2
+
3
+ from typing import Any, TYPE_CHECKING
2
4
 
3
5
  import sqlalchemy
4
6
  from sqlalchemy.dialects import postgresql
@@ -7,6 +9,9 @@ from sqlalchemy.orm import mapped_column, Mapped
7
9
  from arpakitlib.ar_enumeration_util import Enumeration
8
10
  from project.sqlalchemy_db_.sqlalchemy_model.common import SimpleDBM
9
11
 
12
+ if TYPE_CHECKING:
13
+ pass
14
+
10
15
 
11
16
  class StoryLogDBM(SimpleDBM):
12
17
  __tablename__ = "story_log"
@@ -23,8 +28,8 @@ class StoryLogDBM(SimpleDBM):
23
28
  level: Mapped[str] = mapped_column(
24
29
  sqlalchemy.TEXT, insert_default=Levels.info, server_default=Levels.info, index=True, nullable=False
25
30
  )
26
- type: Mapped[str | None] = mapped_column(sqlalchemy.TEXT, index=True, default=None, nullable=True)
27
- title: Mapped[str | None] = mapped_column(sqlalchemy.TEXT, index=True, default=None, nullable=True)
31
+ type: Mapped[str | None] = mapped_column(sqlalchemy.TEXT, index=True, insert_default=None, nullable=True)
32
+ title: Mapped[str | None] = mapped_column(sqlalchemy.TEXT, insert_default=None, nullable=True)
28
33
  data: Mapped[dict[str, Any]] = mapped_column(
29
34
  postgresql.JSON, insert_default={}, server_default="{}", nullable=False
30
35
  )
@@ -57,6 +57,8 @@ def generate_sqlalchemy_url(
57
57
 
58
58
  class BaseDBM(DeclarativeBase):
59
59
  __abstract__ = True
60
+ __table_args__ = {"extend_existing": True}
61
+
60
62
  _bus_data: dict[str, Any] | None = None
61
63
 
62
64
  @property
@@ -102,7 +104,7 @@ class BaseDBM(DeclarativeBase):
102
104
  def simple_dict_with_sd_properties(self) -> dict[str, Any]:
103
105
  return self.simple_dict(include_sd_properties=True)
104
106
 
105
- def simple_json(self, *, include_sd_properties: bool = True) -> str:
107
+ def simple_dict_json(self, *, include_sd_properties: bool = True) -> str:
106
108
  return safely_transfer_obj_to_json_str(self.simple_dict(include_sd_properties=include_sd_properties))
107
109
 
108
110
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: arpakitlib
3
- Version: 1.8.9
3
+ Version: 1.8.10
4
4
  Summary: arpakitlib
5
5
  License: Apache-2.0
6
6
  Keywords: arpakitlib,arpakit,arpakit-company,arpakitcompany,arpakit_company
@@ -168,11 +168,11 @@ arpakitlib/_arpakit_project_template_v_2/project/sqladmin_/admin_auth.py,sha256=
168
168
  arpakitlib/_arpakit_project_template_v_2/project/sqladmin_/model_view.py,sha256=JcrO6FoAuJHslqURbZSHimPR5TxQpebgzQr0bJnx49M,2334
169
169
  arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
170
170
  arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/const.py,sha256=dcvj5C9E2F2KCsGZPBBncQf_EvVJAC1qQgnyD8P4ZEw,6
171
- arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_db.py,sha256=9UktO2fZsxRggWLbkcXHtu99bPpx2xCfgRMaH8KnHg4,761
172
- arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_model/__init__.py,sha256=Ua9EHLexr3OKVXymgO-VATRUJx37tL8kUVY0w3-bTqM,218
173
- arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_model/common.py,sha256=u0J3Aem-uukUyEzoDIUzrEhWJ2bhm9gAnmI-tn7V1y4,1452
174
- arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_model/operation.py,sha256=3x1TQbK0qFuI8BADGiice0GHqzrlEcMUEDG2E2g50X8,2802
175
- arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_model/story_log.py,sha256=NjMKPV-WIc_7LORrWzNMXFyrVCaX6vTNTPkLc9n6amU,1151
171
+ arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_db.py,sha256=1y3FaMFzm_5UM2poqtBve_UP_mh1vjs--krq6yO8PsA,742
172
+ arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_model/__init__.py,sha256=9UheLINBHeqprpoFvWFG2keqd8QrMP_DscTnxVpJD6M,386
173
+ arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_model/common.py,sha256=cm2gPgOTv1IqX9rwKZ7TTLaed0C0l8BKn04Z8ggnpLg,1537
174
+ arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_model/operation.py,sha256=ZyK6jRVYM7K_ze2LDaYBwqTP6MkTFjtQMTD-HroX0jg,3293
175
+ arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/sqlalchemy_model/story_log.py,sha256=NKJVph0xO6uu3GBeujus9hAvDFhuvGyS-QbuMDfNhaU,1232
176
176
  arpakitlib/_arpakit_project_template_v_2/project/sqlalchemy_db_/util.py,sha256=QSA_nT6aWdtE412-Uj3VTd7yh3dzS4HugDK9FivjTPo,570
177
177
  arpakitlib/_arpakit_project_template_v_2/project/test_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
178
178
  arpakitlib/_arpakit_project_template_v_2/project/test_data/make_test_data_1.py,sha256=yRKf6HYZ2do2g7tAUB172nHA_u-yS9cyHhbinahc7sc,285
@@ -249,7 +249,7 @@ arpakitlib/ar_schedule_uust_api_client_util.py,sha256=rXI2_3OTaIBgR-GixM1Ti-Ue1f
249
249
  arpakitlib/ar_settings_util.py,sha256=Y5wi_cmsjDjfJpM0VJHjbo0NoVPKfypKaD1USowwDtQ,1327
250
250
  arpakitlib/ar_sleep_util.py,sha256=OaLtRaJQWMkGjfj_mW1RB2P4RaSWsAIH8LUoXqsH0zM,1061
251
251
  arpakitlib/ar_sqladmin_util.py,sha256=Jd33EX_fAso4bvrcDhNEYOUlUHkudbadNGOJDg7rqhQ,301
252
- arpakitlib/ar_sqlalchemy_util.py,sha256=o9LwEE_DfNr1mD5wzJ4X2ciUPzFo95wwSGdqggs29FM,9247
252
+ arpakitlib/ar_sqlalchemy_util.py,sha256=82brTPqx_poWq-DJ9sDqbdhMvEYKl8HXNBklx05pfnw,9300
253
253
  arpakitlib/ar_ssh_runner_util.py,sha256=e9deuUdBW7Eh0Exx2nTBhk57SaOZYaJaSjNk8q6dbJk,6804
254
254
  arpakitlib/ar_steam_payment_api_client_util.py,sha256=onvb3jt9bWfsCLbVLaApbN_-cqCu1CduVhM9GhG5yTA,250
255
255
  arpakitlib/ar_str_util.py,sha256=yU5gOwNXUQaH5b_tM5t6fXUn9oUcv5EQbVnq2wXXIpQ,3378
@@ -257,8 +257,8 @@ arpakitlib/ar_type_util.py,sha256=Cs_tef-Fc5xeyAF54KgISCsP11NHyzIsglm4S3Xx7iM,40
257
257
  arpakitlib/ar_wata_api_client.py,sha256=gdHOqDbuqxhTjVDtRW1DvkRJLdDofCrOq51GTctzLns,242
258
258
  arpakitlib/ar_yookassa_api_client_util.py,sha256=VozuZeCJjmLd1zj2BdC9WfiAQ3XYOrIMsdpNK-AUlm0,5347
259
259
  arpakitlib/ar_zabbix_api_client_util.py,sha256=Q-VR4MvoZ9aHwZeYZr9G3LwN-ANx1T5KFmF6pvPM-9M,6402
260
- arpakitlib-1.8.9.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
261
- arpakitlib-1.8.9.dist-info/METADATA,sha256=exyUm21smtm7DCbGrEqR0UxeZDNczJSw7Xb_-nB8XDI,3316
262
- arpakitlib-1.8.9.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
263
- arpakitlib-1.8.9.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
264
- arpakitlib-1.8.9.dist-info/RECORD,,
260
+ arpakitlib-1.8.10.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
261
+ arpakitlib-1.8.10.dist-info/METADATA,sha256=Uruudz0SOQJJOLfVA8K_hRAMXy1NFNGb5H7COxaIKDo,3317
262
+ arpakitlib-1.8.10.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
263
+ arpakitlib-1.8.10.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
264
+ arpakitlib-1.8.10.dist-info/RECORD,,