FastAPI-fastkit 1.4.0__tar.gz → 1.5.0__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.
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/PKG-INFO +31 -11
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/README.md +29 -10
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/pyproject.toml +7 -3
- fastapi_fastkit-1.5.0/src/fastapi_fastkit/__init__.py +1 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/inspection/context.py +4 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/inspection/core.py +5 -1
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/inspection/docker.py +150 -15
- fastapi_fastkit-1.5.0/src/fastapi_fastkit/backend/inspection/lint.py +103 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/inspection/smoke.py +67 -13
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/inspection/strategies.py +32 -1
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/main.py +35 -40
- fastapi_fastkit-1.5.0/src/fastapi_fastkit/backend/route_generators.py +163 -0
- fastapi_fastkit-1.5.0/src/fastapi_fastkit/backend/route_wiring.py +117 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/transducer.py +101 -2
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/cli.py +13 -2
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/core/settings.py +3 -3
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/pyproject.toml-tpl +1 -1
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/requirements.txt-tpl +1 -1
- {fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel → fastapi_fastkit-1.5.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter}/src/app/api/router.py-tpl +1 -1
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/router.py-tpl +1 -1
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/conftest.py-tpl +16 -4
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/.env-tpl +1 -1
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/README.md-tpl +1 -1
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/pyproject.toml-tpl +2 -3
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/requirements.txt-tpl +5 -9
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/setup.cfg-tpl +2 -3
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/routes/auth.py-tpl +9 -9
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/auth/dependencies.py-tpl +2 -2
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/core/config.py-tpl +1 -1
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/.env-tpl +2 -0
- fastapi_fastkit-1.5.0/src/fastapi_fastkit/fastapi_project_template/modules/domain/__init__.py-tpl +10 -0
- fastapi_fastkit-1.5.0/src/fastapi_fastkit/fastapi_project_template/modules/domain/models.py-tpl +11 -0
- fastapi_fastkit-1.5.0/src/fastapi_fastkit/fastapi_project_template/modules/domain/repository.py-tpl +50 -0
- fastapi_fastkit-1.5.0/src/fastapi_fastkit/fastapi_project_template/modules/domain/router.py-tpl +66 -0
- fastapi_fastkit-1.5.0/src/fastapi_fastkit/fastapi_project_template/modules/domain/schemas.py-tpl +16 -0
- fastapi_fastkit-1.5.0/src/fastapi_fastkit/fastapi_project_template/modules/domain/service.py-tpl +47 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/auth/jwt.py.j2 +6 -6
- fastapi_fastkit-1.5.0/tests/test_backends/test_inspection_docker.py +579 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_inspector.py +149 -1
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_inspector_checks.py +168 -10
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_interactive_config_builder.py +2 -2
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_interactive_validators.py +1 -1
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_project_builder_config_generator.py +2 -2
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_project_builder_dependency_collector.py +4 -4
- fastapi_fastkit-1.5.0/tests/test_backends/test_route_generators.py +633 -0
- fastapi_fastkit-1.5.0/tests/test_backends/test_route_wiring.py +50 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_transducer.py +169 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_cli_operations/test_cli_config_options.py +38 -11
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/__init__.py +0 -1
- fastapi_fastkit-1.4.0/src/fastapi_fastkit/backend/inspection/lint.py +0 -89
- fastapi_fastkit-1.4.0/tests/test_backends/test_inspection_docker.py +0 -268
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/LICENSE +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/__main__.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/__init__.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/inspection/__init__.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/inspection/checks.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/inspection/consistency.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/inspection/freshness.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/inspection/fsutils.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/inspection/report.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/inspector.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/interactive/__init__.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/interactive/config_builder.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/interactive/prompts.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/interactive/selectors.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/interactive/validators.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/package_managers/__init__.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/package_managers/base.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/package_managers/factory.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/package_managers/pdm_manager.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/package_managers/pip_manager.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/package_managers/poetry_manager.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/package_managers/uv_manager.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/project_builder/__init__.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/project_builder/config_generator.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/project_builder/config_schema.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/project_builder/dependency_collector.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/project_builder/preset_layout.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/scaffolder.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/core/__init__.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/core/exceptions.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/PROJECT_README_TEMPLATE.md +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/README.md +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/__init__.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/.env-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/.gitignore-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/README.md-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/pyproject.toml-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/requirements.txt-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/scripts/format.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/scripts/lint.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/scripts/run-server.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/scripts/test.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/setup.cfg-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/api/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/api/api.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/api/routes/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/api/routes/items.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/core/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/core/config.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/crud/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/crud/items.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/main.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/mocks/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/mocks/mock_items.json-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/schemas/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/schemas/items.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/tests/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/tests/conftest.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/tests/test_items.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/.env-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/.gitignore-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/Dockerfile-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/README.md-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/alembic.ini-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/scripts/format.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/scripts/lint.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/scripts/run-server.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/scripts/test.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/alembic/README-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/alembic/env.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/alembic/script.py.mako-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/alembic/versions/0001_initial_auth_schema.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/api/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/api/deps.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/api/health.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/api/router.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/core/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/core/config.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/core/security.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/db/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/db/session.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/auth/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/auth/models.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/auth/repository.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/auth/router.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/auth/schemas.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/auth/service.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/users/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/users/models.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/users/repository.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/users/router.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/users/schemas.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/domains/users/service.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/src/app/main.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/template-config.yml-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/tests/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/tests/conftest.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/tests/test_auth.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/tests/test_health.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/tests/test_users.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/.env-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/.gitignore-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/README.md-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/pyproject.toml-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/requirements.txt-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/scripts/format.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/scripts/lint.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/scripts/run-server.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/scripts/test.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/setup.cfg-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/api/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/api/api.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/api/routes/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/api/routes/items.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/core/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/core/config.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/crud/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/crud/items.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/helper/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/helper/exceptions.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/helper/pagination.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/main.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/mocks/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/mocks/mock_items.json-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/schemas/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/schemas/base.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/schemas/items.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/utils/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/utils/documents.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/tests/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/tests/conftest.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/tests/test_items.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/.env-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/.gitignore-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/README.md-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/pyproject.toml-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/requirements.txt-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/scripts/format.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/scripts/lint.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/scripts/run-server.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/scripts/test.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/setup.cfg-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/api/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/api/api.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/api/routes/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/api/routes/items.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/core/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/core/config.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/crud/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/crud/items.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/main.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/mocks/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/mocks/mock_items.json-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/schemas/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/schemas/items.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/tests/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/tests/conftest.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/tests/test_items.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/.env-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/.gitignore-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/Dockerfile-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/README.md-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/pyproject.toml-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/requirements.txt-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/scripts/format.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/scripts/lint.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/scripts/run-server.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/scripts/test.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/setup.cfg-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/api/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/api/api.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/api/routes/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/api/routes/items.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/core/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/core/config.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/crud/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/crud/items.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/main.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/mocks/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/mocks/mock_items.json-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/schemas/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/schemas/items.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/tests/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/tests/conftest.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/tests/test_items.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/.env-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/.gitignore-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/README.md-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/pyproject.toml-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/requirements.txt-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/scripts/format.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/scripts/lint.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/scripts/run-server.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/scripts/test.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/api/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/api/health.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/core/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/core/config.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/db/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/db/memory.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/models.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/repository.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/schemas.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/service.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/main.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/test_health.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/test_items.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/.env-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/.gitignore-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/README.md-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/pyproject.toml-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/requirements.txt-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/setup.cfg-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src/core/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src/core/config.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src/main.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/tests/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/tests/conftest.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/tests/test_main.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/.env-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/.gitignore-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/Dockerfile-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/README.md-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/pyproject.toml-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/requirements.txt-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/scripts/chat.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/scripts/format.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/scripts/lint.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/scripts/run-server.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/scripts/test.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/api/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/api/chat.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/api/deps.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/api/health.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/api/router.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/core/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/core/config.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/llm/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/llm/agent.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/llm/client.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/llm/tools.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/main.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/memory/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/memory/base.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/memory/in_memory.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/schemas/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/src/app/schemas/chat.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/template-config.yml-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/tests/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/tests/conftest.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/tests/test_chat.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/tests/test_health.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/tests/test_memory.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/tests/test_tools.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/scripts/format.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/scripts/lint.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/scripts/run-server.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/scripts/test.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/api.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/routes/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/routes/items.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/auth/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/core/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/main.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/mcp_server/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/mcp_server/router.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/schemas/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/schemas/items.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/conftest.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/test_auth.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/test_items.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/test_mcp.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/.gitignore-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/Dockerfile-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/README.md-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/alembic.ini-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/docker-compose.yml-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/pyproject.toml-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/requirements.txt-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/format.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/lint.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/pre-start.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/run-server.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/test.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/setup.cfg-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/alembic/README-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/alembic/env.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/alembic/script.py.mako-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/alembic/versions/bedcdc35b64a_first_alembic.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/api.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/deps.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/routes/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/routes/items.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/core/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/core/config.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/core/db.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/crud/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/crud/items.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/main.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/schemas/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/schemas/items.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/utils/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/utils/backend_pre_start.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/utils/init_data.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/utils/tests_pre_start.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/template-config.yml-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/tests/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/tests/conftest.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/tests/test_items.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/.env-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/.gitignore-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/README.md-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/pyproject.toml-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/requirements.txt-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/setup.cfg-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/src/main.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/tests/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/tests/conftest.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/tests/test_main.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/.env-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/.gitignore-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/Dockerfile-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/README.md-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/alembic.ini-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/pyproject.toml-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/requirements.txt-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/scripts/format.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/scripts/lint.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/scripts/migrate.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/scripts/run-server.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/scripts/test.sh-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/alembic/README-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/alembic/env.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/alembic/script.py.mako-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/alembic/versions/0001_create_items_table.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/api/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/api/health.py-tpl +0 -0
- {fastapi_fastkit-1.4.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter → fastapi_fastkit-1.5.0/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel}/src/app/api/router.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/core/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/core/config.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/crud/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/crud/base.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/crud/pagination.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/db/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/db/base.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/db/session.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/domains/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/domains/items/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/domains/items/crud.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/domains/items/models.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/domains/items/router.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/src/app/main.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/template-config.yml-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/tests/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/tests/conftest.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/tests/test_crud_base.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/tests/test_health.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/tests/test_items.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/modules/api/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/modules/api/routes/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/modules/api/routes/new_route.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/modules/crud/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/modules/crud/new_route.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/modules/schemas/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fastapi_project_template/modules/schemas/new_route.py-tpl +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/README.md +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/auth/fastapi_users.py.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/auth/oauth2.py.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/auth/session.py.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/db/mongodb.py.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/db/redis.py.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/db/sqlalchemy.py.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/docker/docker_compose.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/docker/dockerfile.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/features/cache.py.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/features/pagination.py.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/features/tasks_celery.py.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/features/tasks_dramatiq.py.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/features/websocket.py.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/header.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/logging/structured.py.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/imports/async_tasks.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/imports/caching.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/imports/fastapi_users.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/imports/jwt.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/imports/loguru.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/imports/mongodb.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/imports/oauth2.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/imports/opentelemetry.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/imports/pagination.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/imports/prometheus.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/imports/rate_limiting.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/imports/session_auth.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/imports/sqlalchemy.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/imports/structured_logging.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/imports/websocket.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/lifespan/caching.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/lifespan/mongodb.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/lifespan/prometheus.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/lifespan/sqlalchemy.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/setup/async_tasks.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/setup/caching.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/setup/cors.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/setup/oauth2.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/setup/opentelemetry.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/setup/pagination.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/setup/rate_limiting.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/setup/session_auth.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/setup/structured_logging.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main/setup/websocket.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/main.py.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/migrations/alembic_ini.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/migrations/env.py.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/migrations/initial_revision.py.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/migrations/migrate_sh.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/migrations/script.py.mako.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/tasks/celery_worker.py.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/tasks/dramatiq_worker.py.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/test/factories.py.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/test/pytest_ini.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/test/test_factories.py.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/test/test_main.py.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/tooling/devcontainer.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/tooling/github_actions.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/tooling/makefile.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/tooling/pre_commit.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/fragments/tooling/ruff_toml.j2 +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/py.typed +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/utils/__init__.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/utils/config_file.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/utils/logging.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/utils/main.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/__init__.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/conftest.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/__init__.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_configure.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_console_sizing.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_inspection_fsutils.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_interactive_prompts.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_interactive_selectors.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_main.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_package_managers.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_preset_layout.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_project_metadata.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_safety_regressions.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_backends/test_scaffolder.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_cli_operations/__init__.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_cli_operations/test_cli.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_cli_operations/test_cli_error_paths.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_cli_operations/test_cli_extended.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_cli_operations/test_cli_interactive_integration.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_config_file.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_core.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_rich/__init__.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_rich/test_rich.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_templates/__init__.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_templates/template_configs.yaml +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_templates/test_all_templates.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_templates/test_config_based_templates.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_templates/test_domain_starter_e2e.py +0 -0
- {fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/tests/test_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: FastAPI-fastkit
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.5.0
|
|
4
4
|
Summary: Fast, easy-to-use starter kit for new users of Python and FastAPI
|
|
5
5
|
Author-Email: bnbong <bbbong9@gmail.com>
|
|
6
6
|
License: MIT
|
|
@@ -20,6 +20,7 @@ Requires-Dist: pre-commit>=4.0.1; extra == "dev"
|
|
|
20
20
|
Requires-Dist: mypy>=1.12.0; extra == "dev"
|
|
21
21
|
Requires-Dist: isort>=5.13.2; extra == "dev"
|
|
22
22
|
Requires-Dist: pygments>=2.20.0; extra == "dev"
|
|
23
|
+
Requires-Dist: virtualenv>=21.7.13; extra == "dev"
|
|
23
24
|
Requires-Dist: types-pyyaml>=6.0.12.20260408; extra == "dev"
|
|
24
25
|
Description-Content-Type: text/markdown
|
|
25
26
|
|
|
@@ -82,7 +83,9 @@ $ pip install FastAPI-fastkit
|
|
|
82
83
|
```console
|
|
83
84
|
fastkit init [OPTIONS]
|
|
84
85
|
```
|
|
85
|
-
|
|
86
|
+
> [!TIP]
|
|
87
|
+
> Scaffolds an empty FastAPI project, creates a virtual environment, installs dependencies
|
|
88
|
+
|
|
86
89
|
- Key options:
|
|
87
90
|
- `--project-name`, `--author`, `--author-email`, `--description`
|
|
88
91
|
- `--package-manager` [pip|uv|pdm|poetry]
|
|
@@ -98,7 +101,9 @@ fastkit init [OPTIONS]
|
|
|
98
101
|
```console
|
|
99
102
|
fastkit init --interactive
|
|
100
103
|
```
|
|
101
|
-
|
|
104
|
+
> [!TIP]
|
|
105
|
+
> Guided step-by-step project setup with intelligent feature selection
|
|
106
|
+
|
|
102
107
|
- Features:
|
|
103
108
|
- **Architecture preset**: `minimal` | `single-module` | `classic-layered` | `domain-starter` (default)
|
|
104
109
|
- **Database selection**: PostgreSQL, MySQL, MongoDB, Redis, SQLite
|
|
@@ -114,7 +119,7 @@ fastkit init --interactive
|
|
|
114
119
|
- **Deployment**: Docker, docker-compose with auto-generated configs
|
|
115
120
|
- **Package manager**: pip, uv, pdm, poetry
|
|
116
121
|
- **Custom packages**: Add your own dependencies
|
|
117
|
-
- Auto-generates (varies by preset
|
|
122
|
+
- Auto-generates (varies by preset - see [the matrix](https://bnbong.github.io/FastAPI-fastkit/reference/preset-feature-matrix/) for details):
|
|
118
123
|
- `main.py` regenerated from selected features for `minimal` / `single-module`; preserved as-shipped for `classic-layered` / `domain-starter`
|
|
119
124
|
- Database and authentication configuration files at preset-specific paths
|
|
120
125
|
- Docker deployment files (`Dockerfile`, `docker-compose.yml`) with the preset's correct uvicorn entrypoint
|
|
@@ -127,7 +132,9 @@ fastkit init --interactive
|
|
|
127
132
|
```console
|
|
128
133
|
fastkit startdemo [TEMPLATE] [OPTIONS]
|
|
129
134
|
```
|
|
130
|
-
|
|
135
|
+
> [!TIP]
|
|
136
|
+
> Creates a project from a template (e.g., `fastapi-default`) and installs dependencies
|
|
137
|
+
|
|
131
138
|
- Key options:
|
|
132
139
|
- `--project-name`, `--author`, `--author-email`, `--description`
|
|
133
140
|
- `--package-manager` [pip|uv|pdm|poetry]
|
|
@@ -135,12 +142,6 @@ fastkit startdemo [TEMPLATE] [OPTIONS]
|
|
|
135
142
|
- Refuses to run if the target project directory already exists (`--dry-run` excepted)
|
|
136
143
|
- Tip: List available templates with `fastkit list-templates`
|
|
137
144
|
|
|
138
|
-
New in v1.4.0: `fastapi-auth-jwt` (JWT auth with refresh rotation),
|
|
139
|
-
`fastapi-sqlmodel` (async SQLModel + Alembic + generic CRUD), and
|
|
140
|
-
`fastapi-llm-agent` (streaming Claude agent with a tool loop).
|
|
141
|
-
`fastapi-dockerized` and `fastapi-async-crud` are deprecated — they still
|
|
142
|
-
work, but are no longer recommended starting points.
|
|
143
|
-
|
|
144
145
|
### Add a new route
|
|
145
146
|
```console
|
|
146
147
|
fastkit addroute <project_name> <route_name>
|
|
@@ -160,6 +161,25 @@ fastkit runserver [OPTIONS]
|
|
|
160
161
|
fastkit list-templates
|
|
161
162
|
```
|
|
162
163
|
|
|
164
|
+
Available templates:
|
|
165
|
+
|
|
166
|
+
| Template | Description | Notes |
|
|
167
|
+
|---|---|---|
|
|
168
|
+
| [`fastapi-default`](src/fastapi_fastkit/fastapi_project_template/fastapi-default/README.md-tpl) | Simple FastAPI project with a classic layered layout | Good first choice |
|
|
169
|
+
| [`fastapi-empty`](src/fastapi_fastkit/fastapi_project_template/fastapi-empty/README.md-tpl) | Minimal FastAPI template | Base for `minimal` preset |
|
|
170
|
+
| [`fastapi-single-module`](src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/README.md-tpl) | Single-file FastAPI app | Base for `single-module` preset |
|
|
171
|
+
| [`fastapi-domain-starter`](src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/README.md-tpl) | Domain-oriented, pyproject-first starter for medium-sized APIs | Base for `domain-starter` preset |
|
|
172
|
+
| [`fastapi-auth-jwt`](src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/README.md-tpl) | JWT authentication with refresh-token rotation, argon2 hashing and scopes | New in v1.4.0 |
|
|
173
|
+
| [`fastapi-sqlmodel`](src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/README.md-tpl) | Async SQLModel + Alembic migrations + generic CRUD with pagination | New in v1.4.0 |
|
|
174
|
+
| [`fastapi-llm-agent`](src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/README.md-tpl) | Streaming Claude chat agent (SSE) with a tool-call loop | New in v1.4.0 |
|
|
175
|
+
| [`fastapi-mcp`](src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/README.md-tpl) | FastAPI app exposed as an MCP server | |
|
|
176
|
+
| [`fastapi-psql-orm`](src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/README.md-tpl) | Item management API with PostgreSQL, SQLModel, Alembic and docker-compose | Requires Docker |
|
|
177
|
+
| [`fastapi-custom-response`](src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/README.md-tpl) | Item management API with a custom response envelope, error handling and pagination | |
|
|
178
|
+
| [`fastapi-async-crud`](src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/README.md-tpl) | Async item management API | **Deprecated** — use `fastapi-sqlmodel` |
|
|
179
|
+
| [`fastapi-dockerized`](src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/README.md-tpl) | Dockerized item management API | **Deprecated** — use `fastapi-default` with the Docker option in `init --interactive` |
|
|
180
|
+
|
|
181
|
+
Deprecated templates still work but are no longer recommended starting points. See [Which starter should I choose?](https://bnbong.github.io/FastAPI-fastkit/user-guide/choosing-a-starter/) for a decision guide.
|
|
182
|
+
|
|
163
183
|
### Delete a project
|
|
164
184
|
```console
|
|
165
185
|
fastkit deleteproject <project_name>
|
|
@@ -57,7 +57,9 @@ $ pip install FastAPI-fastkit
|
|
|
57
57
|
```console
|
|
58
58
|
fastkit init [OPTIONS]
|
|
59
59
|
```
|
|
60
|
-
|
|
60
|
+
> [!TIP]
|
|
61
|
+
> Scaffolds an empty FastAPI project, creates a virtual environment, installs dependencies
|
|
62
|
+
|
|
61
63
|
- Key options:
|
|
62
64
|
- `--project-name`, `--author`, `--author-email`, `--description`
|
|
63
65
|
- `--package-manager` [pip|uv|pdm|poetry]
|
|
@@ -73,7 +75,9 @@ fastkit init [OPTIONS]
|
|
|
73
75
|
```console
|
|
74
76
|
fastkit init --interactive
|
|
75
77
|
```
|
|
76
|
-
|
|
78
|
+
> [!TIP]
|
|
79
|
+
> Guided step-by-step project setup with intelligent feature selection
|
|
80
|
+
|
|
77
81
|
- Features:
|
|
78
82
|
- **Architecture preset**: `minimal` | `single-module` | `classic-layered` | `domain-starter` (default)
|
|
79
83
|
- **Database selection**: PostgreSQL, MySQL, MongoDB, Redis, SQLite
|
|
@@ -89,7 +93,7 @@ fastkit init --interactive
|
|
|
89
93
|
- **Deployment**: Docker, docker-compose with auto-generated configs
|
|
90
94
|
- **Package manager**: pip, uv, pdm, poetry
|
|
91
95
|
- **Custom packages**: Add your own dependencies
|
|
92
|
-
- Auto-generates (varies by preset
|
|
96
|
+
- Auto-generates (varies by preset - see [the matrix](https://bnbong.github.io/FastAPI-fastkit/reference/preset-feature-matrix/) for details):
|
|
93
97
|
- `main.py` regenerated from selected features for `minimal` / `single-module`; preserved as-shipped for `classic-layered` / `domain-starter`
|
|
94
98
|
- Database and authentication configuration files at preset-specific paths
|
|
95
99
|
- Docker deployment files (`Dockerfile`, `docker-compose.yml`) with the preset's correct uvicorn entrypoint
|
|
@@ -102,7 +106,9 @@ fastkit init --interactive
|
|
|
102
106
|
```console
|
|
103
107
|
fastkit startdemo [TEMPLATE] [OPTIONS]
|
|
104
108
|
```
|
|
105
|
-
|
|
109
|
+
> [!TIP]
|
|
110
|
+
> Creates a project from a template (e.g., `fastapi-default`) and installs dependencies
|
|
111
|
+
|
|
106
112
|
- Key options:
|
|
107
113
|
- `--project-name`, `--author`, `--author-email`, `--description`
|
|
108
114
|
- `--package-manager` [pip|uv|pdm|poetry]
|
|
@@ -110,12 +116,6 @@ fastkit startdemo [TEMPLATE] [OPTIONS]
|
|
|
110
116
|
- Refuses to run if the target project directory already exists (`--dry-run` excepted)
|
|
111
117
|
- Tip: List available templates with `fastkit list-templates`
|
|
112
118
|
|
|
113
|
-
New in v1.4.0: `fastapi-auth-jwt` (JWT auth with refresh rotation),
|
|
114
|
-
`fastapi-sqlmodel` (async SQLModel + Alembic + generic CRUD), and
|
|
115
|
-
`fastapi-llm-agent` (streaming Claude agent with a tool loop).
|
|
116
|
-
`fastapi-dockerized` and `fastapi-async-crud` are deprecated — they still
|
|
117
|
-
work, but are no longer recommended starting points.
|
|
118
|
-
|
|
119
119
|
### Add a new route
|
|
120
120
|
```console
|
|
121
121
|
fastkit addroute <project_name> <route_name>
|
|
@@ -135,6 +135,25 @@ fastkit runserver [OPTIONS]
|
|
|
135
135
|
fastkit list-templates
|
|
136
136
|
```
|
|
137
137
|
|
|
138
|
+
Available templates:
|
|
139
|
+
|
|
140
|
+
| Template | Description | Notes |
|
|
141
|
+
|---|---|---|
|
|
142
|
+
| [`fastapi-default`](src/fastapi_fastkit/fastapi_project_template/fastapi-default/README.md-tpl) | Simple FastAPI project with a classic layered layout | Good first choice |
|
|
143
|
+
| [`fastapi-empty`](src/fastapi_fastkit/fastapi_project_template/fastapi-empty/README.md-tpl) | Minimal FastAPI template | Base for `minimal` preset |
|
|
144
|
+
| [`fastapi-single-module`](src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/README.md-tpl) | Single-file FastAPI app | Base for `single-module` preset |
|
|
145
|
+
| [`fastapi-domain-starter`](src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/README.md-tpl) | Domain-oriented, pyproject-first starter for medium-sized APIs | Base for `domain-starter` preset |
|
|
146
|
+
| [`fastapi-auth-jwt`](src/fastapi_fastkit/fastapi_project_template/fastapi-auth-jwt/README.md-tpl) | JWT authentication with refresh-token rotation, argon2 hashing and scopes | New in v1.4.0 |
|
|
147
|
+
| [`fastapi-sqlmodel`](src/fastapi_fastkit/fastapi_project_template/fastapi-sqlmodel/README.md-tpl) | Async SQLModel + Alembic migrations + generic CRUD with pagination | New in v1.4.0 |
|
|
148
|
+
| [`fastapi-llm-agent`](src/fastapi_fastkit/fastapi_project_template/fastapi-llm-agent/README.md-tpl) | Streaming Claude chat agent (SSE) with a tool-call loop | New in v1.4.0 |
|
|
149
|
+
| [`fastapi-mcp`](src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/README.md-tpl) | FastAPI app exposed as an MCP server | |
|
|
150
|
+
| [`fastapi-psql-orm`](src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/README.md-tpl) | Item management API with PostgreSQL, SQLModel, Alembic and docker-compose | Requires Docker |
|
|
151
|
+
| [`fastapi-custom-response`](src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/README.md-tpl) | Item management API with a custom response envelope, error handling and pagination | |
|
|
152
|
+
| [`fastapi-async-crud`](src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/README.md-tpl) | Async item management API | **Deprecated** — use `fastapi-sqlmodel` |
|
|
153
|
+
| [`fastapi-dockerized`](src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/README.md-tpl) | Dockerized item management API | **Deprecated** — use `fastapi-default` with the Docker option in `init --interactive` |
|
|
154
|
+
|
|
155
|
+
Deprecated templates still work but are no longer recommended starting points. See [Which starter should I choose?](https://bnbong.github.io/FastAPI-fastkit/user-guide/choosing-a-starter/) for a decision guide.
|
|
156
|
+
|
|
138
157
|
### Delete a project
|
|
139
158
|
```console
|
|
140
159
|
fastkit deleteproject <project_name>
|
|
@@ -12,7 +12,7 @@ dependencies = [
|
|
|
12
12
|
]
|
|
13
13
|
requires-python = ">=3.12"
|
|
14
14
|
readme = "README.md"
|
|
15
|
-
version = "1.
|
|
15
|
+
version = "1.5.0"
|
|
16
16
|
|
|
17
17
|
[project.license]
|
|
18
18
|
text = "MIT"
|
|
@@ -32,6 +32,7 @@ dev = [
|
|
|
32
32
|
"mypy>=1.12.0",
|
|
33
33
|
"isort>=5.13.2",
|
|
34
34
|
"pygments>=2.20.0",
|
|
35
|
+
"virtualenv>=21.7.13",
|
|
35
36
|
"types-pyyaml>=6.0.12.20260408",
|
|
36
37
|
]
|
|
37
38
|
|
|
@@ -128,16 +129,19 @@ directory = "htmlcov"
|
|
|
128
129
|
[dependency-groups]
|
|
129
130
|
docs = [
|
|
130
131
|
"mkdocs>=1.6.1",
|
|
131
|
-
"mkdocs-material>=9.
|
|
132
|
+
"mkdocs-material>=9.7.7",
|
|
132
133
|
"mdx-include>=1.4.2",
|
|
133
134
|
"mkdocs-static-i18n>=1.3.0",
|
|
134
135
|
"pyyaml>=6.0.3",
|
|
135
136
|
"types-PyYAML>=6.0.12.20250915",
|
|
136
137
|
"pygments>=2.20.0",
|
|
137
138
|
"requests>=2.33.0",
|
|
138
|
-
"
|
|
139
|
+
"idna>=3.15",
|
|
140
|
+
"urllib3>=2.8.0",
|
|
141
|
+
"pymdown-extensions>=11.0.1",
|
|
139
142
|
]
|
|
140
143
|
translation = [
|
|
141
144
|
"openai>=2.8.1",
|
|
142
145
|
"anthropic>=0.74.0",
|
|
146
|
+
"anyio>=4.14.2",
|
|
143
147
|
]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = 'v1.5.0'
|
{fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/inspection/context.py
RENAMED
|
@@ -43,6 +43,10 @@ class InspectionContext:
|
|
|
43
43
|
warnings: List[str] = field(default_factory=list)
|
|
44
44
|
#: Populated by a test strategy so later checks can reuse the environment.
|
|
45
45
|
venv_path: Optional[str] = None
|
|
46
|
+
#: Populated when a test strategy already exercised the app's HTTP surface
|
|
47
|
+
#: (the Docker strategy probes the running container), so the Smoke Test
|
|
48
|
+
#: step reuses that verdict instead of booting a second server.
|
|
49
|
+
smoke_result: Optional[bool] = None
|
|
46
50
|
|
|
47
51
|
def add_error(self, message: str) -> None:
|
|
48
52
|
"""Record a fatal finding."""
|
{fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/inspection/core.py
RENAMED
|
@@ -252,8 +252,12 @@ class TemplateInspector:
|
|
|
252
252
|
("Configuration Consistency", self._check_configuration_consistency),
|
|
253
253
|
("FastAPI Implementation", self._check_fastapi_implementation),
|
|
254
254
|
("Placeholder Substitution", self._check_no_placeholder_residue),
|
|
255
|
-
|
|
255
|
+
# Compile Check is a pure static check: it runs before the (much
|
|
256
|
+
# heavier) Template Tests so a syntax error is reported without
|
|
257
|
+
# waiting for an environment, and so it never observes files a
|
|
258
|
+
# containerised test run left behind.
|
|
256
259
|
("Compile Check", self._check_compileall),
|
|
260
|
+
("Template Tests", self._test_template),
|
|
257
261
|
("Type Check", self._check_mypy),
|
|
258
262
|
("Smoke Test", self._check_smoke_test),
|
|
259
263
|
("Dependency Freshness", self._check_dependency_freshness),
|
{fastapi_fastkit-1.4.0 → fastapi_fastkit-1.5.0}/src/fastapi_fastkit/backend/inspection/docker.py
RENAMED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
# @author bnbong
|
|
8
8
|
# --------------------------------------------------------------------------
|
|
9
9
|
import json
|
|
10
|
+
import os
|
|
10
11
|
import subprocess
|
|
11
12
|
import time
|
|
12
13
|
from typing import Any, Dict, List, Optional, Sequence
|
|
@@ -14,6 +15,12 @@ from typing import Any, Dict, List, Optional, Sequence
|
|
|
14
15
|
from fastapi_fastkit.utils.logging import debug_log
|
|
15
16
|
|
|
16
17
|
COMPOSE_COMMAND = "docker-compose"
|
|
18
|
+
#: Fallback for hosts that only ship the ``docker compose`` CLI plugin.
|
|
19
|
+
COMPOSE_PLUGIN_COMMAND = ["docker", "compose"]
|
|
20
|
+
#: Resolved compose invocation, switched by :meth:`DockerCompose.is_available`.
|
|
21
|
+
_compose_prefix: List[str] = [COMPOSE_COMMAND]
|
|
22
|
+
#: Throwaway image used to give bind-mounted files back to the host user.
|
|
23
|
+
RECLAIM_IMAGE = "alpine:3.20"
|
|
17
24
|
SHORT_TIMEOUT = 10
|
|
18
25
|
STATUS_TIMEOUT = 30
|
|
19
26
|
CLEANUP_TIMEOUT = 60
|
|
@@ -43,27 +50,49 @@ class DockerCompose:
|
|
|
43
50
|
debug_log(f"Command {' '.join(args)} failed: {e}", "warning")
|
|
44
51
|
return None
|
|
45
52
|
|
|
53
|
+
@staticmethod
|
|
54
|
+
def compose_command() -> List[str]:
|
|
55
|
+
"""Return the compose invocation resolved by :meth:`is_available`."""
|
|
56
|
+
return list(_compose_prefix)
|
|
57
|
+
|
|
46
58
|
def _compose(
|
|
47
59
|
self, args: Sequence[str], timeout: int
|
|
48
60
|
) -> Optional[subprocess.CompletedProcess[str]]:
|
|
49
61
|
"""Run a docker-compose subcommand against the configured compose file."""
|
|
50
62
|
return self._run(
|
|
51
|
-
[
|
|
63
|
+
[*self.compose_command(), "-f", self.compose_file, *args], timeout=timeout
|
|
52
64
|
)
|
|
53
65
|
|
|
66
|
+
@staticmethod
|
|
67
|
+
def _probe(command: Sequence[str]) -> bool:
|
|
68
|
+
"""Return whether ``command`` exits successfully."""
|
|
69
|
+
try:
|
|
70
|
+
result = subprocess.run(
|
|
71
|
+
list(command), capture_output=True, text=True, timeout=SHORT_TIMEOUT
|
|
72
|
+
)
|
|
73
|
+
except (subprocess.TimeoutExpired, OSError):
|
|
74
|
+
return False
|
|
75
|
+
return result.returncode == 0
|
|
76
|
+
|
|
54
77
|
@staticmethod
|
|
55
78
|
def is_available() -> bool:
|
|
56
|
-
"""Check that
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
79
|
+
"""Check that docker responds and a compose implementation exists.
|
|
80
|
+
|
|
81
|
+
``docker-compose`` stays the preferred command; hosts that only ship
|
|
82
|
+
the ``docker compose`` CLI plugin fall back to it.
|
|
83
|
+
"""
|
|
84
|
+
global _compose_prefix
|
|
85
|
+
|
|
86
|
+
if not DockerCompose._probe(["docker", "--version"]):
|
|
87
|
+
return False
|
|
88
|
+
if DockerCompose._probe([COMPOSE_COMMAND, "--version"]):
|
|
89
|
+
_compose_prefix = [COMPOSE_COMMAND]
|
|
90
|
+
return True
|
|
91
|
+
if DockerCompose._probe([*COMPOSE_PLUGIN_COMMAND, "version"]):
|
|
92
|
+
debug_log("Falling back to the 'docker compose' CLI plugin", "info")
|
|
93
|
+
_compose_prefix = list(COMPOSE_PLUGIN_COMMAND)
|
|
94
|
+
return True
|
|
95
|
+
return False
|
|
67
96
|
|
|
68
97
|
def _services(self, timeout: int) -> List[Dict[str, Any]]:
|
|
69
98
|
"""Return the parsed ``docker-compose ps --format json`` entries."""
|
|
@@ -71,8 +100,34 @@ class DockerCompose:
|
|
|
71
100
|
if result is None or result.returncode != 0:
|
|
72
101
|
return []
|
|
73
102
|
|
|
103
|
+
# Compose sometimes interleaves ``time="..." level=warning`` log lines
|
|
104
|
+
# with the JSON payload, so only JSON-looking lines are considered.
|
|
105
|
+
payload = "\n".join(
|
|
106
|
+
line
|
|
107
|
+
for line in result.stdout.splitlines()
|
|
108
|
+
if line.strip().startswith(("[", "{"))
|
|
109
|
+
).strip()
|
|
110
|
+
if not payload:
|
|
111
|
+
return []
|
|
112
|
+
|
|
113
|
+
# Compose < v2.21 prints a single JSON array, newer versions print one
|
|
114
|
+
# JSON object per line (NDJSON).
|
|
115
|
+
try:
|
|
116
|
+
document = json.loads(payload)
|
|
117
|
+
except json.JSONDecodeError:
|
|
118
|
+
return DockerCompose._parse_json_lines(payload)
|
|
119
|
+
|
|
120
|
+
if isinstance(document, dict):
|
|
121
|
+
return [document]
|
|
122
|
+
if isinstance(document, list):
|
|
123
|
+
return [entry for entry in document if isinstance(entry, dict)]
|
|
124
|
+
return []
|
|
125
|
+
|
|
126
|
+
@staticmethod
|
|
127
|
+
def _parse_json_lines(payload: str) -> List[Dict[str, Any]]:
|
|
128
|
+
"""Parse NDJSON output, skipping malformed or non-object lines."""
|
|
74
129
|
services: List[Dict[str, Any]] = []
|
|
75
|
-
for line in
|
|
130
|
+
for line in payload.split("\n"):
|
|
76
131
|
if not line.strip():
|
|
77
132
|
continue
|
|
78
133
|
try:
|
|
@@ -109,7 +164,7 @@ class DockerCompose:
|
|
|
109
164
|
"""Build and start the compose services in the background."""
|
|
110
165
|
result = self._compose(["up", "-d", "--build"], timeout=timeout)
|
|
111
166
|
if result is None:
|
|
112
|
-
raise subprocess.TimeoutExpired(
|
|
167
|
+
raise subprocess.TimeoutExpired(" ".join(self.compose_command()), timeout)
|
|
113
168
|
return result
|
|
114
169
|
|
|
115
170
|
def wait_until_healthy(self, timeout: int) -> None:
|
|
@@ -166,6 +221,50 @@ class DockerCompose:
|
|
|
166
221
|
debug_log("All required services are running", "info")
|
|
167
222
|
return None
|
|
168
223
|
|
|
224
|
+
def published_port(self, service_hint: str = "app") -> Optional[int]:
|
|
225
|
+
"""Return the host port the app container publishes, if any.
|
|
226
|
+
|
|
227
|
+
``docker-compose ps --format json`` reports a ``Publishers`` list per
|
|
228
|
+
service; an entry with a non-zero ``PublishedPort`` is a port bound on
|
|
229
|
+
the host, which is what a smoke test can reach. Services whose name
|
|
230
|
+
contains ``service_hint`` are preferred, so a database that happens to
|
|
231
|
+
publish a port is never mistaken for the application.
|
|
232
|
+
"""
|
|
233
|
+
services = self._services(timeout=STATUS_TIMEOUT)
|
|
234
|
+
if not services:
|
|
235
|
+
return None
|
|
236
|
+
|
|
237
|
+
def _matches(service: Dict[str, Any]) -> bool:
|
|
238
|
+
name = f"{service.get('Service', '')} {service.get('Name', '')}"
|
|
239
|
+
return service_hint in name
|
|
240
|
+
|
|
241
|
+
for candidate in (
|
|
242
|
+
[entry for entry in services if _matches(entry)],
|
|
243
|
+
services,
|
|
244
|
+
):
|
|
245
|
+
for service in candidate:
|
|
246
|
+
port = self._first_published_port(service)
|
|
247
|
+
if port is not None:
|
|
248
|
+
return port
|
|
249
|
+
return None
|
|
250
|
+
|
|
251
|
+
@staticmethod
|
|
252
|
+
def _first_published_port(service: Dict[str, Any]) -> Optional[int]:
|
|
253
|
+
"""Extract the first host-bound port from one ``ps`` entry."""
|
|
254
|
+
publishers = service.get("Publishers")
|
|
255
|
+
if not isinstance(publishers, list):
|
|
256
|
+
return None
|
|
257
|
+
for publisher in publishers:
|
|
258
|
+
if not isinstance(publisher, dict):
|
|
259
|
+
continue
|
|
260
|
+
try:
|
|
261
|
+
port = int(publisher.get("PublishedPort", 0))
|
|
262
|
+
except (TypeError, ValueError):
|
|
263
|
+
continue
|
|
264
|
+
if port > 0:
|
|
265
|
+
return port
|
|
266
|
+
return None
|
|
267
|
+
|
|
169
268
|
def exec_tests(
|
|
170
269
|
self, use_test_script: bool
|
|
171
270
|
) -> Optional[subprocess.CompletedProcess[str]]:
|
|
@@ -176,10 +275,46 @@ class DockerCompose:
|
|
|
176
275
|
command = ["exec", "-T", "app", "python", "-m", "pytest", "tests/", "-v"]
|
|
177
276
|
return self._compose(command, timeout=TEST_TIMEOUT)
|
|
178
277
|
|
|
278
|
+
def reclaim_bind_mount_ownership(self) -> None:
|
|
279
|
+
"""Give the bind-mounted project directory back to the host user.
|
|
280
|
+
|
|
281
|
+
Containers run as root, so a test run inside the stack leaves
|
|
282
|
+
root-owned artefacts (``__pycache__``, ``.pytest_cache``, ...) in the
|
|
283
|
+
mounted project. Later host-side steps and the temp directory cleanup
|
|
284
|
+
cannot touch those and fail with a PermissionError, so the ownership
|
|
285
|
+
is reset from inside a throwaway container. Best effort: a failure
|
|
286
|
+
here is never worth failing an inspection over.
|
|
287
|
+
"""
|
|
288
|
+
if not hasattr(os, "getuid"): # pragma: no cover - Windows hosts
|
|
289
|
+
return
|
|
290
|
+
|
|
291
|
+
uid, gid = os.getuid(), os.getgid()
|
|
292
|
+
if uid == 0:
|
|
293
|
+
return
|
|
294
|
+
|
|
295
|
+
debug_log("Reclaiming ownership of bind-mounted project files", "info")
|
|
296
|
+
self._run(
|
|
297
|
+
[
|
|
298
|
+
"docker",
|
|
299
|
+
"run",
|
|
300
|
+
"--rm",
|
|
301
|
+
"-v",
|
|
302
|
+
f"{self.project_dir}:/mnt",
|
|
303
|
+
RECLAIM_IMAGE,
|
|
304
|
+
"chown",
|
|
305
|
+
"-R",
|
|
306
|
+
f"{uid}:{gid}",
|
|
307
|
+
"/mnt",
|
|
308
|
+
],
|
|
309
|
+
timeout=CLEANUP_TIMEOUT,
|
|
310
|
+
)
|
|
311
|
+
|
|
179
312
|
def cleanup(self) -> None:
|
|
180
313
|
"""Tear down services and volumes, ignoring any failure."""
|
|
181
314
|
debug_log("Cleaning up Docker services", "info")
|
|
315
|
+
self.reclaim_bind_mount_ownership()
|
|
182
316
|
self._run(
|
|
183
|
-
[
|
|
317
|
+
[*self.compose_command(), "down", "-v", "--remove-orphans"],
|
|
318
|
+
timeout=CLEANUP_TIMEOUT,
|
|
184
319
|
)
|
|
185
320
|
self._run(["docker", "system", "prune", "-f"], timeout=STATUS_TIMEOUT)
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# --------------------------------------------------------------------------
|
|
2
|
+
# Static analysis of the generated project.
|
|
3
|
+
#
|
|
4
|
+
# The compile check is mandatory - a template that cannot be compiled is
|
|
5
|
+
# broken beyond argument. It is performed in-process with ``compile()`` and
|
|
6
|
+
# deliberately writes nothing to disk: a Docker test run beforehand can leave
|
|
7
|
+
# root-owned ``__pycache__`` directories in the bind-mounted project, and
|
|
8
|
+
# ``compileall`` would then fail with a PermissionError that says nothing
|
|
9
|
+
# about the template. ``mypy`` is opt-in because it needs the template's own
|
|
10
|
+
# dependencies installed and is far slower.
|
|
11
|
+
#
|
|
12
|
+
# @author bnbong
|
|
13
|
+
# --------------------------------------------------------------------------
|
|
14
|
+
import os
|
|
15
|
+
import subprocess
|
|
16
|
+
import sys
|
|
17
|
+
from typing import List
|
|
18
|
+
|
|
19
|
+
from fastapi_fastkit.utils.logging import debug_log
|
|
20
|
+
|
|
21
|
+
from .context import InspectionContext
|
|
22
|
+
|
|
23
|
+
MYPY_TIMEOUT = 300
|
|
24
|
+
|
|
25
|
+
#: Directories never worth compiling - third party code and build artefacts.
|
|
26
|
+
EXCLUDED_DIRS = {".venv", "venv", "__pycache__", "node_modules"}
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def _interpreter(ctx: InspectionContext) -> str:
|
|
30
|
+
"""Prefer the inspection venv interpreter, falling back to the host one."""
|
|
31
|
+
return ctx.python_executable() or sys.executable
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def _iter_python_files(root: str) -> List[str]:
|
|
35
|
+
"""Collect every ``.py`` file below ``root``, skipping excluded directories."""
|
|
36
|
+
python_files: List[str] = []
|
|
37
|
+
for dirpath, dirnames, filenames in os.walk(root):
|
|
38
|
+
dirnames[:] = [name for name in dirnames if name not in EXCLUDED_DIRS]
|
|
39
|
+
for file_name in sorted(filenames):
|
|
40
|
+
if file_name.endswith(".py"):
|
|
41
|
+
python_files.append(os.path.join(dirpath, file_name))
|
|
42
|
+
return python_files
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def check_compileall(ctx: InspectionContext) -> bool:
|
|
46
|
+
"""Compile every Python file of the generated project, in memory.
|
|
47
|
+
|
|
48
|
+
Nothing is written to disk - no ``__pycache__`` is created - so the check
|
|
49
|
+
stays a pure syntax gate that cannot trip over file ownership left behind
|
|
50
|
+
by a containerised test run.
|
|
51
|
+
"""
|
|
52
|
+
failures: List[str] = []
|
|
53
|
+
|
|
54
|
+
for path in _iter_python_files(ctx.temp_dir):
|
|
55
|
+
try:
|
|
56
|
+
with open(path, "rb") as f:
|
|
57
|
+
source = f.read()
|
|
58
|
+
except OSError as e:
|
|
59
|
+
failures.append(f"{path}: could not be read ({e})")
|
|
60
|
+
continue
|
|
61
|
+
|
|
62
|
+
try:
|
|
63
|
+
compile(source, path, "exec", dont_inherit=True)
|
|
64
|
+
except (SyntaxError, ValueError) as e:
|
|
65
|
+
failures.append(f"{path}: {e}")
|
|
66
|
+
|
|
67
|
+
if failures:
|
|
68
|
+
detail = "\n".join(failures)
|
|
69
|
+
ctx.add_error(f"Generated project failed to compile:\n{detail}")
|
|
70
|
+
return False
|
|
71
|
+
|
|
72
|
+
debug_log("compileall check passed", "info")
|
|
73
|
+
return True
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def check_mypy(ctx: InspectionContext) -> bool:
|
|
77
|
+
"""Run mypy inside the generated project (opt-in via ``--mypy``)."""
|
|
78
|
+
if not ctx.options.run_mypy:
|
|
79
|
+
debug_log("mypy check disabled", "info")
|
|
80
|
+
return True
|
|
81
|
+
|
|
82
|
+
try:
|
|
83
|
+
result = subprocess.run(
|
|
84
|
+
[_interpreter(ctx), "-m", "mypy", "."],
|
|
85
|
+
cwd=ctx.temp_dir,
|
|
86
|
+
capture_output=True,
|
|
87
|
+
text=True,
|
|
88
|
+
timeout=MYPY_TIMEOUT,
|
|
89
|
+
)
|
|
90
|
+
except subprocess.TimeoutExpired:
|
|
91
|
+
ctx.add_error("mypy timed out")
|
|
92
|
+
return False
|
|
93
|
+
except OSError as e:
|
|
94
|
+
ctx.add_warning(f"Could not run mypy: {e}")
|
|
95
|
+
return True
|
|
96
|
+
|
|
97
|
+
if result.returncode != 0:
|
|
98
|
+
detail = (result.stdout or result.stderr or "").strip()
|
|
99
|
+
ctx.add_error(f"mypy reported errors in the generated project:\n{detail}")
|
|
100
|
+
return False
|
|
101
|
+
|
|
102
|
+
debug_log("mypy check passed", "info")
|
|
103
|
+
return True
|