nlbone 0.7.10__tar.gz → 0.7.11__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 (114) hide show
  1. {nlbone-0.7.10 → nlbone-0.7.11}/PKG-INFO +1 -1
  2. {nlbone-0.7.10 → nlbone-0.7.11}/pyproject.toml +1 -1
  3. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/utils/cache.py +57 -17
  4. {nlbone-0.7.10 → nlbone-0.7.11}/.gitignore +0 -0
  5. {nlbone-0.7.10 → nlbone-0.7.11}/LICENSE +0 -0
  6. {nlbone-0.7.10 → nlbone-0.7.11}/README.md +0 -0
  7. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/__init__.py +0 -0
  8. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/__init__.py +0 -0
  9. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/auth/__init__.py +0 -0
  10. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/auth/auth_service.py +0 -0
  11. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/auth/keycloak.py +0 -0
  12. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/auth/token_provider.py +0 -0
  13. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/cache/__init__.py +0 -0
  14. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/cache/async_redis.py +0 -0
  15. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/cache/memory.py +0 -0
  16. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/cache/pubsub_listener.py +0 -0
  17. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/cache/redis.py +0 -0
  18. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/db/__init__.py +0 -0
  19. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/db/postgres/__init__.py +0 -0
  20. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/db/postgres/audit.py +0 -0
  21. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/db/postgres/base.py +0 -0
  22. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/db/postgres/engine.py +0 -0
  23. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/db/postgres/query_builder.py +0 -0
  24. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/db/postgres/repository.py +0 -0
  25. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/db/postgres/schema.py +0 -0
  26. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/db/postgres/types.py +0 -0
  27. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/db/postgres/uow.py +0 -0
  28. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/db/redis/__init__.py +0 -0
  29. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/db/redis/client.py +0 -0
  30. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/http_clients/__init__.py +0 -0
  31. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/http_clients/pricing/__init__.py +0 -0
  32. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/http_clients/pricing/pricing_service.py +0 -0
  33. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/http_clients/uploadchi/__init__.py +0 -0
  34. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/http_clients/uploadchi/uploadchi.py +0 -0
  35. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/http_clients/uploadchi/uploadchi_async.py +0 -0
  36. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/messaging/__init__.py +0 -0
  37. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/messaging/event_bus.py +0 -0
  38. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/messaging/rabbitmq.py +0 -0
  39. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/outbox/__init__.py +0 -0
  40. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/outbox/outbox_consumer.py +0 -0
  41. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/outbox/outbox_repo.py +0 -0
  42. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/percolation/__init__.py +0 -0
  43. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/percolation/connection.py +0 -0
  44. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/repositories/__init__.py +0 -0
  45. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/snowflake.py +0 -0
  46. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/ticketing/__init__.py +0 -0
  47. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/adapters/ticketing/client.py +0 -0
  48. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/config/__init__.py +0 -0
  49. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/config/logging.py +0 -0
  50. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/config/settings.py +0 -0
  51. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/container.py +0 -0
  52. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/core/__init__.py +0 -0
  53. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/core/application/__init__.py +0 -0
  54. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/core/application/base_worker.py +0 -0
  55. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/core/application/bus.py +0 -0
  56. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/core/application/di.py +0 -0
  57. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/core/application/registry.py +0 -0
  58. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/core/application/services/__init__.py +0 -0
  59. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/core/application/use_case.py +0 -0
  60. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/core/domain/__init__.py +0 -0
  61. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/core/domain/base.py +0 -0
  62. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/core/domain/models.py +0 -0
  63. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/core/ports/__init__.py +0 -0
  64. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/core/ports/auth.py +0 -0
  65. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/core/ports/cache.py +0 -0
  66. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/core/ports/event_bus.py +0 -0
  67. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/core/ports/files.py +0 -0
  68. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/core/ports/outbox.py +0 -0
  69. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/core/ports/repository.py +0 -0
  70. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/core/ports/uow.py +0 -0
  71. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/__init__.py +0 -0
  72. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/api/__init__.py +0 -0
  73. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/api/additional_filed/__init__.py +0 -0
  74. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/api/additional_filed/assembler.py +0 -0
  75. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/api/additional_filed/default_field_rules/__init__.py +0 -0
  76. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/api/additional_filed/default_field_rules/image_field_rules.py +0 -0
  77. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/api/additional_filed/field_registry.py +0 -0
  78. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/api/additional_filed/resolver.py +0 -0
  79. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/api/dependencies/__init__.py +0 -0
  80. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/api/dependencies/async_auth.py +0 -0
  81. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/api/dependencies/auth.py +0 -0
  82. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/api/dependencies/db.py +0 -0
  83. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/api/dependencies/uow.py +0 -0
  84. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/api/exception_handlers.py +0 -0
  85. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/api/exceptions.py +0 -0
  86. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/api/middleware/__init__.py +0 -0
  87. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/api/middleware/access_log.py +0 -0
  88. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/api/middleware/add_request_context.py +0 -0
  89. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/api/middleware/authentication.py +0 -0
  90. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/api/pagination/__init__.py +0 -0
  91. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/api/pagination/offset_base.py +0 -0
  92. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/api/routers.py +0 -0
  93. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/api/schema/__init__.py +0 -0
  94. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/api/schema/adaptive_schema.py +0 -0
  95. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/api/schema/base_response_model.py +0 -0
  96. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/api/schemas.py +0 -0
  97. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/cli/__init__.py +0 -0
  98. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/cli/crypto.py +0 -0
  99. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/cli/init_db.py +0 -0
  100. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/cli/main.py +0 -0
  101. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/cli/ticket.py +0 -0
  102. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/jobs/__init__.py +0 -0
  103. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/jobs/dispatch_outbox.py +0 -0
  104. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/interfaces/jobs/sync_tokens.py +0 -0
  105. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/types.py +0 -0
  106. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/utils/__init__.py +0 -0
  107. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/utils/cache_keys.py +0 -0
  108. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/utils/cache_registry.py +0 -0
  109. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/utils/context.py +0 -0
  110. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/utils/crypto.py +0 -0
  111. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/utils/http.py +0 -0
  112. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/utils/normalize_mobile.py +0 -0
  113. {nlbone-0.7.10 → nlbone-0.7.11}/src/nlbone/utils/redactor.py +0 -0
  114. {nlbone-0.7.10 → nlbone-0.7.11}/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.10
