nlbone 0.7.28__tar.gz → 0.7.30__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 (121) hide show
  1. {nlbone-0.7.28 → nlbone-0.7.30}/PKG-INFO +1 -1
  2. {nlbone-0.7.28 → nlbone-0.7.30}/pyproject.toml +1 -1
  3. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/db/postgres/query_builder.py +1 -1
  4. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/exception_handlers.py +8 -4
  5. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/exceptions.py +7 -0
  6. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/middleware/add_request_context.py +2 -1
  7. {nlbone-0.7.28 → nlbone-0.7.30}/.gitignore +0 -0
  8. {nlbone-0.7.28 → nlbone-0.7.30}/LICENSE +0 -0
  9. {nlbone-0.7.28 → nlbone-0.7.30}/README.md +0 -0
  10. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/__init__.py +0 -0
  11. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/__init__.py +0 -0
  12. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/auth/__init__.py +0 -0
  13. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/auth/auth_service.py +0 -0
  14. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/auth/keycloak.py +0 -0
  15. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/auth/token_provider.py +0 -0
  16. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/cache/__init__.py +0 -0
  17. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/cache/async_redis.py +0 -0
  18. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/cache/memory.py +0 -0
  19. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/cache/pubsub_listener.py +0 -0
  20. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/cache/redis.py +0 -0
  21. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/db/__init__.py +0 -0
  22. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/db/postgres/__init__.py +0 -0
  23. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/db/postgres/audit.py +0 -0
  24. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/db/postgres/base.py +0 -0
  25. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/db/postgres/engine.py +0 -0
  26. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/db/postgres/repository.py +0 -0
  27. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/db/postgres/schema.py +0 -0
  28. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/db/postgres/types.py +0 -0
  29. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/db/postgres/uow.py +0 -0
  30. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/db/redis/__init__.py +0 -0
  31. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/db/redis/client.py +0 -0
  32. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/http_clients/__init__.py +0 -0
  33. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/http_clients/pricing/__init__.py +0 -0
  34. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/http_clients/pricing/pricing_service.py +0 -0
  35. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/http_clients/uploadchi/__init__.py +0 -0
  36. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/http_clients/uploadchi/uploadchi.py +0 -0
  37. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/http_clients/uploadchi/uploadchi_async.py +0 -0
  38. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/i18n/__init__.py +0 -0
  39. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/i18n/engine.py +0 -0
  40. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/i18n/loaders.py +0 -0
  41. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/i18n/locales/fa-IR.json +0 -0
  42. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/messaging/__init__.py +0 -0
  43. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/messaging/event_bus.py +0 -0
  44. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/messaging/rabbitmq.py +0 -0
  45. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/outbox/__init__.py +0 -0
  46. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/outbox/outbox_consumer.py +0 -0
  47. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/outbox/outbox_repo.py +0 -0
  48. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/percolation/__init__.py +0 -0
  49. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/percolation/connection.py +0 -0
  50. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/repositories/__init__.py +0 -0
  51. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/snowflake.py +0 -0
  52. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/ticketing/__init__.py +0 -0
  53. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/adapters/ticketing/client.py +0 -0
  54. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/config/__init__.py +0 -0
  55. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/config/logging.py +0 -0
  56. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/config/settings.py +0 -0
  57. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/container.py +0 -0
  58. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/__init__.py +0 -0
  59. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/application/__init__.py +0 -0
  60. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/application/base_worker.py +0 -0
  61. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/application/bus.py +0 -0
  62. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/application/di.py +0 -0
  63. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/application/registry.py +0 -0
  64. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/application/services/__init__.py +0 -0
  65. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/application/use_case.py +0 -0
  66. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/domain/__init__.py +0 -0
  67. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/domain/base.py +0 -0
  68. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/domain/models.py +0 -0
  69. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/ports/__init__.py +0 -0
  70. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/ports/auth.py +0 -0
  71. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/ports/cache.py +0 -0
  72. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/ports/event_bus.py +0 -0
  73. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/ports/files.py +0 -0
  74. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/ports/outbox.py +0 -0
  75. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/ports/repository.py +0 -0
  76. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/ports/translation.py +0 -0
  77. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/core/ports/uow.py +0 -0
  78. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/__init__.py +0 -0
  79. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/__init__.py +0 -0
  80. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/additional_filed/__init__.py +0 -0
  81. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/additional_filed/assembler.py +0 -0
  82. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/additional_filed/default_field_rules/__init__.py +0 -0
  83. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/additional_filed/default_field_rules/image_field_rules.py +0 -0
  84. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/additional_filed/field_registry.py +0 -0
  85. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/additional_filed/resolver.py +0 -0
  86. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/dependencies/__init__.py +0 -0
  87. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/dependencies/async_auth.py +0 -0
  88. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/dependencies/auth.py +0 -0
  89. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/dependencies/client_credential.py +0 -0
  90. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/dependencies/db.py +0 -0
  91. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/dependencies/uow.py +0 -0
  92. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/middleware/__init__.py +0 -0
  93. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/middleware/access_log.py +0 -0
  94. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/middleware/authentication.py +0 -0
  95. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/pagination/__init__.py +0 -0
  96. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/pagination/offset_base.py +0 -0
  97. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/routers.py +0 -0
  98. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/schema/__init__.py +0 -0
  99. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/schema/adaptive_schema.py +0 -0
  100. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/schema/base_response_model.py +0 -0
  101. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/api/schemas.py +0 -0
  102. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/cli/__init__.py +0 -0
  103. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/cli/crypto.py +0 -0
  104. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/cli/init_db.py +0 -0
  105. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/cli/main.py +0 -0
  106. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/cli/ticket.py +0 -0
  107. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/jobs/__init__.py +0 -0
  108. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/jobs/dispatch_outbox.py +0 -0
  109. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/interfaces/jobs/sync_tokens.py +0 -0
  110. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/types.py +0 -0
  111. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/utils/__init__.py +0 -0
  112. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/utils/cache.py +0 -0
  113. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/utils/cache_keys.py +0 -0
  114. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/utils/cache_registry.py +0 -0
  115. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/utils/context.py +0 -0
  116. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/utils/crypto.py +0 -0
  117. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/utils/flatten_sqlalchemy_result.py +0 -0
  118. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/utils/http.py +0 -0
  119. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/utils/normalize_mobile.py +0 -0
  120. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/utils/redactor.py +0 -0
  121. {nlbone-0.7.28 → nlbone-0.7.30}/src/nlbone/utils/time.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nlbone
