documente_shared 0.1.180__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.180 → documente_shared-0.1.181}/PKG-INFO +1 -1
  2. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/infrastructure/documente_client.py +18 -7
  3. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/infrastructure/repositories/http_processing_case.py +21 -18
  4. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/infrastructure/repositories/http_processing_case_item.py +25 -20
  5. {documente_shared-0.1.180 → documente_shared-0.1.181}/pyproject.toml +1 -1
  6. {documente_shared-0.1.180 → documente_shared-0.1.181}/uv.lock +1 -1
  7. {documente_shared-0.1.180 → documente_shared-0.1.181}/.github/workflows/publish.yml +0 -0
  8. {documente_shared-0.1.180 → documente_shared-0.1.181}/.gitignore +0 -0
  9. {documente_shared-0.1.180 → documente_shared-0.1.181}/.vscode/settings.json +0 -0
  10. {documente_shared-0.1.180 → documente_shared-0.1.181}/Dockerfile +0 -0
  11. {documente_shared-0.1.180 → documente_shared-0.1.181}/Makefile +0 -0
  12. {documente_shared-0.1.180 → documente_shared-0.1.181}/README.md +0 -0
  13. {documente_shared-0.1.180 → documente_shared-0.1.181}/__init__.py +0 -0
  14. {documente_shared-0.1.180 → documente_shared-0.1.181}/cases.py +0 -0
  15. {documente_shared-0.1.180 → documente_shared-0.1.181}/docker-compose.yml +0 -0
  16. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/__init__.py +0 -0
  17. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/application/__init__.py +0 -0
  18. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/application/dates.py +0 -0
  19. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/application/digest.py +0 -0
  20. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/application/exceptions.py +0 -0
  21. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/application/files.py +0 -0
  22. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/application/json.py +0 -0
  23. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/application/logging.py +0 -0
  24. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/application/numbers.py +0 -0
  25. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/application/payloads.py +0 -0
  26. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/application/query_params.py +0 -0
  27. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/application/retry_utils.py +0 -0
  28. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/application/time_utils.py +0 -0
  29. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/application/timezone.py +0 -0
  30. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/__init__.py +0 -0
  31. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/base_enum.py +0 -0
  32. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/constants.py +0 -0
  33. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/entities/__init__.py +0 -0
  34. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/entities/document.py +0 -0
  35. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/entities/document_metadata.py +0 -0
  36. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/entities/document_type.py +0 -0
  37. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/entities/in_memory_document.py +0 -0
  38. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/entities/processing_case.py +0 -0
  39. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/entities/processing_case_filters.py +0 -0
  40. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/entities/processing_case_item.py +0 -0
  41. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/entities/processing_case_item_filters.py +0 -0
  42. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/entities/processing_documents.py +0 -0
  43. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/entities/processing_event.py +0 -0
  44. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/entities/processing_record.py +0 -0
  45. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/entities/scaling.py +0 -0
  46. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/entities/workspace.py +0 -0
  47. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/entities/workspace_document.py +0 -0
  48. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/entities/workspace_document_page.py +0 -0
  49. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/enums/__init__.py +0 -0
  50. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/enums/circular_oficio.py +0 -0
  51. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/enums/common.py +0 -0
  52. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/enums/document.py +0 -0
  53. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/enums/document_type_record.py +0 -0
  54. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/enums/processing_case.py +0 -0
  55. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/enums/processing_case_validator.py +0 -0
  56. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/enums/workspace.py +0 -0
  57. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/exceptions.py +0 -0
  58. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/filters/__init__.py +0 -0
  59. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/filters/document_type.py +0 -0
  60. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/filters/workspace.py +0 -0
  61. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/filters/workspace_document.py +0 -0
  62. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/filters/workspace_document_page.py +0 -0
  63. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/helpers/__init__.py +0 -0
  64. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/helpers/dicts.py +0 -0
  65. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/helpers/encoding.py +0 -0
  66. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/helpers/lists.py +0 -0
  67. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/helpers/values.py +0 -0
  68. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/interfaces/__init__.py +0 -0
  69. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/interfaces/queue.py +0 -0
  70. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/interfaces/scaling.py +0 -0
  71. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/pagination/__init__.py +0 -0
  72. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/pagination/entities.py +0 -0
  73. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/pagination/response.py +0 -0
  74. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/repositories/__init__.py +0 -0
  75. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/repositories/document.py +0 -0
  76. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/repositories/document_type.py +0 -0
  77. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/repositories/processing_case.py +0 -0
  78. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/repositories/processing_case_item.py +0 -0
  79. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/repositories/processing_record.py +0 -0
  80. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/repositories/workspace.py +0 -0
  81. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/repositories/workspace_document.py +0 -0
  82. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/domain/repositories/workspace_document_page.py +0 -0
  83. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/infrastructure/__init__.py +0 -0
  84. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/infrastructure/batch_queue.py +0 -0
  85. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/infrastructure/dynamo_table.py +0 -0
  86. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/infrastructure/lambdas.py +0 -0
  87. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/infrastructure/repositories/__init__.py +0 -0
  88. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/infrastructure/repositories/dynamo_document.py +0 -0
  89. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/infrastructure/repositories/dynamo_processing_case.py +0 -0
  90. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/infrastructure/repositories/dynamo_processing_case_item.py +0 -0
  91. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/infrastructure/repositories/http_document.py +0 -0
  92. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/infrastructure/repositories/http_document_type.py +0 -0
  93. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/infrastructure/repositories/http_processing_record.py +0 -0
  94. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/infrastructure/repositories/http_workspace.py +0 -0
  95. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/infrastructure/repositories/http_workspace_document.py +0 -0
  96. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/infrastructure/repositories/http_workspace_document_page.py +0 -0
  97. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/infrastructure/repositories/mem_document.py +0 -0
  98. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/infrastructure/repositories/mem_processing_case.py +0 -0
  99. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/infrastructure/repositories/mem_processing_case_item.py +0 -0
  100. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/infrastructure/repositories/mem_processing_record.py +0 -0
  101. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/infrastructure/s3_bucket.py +0 -0
  102. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/infrastructure/services/__init__.py +0 -0
  103. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/infrastructure/services/http_scaling.py +0 -0
  104. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/infrastructure/sqs_queue.py +0 -0
  105. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/presentation/__init__.py +0 -0
  106. {documente_shared-0.1.180 → documente_shared-0.1.181}/documente_shared/presentation/presenters.py +0 -0
  107. {documente_shared-0.1.180 → documente_shared-0.1.181}/publish.sh +0 -0
  108. {documente_shared-0.1.180 → documente_shared-0.1.181}/tests/__init__.py +0 -0
  109. {documente_shared-0.1.180 → documente_shared-0.1.181}/tests/documente_shared/__init__.py +0 -0
  110. {documente_shared-0.1.180 → documente_shared-0.1.181}/tests/documente_shared/application/__init__.py +0 -0
  111. {documente_shared-0.1.180 → documente_shared-0.1.181}/tests/documente_shared/application/test_files.py +0 -0
  112. {documente_shared-0.1.180 → documente_shared-0.1.181}/tests/documente_shared/application/test_payloads.py +0 -0
  113. {documente_shared-0.1.180 → documente_shared-0.1.181}/tests/documente_shared/conftest.py +0 -0
  114. {documente_shared-0.1.180 → documente_shared-0.1.181}/tests/documente_shared/domain/__init__.py +0 -0
  115. {documente_shared-0.1.180 → documente_shared-0.1.181}/tests/documente_shared/domain/entities/__init__.py +0 -0
  116. {documente_shared-0.1.180 → documente_shared-0.1.181}/tests/documente_shared/domain/entities/test_in_memory_document.py +0 -0
  117. {documente_shared-0.1.180 → documente_shared-0.1.181}/tests/documente_shared/domain/entities/test_processing_case.py +0 -0
  118. {documente_shared-0.1.180 → documente_shared-0.1.181}/tests/documente_shared/domain/entities/test_processing_case_item.py +0 -0
  119. {documente_shared-0.1.180 → documente_shared-0.1.181}/tests/documente_shared/domain/entities/test_processing_record.py +0 -0
  120. {documente_shared-0.1.180 → documente_shared-0.1.181}/tests/documente_shared/domain/enums/test_processing_case_validator.py +0 -0
  121. {documente_shared-0.1.180 → documente_shared-0.1.181}/tests/documente_shared/infrastructure/__init__.py +0 -0
  122. {documente_shared-0.1.180 → documente_shared-0.1.181}/tests/documente_shared/infrastructure/repositories/__init__.py +0 -0
  123. {documente_shared-0.1.180 → documente_shared-0.1.181}/tests/documente_shared/infrastructure/repositories/test_http_processing_record.py +0 -0
  124. {documente_shared-0.1.180 → 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.180
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,14 +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=(
56
- instance.to_dict
57
- if persist_items else instance.to_queue_dict
58
- ),
59
- )
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
+ )
60
62
  if response.status_code not in [200, 201]:
61
63
  raise Exception(f'Error persisting processing case: {response.text}')
62
64
  return self._build_processing_case(response)
@@ -65,12 +67,13 @@ class HttpProcessingCaseRepository(
65
67
  self.session.delete(f"{self.api_url}/v1/processing-cases/{instance.uuid}/")
66
68
 
67
69
  def filter(self, filters: ProcessingCaseFilters) -> List[ProcessingCase]:
68
- response = self.session.get(
69
- url=f"{self.api_url}/v1/processing-cases/",
70
- headers={
71
- "X-Tenant": filters.tenant_slug,
72
- }
73
- )
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
+ )
74
77
  if response.status_code not in [200, 201]:
75
78
  return []
76
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.180"
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.180"
141
+ version = "0.1.181"
142
142
  source = { editable = "." }
143
143
  dependencies = [
144
144
  { name = "boto3" },