documente_shared 0.1.179__tar.gz → 0.1.181__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 (124) hide show
  1. {documente_shared-0.1.179 → documente_shared-0.1.181}/PKG-INFO +1 -1
  2. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/infrastructure/documente_client.py +18 -7
  3. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/infrastructure/repositories/http_processing_case.py +21 -15
  4. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/infrastructure/repositories/http_processing_case_item.py +25 -20
  5. {documente_shared-0.1.179 → documente_shared-0.1.181}/pyproject.toml +1 -1
  6. {documente_shared-0.1.179 → documente_shared-0.1.181}/uv.lock +1 -1
  7. {documente_shared-0.1.179 → documente_shared-0.1.181}/.github/workflows/publish.yml +0 -0
  8. {documente_shared-0.1.179 → documente_shared-0.1.181}/.gitignore +0 -0
  9. {documente_shared-0.1.179 → documente_shared-0.1.181}/.vscode/settings.json +0 -0
  10. {documente_shared-0.1.179 → documente_shared-0.1.181}/Dockerfile +0 -0
  11. {documente_shared-0.1.179 → documente_shared-0.1.181}/Makefile +0 -0
  12. {documente_shared-0.1.179 → documente_shared-0.1.181}/README.md +0 -0
  13. {documente_shared-0.1.179 → documente_shared-0.1.181}/__init__.py +0 -0
  14. {documente_shared-0.1.179 → documente_shared-0.1.181}/cases.py +0 -0
  15. {documente_shared-0.1.179 → documente_shared-0.1.181}/docker-compose.yml +0 -0
  16. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/__init__.py +0 -0
  17. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/application/__init__.py +0 -0
  18. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/application/dates.py +0 -0
  19. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/application/digest.py +0 -0
  20. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/application/exceptions.py +0 -0
  21. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/application/files.py +0 -0
  22. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/application/json.py +0 -0
  23. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/application/logging.py +0 -0
  24. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/application/numbers.py +0 -0
  25. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/application/payloads.py +0 -0
  26. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/application/query_params.py +0 -0
  27. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/application/retry_utils.py +0 -0
  28. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/application/time_utils.py +0 -0
  29. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/application/timezone.py +0 -0
  30. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/__init__.py +0 -0
  31. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/base_enum.py +0 -0
  32. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/constants.py +0 -0
  33. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/entities/__init__.py +0 -0
  34. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/entities/document.py +0 -0
  35. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/entities/document_metadata.py +0 -0
  36. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/entities/document_type.py +0 -0
  37. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/entities/in_memory_document.py +0 -0
  38. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/entities/processing_case.py +0 -0
  39. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/entities/processing_case_filters.py +0 -0
  40. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/entities/processing_case_item.py +0 -0
  41. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/entities/processing_case_item_filters.py +0 -0
  42. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/entities/processing_documents.py +0 -0
  43. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/entities/processing_event.py +0 -0
  44. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/entities/processing_record.py +0 -0
  45. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/entities/scaling.py +0 -0
  46. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/entities/workspace.py +0 -0
  47. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/entities/workspace_document.py +0 -0
  48. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/entities/workspace_document_page.py +0 -0
  49. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/enums/__init__.py +0 -0
  50. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/enums/circular_oficio.py +0 -0
  51. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/enums/common.py +0 -0
  52. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/enums/document.py +0 -0
  53. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/enums/document_type_record.py +0 -0
  54. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/enums/processing_case.py +0 -0
  55. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/enums/processing_case_validator.py +0 -0
  56. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/enums/workspace.py +0 -0
  57. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/exceptions.py +0 -0
  58. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/filters/__init__.py +0 -0
  59. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/filters/document_type.py +0 -0
  60. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/filters/workspace.py +0 -0
  61. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/filters/workspace_document.py +0 -0
  62. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/filters/workspace_document_page.py +0 -0
  63. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/helpers/__init__.py +0 -0
  64. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/helpers/dicts.py +0 -0
  65. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/helpers/encoding.py +0 -0
  66. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/helpers/lists.py +0 -0
  67. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/helpers/values.py +0 -0
  68. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/interfaces/__init__.py +0 -0
  69. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/interfaces/queue.py +0 -0
  70. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/interfaces/scaling.py +0 -0
  71. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/pagination/__init__.py +0 -0
  72. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/pagination/entities.py +0 -0
  73. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/pagination/response.py +0 -0
  74. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/repositories/__init__.py +0 -0
  75. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/repositories/document.py +0 -0
  76. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/repositories/document_type.py +0 -0
  77. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/repositories/processing_case.py +0 -0
  78. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/repositories/processing_case_item.py +0 -0
  79. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/repositories/processing_record.py +0 -0
  80. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/repositories/workspace.py +0 -0
  81. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/repositories/workspace_document.py +0 -0
  82. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/domain/repositories/workspace_document_page.py +0 -0
  83. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/infrastructure/__init__.py +0 -0
  84. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/infrastructure/batch_queue.py +0 -0
  85. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/infrastructure/dynamo_table.py +0 -0
  86. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/infrastructure/lambdas.py +0 -0
  87. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/infrastructure/repositories/__init__.py +0 -0
  88. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/infrastructure/repositories/dynamo_document.py +0 -0
  89. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/infrastructure/repositories/dynamo_processing_case.py +0 -0
  90. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/infrastructure/repositories/dynamo_processing_case_item.py +0 -0
  91. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/infrastructure/repositories/http_document.py +0 -0
  92. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/infrastructure/repositories/http_document_type.py +0 -0
  93. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/infrastructure/repositories/http_processing_record.py +0 -0
  94. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/infrastructure/repositories/http_workspace.py +0 -0
  95. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/infrastructure/repositories/http_workspace_document.py +0 -0
  96. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/infrastructure/repositories/http_workspace_document_page.py +0 -0
  97. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/infrastructure/repositories/mem_document.py +0 -0
  98. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/infrastructure/repositories/mem_processing_case.py +0 -0
  99. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/infrastructure/repositories/mem_processing_case_item.py +0 -0
  100. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/infrastructure/repositories/mem_processing_record.py +0 -0
  101. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/infrastructure/s3_bucket.py +0 -0
  102. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/infrastructure/services/__init__.py +0 -0
  103. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/infrastructure/services/http_scaling.py +0 -0
  104. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/infrastructure/sqs_queue.py +0 -0
  105. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/presentation/__init__.py +0 -0
  106. {documente_shared-0.1.179 → documente_shared-0.1.181}/documente_shared/presentation/presenters.py +0 -0
  107. {documente_shared-0.1.179 → documente_shared-0.1.181}/publish.sh +0 -0
  108. {documente_shared-0.1.179 → documente_shared-0.1.181}/tests/__init__.py +0 -0
  109. {documente_shared-0.1.179 → documente_shared-0.1.181}/tests/documente_shared/__init__.py +0 -0
  110. {documente_shared-0.1.179 → documente_shared-0.1.181}/tests/documente_shared/application/__init__.py +0 -0
  111. {documente_shared-0.1.179 → documente_shared-0.1.181}/tests/documente_shared/application/test_files.py +0 -0
  112. {documente_shared-0.1.179 → documente_shared-0.1.181}/tests/documente_shared/application/test_payloads.py +0 -0
  113. {documente_shared-0.1.179 → documente_shared-0.1.181}/tests/documente_shared/conftest.py +0 -0
  114. {documente_shared-0.1.179 → documente_shared-0.1.181}/tests/documente_shared/domain/__init__.py +0 -0
  115. {documente_shared-0.1.179 → documente_shared-0.1.181}/tests/documente_shared/domain/entities/__init__.py +0 -0
  116. {documente_shared-0.1.179 → documente_shared-0.1.181}/tests/documente_shared/domain/entities/test_in_memory_document.py +0 -0
  117. {documente_shared-0.1.179 → documente_shared-0.1.181}/tests/documente_shared/domain/entities/test_processing_case.py +0 -0
  118. {documente_shared-0.1.179 → documente_shared-0.1.181}/tests/documente_shared/domain/entities/test_processing_case_item.py +0 -0
  119. {documente_shared-0.1.179 → documente_shared-0.1.181}/tests/documente_shared/domain/entities/test_processing_record.py +0 -0
  120. {documente_shared-0.1.179 → documente_shared-0.1.181}/tests/documente_shared/domain/enums/test_processing_case_validator.py +0 -0
  121. {documente_shared-0.1.179 → documente_shared-0.1.181}/tests/documente_shared/infrastructure/__init__.py +0 -0
  122. {documente_shared-0.1.179 → documente_shared-0.1.181}/tests/documente_shared/infrastructure/repositories/__init__.py +0 -0
  123. {documente_shared-0.1.179 → documente_shared-0.1.181}/tests/documente_shared/infrastructure/repositories/test_http_processing_record.py +0 -0
  124. {documente_shared-0.1.179 → documente_shared-0.1.181}/tests/documents.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: documente_shared
