csrd-utils 0.3.71__tar.gz → 0.3.73__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 (135) hide show
  1. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/PKG-INFO +1 -1
  2. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/pyproject.toml +1 -1
  3. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/__main__.py +5 -0
  4. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-app-service/cookiecutter.json +1 -0
  5. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/README.md +3 -0
  6. csrd_utils-0.3.73/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/delegates/__init__.py +4 -0
  7. csrd_utils-0.3.73/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/delegates/auth_delegate.py +11 -0
  8. csrd_utils-0.3.73/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/delegates/identity_delegate.py +11 -0
  9. csrd_utils-0.3.73/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/dependencies/__init__.py +9 -0
  10. csrd_utils-0.3.73/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/dependencies/auth_passthrough.py +25 -0
  11. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/dependencies/auth_service.py +11 -4
  12. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/requirements.txt +1 -0
  13. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/settings.py +1 -0
  14. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/unversioned/__init__.py +2 -1
  15. csrd_utils-0.3.73/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/unversioned/auth_service_view.py +28 -0
  16. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/unversioned/items_view.py +1 -1
  17. csrd_utils-0.3.71/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/dependencies/__init__.py +0 -3
  18. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/.gitignore +0 -0
  19. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/README.md +0 -0
  20. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/__init__.py +0 -0
  21. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/audit.py +0 -0
  22. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/augmentor.py +0 -0
  23. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/cluster.py +0 -0
  24. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/doctor.py +0 -0
  25. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/caching/conftest.fragment.py +0 -0
  26. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/caching/docker-compose.fragment.yaml +0 -0
  27. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/caching/manifest.yaml +0 -0
  28. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/caching/requirements.fragment +0 -0
  29. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/caching/settings.fragment.py +0 -0
  30. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/caching/src/app/cache.py +0 -0
  31. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/caching/tests/test_cache.py +0 -0
  32. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/logging/conftest.fragment.py +0 -0
  33. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/logging/manifest.yaml +0 -0
  34. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/logging/requirements.fragment +0 -0
  35. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/logging/settings.fragment.py +0 -0
  36. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/logging/src/app/middleware/logging.py +0 -0
  37. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/logging/tests/test_logging_middleware.py +0 -0
  38. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/metrics/conftest.fragment.py +0 -0
  39. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/metrics/docker-compose.fragment.yaml +0 -0
  40. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/metrics/manifest.yaml +0 -0
  41. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/metrics/requirements.fragment +0 -0
  42. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/metrics/settings.fragment.py +0 -0
  43. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/metrics/src/app/middleware/metrics.py +0 -0
  44. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/metrics/tests/test_metrics_middleware.py +0 -0
  45. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/tracing/conftest.fragment.py +0 -0
  46. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/tracing/manifest.yaml +0 -0
  47. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/tracing/requirements.fragment +0 -0
  48. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/tracing/settings.fragment.py +0 -0
  49. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/tracing/src/app/middleware/tracing.py +0 -0
  50. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/tracing/tests/test_tracing_middleware.py +0 -0
  51. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/workers/conftest.fragment.py +0 -0
  52. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/workers/docker-compose.fragment.yaml +0 -0
  53. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/workers/manifest.yaml +0 -0
  54. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/workers/requirements.fragment +0 -0
  55. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/workers/settings.fragment.py +0 -0
  56. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/workers/src/app/workers/__init__.py +0 -0
  57. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/workers/src/app/workers/celery_app.py +0 -0
  58. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/workers/src/app/workers/tasks.py +0 -0
  59. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/workers/tests/test_workers.py +0 -0
  60. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/fragments.py +0 -0
  61. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/generator.py +0 -0
  62. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/resources.py +0 -0
  63. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/README.md +0 -0
  64. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/cookiecutter.json +0 -0
  65. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/hooks/post_gen_project.py +0 -0
  66. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/.cookiecutterignore +0 -0
  67. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/.dockerignore +0 -0
  68. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/Dockerfile +0 -0
  69. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/README.md +0 -0
  70. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/__init__.py +0 -0
  71. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/cache.py +0 -0
  72. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/delegates/__init__.py +0 -0
  73. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/delegates/upstreams.py +0 -0
  74. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/__init__.py +0 -0
  75. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/auth_service.py +0 -0
  76. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/delegates.py +0 -0
  77. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/item_repository.py +0 -0
  78. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/worker_broker.py +0 -0
  79. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/docker-compose.yml +0 -0
  80. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/middleware/__init__.py +0 -0
  81. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/middleware/logging.py +0 -0
  82. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/repositories/__init__.py +0 -0
  83. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/repositories/item_repository.py +0 -0
  84. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/requirements.txt +0 -0
  85. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/settings.py +0 -0
  86. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/__init__.py +0 -0
  87. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/acceptance/__init__.py +0 -0
  88. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/acceptance/test_logging_middleware.py +0 -0
  89. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/conftest.py +0 -0
  90. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/test_items.py +0 -0
  91. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/__init__.py +0 -0
  92. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_cache.py +0 -0
  93. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_database_settings.py +0 -0
  94. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_delegates.py +0 -0
  95. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_settings_contracts.py +0 -0
  96. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_worker_broker.py +0 -0
  97. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/views/__init__.py +0 -0
  98. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/views/unversioned/__init__.py +0 -0
  99. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/views/unversioned/health_view.py +0 -0
  100. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/views/unversioned/items_view.py +0 -0
  101. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/workers/__init__.py +0 -0
  102. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/workers/tasks.py +0 -0
  103. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/.dockerignore +0 -0
  104. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/Dockerfile +0 -0
  105. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/__init__.py +0 -0
  106. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/__init__.py +0 -0
  107. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/unversioned/health_view.py +0 -0
  108. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-auth-service/cookiecutter.json +0 -0
  109. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/.dockerignore +0 -0
  110. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/Dockerfile +0 -0
  111. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/README.md +0 -0
  112. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/__init__.py +0 -0
  113. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/dependencies/__init__.py +0 -0
  114. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/repositories/__init__.py +0 -0
  115. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/repositories/token_repository.py +0 -0
  116. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/requirements.txt +0 -0
  117. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/settings.py +0 -0
  118. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/views/__init__.py +0 -0
  119. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/views/unversioned/__init__.py +0 -0
  120. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/views/unversioned/auth_view.py +0 -0
  121. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/views/unversioned/health_view.py +0 -0
  122. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-identity-service/cookiecutter.json +0 -0
  123. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/.dockerignore +0 -0
  124. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/Dockerfile +0 -0
  125. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/README.md +0 -0
  126. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/__init__.py +0 -0
  127. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/dependencies/__init__.py +0 -0
  128. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/repositories/__init__.py +0 -0
  129. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/repositories/user_repository.py +0 -0
  130. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/requirements.txt +0 -0
  131. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/settings.py +0 -0
  132. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/views/__init__.py +0 -0
  133. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/views/unversioned/__init__.py +0 -0
  134. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/views/unversioned/health_view.py +0 -0
  135. {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/views/unversioned/users_view.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: csrd-utils
3
- Version: 0.3.71
3
+ Version: 0.3.73
4
4
  Summary: CLI utilities for csrd service generation and feature augmentation
5
5
  Project-URL: Repository, https://github.com/csrd-api/fastapi-common
6
6
  Project-URL: Documentation, https://github.com/csrd-api/fastapi-common/tree/main/packages/utils
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "csrd-utils"
3
- version = "0.3.71"
3
+ version = "0.3.73"
4
4
  description = "CLI utilities for csrd service generation and feature augmentation"
5
5
  license = { text = "MIT" }
6
6
  requires-python = ">=3.12"
@@ -499,7 +499,12 @@ def _generate_services_from_cluster_spec(
499
499
  elif role == "app":
500
500
  auth_port = next((port_map[n] for n in port_map if "auth" in n), 8081)
501
501
  auth_name = next((n for n in port_map if "auth" in n), "auth-service")
502
+ identity_port = next((port_map[n] for n in port_map if "identity" in n), 8082)
503
+ identity_name = next(
504
+ (n for n in port_map if "identity" in n), "identity-service"
505
+ )
502
506
  extra["auth_service_url"] = f"http://{auth_name}:{auth_port}"
507
+ extra["identity_service_url"] = f"http://{identity_name}:{identity_port}"
503
508
  result = generate_platform_service(
504
509
  name=name,
505
510
  output_dir=workspace_root,
@@ -2,5 +2,6 @@
2
2
  "service_name": "app-service",
3
3
  "port": "8080",
4
4
  "auth_service_url": "http://auth-service:8081",
5
+ "identity_service_url": "http://identity-service:8082",
5
6
  "__service_name_snake": "{{ cookiecutter.service_name | replace('-', '_') }}"
6
7
  }
@@ -5,6 +5,8 @@ Platform app service with auth-guarded item endpoints.
5
5
  ## Endpoints
6
6
 
7
7
  - `GET /health` - liveness probe
8
+ - `POST /signup` - passthrough to identity signup (public)
9
+ - `POST /login` - passthrough to auth token issue (public)
8
10
  - `POST /api/items` - create item (bearer required)
9
11
  - `GET /api/items` - list items (bearer required)
10
12
  - `GET /api/items/{entity_id}` - get item (bearer required)
@@ -17,6 +19,7 @@ Platform app service with auth-guarded item endpoints.
17
19
  | Variable | Default | Description |
18
20
  |---|---|---|
19
21
  | `AUTH_SERVICE_URL` | `{{ cookiecutter.auth_service_url }}` | Auth service verify endpoint base URL |
22
+ | `IDENTITY_SERVICE_URL` | `{{ cookiecutter.identity_service_url }}` | Identity service base URL for signup passthrough |
20
23
 
21
24
  ## Run
22
25
 
@@ -0,0 +1,4 @@
1
+ from .auth_delegate import AuthDelegate
2
+ from .identity_delegate import IdentityDelegate
3
+
4
+ __all__ = ("AuthDelegate", "IdentityDelegate")
@@ -0,0 +1,11 @@
1
+ from csrd.delegate import BaseDelegate
2
+
3
+ from ..settings import settings
4
+
5
+
6
+ class AuthDelegate(BaseDelegate):
7
+ def __init__(self) -> None:
8
+ super().__init__(settings.auth_service_url)
9
+
10
+ async def login(self, username: str, password: str) -> dict[str, object]:
11
+ return await self.post("/api/token", json={"username": username, "password": password})
@@ -0,0 +1,11 @@
1
+ from csrd.delegate import BaseDelegate
2
+
3
+ from ..settings import settings
4
+
5
+
6
+ class IdentityDelegate(BaseDelegate):
7
+ def __init__(self) -> None:
8
+ super().__init__(settings.identity_service_url)
9
+
10
+ async def signup(self, username: str, password: str) -> dict[str, object]:
11
+ return await self.post("/api/signup", json={"username": username, "password": password})
@@ -0,0 +1,9 @@
1
+ from .auth_passthrough import AuthDelegateDep, IdentityDelegateDep
2
+ from .auth_service import VerifiedTokenDep, router_auth
3
+
4
+ __all__ = (
5
+ "AuthDelegateDep",
6
+ "IdentityDelegateDep",
7
+ "VerifiedTokenDep",
8
+ "router_auth",
9
+ )
@@ -0,0 +1,25 @@
1
+ from typing import Annotated
2
+
3
+ from fastapi import Depends
4
+
5
+ from ..delegates import AuthDelegate, IdentityDelegate
6
+
7
+
8
+ def auth_delegate_factory() -> AuthDelegate:
9
+ return AuthDelegate()
10
+
11
+
12
+ def identity_delegate_factory() -> IdentityDelegate:
13
+ return IdentityDelegate()
14
+
15
+
16
+ AuthDelegateDep = Annotated[AuthDelegate, Depends(auth_delegate_factory)]
17
+ IdentityDelegateDep = Annotated[IdentityDelegate, Depends(identity_delegate_factory)]
18
+
19
+
20
+ __all__ = (
21
+ "AuthDelegateDep",
22
+ "IdentityDelegateDep",
23
+ "auth_delegate_factory",
24
+ "identity_delegate_factory",
25
+ )
@@ -2,7 +2,6 @@ from typing import Annotated
2
2
 
3
3
  import httpx
4
4
  from fastapi import Depends, HTTPException, Security
5
- from fastapi.params import Depends as DependsParam
6
5
  from fastapi.requests import Request
7
6
  from fastapi.security import HTTPBearer
8
7
 
@@ -50,12 +49,20 @@ async def _remote_verify(_: Request, token: str) -> UserClaims:
50
49
  _authenticator = CallbackAuthenticator(callback=_remote_verify)
51
50
  _bearer_dep = create_bearer_dependency(_authenticator, token_finder=find_token)
52
51
  _http_bearer_scheme = HTTPBearer()
52
+ _router_scheme_dep = Security(_http_bearer_scheme)
53
+ _router_claims_dep = Depends(_bearer_dep)
53
54
 
54
55
  # For use as a route function parameter annotation.
55
56
  VerifiedTokenDep = Annotated[UserClaims, Security(_bearer_dep)]
56
57
 
57
- # For router-level dependencies: surfaces the Authorize button in Swagger
58
- # and enforces token validation on every route in the router.
59
- router_auth: list[DependsParam] = [Security(_http_bearer_scheme), Depends(_bearer_dep)]
58
+ async def _router_auth_guard(
59
+ _scheme=_router_scheme_dep,
60
+ _claims=_router_claims_dep,
61
+ ) -> None:
62
+ """Composite auth dependency for router-level use."""
63
+
64
+
65
+ # Use as `dependencies=[router_auth]` so adding more deps stays explicit.
66
+ router_auth = Depends(_router_auth_guard)
60
67
 
61
68
  __all__ = ("VerifiedTokenDep", "router_auth")
@@ -3,4 +3,5 @@ uvicorn[standard]>=0.30,<1
3
3
  pydantic-settings>=2.6,<3
4
4
  httpx>=0.27,<1
5
5
  csrd-auth>=0.1.0,<1
6
+ csrd-delegate>=0.1.0,<1
6
7
  csrd-versioning>=0.1.0,<1
@@ -7,6 +7,7 @@ class Settings(BaseSettings):
7
7
  app_name: str = "{{ cookiecutter.service_name }}"
8
8
  port: int = {{ cookiecutter.port }}
9
9
  auth_service_url: str = "{{ cookiecutter.auth_service_url }}"
10
+ identity_service_url: str = "{{ cookiecutter.identity_service_url }}"
10
11
 
11
12
 
12
13
  settings = Settings()
@@ -1,10 +1,11 @@
1
1
  from fastapi import FastAPI
2
2
 
3
- from . import health_view, items_view
3
+ from . import auth_service_view, health_view, items_view
4
4
 
5
5
  unversioned_app = FastAPI(title="{{ cookiecutter.service_name }}")
6
6
 
7
7
  unversioned_app.include_router(health_view.router)
8
+ unversioned_app.include_router(auth_service_view.router)
8
9
  unversioned_app.include_router(items_view.router)
9
10
 
10
11
  __all__ = ("unversioned_app",)
@@ -0,0 +1,28 @@
1
+ from fastapi import APIRouter
2
+ from pydantic import BaseModel
3
+
4
+ from ...dependencies import AuthDelegateDep, IdentityDelegateDep
5
+
6
+ router = APIRouter(tags=["Auth Service"])
7
+
8
+
9
+ class SignupRequest(BaseModel):
10
+ username: str
11
+ password: str
12
+
13
+
14
+ class LoginRequest(BaseModel):
15
+ username: str
16
+ password: str
17
+
18
+
19
+ @router.post("/signup")
20
+ async def signup(payload: SignupRequest, delegate: IdentityDelegateDep) -> dict[str, object]:
21
+ async with delegate:
22
+ return await delegate.signup(payload.username, payload.password)
23
+
24
+
25
+ @router.post("/login")
26
+ async def login(payload: LoginRequest, delegate: AuthDelegateDep) -> dict[str, object]:
27
+ async with delegate:
28
+ return await delegate.login(payload.username, payload.password)
@@ -6,7 +6,7 @@ from pydantic import BaseModel
6
6
 
7
7
  from ...dependencies import router_auth
8
8
 
9
- router = APIRouter(prefix="/api", tags=["Items Endpoints"], dependencies=router_auth)
9
+ router = APIRouter(prefix="/api", tags=["Items Endpoints"], dependencies=[router_auth])
10
10
 
11
11
  _ITEMS: dict[str, dict[str, str]] = {}
12
12
 
@@ -1,3 +0,0 @@
1
- from .auth_service import VerifiedTokenDep, router_auth
2
-
3
- __all__ = ("VerifiedTokenDep", "router_auth")
File without changes
File without changes