csrd-utils 0.3.74__tar.gz → 0.3.75__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 (144) hide show
  1. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/PKG-INFO +1 -1
  2. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/pyproject.toml +1 -1
  3. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/cluster.py +31 -5
  4. csrd_utils-0.3.75/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/models/__init__.py +22 -0
  5. csrd_utils-0.3.75/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/models/auth_service.py +11 -0
  6. csrd_utils-0.3.75/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/models/items.py +36 -0
  7. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/unversioned/auth_service_view.py +1 -12
  8. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/unversioned/items_view.py +9 -35
  9. csrd_utils-0.3.75/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/models/__init__.py +9 -0
  10. csrd_utils-0.3.75/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/models/auth.py +34 -0
  11. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/views/unversioned/auth_view.py +1 -35
  12. csrd_utils-0.3.75/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/models/__init__.py +17 -0
  13. csrd_utils-0.3.75/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/models/users.py +37 -0
  14. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/views/unversioned/users_view.py +8 -38
  15. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/.gitignore +0 -0
  16. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/README.md +0 -0
  17. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/__init__.py +0 -0
  18. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/__main__.py +0 -0
  19. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/audit.py +0 -0
  20. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/augmentor.py +0 -0
  21. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/doctor.py +0 -0
  22. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/caching/conftest.fragment.py +0 -0
  23. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/caching/docker-compose.fragment.yaml +0 -0
  24. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/caching/manifest.yaml +0 -0
  25. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/caching/requirements.fragment +0 -0
  26. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/caching/settings.fragment.py +0 -0
  27. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/caching/src/app/cache.py +0 -0
  28. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/caching/tests/test_cache.py +0 -0
  29. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/logging/conftest.fragment.py +0 -0
  30. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/logging/manifest.yaml +0 -0
  31. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/logging/requirements.fragment +0 -0
  32. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/logging/settings.fragment.py +0 -0
  33. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/logging/src/app/middleware/logging.py +0 -0
  34. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/logging/tests/test_logging_middleware.py +0 -0
  35. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/metrics/conftest.fragment.py +0 -0
  36. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/metrics/docker-compose.fragment.yaml +0 -0
  37. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/metrics/manifest.yaml +0 -0
  38. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/metrics/requirements.fragment +0 -0
  39. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/metrics/settings.fragment.py +0 -0
  40. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/metrics/src/app/middleware/metrics.py +0 -0
  41. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/metrics/tests/test_metrics_middleware.py +0 -0
  42. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/tracing/conftest.fragment.py +0 -0
  43. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/tracing/manifest.yaml +0 -0
  44. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/tracing/requirements.fragment +0 -0
  45. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/tracing/settings.fragment.py +0 -0
  46. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/tracing/src/app/middleware/tracing.py +0 -0
  47. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/tracing/tests/test_tracing_middleware.py +0 -0
  48. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/workers/conftest.fragment.py +0 -0
  49. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/workers/docker-compose.fragment.yaml +0 -0
  50. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/workers/manifest.yaml +0 -0
  51. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/workers/requirements.fragment +0 -0
  52. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/workers/settings.fragment.py +0 -0
  53. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/workers/src/app/workers/__init__.py +0 -0
  54. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/workers/src/app/workers/celery_app.py +0 -0
  55. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/workers/src/app/workers/tasks.py +0 -0
  56. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/features/workers/tests/test_workers.py +0 -0
  57. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/fragments.py +0 -0
  58. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/generator.py +0 -0
  59. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/resources.py +0 -0
  60. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/README.md +0 -0
  61. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/cookiecutter.json +0 -0
  62. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/hooks/post_gen_project.py +0 -0
  63. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/.cookiecutterignore +0 -0
  64. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/.dockerignore +0 -0
  65. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/Dockerfile +0 -0
  66. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/README.md +0 -0
  67. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/__init__.py +0 -0
  68. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/cache.py +0 -0
  69. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/delegates/__init__.py +0 -0
  70. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/delegates/upstreams.py +0 -0
  71. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/__init__.py +0 -0
  72. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/auth_service.py +0 -0
  73. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/delegates.py +0 -0
  74. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/item_repository.py +0 -0
  75. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/worker_broker.py +0 -0
  76. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/docker-compose.yml +0 -0
  77. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/middleware/__init__.py +0 -0
  78. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/middleware/logging.py +0 -0
  79. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/repositories/__init__.py +0 -0
  80. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/repositories/item_repository.py +0 -0
  81. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/requirements.txt +0 -0
  82. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/settings.py +0 -0
  83. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/__init__.py +0 -0
  84. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/acceptance/__init__.py +0 -0
  85. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/acceptance/test_logging_middleware.py +0 -0
  86. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/conftest.py +0 -0
  87. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/test_items.py +0 -0
  88. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/__init__.py +0 -0
  89. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_cache.py +0 -0
  90. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_database_settings.py +0 -0
  91. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_delegates.py +0 -0
  92. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_settings_contracts.py +0 -0
  93. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_worker_broker.py +0 -0
  94. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/views/__init__.py +0 -0
  95. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/views/unversioned/__init__.py +0 -0
  96. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/views/unversioned/health_view.py +0 -0
  97. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/views/unversioned/items_view.py +0 -0
  98. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/workers/__init__.py +0 -0
  99. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/workers/tasks.py +0 -0
  100. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-app-service/cookiecutter.json +0 -0
  101. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/.dockerignore +0 -0
  102. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/Dockerfile +0 -0
  103. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/README.md +0 -0
  104. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/__init__.py +0 -0
  105. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/delegates/__init__.py +0 -0
  106. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/delegates/auth_delegate.py +0 -0
  107. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/delegates/identity_delegate.py +0 -0
  108. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/dependencies/__init__.py +0 -0
  109. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/dependencies/auth_passthrough.py +0 -0
  110. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/dependencies/auth_service.py +0 -0
  111. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/dependencies/item_repository.py +0 -0
  112. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/repositories/__init__.py +0 -0
  113. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/repositories/item_repository.py +0 -0
  114. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/requirements.txt +0 -0
  115. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/settings.py +0 -0
  116. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/__init__.py +0 -0
  117. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/unversioned/__init__.py +0 -0
  118. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/unversioned/health_view.py +0 -0
  119. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-auth-service/cookiecutter.json +0 -0
  120. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/.dockerignore +0 -0
  121. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/Dockerfile +0 -0
  122. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/README.md +0 -0
  123. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/__init__.py +0 -0
  124. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/dependencies/__init__.py +0 -0
  125. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/repositories/__init__.py +0 -0
  126. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/repositories/token_repository.py +0 -0
  127. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/requirements.txt +0 -0
  128. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/settings.py +0 -0
  129. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/views/__init__.py +0 -0
  130. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/views/unversioned/__init__.py +0 -0
  131. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/views/unversioned/health_view.py +0 -0
  132. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-identity-service/cookiecutter.json +0 -0
  133. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/.dockerignore +0 -0
  134. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/Dockerfile +0 -0
  135. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/README.md +0 -0
  136. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/__init__.py +0 -0
  137. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/dependencies/__init__.py +0 -0
  138. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/repositories/__init__.py +0 -0
  139. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/repositories/user_repository.py +0 -0
  140. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/requirements.txt +0 -0
  141. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/settings.py +0 -0
  142. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/views/__init__.py +0 -0
  143. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/views/unversioned/__init__.py +0 -0
  144. {csrd_utils-0.3.74 → csrd_utils-0.3.75}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/views/unversioned/health_view.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: csrd-utils
3
- Version: 0.3.74
3
+ Version: 0.3.75
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.74"
3
+ version = "0.3.75"
4
4
  description = "CLI utilities for csrd service generation and feature augmentation"
5
5
  license = { text = "MIT" }
6
6
  requires-python = ">=3.12"
@@ -35,15 +35,21 @@ PRESETS: dict[str, list[ServiceSpec]] = {
35
35
  "type": "platform",
36
36
  "role": "app",
37
37
  "port": 8080,
38
- "requires": ["auth-service"],
38
+ "requires": ["auth-service", "postgres"],
39
+ },
40
+ {
41
+ "name": "auth-service",
42
+ "type": "platform",
43
+ "role": "auth",
44
+ "port": 8081,
45
+ "requires": ["postgres"],
39
46
  },
40
- {"name": "auth-service", "type": "platform", "role": "auth", "port": 8081, "requires": []},
41
47
  {
42
48
  "name": "identity-service",
43
49
  "type": "platform",
44
50
  "role": "identity",
45
51
  "port": 8082,
46
- "requires": ["auth-service"],
52
+ "requires": ["auth-service", "postgres"],
47
53
  },
48
54
  ],
49
55
  # "minimal-cluster": [
@@ -257,7 +263,7 @@ def _service_environment(service: ServiceSpec, services: list[ServiceSpec]) -> d
257
263
  if service["type"] == "db":
258
264
  db = service.get("database")
259
265
  if db == "sqlite":
260
- env["DB_PATH"] = "./service.db"
266
+ env["DB_PATH"] = "/data/service.db"
261
267
  elif db == "maria":
262
268
  env["DB_HOST"] = "mariadb"
263
269
  env["DB_PORT"] = "3306"
@@ -294,7 +300,11 @@ def _service_environment(service: ServiceSpec, services: list[ServiceSpec]) -> d
294
300
 
295
301
  role = str(service.get("role", "")).strip()
296
302
  if service["type"] == "platform" and role in {"app", "auth", "identity"}:
297
- env["DB_PATH"] = "./platform.db"
303
+ env["DB_HOST"] = "postgres"
304
+ env["DB_PORT"] = "5432"
305
+ env["DB_USER"] = "${DB_USER:-service_user}"
306
+ env["DB_PASSWORD"] = "${DB_PASSWORD:-change_me}"
307
+ env["DB_NAME"] = "${DB_NAME:-service_db}"
298
308
 
299
309
  return env
300
310
 
@@ -303,6 +313,7 @@ def render_compose(spec: ClusterSpec) -> dict[str, Any]:
303
313
  services = spec["services"]
304
314
  infra = _infer_infra(services)
305
315
  compose: dict[str, Any] = {"services": {}}
316
+ compose_volumes: dict[str, dict[str, str]] = {}
306
317
 
307
318
  for service in services:
308
319
  name = str(service["name"])
@@ -345,6 +356,18 @@ def render_compose(spec: ClusterSpec) -> dict[str, Any]:
345
356
  "ports": [f"{service['port']}:{service['port']}"],
346
357
  "environment": _service_environment(service, services),
347
358
  }
359
+
360
+ role = str(service.get("role", "")).strip()
361
+ volume_name: str | None = None
362
+ if service["type"] == "db" and service.get("database") == "sqlite":
363
+ volume_name = f"{name}-data"
364
+ elif service["type"] == "platform" and role in {"app", "auth", "identity"}:
365
+ volume_name = None
366
+
367
+ if volume_name is not None:
368
+ app_service["volumes"] = [f"{volume_name}:/data"]
369
+ compose_volumes[volume_name] = {}
370
+
348
371
  if depends_on:
349
372
  app_service["depends_on"] = depends_on
350
373
  compose["services"][name] = app_service
@@ -412,6 +435,9 @@ def render_compose(spec: ClusterSpec) -> dict[str, Any]:
412
435
  },
413
436
  }
414
437
 
438
+ if compose_volumes:
439
+ compose["volumes"] = compose_volumes
440
+
415
441
  return compose
416
442
 
417
443
 
@@ -0,0 +1,22 @@
1
+ from .auth_service import LoginRequest, SignupRequest
2
+ from .items import (
3
+ CreateItemRequest,
4
+ ItemDeleteResponse,
5
+ ItemListResponse,
6
+ ItemResponse,
7
+ ItemUpdateResponse,
8
+ ItemUpsertResponse,
9
+ UpdateItemRequest,
10
+ )
11
+
12
+ __all__ = (
13
+ "CreateItemRequest",
14
+ "ItemDeleteResponse",
15
+ "ItemListResponse",
16
+ "ItemResponse",
17
+ "ItemUpdateResponse",
18
+ "ItemUpsertResponse",
19
+ "LoginRequest",
20
+ "SignupRequest",
21
+ "UpdateItemRequest",
22
+ )
@@ -0,0 +1,11 @@
1
+ from pydantic import BaseModel
2
+
3
+
4
+ class SignupRequest(BaseModel):
5
+ username: str
6
+ password: str
7
+
8
+
9
+ class LoginRequest(BaseModel):
10
+ username: str
11
+ password: str
@@ -0,0 +1,36 @@
1
+ from pydantic import BaseModel
2
+
3
+
4
+ class CreateItemRequest(BaseModel):
5
+ name: str
6
+
7
+
8
+ class UpdateItemRequest(BaseModel):
9
+ name: str
10
+
11
+
12
+ class ItemResponse(BaseModel):
13
+ id: str
14
+ name: str
15
+ created_at: str
16
+
17
+
18
+ class ItemListResponse(BaseModel):
19
+ items: list[ItemResponse]
20
+
21
+
22
+ class ItemUpdateResponse(BaseModel):
23
+ id: str
24
+ name: str
25
+ updated: bool
26
+
27
+
28
+ class ItemUpsertResponse(BaseModel):
29
+ id: str
30
+ name: str
31
+ rows_affected: int
32
+
33
+
34
+ class ItemDeleteResponse(BaseModel):
35
+ id: str
36
+ deleted: bool
@@ -1,21 +1,10 @@
1
1
  from fastapi import APIRouter
2
- from pydantic import BaseModel
3
2
 
4
3
  from ...dependencies import AuthDelegateDep, IdentityDelegateDep
4
+ from ...models import LoginRequest, SignupRequest
5
5
 
6
6
  router = APIRouter(tags=["Auth Service"])
7
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
8
  @router.post("/signup")
20
9
  async def signup(payload: SignupRequest, delegate: IdentityDelegateDep) -> dict[str, object]:
21
10
  async with delegate:
@@ -1,44 +1,18 @@
1
1
  from fastapi import APIRouter, HTTPException
2
- from pydantic import BaseModel
3
2
 
4
3
  from ...dependencies import ItemRepositoryDep, router_auth
4
+ from ...models import (
5
+ CreateItemRequest,
6
+ ItemDeleteResponse,
7
+ ItemListResponse,
8
+ ItemResponse,
9
+ ItemUpdateResponse,
10
+ ItemUpsertResponse,
11
+ UpdateItemRequest,
12
+ )
5
13
 
6
14
  router = APIRouter(prefix="/api", tags=["Items Endpoints"], dependencies=[router_auth])
7
15
 
8
- class CreateItemRequest(BaseModel):
9
- name: str
10
-
11
-
12
- class UpdateItemRequest(BaseModel):
13
- name: str
14
-
15
-
16
- class ItemResponse(BaseModel):
17
- id: str
18
- name: str
19
- created_at: str
20
-
21
-
22
- class ItemListResponse(BaseModel):
23
- items: list[ItemResponse]
24
-
25
-
26
- class ItemUpdateResponse(BaseModel):
27
- id: str
28
- name: str
29
- updated: bool
30
-
31
-
32
- class ItemUpsertResponse(BaseModel):
33
- id: str
34
- name: str
35
- rows_affected: int
36
-
37
-
38
- class ItemDeleteResponse(BaseModel):
39
- id: str
40
- deleted: bool
41
-
42
16
 
43
17
  @router.post("/items", response_model=ItemResponse)
44
18
  async def create_item(
@@ -0,0 +1,9 @@
1
+ from .auth import TokenRequest, TokenResponse, TokenVerifyResponse, VerifyClaims, VerifyRequest
2
+
3
+ __all__ = (
4
+ "TokenRequest",
5
+ "TokenResponse",
6
+ "TokenVerifyResponse",
7
+ "VerifyClaims",
8
+ "VerifyRequest",
9
+ )
@@ -0,0 +1,34 @@
1
+ from pydantic import BaseModel
2
+
3
+
4
+ class TokenRequest(BaseModel):
5
+ username: str
6
+ password: str
7
+
8
+
9
+ class VerifyRequest(BaseModel):
10
+ token: str
11
+
12
+
13
+ class TokenResponse(BaseModel):
14
+ """JWT token issuance response."""
15
+
16
+ access_token: str
17
+ token_type: str
18
+ expires_in: int
19
+
20
+
21
+ class VerifyClaims(BaseModel):
22
+ """JWT claim fields returned by verify endpoint."""
23
+
24
+ sub: str
25
+ user_name: str
26
+ authorities: list[str]
27
+ roles: list[str]
28
+
29
+
30
+ class TokenVerifyResponse(BaseModel):
31
+ """Token verification response."""
32
+
33
+ valid: bool
34
+ claims: VerifyClaims
@@ -3,49 +3,15 @@ from datetime import UTC, datetime, timedelta
3
3
  import httpx
4
4
  import jwt
5
5
  from fastapi import APIRouter, HTTPException, Request
6
- from pydantic import BaseModel
7
6
 
8
7
  from csrd.auth import JWTAuthenticator, StaticKeyProvider
9
8
 
10
9
  from ...dependencies import TokenRepositoryDep
10
+ from ...models import TokenRequest, TokenResponse, TokenVerifyResponse, VerifyClaims, VerifyRequest
11
11
  from ...settings import settings
12
12
 
13
13
  router = APIRouter(prefix="/api", tags=["Auth Endpoints"])
14
14
 
15
-
16
- class TokenRequest(BaseModel):
17
- username: str
18
- password: str
19
-
20
-
21
- class VerifyRequest(BaseModel):
22
- token: str
23
-
24
-
25
- class TokenResponse(BaseModel):
26
- """JWT token issuance response."""
27
-
28
- access_token: str
29
- token_type: str
30
- expires_in: int
31
-
32
-
33
- class VerifyClaims(BaseModel):
34
- """JWT claim fields returned by verify endpoint."""
35
-
36
- sub: str
37
- user_name: str
38
- authorities: list[str]
39
- roles: list[str]
40
-
41
-
42
- class TokenVerifyResponse(BaseModel):
43
- """Token verification response."""
44
-
45
- valid: bool
46
- claims: VerifyClaims
47
-
48
-
49
15
  def _make_verifier() -> JWTAuthenticator:
50
16
  return JWTAuthenticator(
51
17
  key=StaticKeyProvider(settings.jwt_secret),
@@ -0,0 +1,17 @@
1
+ from .users import (
2
+ AssignRoleRequest,
3
+ SignupRequest,
4
+ UserInfo,
5
+ UserRolesResponse,
6
+ VerifyCredentialsRequest,
7
+ VerifyCredentialsResponse,
8
+ )
9
+
10
+ __all__ = (
11
+ "AssignRoleRequest",
12
+ "SignupRequest",
13
+ "UserInfo",
14
+ "UserRolesResponse",
15
+ "VerifyCredentialsRequest",
16
+ "VerifyCredentialsResponse",
17
+ )
@@ -0,0 +1,37 @@
1
+ from pydantic import BaseModel
2
+
3
+
4
+ class SignupRequest(BaseModel):
5
+ username: str
6
+ password: str
7
+
8
+
9
+ class VerifyCredentialsRequest(BaseModel):
10
+ username: str
11
+ password: str
12
+
13
+
14
+ class AssignRoleRequest(BaseModel):
15
+ role: str
16
+
17
+
18
+ class UserInfo(BaseModel):
19
+ """User information."""
20
+
21
+ id: str
22
+ username: str
23
+ created_at: str
24
+
25
+
26
+ class UserRolesResponse(BaseModel):
27
+ """User roles response."""
28
+
29
+ user_id: str
30
+ roles: list[str]
31
+
32
+
33
+ class VerifyCredentialsResponse(BaseModel):
34
+ """Credentials verification response."""
35
+
36
+ valid: bool
37
+ user: UserInfo
@@ -1,47 +1,17 @@
1
1
  from fastapi import APIRouter, HTTPException
2
- from pydantic import BaseModel
3
2
 
4
3
  from ...dependencies import UserRepositoryDep
4
+ from ...models import (
5
+ AssignRoleRequest,
6
+ SignupRequest,
7
+ UserInfo,
8
+ UserRolesResponse,
9
+ VerifyCredentialsRequest,
10
+ VerifyCredentialsResponse,
11
+ )
5
12
 
6
13
  router = APIRouter(prefix="/api", tags=["Identity Endpoints"])
7
14
 
8
-
9
- class SignupRequest(BaseModel):
10
- username: str
11
- password: str
12
-
13
-
14
- class VerifyCredentialsRequest(BaseModel):
15
- username: str
16
- password: str
17
-
18
-
19
- class AssignRoleRequest(BaseModel):
20
- role: str
21
-
22
-
23
- class UserInfo(BaseModel):
24
- """User information."""
25
-
26
- id: str
27
- username: str
28
- created_at: str
29
-
30
-
31
- class UserRolesResponse(BaseModel):
32
- """User roles response."""
33
-
34
- user_id: str
35
- roles: list[str]
36
-
37
-
38
- class VerifyCredentialsResponse(BaseModel):
39
- """Credentials verification response."""
40
-
41
- valid: bool
42
- user: UserInfo
43
-
44
-
45
15
  @router.get("/users/{user_id}", response_model=UserInfo)
46
16
  async def get_user(user_id: str, repo: UserRepositoryDep) -> UserInfo:
47
17
  user = await repo.get_user(user_id)
File without changes
File without changes