identity-plan-kit 0.3.2__tar.gz → 0.3.3__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 (181) hide show
  1. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/PKG-INFO +1 -1
  2. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/pyproject.toml +2 -2
  3. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/config.py +8 -1
  4. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/kit.py +8 -0
  5. identity_plan_kit-0.3.3/src/identity_plan_kit/plans/cache/plan_cache.py +683 -0
  6. identity_plan_kit-0.3.3/src/identity_plan_kit/plans/cache/user_plan_cache.py +583 -0
  7. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/services/plan_service.py +61 -5
  8. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/integration/test_plan_cache_race.py +3 -2
  9. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/plans/test_plan_cache_concurrent.py +9 -3
  10. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/uv.lock +1 -1
  11. identity_plan_kit-0.3.2/src/identity_plan_kit/plans/cache/plan_cache.py +0 -323
  12. identity_plan_kit-0.3.2/src/identity_plan_kit/plans/cache/user_plan_cache.py +0 -205
  13. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/.gitignore +0 -0
  14. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/Makefile +0 -0
  15. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/README.md +0 -0
  16. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/alembic/env.py +0 -0
  17. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/alembic/script.py.mako +0 -0
  18. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/alembic/versions/20250124_000000_initial_schema.py +0 -0
  19. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/alembic/versions/20250127_000000_add_password_hash.py +0 -0
  20. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/alembic.ini +0 -0
  21. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/examples/integration/__init__.py +0 -0
  22. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/examples/integration/fastapi_integration.py +0 -0
  23. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/examples/integration/sample_alembic_env.py +0 -0
  24. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/examples/integration/webhook_integration.py +0 -0
  25. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/examples/playing/admin_usage.py +0 -0
  26. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/examples/playing/basic_usage.py +0 -0
  27. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/examples/playing/custom_error_formats.py +0 -0
  28. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/examples/playing/extending_models.html +0 -0
  29. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/examples/playing/extension_example.py +0 -0
  30. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/examples/prod/.env.production.example +0 -0
  31. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/examples/prod/Dockerfile +0 -0
  32. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/examples/prod/docker-compose.yml +0 -0
  33. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/examples/prod/nginx.conf +0 -0
  34. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/examples/prod/production_setup.py +0 -0
  35. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/examples/prod/prometheus.yml +0 -0
  36. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/loadtests/README.md +0 -0
  37. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/loadtests/__init__.py +0 -0
  38. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/loadtests/config.py +0 -0
  39. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/loadtests/locustfile.py +0 -0
  40. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/loadtests/test_auth.py +0 -0
  41. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/loadtests/test_database_stress.py +0 -0
  42. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/loadtests/test_mixed_scenarios.py +0 -0
  43. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/loadtests/test_plans_quota.py +0 -0
  44. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/loadtests/test_quota_direct.py +0 -0
  45. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/loadtests/test_rbac_cache.py +0 -0
  46. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/loadtests/utils.py +0 -0
  47. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/__init__.py +0 -0
  48. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/admin/__init__.py +0 -0
  49. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/admin/auth.py +0 -0
  50. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/admin/views.py +0 -0
  51. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/__init__.py +0 -0
  52. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/dependencies.py +0 -0
  53. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/domain/__init__.py +0 -0
  54. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/domain/entities.py +0 -0
  55. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/domain/exceptions.py +0 -0
  56. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/dto/__init__.py +0 -0
  57. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/dto/requests.py +0 -0
  58. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/dto/responses.py +0 -0
  59. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/handlers/__init__.py +0 -0
  60. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/handlers/oauth_routes.py +0 -0
  61. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/models/__init__.py +0 -0
  62. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/models/refresh_token.py +0 -0
  63. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/models/user.py +0 -0
  64. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/models/user_provider.py +0 -0
  65. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/repositories/__init__.py +0 -0
  66. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/repositories/token_repo.py +0 -0
  67. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/repositories/user_repo.py +0 -0
  68. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/services/__init__.py +0 -0
  69. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/services/auth_service.py +0 -0
  70. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/services/oauth_service.py +0 -0
  71. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/uow.py +0 -0
  72. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/cli.py +0 -0
  73. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/migrations.py +0 -0
  74. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/__init__.py +0 -0
  75. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/cache/__init__.py +0 -0
  76. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/dependencies.py +0 -0
  77. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/domain/__init__.py +0 -0
  78. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/domain/entities.py +0 -0
  79. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/domain/exceptions.py +0 -0
  80. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/dto/__init__.py +0 -0
  81. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/dto/responses.py +0 -0
  82. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/dto/usage.py +0 -0
  83. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/handlers/__init__.py +0 -0
  84. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/handlers/plan_routes.py +0 -0
  85. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/models/__init__.py +0 -0
  86. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/models/feature.py +0 -0
  87. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/models/feature_usage.py +0 -0
  88. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/models/plan.py +0 -0
  89. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/models/plan_limit.py +0 -0
  90. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/models/plan_permission.py +0 -0
  91. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/models/user_plan.py +0 -0
  92. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/repositories/__init__.py +0 -0
  93. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/repositories/plan_repo.py +0 -0
  94. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/repositories/usage_repo.py +0 -0
  95. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/services/__init__.py +0 -0
  96. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/uow.py +0 -0
  97. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/rbac/__init__.py +0 -0
  98. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/rbac/cache/__init__.py +0 -0
  99. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/rbac/cache/permission_cache.py +0 -0
  100. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/rbac/dependencies.py +0 -0
  101. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/rbac/domain/__init__.py +0 -0
  102. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/rbac/domain/entities.py +0 -0
  103. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/rbac/domain/exceptions.py +0 -0
  104. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/rbac/models/__init__.py +0 -0
  105. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/rbac/models/permission.py +0 -0
  106. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/rbac/models/role.py +0 -0
  107. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/rbac/models/role_permission.py +0 -0
  108. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/rbac/repositories/__init__.py +0 -0
  109. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/rbac/repositories/rbac_repo.py +0 -0
  110. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/rbac/services/__init__.py +0 -0
  111. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/rbac/services/rbac_service.py +0 -0
  112. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/rbac/uow.py +0 -0
  113. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/README.md +0 -0
  114. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/__init__.py +0 -0
  115. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/audit.py +0 -0
  116. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/circuit_breaker.py +0 -0
  117. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/cleanup_scheduler.py +0 -0
  118. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/database.py +0 -0
  119. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/error_formatter.py +0 -0
  120. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/exception_handlers.py +0 -0
  121. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/exceptions.py +0 -0
  122. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/graceful_shutdown.py +0 -0
  123. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/health.py +0 -0
  124. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/http_utils.py +0 -0
  125. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/lockout.py +0 -0
  126. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/logging.py +0 -0
  127. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/metrics.py +0 -0
  128. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/models.py +0 -0
  129. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/rate_limiter.py +0 -0
  130. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/request_id.py +0 -0
  131. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/schemas.py +0 -0
  132. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/security.py +0 -0
  133. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/state_store.py +0 -0
  134. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/uow.py +0 -0
  135. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/uuid7.py +0 -0
  136. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/__init__.py +0 -0
  137. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/auth/__init__.py +0 -0
  138. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/auth/test_auth_service.py +0 -0
  139. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/auth/test_circuit_breaker.py +0 -0
  140. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/auth/test_csrf_state.py +0 -0
  141. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/auth/test_dependencies.py +0 -0
  142. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/auth/test_domain_entities.py +0 -0
  143. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/auth/test_http_utils.py +0 -0
  144. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/auth/test_lockout.py +0 -0
  145. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/auth/test_lockout_concurrent.py +0 -0
  146. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/auth/test_oauth_service_resilience.py +0 -0
  147. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/auth/test_security_comprehensive.py +0 -0
  148. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/auth/test_token_security.py +0 -0
  149. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/conftest.py +0 -0
  150. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/integration/__init__.py +0 -0
  151. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/integration/conftest.py +0 -0
  152. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/integration/test_concurrent_limit_merge.py +0 -0
  153. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/integration/test_concurrent_plan_operations.py +0 -0
  154. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/integration/test_concurrent_token_operations.py +0 -0
  155. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/integration/test_concurrent_user_creation.py +0 -0
  156. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/integration/test_concurrent_user_deactivation.py +0 -0
  157. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/integration/test_limit_boundaries.py +0 -0
  158. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/integration/test_quota_concurrency.py +0 -0
  159. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/integration/test_token_cleanup.py +0 -0
  160. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/integration/test_token_repository.py +0 -0
  161. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/integration/test_usage_periods.py +0 -0
  162. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/integration/test_user_repository.py +0 -0
  163. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/plans/__init__.py +0 -0
  164. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/plans/test_dependencies.py +0 -0
  165. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/plans/test_domain_entities.py +0 -0
  166. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/plans/test_period_edge_cases.py +0 -0
  167. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/plans/test_plan_service.py +0 -0
  168. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/rbac/__init__.py +0 -0
  169. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/rbac/test_permission_cache.py +0 -0
  170. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/rbac/test_permission_cache_concurrent.py +0 -0
  171. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/rbac/test_rbac_cache_stampede.py +0 -0
  172. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/rbac/test_rbac_service.py +0 -0
  173. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/shared/test_audit_pii_masking.py +0 -0
  174. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/shared/test_circuit_breaker_concurrent.py +0 -0
  175. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/shared/test_cleanup_scheduler_concurrent.py +0 -0
  176. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/shared/test_config_validation.py +0 -0
  177. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/shared/test_exception_handlers.py +0 -0
  178. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/shared/test_http_utils_security.py +0 -0
  179. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/shared/test_rate_limiter.py +0 -0
  180. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/shared/test_rate_limiter_concurrent.py +0 -0
  181. {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/shared/test_state_store_concurrent.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: identity-plan-kit
3
- Version: 0.3.2
3
+ Version: 0.3.3
4
4
  Summary: Modern FastAPI library for authentication, RBAC, subscription plans, and usage tracking
5
5
  Author-email: harut <harut.avetisyan2002@gmail.com>
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "identity-plan-kit"
3
- version = "0.3.2"
3
+ version = "0.3.3"
4
4
  description = "Modern FastAPI library for authentication, RBAC, subscription plans, and usage tracking"
5
5
  readme = "README.md"
6
6
  authors = [
@@ -140,7 +140,7 @@ testpaths = ["tests"]
140
140
  addopts = "-v --tb=short"
141
141
 
142
142
  [tool.bumpversion]
143
- current_version = "0.3.2"
143
+ current_version = "0.3.3"
144
144
  parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
145
145
  serialize = ["{major}.{minor}.{patch}"]
146
146
  tag = true
@@ -243,7 +243,14 @@ class IdentityPlanKitConfig(BaseSettings):
243
243
  default=60,
244
244
  ge=0,
245
245
  le=3600,
246
- description="Permission cache TTL (0 to disable)",
246
+ description="Permission cache TTL in seconds (0 to disable)",
247
+ )
248
+ plan_cache_ttl_seconds: int = Field(
249
+ default=300,
250
+ ge=0,
251
+ le=3600,
252
+ description="Plan cache TTL in seconds (0 to disable). "
253
+ "Applies to both plan data and user plan assignments.",
247
254
  )
248
255
 
249
256
  # Redis (for distributed deployments)
@@ -356,12 +356,17 @@ class IdentityPlanKit:
356
356
  self._plan_service = PlanService(
357
357
  self._config,
358
358
  self._session_factory,
359
+ plan_cache_ttl_seconds=self._config.plan_cache_ttl_seconds,
360
+ user_plan_cache_ttl_seconds=self._config.plan_cache_ttl_seconds,
361
+ redis_url=self._config.redis_url,
362
+ require_redis=self._config.require_redis or False,
359
363
  state_store_manager=get_state_store_manager(),
360
364
  authorization_callback=self._authorization_callback,
361
365
  )
362
366
 
363
367
  # Connect service backends (Redis cache, etc.)
364
368
  await self._rbac_service.startup()
369
+ await self._plan_service.startup()
365
370
 
366
371
  # Initialize health checker with component checks
367
372
  self._health_checker = init_health_checker(version=__version__)
@@ -424,6 +429,9 @@ class IdentityPlanKit:
424
429
  if self._rbac_service:
425
430
  await self._rbac_service.shutdown()
426
431
 
432
+ if self._plan_service:
433
+ await self._plan_service.shutdown()
434
+
427
435
  await close_state_store()
428
436
 
429
437
  # Only close database if we manage it (not external session factory)