3
+ Version: 0.7.11
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.10"
7
+ version = "0.7.11"
8
8
  description = "Backbone package for interfaces and infrastructure in Python projects"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -1,10 +1,12 @@
1
1
  import asyncio
2
2
  import inspect
3
3
  import json
4
- from typing import Any, Callable, Iterable, Optional
4
+ from typing import Any, Callable, Iterable, Optional, Mapping
5
5
 
6
6
  from makefun import wraps as mf_wraps
7
7
 
8
+ from nlbone.interfaces.api.additional_filed import AdditionalFieldsRequest
9
+ from nlbone.interfaces.api.pagination import PaginateRequest
8
10
  from nlbone.utils.cache_registry import get_cache
9
11
 
10
12
  try:
@@ -25,11 +27,42 @@ def _bind(func: Callable, args, kwargs):
25
27
  return bound
26
28
 
27
29
 
30
+ PRIMITIVES = (str, int, float, bool, type(None))
31
+
32
+
33
+ def to_jsonable(obj):
34
+ if isinstance(obj, PRIMITIVES):
35
+ return obj
36
+
37
+ if isinstance(obj, dict):
38
+ return {str(k): to_jsonable(v) for k, v in obj.items()}
39
+
40
+ if isinstance(obj, (list, tuple, set)):
41
+ return [to_jsonable(v) for v in obj]
42
+
43
+ if isinstance(obj, PaginateRequest):
44
+ return {
45
+ "limit": obj.limit,
46
+ "offset": obj.offset,
47
+ "sort": obj.sort,
48
+ "filters": obj.filters,
49
+ "include_ids": obj.include_ids,
50
+ }
51
+
52
+ if isinstance(obj, AdditionalFieldsRequest):
53
+ return {
54
+ "fields": obj.fields,
55
+ "bundles": obj.bundles,
56
+ }
57
+
58
+ return f"<{obj.__class__.__name__}>"
59
+
60
+
28
61
  def _key_from_template(
29
- tpl: Optional[str],
30
- func: Callable,
31
- args,
32
- kwargs,
62
+ tpl: Optional[str],
63
+ func: Callable,
64
+ args,
65
+ kwargs,
33
66
  ) -> str:
34
67
  """Format key template with bound arguments or build a stable default."""
35
68
  bound = _bind(func, args, kwargs)
@@ -37,15 +70,22 @@ def _key_from_template(
37
70
  return tpl.format(**bound.arguments)
38
71
 
39
72
  # Default stable key: module:qualname:sha of args
40
- payload = json.dumps(bound.arguments, sort_keys=True, default=str)
73
+
74
+ clean_args = to_jsonable(bound.arguments)
75
+ payload = json.dumps(clean_args, sort_keys=True)
76
+
77
+ payload = json.dumps(
78
+ payload,
79
+ sort_keys=True,
80
+ )
41
81
  return f"{func.__module__}:{func.__qualname__}:{hash(payload)}"
42
82
 
43
83
 
44
84
  def _format_tags(
45
- tag_tpls: Optional[Iterable[str]],
46
- func: Callable,
47
- args,
48
- kwargs,
85
+ tag_tpls: Optional[Iterable[str]],
86
+ func: Callable,
87
+ args,
88
+ kwargs,
49
89
  ) -> list[str] | None:
50
90
  if not tag_tpls:
51
91
  return None
@@ -84,13 +124,13 @@ def _run_maybe_async(func: Callable, *args, **kwargs):
84
124
 
85
125
 
86
126
  def cached(
87
- *,
88
- ttl: int,
89
- key: str | None = None,
90
- tags: Iterable[str] | None = None,
91
- serializer: Callable[[Any], bytes] = default_serialize,
92
- deserializer: Callable[[bytes], Any] = default_deserialize,
93
- cache_resolver: Optional[Callable[[], Any]] = None,
127
+ *,
128
+ ttl: int,
129
+ key: str | None = None,
130
+ tags: Iterable[str] | None = None,
131
+ serializer: Callable[[Any], bytes] = default_serialize,
132
+ deserializer: Callable[[bytes], Any] = default_deserialize,
133
+ cache_resolver: Optional[Callable[[], Any]] = None,
94
134
  ):
95
135
  """
96
136
  Framework-agnostic caching for SYNC or ASYNC callables.
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes