persistence-kit 3.5.0__tar.gz → 3.6.0__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 (91) hide show
  1. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/PKG-INFO +1 -1
  2. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/__init__.py +20 -0
  3. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/restclient/__init__.py +14 -0
  4. persistence_kit-3.6.0/persistence_kit/restclient/provider.py +78 -0
  5. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/restclient/registry.py +4 -0
  6. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/pyproject.toml +1 -1
  7. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/LICENSE +0 -0
  8. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/README.md +0 -0
  9. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/api/__init__.py +0 -0
  10. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/api/common.py +0 -0
  11. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/api/error_handlers.py +0 -0
  12. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/api/exceptions.py +0 -0
  13. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/api/rate_limit.py +0 -0
  14. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/api/route_loader.py +0 -0
  15. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/authenticated_user.py +0 -0
  16. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/bootstrap/__init__.py +0 -0
  17. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/bootstrap/configuration.py +0 -0
  18. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/bootstrap/seeders.py +0 -0
  19. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/bootstrap/startup.py +0 -0
  20. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/contracts/__init__.py +0 -0
  21. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/contracts/repository.py +0 -0
  22. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/contracts/view_repository.py +0 -0
  23. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/py.typed +0 -0
  24. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/repository/__init__.py +0 -0
  25. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/repository/dynamodb_repo/dynamodb_mapper.py +0 -0
  26. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/repository/dynamodb_repo/dynamodb_repo.py +0 -0
  27. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/repository/filter_ops.py +0 -0
  28. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/repository/memory_repo/__init__.py +0 -0
  29. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/repository/memory_repo/memory_repo.py +0 -0
  30. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/repository/mongo_repo/__init__.py +0 -0
  31. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/repository/mongo_repo/mongo_mapper.py +0 -0
  32. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/repository/mongo_repo/mongo_repo.py +0 -0
  33. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/repository/sqlalchemy_repo/__init__.py +0 -0
  34. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/repository/sqlalchemy_repo/schema_evolve.py +0 -0
  35. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/repository/sqlalchemy_repo/sqlalchemy_dataclass_mapper.py +0 -0
  36. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/repository/sqlalchemy_repo/sqlalchemy_engine.py +0 -0
  37. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/repository/sqlalchemy_repo/sqlalchemy_repo.py +0 -0
  38. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/repository/sqlalchemy_repo/table_factory.py +0 -0
  39. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/repository_factory/__init__.py +0 -0
  40. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/repository_factory/factory/__init__.py +0 -0
  41. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/repository_factory/factory/repository_factory.py +0 -0
  42. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/repository_factory/registry/__init__.py +0 -0
  43. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/repository_factory/registry/entity_registry.py +0 -0
  44. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/repository_factory/view/__init__.py +0 -0
  45. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/repository_factory/view/populating_repository.py +0 -0
  46. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/resilience/__init__.py +0 -0
  47. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/resilience/circuit.py +0 -0
  48. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/restclient/aggregate.py +0 -0
  49. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/restclient/auth/__init__.py +0 -0
  50. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/restclient/auth/api_key.py +0 -0
  51. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/restclient/auth/base.py +0 -0
  52. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/restclient/auth/basic.py +0 -0
  53. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/restclient/auth/bearer.py +0 -0
  54. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/restclient/auth/login.py +0 -0
  55. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/restclient/auth/oauth2.py +0 -0
  56. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/restclient/client.py +0 -0
  57. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/restclient/config.py +0 -0
  58. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/restclient/contracts.py +0 -0
  59. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/restclient/errors.py +0 -0
  60. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/restclient/factory.py +0 -0
  61. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/restclient/mapping.py +0 -0
  62. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/restclient/memory.py +0 -0
  63. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/restclient/payload.py +0 -0
  64. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/restclient/populate.py +0 -0
  65. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/restclient/resolver.py +0 -0
  66. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/restclient/retry.py +0 -0
  67. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/security/__init__.py +0 -0
  68. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/security/factory.py +0 -0
  69. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/security/ports.py +0 -0
  70. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/security/providers/__init__.py +0 -0
  71. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/security/providers/cognito_identity_provider.py +0 -0
  72. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/security/providers/memory_security_provider.py +0 -0
  73. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/security/registration.py +0 -0
  74. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/security/token_verifiers/__init__.py +0 -0
  75. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/security/token_verifiers/cognito_jwt_verifier.py +0 -0
  76. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/security/token_verifiers/memory_jwt_verifier.py +0 -0
  77. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/settings/__init__.py +0 -0
  78. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/settings/app_settings.py +0 -0
  79. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/settings/constants.py +0 -0
  80. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/settings/parsers.py +0 -0
  81. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/settings/repo_settings.py +0 -0
  82. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/storage/__init__.py +0 -0
  83. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/storage/contracts.py +0 -0
  84. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/storage/errors.py +0 -0
  85. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/storage/factory.py +0 -0
  86. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/storage/local.py +0 -0
  87. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/storage/media.py +0 -0
  88. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/storage/routes.py +0 -0
  89. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/storage/s3.py +0 -0
  90. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/utils/__init__.py +0 -0
  91. {persistence_kit-3.5.0 → persistence_kit-3.6.0}/persistence_kit/utils/upsert.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: persistence-kit
3
- Version: 3.5.0
3
+ Version: 3.6.0
4
4
  Summary: Reusable persistence and repository toolkit
5
5
  License: MIT
6
6
  License-File: LICENSE
@@ -218,6 +218,26 @@ _OPTIONAL_EXPORTS = {
218
218
  ),
219
219
  "decode": ("persistence_kit.restclient.mapping", "decode", "restclient"),
220
220
  "encode": ("persistence_kit.restclient.mapping", "encode", "restclient"),
