documente_shared 0.1.27__py3-none-any.whl → 0.1.29__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.

Potentially problematic release.


This version of documente_shared might be problematic. Click here for more details.

File without changes
@@ -4,6 +4,7 @@ from decimal import Decimal
4
4
  from typing import Optional, List
5
5
 
6
6
  from documente_shared.application.time_utils import get_datetime_from_data
7
+ from documente_shared.domain.entities.document_process_metadata import DocumentProcessMetadata
7
8
  from documente_shared.domain.enums import (
8
9
  DocumentProcessStatus,
9
10
  DocumentProcessSubCategory,
@@ -19,7 +20,6 @@ def remove_slash_from_path(path: str) -> str:
19
20
  class DocumentProcess(object):
20
21
  digest: str
21
22
  status: DocumentProcessStatus
22
- metadata: Optional[dict] = None
23
23
  file_path: Optional[str] = None
24
24
  file_bytes: Optional[bytes] = None
25
25
  category: Optional[DocumentProcessCategory] = None
@@ -34,9 +34,10 @@ class DocumentProcess(object):
34
34
  started_at: Optional[datetime] = None
35
35
  failed_at: Optional[datetime] = None
36
36
  completed_at: Optional[datetime] = None
37
+ metadata_items: Optional[List[DocumentProcessMetadata]] = None
37
38
 
38
39
  def __post_init__(self):
39
- self.metadata = self.metadata or {}
40
+ self.metadata_items = self.metadata_items or []
40
41
 
41
42
  @property
42
43
  def is_pending(self) -> bool:
@@ -111,7 +112,6 @@ class DocumentProcess(object):
111
112
  return {
112
113
  'digest': self.digest,
113
114
  'status': str(self.status),
114
- 'metadata': self.metadata,
115
115
  'file_path': self.file_path,
116
116
  'category': (
117
117
  str(self.category)
@@ -132,8 +132,15 @@ class DocumentProcess(object):
132
132
  'started_at': self.started_at.isoformat() if self.started_at else None,
133
133
  'failed_at': self.failed_at.isoformat() if self.failed_at else None,
134
134
  'completed_at': self.completed_at.isoformat() if self.completed_at else None,
135
+ 'metadata_items': [metadata.to_dict for metadata in self.metadata_items],
135
136
  }
136
137
 
138
+ @property
139
+ def to_simple_dict(self) -> dict:
140
+ simple_dict = self.to_dict.copy()
141
+ simple_dict.pop('metadata_items')
142
+ return simple_dict
143
+
137
144
  def overload(
138
145
  self,
139
146
  new_instance: 'DocumentProcess',
@@ -157,7 +164,6 @@ class DocumentProcess(object):
157
164
  return cls(
158
165
  digest=data.get('digest'),
159
166
  status=DocumentProcessStatus.from_value(data.get('status')),
160
- metadata=data.get('metadata', {}),
161
167
  file_path=data.get('file_path'),
162
168
  category=(
163
169
  DocumentProcessCategory.from_value(data.get('category'))
@@ -178,4 +184,9 @@ class DocumentProcess(object):
178
184
  started_at=get_datetime_from_data(input_datetime=data.get('started_at')),
179
185
  failed_at=get_datetime_from_data(input_datetime=data.get('failed_at')),
180
186
  completed_at=get_datetime_from_data(input_datetime=data.get('completed_at')),
181
- )
187
+ metadata_items=[
188
+ DocumentProcessMetadata.from_dict(metadata)
189
+ for metadata in data.get('metadata_items', [])
190
+ ],
191
+ )
192
+
@@ -0,0 +1,65 @@
1
+ from dataclasses import dataclass
2
+ from datetime import datetime
3
+ from typing import Optional
4
+
5
+
6
+ @dataclass
7
+ class DocumentProcessMetadata(object):
8
+ publication_date: Optional[datetime] = None
9
+ num_circular: Optional[str] = None
10
+ asfi_identifier: Optional[str] = None
11
+ contains_tables: Optional[bool] = None
12
+ text_content: Optional[str] = None
13
+ case_name: Optional[str] = None
14
+ starting_office: Optional[str] = None
15
+ output_json: Optional[dict] = None
16
+ processing_time: Optional[float] = None
17
+ llm_model: Optional[str] = None
18
+ num_pages: Optional[float] = None
19
+ num_tokens: Optional[float] = None
20
+ citcular_type: Optional[str] = None
21
+
22
+
23
+ @property
24
+ def to_dict(self):
25
+ return {
26
+ 'publication_date': (
27
+ self.publication_date.isoformat()
28
+ if self.publication_date
29
+ else None
30
+ ),
31
+ 'num_circular': self.num_circular,
32
+ 'asfi_identifier': self.asfi_identifier,
33
+ 'contains_tables': self.contains_tables,
34
+ 'text_content': self.text_content,
35
+ 'case_name': self.case_name,
36
+ 'starting_office': self.starting_office,
37
+ 'output_json': self.output_json,
38
+ 'processing_time': self.processing_time,
39
+ 'llm_model': self.llm_model,
40
+ 'num_pages': self.num_pages,
41
+ 'num_tokens': self.num_tokens,
42
+ 'citcular_type': self.citcular_type
43
+ }
44
+
45
+ @classmethod
46
+ def from_dict(cls, data: dict):
47
+ return cls(
48
+ publication_date=(
49
+ datetime.fromisoformat(data.get('publication_date'))
50
+ if data.get('publication_date')
51
+ else None
52
+ ),
53
+ num_circular=data.get('num_circular'),
54
+ asfi_identifier=data.get('asfi_identifier'),
55
+ contains_tables=data.get('contains_tables'),
56
+ text_content=data.get('text_content'),
57
+ case_name=data.get('case_name'),
58
+ starting_office=data.get('starting_office'),
59
+ output_json=data.get('output_json'),
60
+ processing_time=data.get('processing_time'),
61
+ llm_model=data.get('llm_model'),
62
+ num_pages=data.get('num_pages'),
63
+ num_tokens=data.get('num_tokens'),
64
+ citcular_type=data.get('citcular_type')
65
+ )
@@ -1,6 +1,6 @@
1
1
  from typing import Optional
2
2
 
3
- from documente_shared.domain.entities import DocumentProcess
3
+ from documente_shared.domain.entities.document_process import DocumentProcess
4
4
  from documente_shared.domain.repositories import DocumentProcessRepository
5
5
  from documente_shared.infrastructure.dynamo_table import DynamoDBTable
6
6
 
@@ -17,7 +17,7 @@ class DynamoDocumentProcessRepository(
17
17
  return None
18
18
 
19
19
  def persist(self, instance: DocumentProcess) -> DocumentProcess:
20
- self.put(instance.to_dict)
20
+ self.put(instance.to_simple_dict)
21
21
  return instance
22
22
 
23
23
  def remove(self, instance: DocumentProcess):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: documente_shared
3
- Version: 0.1.27
3
+ Version: 0.1.29
4
4
  Summary: Shared utilities for Documente AI projects
5
5
  License: MIT
6
6
  Author: Tech
@@ -4,14 +4,16 @@ documente_shared/application/digest.py,sha256=Um6E8WfFri2_lly4RFWydJyvSfPZGFcOX-
4
4
  documente_shared/application/time_utils.py,sha256=XDH27cKgoTFO8ad1JgrxKaeT7sZ1fduuJqLkvHUjy-Q,309
5
5
  documente_shared/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  documente_shared/domain/base_enum.py,sha256=DojAfn-zQdtjtImeHUpBzE6TBTm07XrbMOdW3h8RVd8,1449
7
- documente_shared/domain/entities.py,sha256=itAfic52aUFUZabcspSk8d5IJ3Eo4hLyRl8ZxsTtpZE,6430
7
+ documente_shared/domain/entities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
+ documente_shared/domain/entities/document_process.py,sha256=w70O4zYic_QWiVMPPRlQH_1WcM69q_PSIHwjYybK0f8,6901
9
+ documente_shared/domain/entities/document_process_metadata.py,sha256=rBHkDkoKwrxReKtXIScU1vrCO_6bg2LwWhrtXMcQ8TA,2351
8
10
  documente_shared/domain/enums.py,sha256=s3bFDkpplWvJWNpUwPOkC9a3OYUYsx8uTusN_FrzNQk,463
9
11
  documente_shared/domain/repositories.py,sha256=EekvB2BE4AnT5myEhU3DfwHfF9MkNJZRbqRVGFxCEWM,509
10
12
  documente_shared/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
- documente_shared/infrastructure/dynamo_repositories.py,sha256=WULK8_N7PjA397vXTZd6QB7_Kw6dEXHaVMcd9nEvSvs,760
13
+ documente_shared/infrastructure/dynamo_repositories.py,sha256=WVyubQO8pUwm_y6VYU2n3fN4eofBXLBRzY1oehotp80,784
12
14
  documente_shared/infrastructure/dynamo_table.py,sha256=Lod8vwUCGX65SNH_8hvlpG6rRUYb4jfZqoFHD1YloAA,2096
13
15
  documente_shared/infrastructure/s3_bucket.py,sha256=RwcEyYPUUXQ0fFR-Zr1KfkFGGpO6qAIfZ70CWHu1V8M,1923
14
16
  documente_shared/infrastructure/sqs_queue.py,sha256=PSiTAnjXvQ-W-9mzLpH2UjbQJTvYkMiaxNaMecF-cR4,1505
15
- documente_shared-0.1.27.dist-info/METADATA,sha256=sXO5zKOY9F9NhkSSUEKMu6RJj9wN2ytHB4EzOB5vtaA,640
16
- documente_shared-0.1.27.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
17
- documente_shared-0.1.27.dist-info/RECORD,,
17
+ documente_shared-0.1.29.dist-info/METADATA,sha256=tBvUSPcn9i7tVGnxQXl1Pqo-LAsVQlnzcNfF0TdBfy8,640
18
+ documente_shared-0.1.29.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
19
+ documente_shared-0.1.29.dist-info/RECORD,,