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.
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/PKG-INFO +1 -1
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/pyproject.toml +2 -2
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/config.py +8 -1
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/kit.py +8 -0
- identity_plan_kit-0.3.3/src/identity_plan_kit/plans/cache/plan_cache.py +683 -0
- identity_plan_kit-0.3.3/src/identity_plan_kit/plans/cache/user_plan_cache.py +583 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/services/plan_service.py +61 -5
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/integration/test_plan_cache_race.py +3 -2
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/plans/test_plan_cache_concurrent.py +9 -3
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/uv.lock +1 -1
- identity_plan_kit-0.3.2/src/identity_plan_kit/plans/cache/plan_cache.py +0 -323
- identity_plan_kit-0.3.2/src/identity_plan_kit/plans/cache/user_plan_cache.py +0 -205
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/.gitignore +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/Makefile +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/README.md +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/alembic/env.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/alembic/script.py.mako +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/alembic/versions/20250124_000000_initial_schema.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/alembic/versions/20250127_000000_add_password_hash.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/alembic.ini +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/examples/integration/__init__.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/examples/integration/fastapi_integration.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/examples/integration/sample_alembic_env.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/examples/integration/webhook_integration.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/examples/playing/admin_usage.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/examples/playing/basic_usage.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/examples/playing/custom_error_formats.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/examples/playing/extending_models.html +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/examples/playing/extension_example.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/examples/prod/.env.production.example +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/examples/prod/Dockerfile +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/examples/prod/docker-compose.yml +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/examples/prod/nginx.conf +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/examples/prod/production_setup.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/examples/prod/prometheus.yml +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/loadtests/README.md +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/loadtests/__init__.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/loadtests/config.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/loadtests/locustfile.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/loadtests/test_auth.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/loadtests/test_database_stress.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/loadtests/test_mixed_scenarios.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/loadtests/test_plans_quota.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/loadtests/test_quota_direct.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/loadtests/test_rbac_cache.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/loadtests/utils.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/__init__.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/admin/__init__.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/admin/auth.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/admin/views.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/__init__.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/dependencies.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/domain/__init__.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/domain/entities.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/domain/exceptions.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/dto/__init__.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/dto/requests.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/dto/responses.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/handlers/__init__.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/handlers/oauth_routes.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/models/__init__.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/models/refresh_token.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/models/user.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/models/user_provider.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/repositories/__init__.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/repositories/token_repo.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/repositories/user_repo.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/services/__init__.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/services/auth_service.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/services/oauth_service.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/auth/uow.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/cli.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/migrations.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/__init__.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/cache/__init__.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/dependencies.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/domain/__init__.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/domain/entities.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/domain/exceptions.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/dto/__init__.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/dto/responses.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/dto/usage.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/handlers/__init__.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/handlers/plan_routes.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/models/__init__.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/models/feature.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/models/feature_usage.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/models/plan.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/models/plan_limit.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/models/plan_permission.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/models/user_plan.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/repositories/__init__.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/repositories/plan_repo.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/repositories/usage_repo.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/services/__init__.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/plans/uow.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/rbac/__init__.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/rbac/cache/__init__.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/rbac/cache/permission_cache.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/rbac/dependencies.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/rbac/domain/__init__.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/rbac/domain/entities.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/rbac/domain/exceptions.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/rbac/models/__init__.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/rbac/models/permission.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/rbac/models/role.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/rbac/models/role_permission.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/rbac/repositories/__init__.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/rbac/repositories/rbac_repo.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/rbac/services/__init__.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/rbac/services/rbac_service.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/rbac/uow.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/README.md +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/__init__.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/audit.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/circuit_breaker.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/cleanup_scheduler.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/database.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/error_formatter.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/exception_handlers.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/exceptions.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/graceful_shutdown.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/health.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/http_utils.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/lockout.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/logging.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/metrics.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/models.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/rate_limiter.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/request_id.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/schemas.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/security.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/state_store.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/uow.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/src/identity_plan_kit/shared/uuid7.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/__init__.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/auth/__init__.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/auth/test_auth_service.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/auth/test_circuit_breaker.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/auth/test_csrf_state.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/auth/test_dependencies.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/auth/test_domain_entities.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/auth/test_http_utils.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/auth/test_lockout.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/auth/test_lockout_concurrent.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/auth/test_oauth_service_resilience.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/auth/test_security_comprehensive.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/auth/test_token_security.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/conftest.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/integration/__init__.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/integration/conftest.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/integration/test_concurrent_limit_merge.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/integration/test_concurrent_plan_operations.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/integration/test_concurrent_token_operations.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/integration/test_concurrent_user_creation.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/integration/test_concurrent_user_deactivation.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/integration/test_limit_boundaries.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/integration/test_quota_concurrency.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/integration/test_token_cleanup.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/integration/test_token_repository.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/integration/test_usage_periods.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/integration/test_user_repository.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/plans/__init__.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/plans/test_dependencies.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/plans/test_domain_entities.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/plans/test_period_edge_cases.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/plans/test_plan_service.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/rbac/__init__.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/rbac/test_permission_cache.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/rbac/test_permission_cache_concurrent.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/rbac/test_rbac_cache_stampede.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/rbac/test_rbac_service.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/shared/test_audit_pii_masking.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/shared/test_circuit_breaker_concurrent.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/shared/test_cleanup_scheduler_concurrent.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/shared/test_config_validation.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/shared/test_exception_handlers.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/shared/test_http_utils_security.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/shared/test_rate_limiter.py +0 -0
- {identity_plan_kit-0.3.2 → identity_plan_kit-0.3.3}/tests/shared/test_rate_limiter_concurrent.py +0 -0
- {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
|
[project]
|
|
2
2
|
name = "identity-plan-kit"
|
|
3
|
-
version = "0.3.
|
|
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.
|
|
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)
|