documente_shared 0.1.200__tar.gz → 0.1.201__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 (131) hide show
  1. {documente_shared-0.1.200 → documente_shared-0.1.201}/PKG-INFO +1 -1
  2. documente_shared-0.1.201/documente_shared/domain/entities/uif_registry.py +96 -0
  3. documente_shared-0.1.201/documente_shared/domain/helpers/values.py +62 -0
  4. documente_shared-0.1.201/documente_shared/domain/repositories/uif_registry.py +13 -0
  5. documente_shared-0.1.201/documente_shared/infrastructure/repositories/http_uif_registry.py +47 -0
  6. {documente_shared-0.1.200 → documente_shared-0.1.201}/pyproject.toml +1 -1
  7. {documente_shared-0.1.200 → documente_shared-0.1.201}/uv.lock +1 -1
  8. documente_shared-0.1.200/documente_shared/domain/helpers/values.py +0 -13
  9. {documente_shared-0.1.200 → documente_shared-0.1.201}/.claude/commands/commit.md +0 -0
  10. {documente_shared-0.1.200 → documente_shared-0.1.201}/.github/workflows/publish.yml +0 -0
  11. {documente_shared-0.1.200 → documente_shared-0.1.201}/.gitignore +0 -0
  12. {documente_shared-0.1.200 → documente_shared-0.1.201}/.vscode/settings.json +0 -0
  13. {documente_shared-0.1.200 → documente_shared-0.1.201}/Dockerfile +0 -0
  14. {documente_shared-0.1.200 → documente_shared-0.1.201}/Makefile +0 -0
  15. {documente_shared-0.1.200 → documente_shared-0.1.201}/README.md +0 -0
  16. {documente_shared-0.1.200 → documente_shared-0.1.201}/__init__.py +0 -0
  17. {documente_shared-0.1.200 → documente_shared-0.1.201}/cases.py +0 -0
  18. {documente_shared-0.1.200 → documente_shared-0.1.201}/docker-compose.yml +0 -0
  19. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/__init__.py +0 -0
  20. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/application/__init__.py +0 -0
  21. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/application/dates.py +0 -0
  22. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/application/digest.py +0 -0
  23. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/application/exceptions.py +0 -0
  24. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/application/files.py +0 -0
  25. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/application/json.py +0 -0
  26. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/application/logging.py +0 -0
  27. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/application/numbers.py +0 -0
  28. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/application/payloads.py +0 -0
  29. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/application/query_params.py +0 -0
  30. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/application/retry_utils.py +0 -0
  31. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/application/time_utils.py +0 -0
  32. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/application/timezone.py +0 -0
  33. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/__init__.py +0 -0
  34. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/base_enum.py +0 -0
  35. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/constants.py +0 -0
  36. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/entities/__init__.py +0 -0
  37. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/entities/document.py +0 -0
  38. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/entities/document_metadata.py +0 -0
  39. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/entities/document_type.py +0 -0
  40. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/entities/in_memory_document.py +0 -0
  41. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/entities/layout.py +0 -0
  42. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/entities/processing_case.py +0 -0
  43. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/entities/processing_case_filters.py +0 -0
  44. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/entities/processing_case_item.py +0 -0
  45. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/entities/processing_case_item_filters.py +0 -0
  46. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/entities/processing_documents.py +0 -0
  47. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/entities/processing_event.py +0 -0
  48. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/entities/processing_record.py +0 -0
  49. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/entities/scaling.py +0 -0
  50. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/entities/workspace.py +0 -0
  51. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/entities/workspace_document.py +0 -0
  52. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/entities/workspace_document_page.py +0 -0
  53. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/enums/__init__.py +0 -0
  54. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/enums/circular_oficio.py +0 -0
  55. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/enums/common.py +0 -0
  56. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/enums/document.py +0 -0
  57. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/enums/document_type_record.py +0 -0
  58. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/enums/processing_case.py +0 -0
  59. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/enums/processing_case_validator.py +0 -0
  60. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/enums/vnext.py +0 -0
  61. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/enums/workspace.py +0 -0
  62. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/exceptions.py +0 -0
  63. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/filters/__init__.py +0 -0
  64. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/filters/document_type.py +0 -0
  65. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/filters/workspace.py +0 -0
  66. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/filters/workspace_document.py +0 -0
  67. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/filters/workspace_document_page.py +0 -0
  68. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/helpers/__init__.py +0 -0
  69. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/helpers/dicts.py +0 -0
  70. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/helpers/encoding.py +0 -0
  71. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/helpers/lists.py +0 -0
  72. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/interfaces/__init__.py +0 -0
  73. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/interfaces/queue.py +0 -0
  74. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/interfaces/scaling.py +0 -0
  75. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/pagination/__init__.py +0 -0
  76. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/pagination/entities.py +0 -0
  77. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/pagination/response.py +0 -0
  78. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/repositories/__init__.py +0 -0
  79. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/repositories/document.py +0 -0
  80. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/repositories/document_type.py +0 -0
  81. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/repositories/processing_case.py +0 -0
  82. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/repositories/processing_case_item.py +0 -0
  83. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/repositories/processing_record.py +0 -0
  84. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/repositories/workspace.py +0 -0
  85. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/repositories/workspace_document.py +0 -0
  86. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/domain/repositories/workspace_document_page.py +0 -0
  87. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/infrastructure/__init__.py +0 -0
  88. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/infrastructure/batch_queue.py +0 -0
  89. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/infrastructure/documente_client.py +0 -0
  90. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/infrastructure/dynamo_table.py +0 -0
  91. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/infrastructure/lambdas.py +0 -0
  92. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/infrastructure/repositories/__init__.py +0 -0
  93. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/infrastructure/repositories/dynamo_document.py +0 -0
  94. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/infrastructure/repositories/dynamo_processing_case.py +0 -0
  95. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/infrastructure/repositories/dynamo_processing_case_item.py +0 -0
  96. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/infrastructure/repositories/http_document.py +0 -0
  97. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/infrastructure/repositories/http_document_type.py +0 -0
  98. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/infrastructure/repositories/http_processing_case.py +0 -0
  99. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/infrastructure/repositories/http_processing_case_item.py +0 -0
  100. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/infrastructure/repositories/http_processing_record.py +0 -0
  101. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/infrastructure/repositories/http_workspace.py +0 -0
  102. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/infrastructure/repositories/http_workspace_document.py +0 -0
  103. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/infrastructure/repositories/http_workspace_document_page.py +0 -0
  104. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/infrastructure/repositories/mem_document.py +0 -0
  105. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/infrastructure/repositories/mem_processing_case.py +0 -0
  106. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/infrastructure/repositories/mem_processing_case_item.py +0 -0
  107. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/infrastructure/repositories/mem_processing_record.py +0 -0
  108. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/infrastructure/s3_bucket.py +0 -0
  109. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/infrastructure/services/__init__.py +0 -0
  110. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/infrastructure/services/http_scaling.py +0 -0
  111. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/infrastructure/sqs_queue.py +0 -0
  112. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/presentation/__init__.py +0 -0
  113. {documente_shared-0.1.200 → documente_shared-0.1.201}/documente_shared/presentation/presenters.py +0 -0
  114. {documente_shared-0.1.200 → documente_shared-0.1.201}/publish.sh +0 -0
  115. {documente_shared-0.1.200 → documente_shared-0.1.201}/tests/__init__.py +0 -0
  116. {documente_shared-0.1.200 → documente_shared-0.1.201}/tests/documente_shared/__init__.py +0 -0
  117. {documente_shared-0.1.200 → documente_shared-0.1.201}/tests/documente_shared/application/__init__.py +0 -0
  118. {documente_shared-0.1.200 → documente_shared-0.1.201}/tests/documente_shared/application/test_files.py +0 -0
  119. {documente_shared-0.1.200 → documente_shared-0.1.201}/tests/documente_shared/application/test_payloads.py +0 -0
  120. {documente_shared-0.1.200 → documente_shared-0.1.201}/tests/documente_shared/conftest.py +0 -0
  121. {documente_shared-0.1.200 → documente_shared-0.1.201}/tests/documente_shared/domain/__init__.py +0 -0
  122. {documente_shared-0.1.200 → documente_shared-0.1.201}/tests/documente_shared/domain/entities/__init__.py +0 -0
  123. {documente_shared-0.1.200 → documente_shared-0.1.201}/tests/documente_shared/domain/entities/test_in_memory_document.py +0 -0
  124. {documente_shared-0.1.200 → documente_shared-0.1.201}/tests/documente_shared/domain/entities/test_processing_case.py +0 -0
  125. {documente_shared-0.1.200 → documente_shared-0.1.201}/tests/documente_shared/domain/entities/test_processing_case_item.py +0 -0
  126. {documente_shared-0.1.200 → documente_shared-0.1.201}/tests/documente_shared/domain/entities/test_processing_record.py +0 -0
  127. {documente_shared-0.1.200 → documente_shared-0.1.201}/tests/documente_shared/domain/enums/test_processing_case_validator.py +0 -0
  128. {documente_shared-0.1.200 → documente_shared-0.1.201}/tests/documente_shared/infrastructure/__init__.py +0 -0
  129. {documente_shared-0.1.200 → documente_shared-0.1.201}/tests/documente_shared/infrastructure/repositories/__init__.py +0 -0
  130. {documente_shared-0.1.200 → documente_shared-0.1.201}/tests/documente_shared/infrastructure/repositories/test_http_processing_record.py +0 -0
  131. {documente_shared-0.1.200 → documente_shared-0.1.201}/tests/documents.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: documente_shared
3
- Version: 0.1.200
3
+ Version: 0.1.201
4
4
  Summary: Shared utilities for LlamitAI projects
5
5
  Author-email: Tech <tech@llamitai.com>
6
6
  License: MIT
@@ -0,0 +1,96 @@
1
+ from dataclasses import dataclass, field
2
+ from datetime import date, datetime
3
+ from decimal import Decimal
4
+ from uuid import UUID, uuid4
5
+
6
+ from documente_shared.application.payloads import camel_to_snake, snake_to_camel
7
+ from documente_shared.domain.helpers.values import (
8
+ optional_date,
9
+ optional_datetime,
10
+ optional_decimal,
11
+ optional_text,
12
+ optional_uuid,
13
+ )
14
+
15
+
16
+ @dataclass
17
+ class UIFRegistry:
18
+ uuid: UUID = field(default_factory=uuid4)
19
+ paternal_last_name: str | None = None
20
+ maternal_last_name: str | None = None
21
+ first_name: str | None = None
22
+ identity_document_number: str | None = None
23
+ identity_document_extension: str | None = None
24
+ court_name: str | None = None
25
+ process_type: str | None = None
26
+ circular_id: str | None = None
27
+ circular_issue_date: date | None = None
28
+ involved_amount: Decimal | None = None
29
+ relation_type: str | None = None
30
+ due_diligence: bool | None = None
31
+ illicit_gains_legitimation: bool | None = None
32
+ document_digest: str | None = None
33
+ created_at: datetime | None = None
34
+
35
+ @property
36
+ def full_name(self) -> str:
37
+ parts = [self.paternal_last_name, self.maternal_last_name, self.first_name]
38
+ return " ".join(part for part in parts if part)
39
+
40
+ @property
41
+ def is_identifiable(self) -> bool:
42
+ return bool(self.full_name)
43
+
44
+ @property
45
+ def to_dict(self) -> dict:
46
+ return {
47
+ "uuid": str(self.uuid),
48
+ "document_digest": self.document_digest,
49
+ "paternal_last_name": self.paternal_last_name,
50
+ "maternal_last_name": self.maternal_last_name,
51
+ "first_name": self.first_name,
52
+ "full_name": self.full_name,
53
+ "identity_document_number": self.identity_document_number,
54
+ "identity_document_extension": self.identity_document_extension,
55
+ "court_name": self.court_name,
56
+ "process_type": self.process_type,
57
+ "circular_id": self.circular_id,
58
+ "circular_issue_date": (
59
+ self.circular_issue_date.isoformat() if self.circular_issue_date else None
60
+ ),
61
+ "involved_amount": (
62
+ str(self.involved_amount) if self.involved_amount is not None else None
63
+ ),
64
+ "relation_type": self.relation_type,
65
+ "due_diligence": self.due_diligence,
66
+ "illicit_gains_legitimation": self.illicit_gains_legitimation,
67
+ "created_at": self.created_at.isoformat() if self.created_at else None,
68
+ }
69
+
70
+ @property
71
+ def to_payload(self) -> dict:
72
+ return snake_to_camel(self.to_dict)
73
+
74
+ @classmethod
75
+ def from_dict(cls, data: dict) -> "UIFRegistry":
76
+ normalized = camel_to_snake(data)
77
+ return cls(
78
+ uuid=optional_uuid(normalized.get("uuid")) or uuid4(),
79
+ document_digest=optional_text(normalized.get("document_digest")),
80
+ paternal_last_name=optional_text(normalized.get("paternal_last_name")),
81
+ maternal_last_name=optional_text(normalized.get("maternal_last_name")),
82
+ first_name=optional_text(normalized.get("first_name")),
83
+ identity_document_number=optional_text(normalized.get("identity_document_number")),
84
+ identity_document_extension=optional_text(
85
+ normalized.get("identity_document_extension")
86
+ ),
87
+ court_name=optional_text(normalized.get("court_name")),
88
+ process_type=optional_text(normalized.get("process_type")),
89
+ circular_id=optional_text(normalized.get("circular_id")),
90
+ circular_issue_date=optional_date(normalized.get("circular_issue_date")),
91
+ involved_amount=optional_decimal(normalized.get("involved_amount")),
92
+ relation_type=optional_text(normalized.get("relation_type")),
93
+ due_diligence=normalized.get("due_diligence"),
94
+ illicit_gains_legitimation=normalized.get("illicit_gains_legitimation"),
95
+ created_at=optional_datetime(normalized.get("created_at")),
96
+ )
@@ -0,0 +1,62 @@
1
+ from datetime import date, datetime
2
+ from decimal import Decimal, InvalidOperation
3
+ from uuid import UUID
4
+
5
+
6
+ def optional_str(input_value: object | None = None) -> str | None:
7
+ if input_value is None:
8
+ return None
9
+ return str(input_value)
10
+
11
+
12
+ def optional_text(input_value: object | None = None) -> str | None:
13
+ if input_value is None:
14
+ return None
15
+ text = str(input_value).strip()
16
+ return text or None
17
+
18
+
19
+ def optional_datetime_str(input_datetime: datetime | None = None) -> str | None:
20
+ if input_datetime is None:
21
+ return None
22
+ return input_datetime.isoformat()
23
+
24
+
25
+ def optional_uuid(input_value: object | None = None) -> UUID | None:
26
+ if input_value is None or isinstance(input_value, UUID):
27
+ return input_value
28
+ try:
29
+ return UUID(str(input_value))
30
+ except ValueError:
31
+ return None
32
+
33
+
34
+ def optional_date(input_value: object | None = None) -> date | None:
35
+ if input_value is None:
36
+ return None
37
+ if isinstance(input_value, datetime):
38
+ return input_value.date()
39
+ if isinstance(input_value, date):
40
+ return input_value
41
+ try:
42
+ return date.fromisoformat(str(input_value))
43
+ except ValueError:
44
+ return None
45
+
46
+
47
+ def optional_datetime(input_value: object | None = None) -> datetime | None:
48
+ if input_value is None or isinstance(input_value, datetime):
49
+ return input_value
50
+ try:
51
+ return datetime.fromisoformat(str(input_value))
52
+ except ValueError:
53
+ return None
54
+
55
+
56
+ def optional_decimal(input_value: object | None = None) -> Decimal | None:
57
+ if input_value is None or isinstance(input_value, Decimal):
58
+ return input_value
59
+ try:
60
+ return Decimal(str(input_value))
61
+ except InvalidOperation:
62
+ return None
@@ -0,0 +1,13 @@
1
+ from abc import ABC, abstractmethod
2
+
3
+ from documente_shared.domain.entities.uif_registry import UIFRegistry
4
+
5
+
6
+ class UIFRegistryRepository(ABC):
7
+ @abstractmethod
8
+ def set_document_uif_registries(
9
+ self,
10
+ document_digest: str,
11
+ registries: list[UIFRegistry],
12
+ ) -> list[UIFRegistry]:
13
+ raise NotImplementedError
@@ -0,0 +1,47 @@
1
+ from dataclasses import dataclass
2
+ from typing import TYPE_CHECKING
3
+
4
+ import structlog
5
+
6
+ from documente_shared.domain.entities.uif_registry import UIFRegistry
7
+ from documente_shared.domain.repositories.uif_registry import UIFRegistryRepository
8
+ from documente_shared.infrastructure.documente_client import DocumenteClientMixin
9
+
10
+ if TYPE_CHECKING:
11
+ from requests import Response
12
+
13
+ logger = structlog.get_logger()
14
+
15
+
16
+ @dataclass
17
+ class HttpUIFRegistryRepository(
18
+ DocumenteClientMixin,
19
+ UIFRegistryRepository,
20
+ ):
21
+ def set_document_uif_registries(
22
+ self,
23
+ document_digest: str,
24
+ registries: list[UIFRegistry],
25
+ ) -> list[UIFRegistry]:
26
+ payload = {
27
+ "document_digest": document_digest,
28
+ "registries": [registry.to_payload for registry in registries],
29
+ }
30
+ logger.info(
31
+ "[shared.uif_registry.persisting]",
32
+ document_digest=document_digest,
33
+ registries=len(registries),
34
+ )
35
+ response: Response = self.session.post(
36
+ url=f"{self.api_url}/v1/documents/uif-registry/",
37
+ json=payload,
38
+ )
39
+ if not self._is_success(response):
40
+ logger.warning(
41
+ "[shared.uif_registry.persist_error]",
42
+ document_digest=document_digest,
43
+ status_code=response.status_code,
44
+ response=response.text,
45
+ )
46
+ return []
47
+ return self._parse_list(response, UIFRegistry.from_dict)
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "documente_shared"
3
- version = "0.1.200"
3
+ version = "0.1.201"
4
4
  description = "Shared utilities for LlamitAI projects"
5
5
  authors = [{ name = "Tech", email = "tech@llamitai.com" }]
6
6
  license = { text = "MIT" }
@@ -154,7 +154,7 @@ wheels = [
154
154
 
155
155
  [[package]]
156
156
  name = "documente-shared"
157
- version = "0.1.200"
157
+ version = "0.1.201"
158
158
  source = { editable = "." }
159
159
  dependencies = [
160
160
  { name = "boto3" },
@@ -1,13 +0,0 @@
1
- from datetime import datetime
2
-
3
-
4
- def optional_str(input_value: object | None = None) -> str | None:
5
- if input_value is None:
6
- return None
7
- return str(input_value)
8
-
9
-
10
- def optional_datetime_str(input_datetime: datetime | None = None) -> str | None:
11
- if input_datetime is None:
12
- return None
13
- return input_datetime.isoformat()