3
- Version: 0.7.28
3
+ Version: 0.7.30
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.7.28"
7
+ version = "0.7.30"
8
8
  description = "Backbone package for interfaces and infrastructure in Python projects"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -217,7 +217,7 @@ def _apply_filters(pagination, entity, query):
217
217
  if filters:
218
218
  for raw_field, value in filters.items():
219
219
  if value is None or value in NULL_SENTINELS or value == [] or value == {}:
220
- continue
220
+ value = None
221
221
 
222
222
  field, op_hint = _parse_field_and_op(raw_field)
223
223
  is_nested = "." in field
@@ -60,7 +60,8 @@ def install_exception_handlers(
60
60
  "http_error",
61
61
  extra={"status": exc.status_code, "detail": exc.detail, "path": request.url.path},
62
62
  )
63
- return _json_response(request, exc.status_code, detail=_(exc.detail))
63
+ locale = locale = getattr(request.state, "locale", None)
64
+ return _json_response(request, exc.status_code, detail=_(exc.detail, locale=locale))
64
65
 
65
66
  @app.exception_handler(FastAPIHTTPException)
66
67
  async def _handle_fastapi_http_exception(request: Request, exc: FastAPIHTTPException):
@@ -69,7 +70,8 @@ def install_exception_handlers(
69
70
  "fastapi_http_error",
70
71
  extra={"status": exc.status_code, "detail": exc.detail, "path": request.url.path},
71
72
  )
72
- return _json_response(request, exc.status_code, detail=exc.detail)
73
+ locale = locale = getattr(request.state, "locale", None)
74
+ return _json_response(request, exc.status_code, detail=_(exc.detail, locale=locale))
73
75
 
74
76
  @app.exception_handler(StarletteHTTPException)
75
77
  async def _handle_starlette_http_exception(request: Request, exc: StarletteHTTPException):
@@ -78,7 +80,8 @@ def install_exception_handlers(
78
80
  "starlette_http_error",
79
81
  extra={"status": exc.status_code, "detail": exc.detail, "path": request.url.path},
80
82
  )
81
- return _json_response(request, exc.status_code, detail=exc.detail)
83
+ locale = locale = getattr(request.state, "locale", None)
84
+ return _json_response(request, exc.status_code, detail=_(exc.detail, locale=locale))
82
85
 
83
86
  # 3) خطاهای اعتبارسنجی FastAPI (request body/query/path)
84
87
  @app.exception_handler(RequestValidationError)
@@ -107,4 +110,5 @@ def install_exception_handlers(
107
110
  if logger:
108
111
  logger.exception("unhandled_exception", extra={"trace_id": tid, "path": request.url.path})
109
112
  detail = str(exc) if expose_server_errors else "internal server error"
110
- return _json_response(request, 500, detail=detail, trace_id=tid)
113
+ locale = locale = getattr(request.state, "locale", None)
114
+ return _json_response(request, 500, detail=_(detail, locale=locale), trace_id=tid)
@@ -99,3 +99,10 @@ class GoneException(BaseHttpException):
99
99
  status_code=status.HTTP_410_GONE,
100
100
  detail=detail,
101
101
  )
102
+
103
+ class TooManyRequestsException(BaseHttpException):
104
+ def __init__(self, detail: str = "TooManyRequests"):
105
+ super().__init__(
106
+ status_code=status.HTTP_429_TOO_MANY_REQUESTS,
107
+ detail=detail,
108
+ )
@@ -45,7 +45,8 @@ class AddRequestContextMiddleware(BaseHTTPMiddleware):
45
45
  user_id = getattr(getattr(request, "state", None), "user_id", None) or request.headers.get("X-User-Id")
46
46
  ip = request.client.host if request.client else None
47
47
  ua = request.headers.get("user-agent")
48
- locale = request.headers.get("Accept-Language")
48
+ locale = request.headers.get("Accept-Language", 'fa-IR')
49
+ request.state.locale = locale
49
50
 
50
51
  tokens = bind_context(request=request, request_id=req_id, user_id=user_id, ip=ip, user_agent=ua, locale=locale)
51
52
  try:
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes