nlbone 0.7.8__py3-none-any.whl → 0.7.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.
@@ -53,7 +53,9 @@ class SqlAlchemyUnitOfWork(UnitOfWork):
53
53
  def collect_new_events(self) -> Iterator[DomainEvent]:
54
54
  for name, type_ in self.__annotations__.items():
55
55
  if isinstance(type_, type) and issubclass(type_, Repository):
56
- repo = getattr(self, name)
56
+ repo = getattr(self, name, None)
57
+ if not repo:
58
+ continue
57
59
  for entity in repo.seen:
58
60
  for event in entity.events:
59
61
  yield event
@@ -7,7 +7,7 @@ from nlbone.config.settings import get_settings
7
7
 
8
8
 
9
9
  class CreateTicketIn(BaseModel):
10
- assignee_id: str
10
+ assignee_id: str | None = None
11
11
  category_id: int
12
12
  channel: str
13
13
  direction: str
@@ -113,3 +113,6 @@ class BaseId(ValueObject):
113
113
  @classmethod
114
114
  def from_int(cls: type[ID], v: int) -> ID:
115
115
  return cls(v)
116
+
117
+ def __repr__(self):
118
+ return f"<{self.value}>"
@@ -74,6 +74,7 @@ class Outbox(Base):
74
74
  self.status = OutboxStatus.FAILED
75
75
  self.last_error = error
76
76
  self.next_attempt_at = now() + backoff
77
+ self.attempts += 1
77
78
 
78
79
  def mark_published(self):
79
80
  self.status = OutboxStatus.PUBLISHED
@@ -1,10 +1,18 @@
1
1
  from pydantic import BaseModel, ConfigDict, model_serializer
2
2
 
3
+ from nlbone.core.domain.base import BaseId
4
+
3
5
  EXCLUDE_NONE = "exclude_none"
4
6
 
5
7
 
6
8
  class BaseResponseModel(BaseModel):
7
- model_config = ConfigDict(from_attributes=True)
9
+ model_config = ConfigDict(
10
+ from_attributes=True,
11
+ arbitrary_types_allowed=True,
12
+ json_encoders={
13
+ BaseId: lambda v: str(v.value),
14
+ },
15
+ )
8
16
 
9
17
  @model_serializer(mode="wrap")
10
18
  def _auto_hide_none_fields(self, handler):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nlbone
3
- Version: 0.7.8
3
+ Version: 0.7.10
4
4
  Summary: Backbone package for interfaces and infrastructure in Python projects
5
5
  Author-email: Amir Hosein Kahkbazzadeh <a.khakbazzadeh@gmail.com>
6
6
  License: MIT
@@ -21,7 +21,7 @@ nlbone/adapters/db/postgres/query_builder.py,sha256=Qv_2oZ5OxZwtN3Ts-jaAX_8sLBzb
21
21
  nlbone/adapters/db/postgres/repository.py,sha256=n01TAzdKd-UbOhirE6KMosuvRdJG2l1cszwVHjTM-Ks,10345
22
22
  nlbone/adapters/db/postgres/schema.py,sha256=NlE7Rr8uXypsw4oWkdZhZwcIBHQEPIpoHLxcUo98i6s,1039
23
23
  nlbone/adapters/db/postgres/types.py,sha256=OXra45PL8Umrqj6Pul_8ZlYRGIWQE36jvBXxui_u6hs,600
24
- nlbone/adapters/db/postgres/uow.py,sha256=2vRp4RBkh9RVniEY6CMXNHt-XXK9W2CDNKR1upT5EJE,3788
24
+ nlbone/adapters/db/postgres/uow.py,sha256=I4RVeIbGEVhVGcuzhdEUJuX11RhEHTn0egrkCbcsz24,3852
25
25
  nlbone/adapters/db/redis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
26
  nlbone/adapters/db/redis/client.py,sha256=5SUnwP2-GrueSFimUbiqDvrQsumvIE2aeozk8l-vOfQ,466
27
27
  nlbone/adapters/http_clients/__init__.py,sha256=w-Yr9CLuXMU71N0Ada5HbvP1DB53wqeP6B-i5rALlTo,150
@@ -40,7 +40,7 @@ nlbone/adapters/percolation/__init__.py,sha256=0h1Bw7FzxgkDIHxeoyQXSfegrhP6VbpYV
40
40
  nlbone/adapters/percolation/connection.py,sha256=1iJISSwMEh4r_6nJI7mYf_v64Q0eeU1eSI0wLIfOK14,415
41
41
  nlbone/adapters/repositories/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
42
  nlbone/adapters/ticketing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
- nlbone/adapters/ticketing/client.py,sha256=V5_u7cxV67eAG4jj4vUD23VWGiMXIXSAU362pNS6hYU,1289
43
+ nlbone/adapters/ticketing/client.py,sha256=GAr0_4DVqVCDV7tT2gkxRyKIsvLwJRlT-xx8fsfOVJE,1303
44
44
  nlbone/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
45
  nlbone/config/logging.py,sha256=Ot6Ctf7EQZlW8YNB-uBdleqI6wixn5fH0Eo6QRgNkQk,4358