3
- Version: 0.1.179
3
+ Version: 0.1.181
4
4
  Summary: Shared utilities for LlamitAI projects
5
5
  Author-email: Tech <tech@llamitai.com>
6
6
  License: MIT
@@ -1,7 +1,7 @@
1
- from typing import Callable, Optional
2
-
3
- from requests import Response, Session
1
+ from contextlib import contextmanager
4
2
  from dataclasses import dataclass
3
+ from requests import Response, Session
4
+ from typing import Callable, Optional
5
5
 
6
6
  from documente_shared.application.payloads import camel_to_snake
7
7
 
@@ -14,9 +14,12 @@ class DocumenteClientMixin(object):
14
14
  session: Optional[Session] = None
15
15
 
16
16
  def __post_init__(self):
17
- if self.session is None:
18
- self.session = Session()
19
- self.session.headers.update(self.get_common_headers())
17
+ self.session = self._get_session()
18
+
19
+ def _get_session(self) -> Session:
20
+ session = self.session or Session()
21
+ session.headers.update(self.get_common_headers())
22
+ return session
20
23
 
21
24
  def get_common_headers(self) -> dict:
22
25
  common_headers = {
@@ -27,6 +30,14 @@ class DocumenteClientMixin(object):
27
30
  common_headers.update({"X-Tenant": self.tenant})
28
31
  return common_headers
29
32
 
33
+ @contextmanager
34
+ def transactional_session(self):
35
+ session = self._get_session()
36
+ try:
37
+ yield session
38
+ finally:
39
+ session.close()
40
+
30
41
  @staticmethod
31
42
  def _is_success(response: Response) -> bool:
32
43
  return response.status_code in [200, 201]
@@ -41,4 +52,4 @@ class DocumenteClientMixin(object):
41
52
  return [
42
53
  builder(camel_to_snake(item))
43
54
  for item in response.json().get('data', [])
44
- ]
55
+ ]
@@ -30,10 +30,11 @@ class HttpProcessingCaseRepository(
30
30
  params = {
31
31
  "view_format": str(view_format),
32
32
  }
33
- response = self.session.get(
34
- url=f"{self.api_url}/v1/processing-cases/{uuid}/",
35
- params=params,
36
- )
33
+ with self.transactional_session() as session:
34
+ response = session.get(
35
+ url=f"{self.api_url}/v1/processing-cases/{uuid}/",
36
+ params=params,
37
+ )
37
38
  if response.status_code not in [200, 201]:
38
39
  return None
39
40
  return self._build_processing_case(response)
@@ -49,11 +50,15 @@ class HttpProcessingCaseRepository(
49
50
  "persist_items": parse_bool_to_str(persist_items),
50
51
  "view_format": str(view_format),
51
52
  }
52
- response = self.session.put(
53
- url=f"{self.api_url}/v1/processing-cases/{instance.uuid}/",
54
- params=params,
55
- json=instance.to_dict,
56
- )
53
+ with self.transactional_session() as session:
54
+ response = session.put(
55
+ url=f"{self.api_url}/v1/processing-cases/{instance.uuid}/",
56
+ params=params,
57
+ json=(
58
+ instance.to_dict
59
+ if persist_items else instance.to_queue_dict
60
+ ),
61
+ )
57
62
  if response.status_code not in [200, 201]:
58
63
  raise Exception(f'Error persisting processing case: {response.text}')
59
64
  return self._build_processing_case(response)
@@ -62,12 +67,13 @@ class HttpProcessingCaseRepository(
62
67
  self.session.delete(f"{self.api_url}/v1/processing-cases/{instance.uuid}/")
63
68
 
64
69
  def filter(self, filters: ProcessingCaseFilters) -> List[ProcessingCase]:
65
- response = self.session.get(
66
- url=f"{self.api_url}/v1/processing-cases/",
67
- headers={
68
- "X-Tenant": filters.tenant_slug,
69
- }
70
- )
70
+ with self.transactional_session() as session:
71
+ response = session.get(
72
+ url=f"{self.api_url}/v1/processing-cases/",
73
+ headers={
74
+ "X-Tenant": filters.tenant_slug,
75
+ }
76
+ )
71
77
  if response.status_code not in [200, 201]:
72
78
  return []
73
79
  raw_response = response.json()
@@ -26,9 +26,10 @@ class HttpProcessingCaseItemRepository(
26
26
  read_bytes: bool = False,
27
27
  view_format: DocumentViewFormat = DocumentViewFormat.PUBLIC_URL,
28
28
  ) -> Optional[ProcessingCaseItem]:
29
- response = self.session.get(
30
- url=f"{self.api_url}/v1/processing-case-items/{uuid}/?read_bytes={parse_bool_to_str(read_bytes)}",
31
- )
29
+ with self.transactional_session() as session:
30
+ response = session.get(
31
+ url=f"{self.api_url}/v1/processing-case-items/{uuid}/?read_bytes={parse_bool_to_str(read_bytes)}",
32
+ )
32
33
  if response.status_code not in [200, 201]:
33
34
  return None
34
35
  return self._build_processing_case_item(response)
@@ -43,10 +44,11 @@ class HttpProcessingCaseItemRepository(
43
44
  "read_bytes": parse_bool_to_str(read_bytes),
44
45
  "view_format": str(view_format),
45
46
  }
46
- response = self.session.get(
47
- url=f"{self.api_url}/v1/processing-case-items/{digest}/",
48
- params=params,
49
- )
47
+ with self.transactional_session() as session:
48
+ response = session.get(
49
+ url=f"{self.api_url}/v1/processing-case-items/{digest}/",
50
+ params=params,
51
+ )
50
52
  if response.status_code not in [200, 201]:
51
53
  return None
52
54
  return self._build_processing_case_item(response)
@@ -63,14 +65,15 @@ class HttpProcessingCaseItemRepository(
63
65
  "read_bytes": parse_bool_to_str(read_bytes),
64
66
  "view_format": str(view_format),
65
67
  }
66
- response: Response = self.session.put(
67
- url=f"{self.api_url}/v1/processing-case-items/{instance.uuid}/",
68
- params=params,
69
- json=(
70
- instance.to_persist_dict
71
- if persist_bytes else instance.to_queue_dict
72
- ),
73
- )
68
+ with self.transactional_session() as session:
69
+ response: Response = session.put(
70
+ url=f"{self.api_url}/v1/processing-case-items/{instance.uuid}/",
71
+ params=params,
72
+ json=(
73
+ instance.to_persist_dict
74
+ if persist_bytes else instance.to_queue_dict
75
+ ),
76
+ )
74
77
  if response.status_code not in [200, 201]:
75
78
  logger.error("[shared.processing_case_item.persist_error]", response=response.text)
76
79
  return instance
@@ -87,10 +90,11 @@ class HttpProcessingCaseItemRepository(
87
90
  params = {
88
91
  "view_format": str(view_format),
89
92
  }
90
- response = self.session.get(
91
- url=f"{self.api_url}/v1/processing-case-items/",
92
- params=params,
93
- )
93
+ with self.transactional_session() as session:
94
+ response = session.get(
95
+ url=f"{self.api_url}/v1/processing-case-items/",
96
+ params=params,
97
+ )
94
98
  if response.status_code not in [200, 201]:
95
99
  return []
96
100
  raw_response = response.json()
@@ -104,7 +108,8 @@ class HttpProcessingCaseItemRepository(
104
108
  tenant_slug: str,
105
109
  filters: ProcessingCaseItemFilters,
106
110
  ) -> List[ProcessingCaseItem]:
107
- response = self.session.get(f"{self.api_url}/v1/processing-case-items/")
111
+ with self.transactional_session() as session:
112
+ response = session.get(f"{self.api_url}/v1/processing-case-items/")
108
113
  if response.status_code not in [200, 201]:
109
114
  return []
110
115
  raw_response = response.json()
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "documente_shared"
3
- version = "0.1.179"
3
+ version = "0.1.181"
4
4
  description = "Shared utilities for LlamitAI projects"
5
5
  authors = [{ name = "Tech", email = "tech@llamitai.com" }]
6
6
  license = { text = "MIT" }
@@ -138,7 +138,7 @@ wheels = [
138
138
 
139
139
  [[package]]
140
140
  name = "documente-shared"
141
- version = "0.1.179"
141
+ version = "0.1.181"
142
142
  source = { editable = "." }
143
143
  dependencies = [
144
144
  { name = "boto3" },