221
+ "register_rest_service": (
222
+ "persistence_kit.restclient.provider",
223
+ "register_rest_service",
224
+ "restclient",
225
+ ),
226
+ "set_rest_registry_initializer": (
227
+ "persistence_kit.restclient.provider",
228
+ "set_rest_registry_initializer",
229
+ "restclient",
230
+ ),
231
+ "provide_rest_client": (
232
+ "persistence_kit.restclient.provider",
233
+ "provide_rest_client",
234
+ "restclient",
235
+ ),
236
+ "get_rest_client": (
237
+ "persistence_kit.restclient.provider",
238
+ "get_rest_client",
239
+ "restclient",
240
+ ),
221
241
  "NoAuth": ("persistence_kit.restclient.auth", "NoAuth", "restclient"),
222
242
  "ApiKeyAuth": ("persistence_kit.restclient.auth", "ApiKeyAuth", "restclient"),
223
243
  "BearerAuth": ("persistence_kit.restclient.auth", "BearerAuth", "restclient"),
@@ -44,6 +44,14 @@ from persistence_kit.restclient.populate import (
44
44
  populate,
45
45
  )
46
46
  from persistence_kit.restclient.payload import serialize_xml
47
+ from persistence_kit.restclient.provider import (
48
+ default_rest_registry,
49
+ get_rest_client,
50
+ provide_rest_client,
51
+ register_rest_service,
52
+ reset_rest_registry,
53
+ set_rest_registry_initializer,
54
+ )
47
55
  from persistence_kit.restclient.registry import RegisteredService, RestClientRegistry
48
56
  from persistence_kit.restclient.resolver import (
49
57
  DirectoryEndpointResolver,
@@ -85,6 +93,12 @@ __all__ = [
85
93
  "RestClientRegistry",
86
94
  "RegisteredService",
87
95
  "build_rest_client",
96
+ "register_rest_service",
97
+ "set_rest_registry_initializer",
98
+ "provide_rest_client",
99
+ "get_rest_client",
100
+ "default_rest_registry",
101
+ "reset_rest_registry",
88
102
  "RestClientError",
89
103
  "RestConfigError",
90
104
  "RestAuthError",
@@ -0,0 +1,78 @@
1
+ from __future__ import annotations
2
+
3
+ from functools import lru_cache
4
+ from typing import Callable
5
+
6
+ from persistence_kit.resilience import CircuitBreaker
7
+ from persistence_kit.restclient.config import ServiceConfig
8
+ from persistence_kit.restclient.contracts import (
9
+ Authenticator,
10
+ EndpointResolver,
11
+ RestClient,
12
+ )
13
+ from persistence_kit.restclient.registry import RestClientRegistry
14
+ from persistence_kit.restclient.retry import RetryPolicy
15
+
16
+ _default_registry_instance: RestClientRegistry | None = None
17
+ _registry_initializer: Callable[[], None] | None = None
18
+
19
+
20
+ def default_rest_registry() -> RestClientRegistry:
21
+ global _default_registry_instance
22
+ if _default_registry_instance is None:
23
+ from persistence_kit.settings import PersistenceKitSettings
24
+
25
+ _default_registry_instance = RestClientRegistry(settings=PersistenceKitSettings())
26
+ return _default_registry_instance
27
+
28
+
29
+ def set_rest_registry_initializer(fn: Callable[[], None] | None) -> None:
30
+ global _registry_initializer
31
+ _registry_initializer = fn
32
+
33
+
34
+ @lru_cache(maxsize=1)
35
+ def _init_registry() -> None:
36
+ if _registry_initializer is not None:
37
+ _registry_initializer()
38
+
39
+
40
+ def register_rest_service(
41
+ name: str,
42
+ *,
43
+ base_url: str = "",
44
+ authenticator: Authenticator | None = None,
45
+ resolver: EndpointResolver | None = None,
46
+ config: ServiceConfig | None = None,
47
+ retry_policy: RetryPolicy | None = None,
48
+ circuit_breaker: CircuitBreaker | None = None,
49
+ replace: bool = False,
50
+ ) -> None:
51
+ default_rest_registry().register(
52
+ name,
53
+ base_url=base_url,
54
+ authenticator=authenticator,
55
+ resolver=resolver,
56
+ config=config,
57
+ retry_policy=retry_policy,
58
+ circuit_breaker=circuit_breaker,
59
+ replace=replace,
60
+ )
61
+
62
+
63
+ def get_rest_client(name: str) -> RestClient:
64
+ _init_registry()
65
+ return default_rest_registry().get(name)
66
+
67
+
68
+ def provide_rest_client(name: str) -> Callable[[], RestClient]:
69
+ def _dep() -> RestClient:
70
+ return get_rest_client(name)
71
+
72
+ return _dep
73
+
74
+
75
+ def reset_rest_registry() -> None:
76
+ global _default_registry_instance
77
+ _init_registry.cache_clear()
78
+ _default_registry_instance = None
@@ -103,6 +103,10 @@ class RestClientRegistry:
103
103
  def names(self) -> tuple[str, ...]:
104
104
  return tuple(self._services)
105
105
 
106
+ def clear(self) -> None:
107
+ self._services.clear()
108
+ self._clients.clear()
109
+
106
110
  async def aclose_all(self) -> None:
107
111
  for client in self._clients.values():
108
112
  await client.aclose()
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "persistence-kit"
3
- version = "3.5.0"
3
+ version = "3.6.0"
4
4
  description = "Reusable persistence and repository toolkit"
5
5
  authors = ["Andres Felipe Serrano Barrios <andresfserrano1@gmail.com>"]
6
6
  readme = "README.md"
File without changes