nlbone 0.11.3__tar.gz → 0.11.4__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 (126) hide show
  1. {nlbone-0.11.3 → nlbone-0.11.4}/PKG-INFO +1 -1
  2. {nlbone-0.11.3 → nlbone-0.11.4}/pyproject.toml +1 -1
  3. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/auth/auth_service.py +3 -1
  4. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/http_clients/uploadchi/uploadchi.py +11 -0
  5. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/http_clients/uploadchi/uploadchi_async.py +11 -0
  6. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/core/ports/files.py +2 -0
  7. {nlbone-0.11.3 → nlbone-0.11.4}/.gitignore +0 -0
  8. {nlbone-0.11.3 → nlbone-0.11.4}/LICENSE +0 -0
  9. {nlbone-0.11.3 → nlbone-0.11.4}/README.md +0 -0
  10. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/__init__.py +0 -0
  11. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/__init__.py +0 -0
  12. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/auth/__init__.py +0 -0
  13. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/auth/async_auth_service.py +0 -0
  14. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/auth/async_token_provider.py +0 -0
  15. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/auth/keycloak.py +0 -0
  16. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/auth/token_provider.py +0 -0
  17. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/cache/__init__.py +0 -0
  18. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/cache/async_redis.py +0 -0
  19. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/cache/memory.py +0 -0
  20. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/cache/pubsub_listener.py +0 -0
  21. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/cache/redis.py +0 -0
  22. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/db/__init__.py +0 -0
  23. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/db/postgres/__init__.py +0 -0
  24. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/db/postgres/audit.py +0 -0
  25. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/db/postgres/base.py +0 -0
  26. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/db/postgres/engine.py +0 -0
  27. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/db/postgres/query_builder.py +0 -0
  28. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/db/postgres/repository.py +0 -0
  29. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/db/postgres/schema.py +0 -0
  30. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/db/postgres/types.py +0 -0
  31. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/db/postgres/uow.py +0 -0
  32. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/db/redis/__init__.py +0 -0
  33. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/db/redis/client.py +0 -0
  34. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/http_clients/__init__.py +0 -0
  35. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/http_clients/pricing/__init__.py +0 -0
  36. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/http_clients/pricing/async_pricing_service.py +0 -0
  37. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/http_clients/pricing/pricing_service.py +0 -0
  38. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/http_clients/uploadchi/__init__.py +0 -0
  39. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/i18n/__init__.py +0 -0
  40. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/i18n/engine.py +0 -0
  41. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/i18n/loaders.py +0 -0
  42. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/i18n/locales/fa-IR.json +0 -0
  43. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/messaging/__init__.py +0 -0
  44. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/messaging/event_bus.py +0 -0
  45. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/messaging/rabbitmq.py +0 -0
  46. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/outbox/__init__.py +0 -0
  47. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/outbox/outbox_consumer.py +0 -0
  48. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/outbox/outbox_repo.py +0 -0
  49. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/percolation/__init__.py +0 -0
  50. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/percolation/connection.py +0 -0
  51. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/repositories/__init__.py +0 -0
  52. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/snowflake.py +0 -0
  53. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/ticketing/__init__.py +0 -0
  54. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/adapters/ticketing/client.py +0 -0
  55. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/config/__init__.py +0 -0
  56. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/config/logging.py +0 -0
  57. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/config/settings.py +0 -0
  58. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/container.py +0 -0
  59. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/core/__init__.py +0 -0
  60. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/core/application/__init__.py +0 -0
  61. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/core/application/base_worker.py +0 -0
  62. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/core/application/bus.py +0 -0
  63. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/core/application/di.py +0 -0
  64. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/core/application/registry.py +0 -0
  65. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/core/application/services/__init__.py +0 -0
  66. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/core/application/use_case.py +0 -0
  67. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/core/domain/__init__.py +0 -0
  68. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/core/domain/base.py +0 -0
  69. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/core/domain/models.py +0 -0
  70. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/core/ports/__init__.py +0 -0
  71. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/core/ports/auth.py +0 -0
  72. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/core/ports/cache.py +0 -0
  73. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/core/ports/event_bus.py +0 -0
  74. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/core/ports/outbox.py +0 -0
  75. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/core/ports/repository.py +0 -0
  76. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/core/ports/translation.py +0 -0
  77. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/core/ports/uow.py +0 -0
  78. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/__init__.py +0 -0
  79. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/api/__init__.py +0 -0
  80. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/api/additional_filed/__init__.py +0 -0
  81. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/api/additional_filed/assembler.py +0 -0
  82. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/api/additional_filed/default_field_rules/__init__.py +0 -0
  83. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/api/additional_filed/default_field_rules/image_field_rules.py +0 -0
  84. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/api/additional_filed/field_registry.py +0 -0
  85. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/api/additional_filed/resolver.py +0 -0
  86. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/api/dependencies/__init__.py +0 -0
  87. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/api/dependencies/async_auth.py +0 -0
  88. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/api/dependencies/auth.py +0 -0
  89. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/api/dependencies/client_credential.py +0 -0
  90. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/api/dependencies/db.py +0 -0
  91. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/api/dependencies/uow.py +0 -0
  92. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/api/exception_handlers.py +0 -0
  93. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/api/exceptions.py +0 -0
  94. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/api/middleware/__init__.py +0 -0
  95. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/api/middleware/access_log.py +0 -0
  96. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/api/middleware/add_request_context.py +0 -0
  97. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/api/middleware/authentication.py +0 -0
  98. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/api/pagination/__init__.py +0 -0
  99. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/api/pagination/offset_base.py +0 -0
  100. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/api/routers.py +0 -0
  101. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/api/schema/__init__.py +0 -0
  102. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/api/schema/adaptive_schema.py +0 -0
  103. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/api/schema/base_response_model.py +0 -0
  104. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/api/schemas.py +0 -0
  105. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/cli/__init__.py +0 -0
  106. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/cli/crypto.py +0 -0
  107. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/cli/init_db.py +0 -0
  108. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/cli/main.py +0 -0
  109. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/cli/ticket.py +0 -0
  110. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/jobs/__init__.py +0 -0
  111. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/jobs/dispatch_outbox.py +0 -0
  112. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/interfaces/jobs/sync_tokens.py +0 -0
  113. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/types.py +0 -0
  114. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/utils/__init__.py +0 -0
  115. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/utils/cache.py +0 -0
  116. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/utils/cache_keys.py +0 -0
  117. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/utils/cache_registry.py +0 -0
  118. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/utils/context.py +0 -0
  119. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/utils/crypto.py +0 -0
  120. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/utils/flatten_dict.py +0 -0
  121. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/utils/flatten_sqlalchemy_result.py +0 -0
  122. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/utils/http.py +0 -0
  123. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/utils/normalize_mobile.py +0 -0
  124. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/utils/read_files.py +0 -0
  125. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/utils/redactor.py +0 -0
  126. {nlbone-0.11.3 → nlbone-0.11.4}/src/nlbone/utils/time.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nlbone
3
- Version: 0.11.3
3
+ Version: 0.11.4
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
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "nlbone"
7
- version = "0.11.3"
7
+ version = "0.11.4"
8
8
  description = "Backbone package for interfaces and infrastructure in Python projects"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -50,7 +50,9 @@ class AuthService(BaseAuthService):
50
50
 
51
51
  def is_client_token(self, token: str, allowed_clients: set[str] | None = None) -> bool:
52
52
  data = self.verify_token(token)
53
- return data.get('preferred_username').startswith('service-account')
53
+ if data:
54
+ return data.get("preferred_username", "").startswith("service-account")
55
+ return False
54
56
 
55
57
  def client_has_access(self, token: str, permissions: list[str], allowed_clients: set[str] | None = None) -> bool:
56
58
  data = self.verify_token(token)
@@ -114,6 +114,17 @@ class UploadchiClient(FileServicePort):
114
114
  media_type = r.headers.get("content-type", "application/octet-stream")
115
115
  return r.content, filename, media_type
116
116
 
117
+ def get_file_presigned_url(self, file_id: str, ttl: int | None = None, token: str | None = None) -> dict:
118
+ tok = _resolve_token(token)
119
+ r = self._client.get(
120
+ f"{self._base_url}/files/{file_id}/purl",
121
+ params={"ttl": ttl} if ttl else None,
122
+ headers=auth_headers(tok),
123
+ )
124
+ if r.status_code >= 400:
125
+ raise UploadchiError(r.status_code, r.text)
126
+ return r.json()
127
+
117
128
  def delete_file(self, file_id: str, token: str | None = None) -> None:
118
129
  tok = _resolve_token(token)
119
130
  r = self._client.delete(
@@ -116,6 +116,17 @@ class UploadchiAsyncClient(AsyncFileServicePort):
116
116
 
117
117
  return _aiter(), filename, media_type
118
118
 
119
+ async def get_file_presigned_url(self, file_id: str, ttl: int | None = None, token: str | None = None) -> dict:
120
+ tok = _resolve_token(token)
121
+ r = await self._client.get(
122
+ f"/files/{file_id}/purl",
123
+ params={"ttl": ttl} if ttl else None,
124
+ headers=auth_headers(tok or await self._token_provider.get_access_token()),
125
+ )
126
+ if r.status_code >= 400:
127
+ raise UploadchiError(r.status_code, await r.aread())
128
+ return r.json()
129
+
119
130
  async def delete_file(self, file_id: str, token: str | None = None) -> None:
120
131
  tok = _resolve_token(token)
121
132
  r = await self._client.delete(
@@ -20,6 +20,7 @@ class FileServicePort(Protocol):
20
20
  ) -> dict: ...
21
21
  def get_file(self, file_id: str, token: str | None = None) -> dict: ...
22
22
  def download_file(self, file_id: str, token: str | None = None) -> tuple[bytes, str, str]: ...
23
+ def get_file_presigned_url(self, file_id: str, ttl: int | None = None, token: str | None = None) -> dict: ...
23
24
  def delete_file(self, file_id: str, token: str | None = None) -> None: ...
24
25
 
25
26
 
@@ -40,4 +41,5 @@ class AsyncFileServicePort(Protocol):
40
41
  ) -> dict: ...
41
42
  async def get_file(self, file_id: str, token: str | None = None) -> dict: ...
42
43
  async def download_file(self, file_id: str, token: str | None = None) -> tuple[AsyncIterator[bytes], str, str]: ...
44
+ async def get_file_presigned_url(self, file_id: str, ttl: int | None = None, token: str | None = None) -> dict: ...
43
45
  async def delete_file(self, file_id: str, token: str | None = None) -> None: ...
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes