csrd-utils 0.3.74__tar.gz → 0.3.76__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.
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/PKG-INFO +1 -1
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/pyproject.toml +1 -1
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/cluster.py +31 -5
- csrd_utils-0.3.76/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/models/__init__.py +22 -0
- csrd_utils-0.3.76/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/models/auth_service.py +11 -0
- csrd_utils-0.3.76/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/models/items.py +36 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/unversioned/auth_service_view.py +1 -12
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/unversioned/items_view.py +9 -35
- csrd_utils-0.3.76/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/models/__init__.py +9 -0
- csrd_utils-0.3.76/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/models/auth.py +34 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/views/unversioned/auth_view.py +1 -35
- csrd_utils-0.3.76/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/models/__init__.py +17 -0
- csrd_utils-0.3.76/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/models/users.py +37 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/views/unversioned/users_view.py +8 -38
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/.gitignore +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/README.md +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/__init__.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/__main__.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/audit.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/augmentor.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/doctor.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/caching/conftest.fragment.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/caching/docker-compose.fragment.yaml +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/caching/manifest.yaml +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/caching/requirements.fragment +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/caching/settings.fragment.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/caching/src/app/cache.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/caching/tests/test_cache.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/logging/conftest.fragment.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/logging/manifest.yaml +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/logging/requirements.fragment +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/logging/settings.fragment.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/logging/src/app/middleware/logging.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/logging/tests/test_logging_middleware.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/metrics/conftest.fragment.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/metrics/docker-compose.fragment.yaml +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/metrics/manifest.yaml +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/metrics/requirements.fragment +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/metrics/settings.fragment.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/metrics/src/app/middleware/metrics.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/metrics/tests/test_metrics_middleware.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/tracing/conftest.fragment.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/tracing/manifest.yaml +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/tracing/requirements.fragment +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/tracing/settings.fragment.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/tracing/src/app/middleware/tracing.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/tracing/tests/test_tracing_middleware.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/workers/conftest.fragment.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/workers/docker-compose.fragment.yaml +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/workers/manifest.yaml +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/workers/requirements.fragment +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/workers/settings.fragment.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/workers/src/app/workers/__init__.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/workers/src/app/workers/celery_app.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/workers/src/app/workers/tasks.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/workers/tests/test_workers.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/fragments.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/generator.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/resources.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/README.md +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/cookiecutter.json +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/hooks/post_gen_project.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/.cookiecutterignore +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/.dockerignore +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/Dockerfile +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/README.md +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/__init__.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/cache.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/delegates/__init__.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/delegates/upstreams.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/__init__.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/auth_service.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/delegates.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/item_repository.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/worker_broker.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/docker-compose.yml +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/middleware/__init__.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/middleware/logging.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/repositories/__init__.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/repositories/item_repository.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/requirements.txt +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/settings.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/__init__.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/acceptance/__init__.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/acceptance/test_logging_middleware.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/conftest.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/test_items.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/__init__.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_cache.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_database_settings.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_delegates.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_settings_contracts.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_worker_broker.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/views/__init__.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/views/unversioned/__init__.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/views/unversioned/health_view.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/views/unversioned/items_view.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/workers/__init__.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/workers/tasks.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-app-service/cookiecutter.json +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/.dockerignore +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/Dockerfile +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/README.md +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/__init__.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/delegates/__init__.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/delegates/auth_delegate.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/delegates/identity_delegate.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/dependencies/__init__.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/dependencies/auth_passthrough.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/dependencies/auth_service.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/dependencies/item_repository.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/repositories/__init__.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/repositories/item_repository.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/requirements.txt +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/settings.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/__init__.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/unversioned/__init__.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/unversioned/health_view.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-auth-service/cookiecutter.json +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/.dockerignore +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/Dockerfile +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/README.md +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/__init__.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/dependencies/__init__.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/repositories/__init__.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/repositories/token_repository.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/requirements.txt +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/settings.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/views/__init__.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/views/unversioned/__init__.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/views/unversioned/health_view.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-identity-service/cookiecutter.json +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/.dockerignore +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/Dockerfile +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/README.md +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/__init__.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/dependencies/__init__.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/repositories/__init__.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/repositories/user_repository.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/requirements.txt +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/settings.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/views/__init__.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/views/unversioned/__init__.py +0 -0
- {csrd_utils-0.3.74 → csrd_utils-0.3.76}/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.
|
|
3
|
+
Version: 0.3.76
|
|
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
|
|
@@ -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"] = "
|
|
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["
|
|
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,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,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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/caching/conftest.fragment.py
RENAMED
|
File without changes
|
{csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/caching/docker-compose.fragment.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/caching/requirements.fragment
RENAMED
|
File without changes
|
{csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/caching/settings.fragment.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/logging/conftest.fragment.py
RENAMED
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/logging/requirements.fragment
RENAMED
|
File without changes
|
{csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/logging/settings.fragment.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/metrics/conftest.fragment.py
RENAMED
|
File without changes
|
{csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/metrics/docker-compose.fragment.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/metrics/requirements.fragment
RENAMED
|
File without changes
|
{csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/metrics/settings.fragment.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/tracing/conftest.fragment.py
RENAMED
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/tracing/requirements.fragment
RENAMED
|
File without changes
|
{csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/tracing/settings.fragment.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/workers/conftest.fragment.py
RENAMED
|
File without changes
|
{csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/workers/docker-compose.fragment.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/workers/requirements.fragment
RENAMED
|
File without changes
|
{csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/workers/settings.fragment.py
RENAMED
|
File without changes
|
{csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/workers/src/app/workers/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/workers/src/app/workers/tasks.py
RENAMED
|
File without changes
|
{csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/features/workers/tests/test_workers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.74 → csrd_utils-0.3.76}/src/csrd_utils/templates/cookiecutter-service/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|