46
46
  nlbone/config/settings.py,sha256=o5kJBHuv-XKFOe_yQtkR0YrEbI2uZ89JpGjzDYhE7o4,4507
@@ -53,8 +53,8 @@ nlbone/core/application/registry.py,sha256=dTqV_4bkMsLJ60CesZuEel5xO36cD1qikiaCL
53
53
  nlbone/core/application/use_case.py,sha256=3GMQZ3CFK5cbLoBNBgohPft6GBq2j9_wr8iKRq_osQA,247
54
54
  nlbone/core/application/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
55
  nlbone/core/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
- nlbone/core/domain/base.py,sha256=9OCjYRBmDFnHpLdfkA3HuxalL0kJ00xU9HgpNHbeENY,2468
57
- nlbone/core/domain/models.py,sha256=VEIfzruBXcF5XrDrWEvh9q-Ba9-9x_JG20wZsBF5thc,3270
56
+ nlbone/core/domain/base.py,sha256=CZvnZQ5qcAufLnyttBAr1dAKeAkqLpkjuMzFUldkHQI,2525
57
+ nlbone/core/domain/models.py,sha256=zHVrCl_8ogmShrH0lRZQam0BpMJ7iIM-ojKNoGVzx2M,3297
58
58
  nlbone/core/ports/__init__.py,sha256=syJg3fAjQALD5Rjfm9wi9bQpkIvNTWjE9AURBmy587o,132
59
59
  nlbone/core/ports/auth.py,sha256=C-GmUqHNx4bAku6KbW_OTpPXCEfurBWWyDi9KxpTi9M,553
60
60
  nlbone/core/ports/cache.py,sha256=8pP_z4ta7PNNG8UiSrEF4xMZRm2wLPxISZvdPt7QnxQ,2351
@@ -88,7 +88,7 @@ nlbone/interfaces/api/pagination/__init__.py,sha256=pA1uC4rK6eqDI5IkLVxmgO2B6lEx
88
88
  nlbone/interfaces/api/pagination/offset_base.py,sha256=65UgQZ70IlWUbP9Usd--IxVYW_V0hQLoyXHVffnLFZ0,3940
89
89
  nlbone/interfaces/api/schema/__init__.py,sha256=LAqgynfupeqOQ6u0I5ucrcYnojRMZUg9yW8IjKSQTNI,119
90
90
  nlbone/interfaces/api/schema/adaptive_schema.py,sha256=bdWBNpP2NfOJ_in4btXn0lrZOK70x-OqfmZ-NpIJdoQ,3347
91
- nlbone/interfaces/api/schema/base_response_model.py,sha256=lkBs7k0IcQiSQdJ3KvqDQPr_zwqKNbwaQjcwAE_chnU,599
91
+ nlbone/interfaces/api/schema/base_response_model.py,sha256=IdAw01ScbqWcyKLwn0LLY5C8wPq2188BkHDUEJw-4lw,775
92
92
  nlbone/interfaces/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
93
93
  nlbone/interfaces/cli/crypto.py,sha256=lh2uUbSYKT6XxAt9uP1-VksopqAgdxiSKoKgXwXB0aE,692
94
94
  nlbone/interfaces/cli/init_db.py,sha256=Hk3aZ8w9KdfgQfDWaOnIgNEAegn2uNggkkSgDXQLgyc,1791
@@ -107,8 +107,8 @@ nlbone/utils/http.py,sha256=MPDEyaC16AKsL0YH6sWCPp8NC2TgzEHpWERYK5HcaYQ,1001
107
107
  nlbone/utils/normalize_mobile.py,sha256=sGH4tV9gX-6eVKozviNWJhm1DN1J28Nj-ERldCYkS_E,732
108
108
  nlbone/utils/redactor.py,sha256=-V4HrHmHwPi3Kez587Ek1uJlgK35qGSrwBOvcbw8Jas,1279
109
109
  nlbone/utils/time.py,sha256=DjjyQ9GLsfXoT6NK8RDW2rOlJg3e6sF04Jw6PBUrSvg,1268
110
- nlbone-0.7.8.dist-info/METADATA,sha256=pimC_2W3nKm1eBeeEMnZN_XhAdpKIFEeImvDEg7gajY,2294
111
- nlbone-0.7.8.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
112
- nlbone-0.7.8.dist-info/entry_points.txt,sha256=CpIL45t5nbhl1dGQPhfIIDfqqak3teK0SxPGBBr7YCk,59
113
- nlbone-0.7.8.dist-info/licenses/LICENSE,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
114
- nlbone-0.7.8.dist-info/RECORD,,
110
+ nlbone-0.7.10.dist-info/METADATA,sha256=PKHtP5UntSl8ErQ4WCmFNLVwwpHJxdJHvklfg0IZork,2295
111
+ nlbone-0.7.10.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
112
+ nlbone-0.7.10.dist-info/entry_points.txt,sha256=CpIL45t5nbhl1dGQPhfIIDfqqak3teK0SxPGBBr7YCk,59
113
+ nlbone-0.7.10.dist-info/licenses/LICENSE,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
114
+ nlbone-0.7.10.dist-info/RECORD,,