FastAPI-fastkit 1.2.0__tar.gz → 1.3.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.2.0 → fastapi_fastkit-1.3.0}/PKG-INFO +33 -3
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/README.md +29 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/pyproject.toml +7 -3
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/__init__.py +1 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/backend/inspector.py +153 -32
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/backend/interactive/__init__.py +2 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/backend/interactive/config_builder.py +21 -2
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/backend/interactive/prompts.py +52 -1
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/backend/interactive/selectors.py +10 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/backend/main.py +114 -6
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/backend/package_managers/factory.py +1 -1
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/backend/package_managers/pdm_manager.py +3 -3
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/backend/package_managers/poetry_manager.py +71 -10
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/backend/package_managers/uv_manager.py +3 -3
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/backend/project_builder/__init__.py +3 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/backend/project_builder/config_generator.py +17 -10
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/backend/project_builder/preset_layout.py +203 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/backend/transducer.py +0 -1
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/cli.py +109 -44
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/core/settings.py +17 -1
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/README.md +139 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/pyproject.toml-tpl +4 -1
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/pyproject.toml-tpl +4 -1
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/pyproject.toml-tpl +4 -1
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/pyproject.toml-tpl +4 -1
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/.env-tpl +2 -0
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/.gitignore-tpl +31 -0
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/README.md-tpl +128 -0
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/pyproject.toml-tpl +70 -0
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/requirements.txt-tpl +11 -0
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/scripts/lint.sh-tpl +6 -0
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/scripts/run-server.sh-tpl +8 -0
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/scripts/test.sh-tpl +6 -0
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/api/health.py-tpl +11 -0
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/api/router.py-tpl +12 -0
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/core/config.py-tpl +49 -0
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/db/memory.py-tpl +48 -0
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/__init__.py-tpl +9 -0
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/models.py-tpl +17 -0
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/repository.py-tpl +48 -0
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/router.py-tpl +59 -0
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/schemas.py-tpl +23 -0
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains/items/service.py-tpl +52 -0
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/main.py-tpl +25 -0
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/conftest.py-tpl +24 -0
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/test_health.py-tpl +11 -0
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests/test_items.py-tpl +77 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/README.md-tpl +2 -2
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/pyproject.toml-tpl +4 -1
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/pyproject.toml-tpl +4 -1
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/pyproject.toml-tpl +4 -1
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/format.sh-tpl +5 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/pyproject.toml-tpl +4 -1
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/py.typed +0 -0
- fastapi_fastkit-1.3.0/src/fastapi_fastkit/utils/__init__.py +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/utils/main.py +73 -6
- fastapi_fastkit-1.3.0/tests/__init__.py +0 -0
- fastapi_fastkit-1.3.0/tests/test_backends/__init__.py +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/tests/test_backends/test_inspector.py +261 -15
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/tests/test_backends/test_interactive_config_builder.py +45 -6
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/tests/test_backends/test_interactive_prompts.py +88 -3
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/tests/test_backends/test_interactive_selectors.py +90 -3
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/tests/test_backends/test_interactive_validators.py +0 -1
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/tests/test_backends/test_main.py +249 -12
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/tests/test_backends/test_package_managers.py +80 -0
- fastapi_fastkit-1.3.0/tests/test_backends/test_preset_layout.py +224 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/tests/test_backends/test_project_builder_config_generator.py +67 -1
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/tests/test_backends/test_project_builder_dependency_collector.py +0 -1
- fastapi_fastkit-1.3.0/tests/test_cli_operations/__init__.py +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/tests/test_cli_operations/test_cli.py +23 -3
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/tests/test_cli_operations/test_cli_extended.py +107 -8
- fastapi_fastkit-1.3.0/tests/test_cli_operations/test_cli_interactive_integration.py +639 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/tests/test_core.py +10 -0
- fastapi_fastkit-1.3.0/tests/test_rich/__init__.py +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/tests/test_rich/test_rich.py +3 -6
- fastapi_fastkit-1.3.0/tests/test_templates/__init__.py +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/tests/test_templates/test_all_templates.py +71 -2
- fastapi_fastkit-1.3.0/tests/test_templates/test_domain_starter_e2e.py +293 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/tests/test_utils.py +147 -7
- fastapi_fastkit-1.2.0/src/fastapi_fastkit/__init__.py +0 -1
- fastapi_fastkit-1.2.0/src/fastapi_fastkit/fastapi_project_template/README.md +0 -90
- fastapi_fastkit-1.2.0/tests/test_cli_operations/test_cli_interactive_integration.py +0 -212
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/LICENSE +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/__main__.py +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/backend/__init__.py +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/backend/interactive/validators.py +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/backend/package_managers/__init__.py +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/backend/package_managers/base.py +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/backend/package_managers/pip_manager.py +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/backend/project_builder/dependency_collector.py +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/core/__init__.py +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/core/exceptions.py +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/PROJECT_README_TEMPLATE.md +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/__init__.py +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/.env-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/.gitignore-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/README.md-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/requirements.txt-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/scripts/format.sh-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/scripts/lint.sh-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/scripts/run-server.sh-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/scripts/test.sh-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/setup.cfg-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/setup.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/api/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/api/api.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/api/routes/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/api/routes/items.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/core/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/core/config.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/crud/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/crud/items.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/main.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/mocks/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/mocks/mock_items.json-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/schemas/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/src/schemas/items.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/tests/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/tests/conftest.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-async-crud/tests/test_items.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/.env-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/.gitignore-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/README.md-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/requirements.txt-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/scripts/format.sh-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/scripts/lint.sh-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/scripts/run-server.sh-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/scripts/test.sh-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/setup.cfg-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/setup.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/api/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/api/api.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/api/routes/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/api/routes/items.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/core/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/core/config.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/crud/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/crud/items.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/helper/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/helper/exceptions.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/helper/pagination.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/main.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/mocks/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/mocks/mock_items.json-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/schemas/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/schemas/base.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/schemas/items.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/utils/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/src/utils/documents.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/tests/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/tests/conftest.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-custom-response/tests/test_items.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/.env-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/.gitignore-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/README.md-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/requirements.txt-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/scripts/format.sh-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/scripts/lint.sh-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/scripts/run-server.sh-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/scripts/test.sh-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/setup.cfg-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/setup.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/api/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/api/api.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/api/routes/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/api/routes/items.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/core/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/core/config.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/crud/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/crud/items.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/main.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/mocks/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/mocks/mock_items.json-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/schemas/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/src/schemas/items.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/tests/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/tests/conftest.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-default/tests/test_items.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/.env-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/.gitignore-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/Dockerfile-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/README.md-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/requirements.txt-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/scripts/format.sh-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/scripts/lint.sh-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/scripts/run-server.sh-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/scripts/test.sh-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/setup.cfg-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/setup.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/api/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/api/api.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/api/routes/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/api/routes/items.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/core/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/core/config.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/crud/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/crud/items.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/main.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/mocks/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/mocks/mock_items.json-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/schemas/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/src/schemas/items.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/tests/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/tests/conftest.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-dockerized/tests/test_items.py-tpl +0 -0
- {fastapi_fastkit-1.2.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm → fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter}/scripts/format.sh-tpl +0 -0
- {fastapi_fastkit-1.2.0/src/fastapi_fastkit/fastapi_project_template/fastapi-empty → fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter}/src/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src/core → fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/tests → fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/api}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src → fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/core}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api → fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/db}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/routes → fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/src/app/domains}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/core → fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-domain-starter/tests}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/.env-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/.gitignore-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/requirements.txt-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/setup.cfg-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/setup.py-tpl +0 -0
- {fastapi_fastkit-1.2.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/crud → fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/schemas → fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src/core}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src/core/config.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/src/main.py-tpl +0 -0
- {fastapi_fastkit-1.2.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/utils → fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/tests}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/tests/conftest.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-empty/tests/test_main.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/.env-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/README.md-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/requirements.txt-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/scripts/format.sh-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/scripts/lint.sh-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/scripts/run-server.sh-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/scripts/test.sh-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/setup.cfg-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/setup.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/api.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/routes/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/routes/auth.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/api/routes/items.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/auth/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/auth/dependencies.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/core/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/core/config.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/main.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/mcp/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/mcp/router.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/schemas/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/src/schemas/items.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/conftest.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/test_auth.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/test_items.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-mcp/tests/test_mcp.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/.env-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/.gitignore-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/Dockerfile-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/README.md-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/alembic.ini-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/docker-compose.yml-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/requirements.txt-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/lint.sh-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/pre-start.sh-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/run-server.sh-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/scripts/test.sh-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/setup.cfg-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/setup.py-tpl +0 -0
- {fastapi_fastkit-1.2.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/tests → fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/alembic/README-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/alembic/env.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/alembic/script.py.mako-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/alembic/versions/bedcdc35b64a_first_alembic.py-tpl +0 -0
- {fastapi_fastkit-1.2.0/src/fastapi_fastkit/fastapi_project_template/modules → fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src}/api/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/api.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/deps.py-tpl +0 -0
- {fastapi_fastkit-1.2.0/src/fastapi_fastkit/fastapi_project_template/modules → fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src}/api/routes/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/api/routes/items.py-tpl +0 -0
- {fastapi_fastkit-1.2.0/src/fastapi_fastkit/fastapi_project_template/modules/crud → fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/core}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/core/config.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/core/db.py-tpl +0 -0
- {fastapi_fastkit-1.2.0/src/fastapi_fastkit/fastapi_project_template/modules/schemas → fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/crud}/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/crud/items.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/main.py-tpl +0 -0
- /fastapi_fastkit-1.2.0/src/fastapi_fastkit/py.typed → /fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/schemas/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/schemas/items.py-tpl +0 -0
- /fastapi_fastkit-1.2.0/src/fastapi_fastkit/utils/__init__.py → /fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/utils/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/utils/backend_pre_start.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/utils/init_data.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/src/utils/tests_pre_start.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/template-config.yml-tpl +0 -0
- /fastapi_fastkit-1.2.0/tests/__init__.py → /fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/tests/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/tests/conftest.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-psql-orm/tests/test_items.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/README.md-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/requirements.txt-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/setup.cfg-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/setup.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/src/main.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/tests/conftest.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/fastapi-single-module/tests/test_main.py-tpl +0 -0
- /fastapi_fastkit-1.2.0/tests/test_backends/__init__.py → /fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/modules/api/__init__.py-tpl +0 -0
- /fastapi_fastkit-1.2.0/tests/test_cli_operations/__init__.py → /fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/modules/api/routes/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/modules/api/routes/new_route.py-tpl +0 -0
- /fastapi_fastkit-1.2.0/tests/test_rich/__init__.py → /fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/modules/crud/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/modules/crud/new_route.py-tpl +0 -0
- /fastapi_fastkit-1.2.0/tests/test_templates/__init__.py → /fastapi_fastkit-1.3.0/src/fastapi_fastkit/fastapi_project_template/modules/schemas/__init__.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/fastapi_project_template/modules/schemas/new_route.py-tpl +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/utils/logging.py +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/tests/conftest.py +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/tests/test_backends/test_configure.py +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/tests/test_backends/test_console_sizing.py +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/tests/test_backends/test_transducer.py +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/tests/test_templates/template_configs.yaml +0 -0
- {fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/tests/test_templates/test_config_based_templates.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: FastAPI-fastkit
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.3.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
|
|
@@ -12,12 +12,13 @@ Requires-Python: >=3.12
|
|
|
12
12
|
Requires-Dist: click>=8.1.7
|
|
13
13
|
Requires-Dist: rich>=13.9.2
|
|
14
14
|
Provides-Extra: dev
|
|
15
|
-
Requires-Dist: pytest>=
|
|
15
|
+
Requires-Dist: pytest>=9.0.3; extra == "dev"
|
|
16
16
|
Requires-Dist: pytest-cov>=6.2.1; extra == "dev"
|
|
17
|
-
Requires-Dist: black>=
|
|
17
|
+
Requires-Dist: black>=26.3.1; extra == "dev"
|
|
18
18
|
Requires-Dist: pre-commit>=4.0.1; extra == "dev"
|
|
19
19
|
Requires-Dist: mypy>=1.12.0; extra == "dev"
|
|
20
20
|
Requires-Dist: isort>=5.13.2; extra == "dev"
|
|
21
|
+
Requires-Dist: pygments>=2.20.0; extra == "dev"
|
|
21
22
|
Description-Content-Type: text/markdown
|
|
22
23
|
|
|
23
24
|
<p align="center">
|
|
@@ -36,6 +37,9 @@ Description-Content-Type: text/markdown
|
|
|
36
37
|
<a href="https://codecov.io/gh/bnbong/FastAPI-fastkit" >
|
|
37
38
|
<img src="https://codecov.io/gh/bnbong/FastAPI-fastkit/graph/badge.svg?token=WS0B6WWD8K"/>
|
|
38
39
|
</a>
|
|
40
|
+
<a href="https://pepy.tech/project/fastapi-fastkit">
|
|
41
|
+
<img src="https://static.pepy.tech/personalized-badge/fastapi-fastkit?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads" alt="PyPI Downloads">
|
|
42
|
+
</a>
|
|
39
43
|
</p>
|
|
40
44
|
|
|
41
45
|
---
|
|
@@ -47,6 +51,7 @@ This project was inspired by the `SpringBoot initializer` & Python Django's `dja
|
|
|
47
51
|
## Key Features
|
|
48
52
|
|
|
49
53
|
- **⚡ Immediate FastAPI project creation** : Super-fast FastAPI workspace & project creation via CLI, inspired by `django-admin` feature of [Python Django](https://github.com/django/django)
|
|
54
|
+
- **✨ Interactive project builder**: Guided step-by-step feature selection for databases, authentication, caching, monitoring, and more with auto-generated code
|
|
50
55
|
- **🎨 Prettier CLI output** : Beautiful CLI experience powered by [rich library](https://github.com/Textualize/rich)
|
|
51
56
|
- **📋 Standards-based FastAPI project templates** : Templates follow Python standards and common FastAPI patterns.
|
|
52
57
|
- **🔍 Automated template quality assurance** : Weekly automated testing ensures all templates remain functional and up-to-date
|
|
@@ -79,6 +84,29 @@ fastkit init [OPTIONS]
|
|
|
79
84
|
- `--package-manager` [pip|uv|pdm|poetry]
|
|
80
85
|
- Stack selection: `minimal` | `standard` | `full` (interactive)
|
|
81
86
|
|
|
87
|
+
### Create a project with interactive mode
|
|
88
|
+
```console
|
|
89
|
+
fastkit init --interactive
|
|
90
|
+
```
|
|
91
|
+
- What it does: Guided step-by-step project setup with intelligent feature selection
|
|
92
|
+
- Features:
|
|
93
|
+
- **Architecture preset**: `minimal` | `single-module` | `classic-layered` | `domain-starter` (default)
|
|
94
|
+
- **Database selection**: PostgreSQL, MySQL, MongoDB, Redis, SQLite
|
|
95
|
+
- **Authentication**: JWT, OAuth2, FastAPI-Users, Session-based
|
|
96
|
+
- **Background tasks**: Celery, Dramatiq
|
|
97
|
+
- **Caching**: Redis, fastapi-cache2
|
|
98
|
+
- **Monitoring**: Loguru, OpenTelemetry, Prometheus
|
|
99
|
+
- **Testing**: Basic (pytest), Coverage, Advanced (with faker, factory-boy)
|
|
100
|
+
- **Utilities**: CORS, Rate-Limiting, Pagination, WebSocket
|
|
101
|
+
- **Deployment**: Docker, docker-compose with auto-generated configs
|
|
102
|
+
- **Package manager**: pip, uv, pdm, poetry
|
|
103
|
+
- **Custom packages**: Add your own dependencies
|
|
104
|
+
- Auto-generates (varies by preset — see [the matrix](https://bnbong.github.io/FastAPI-fastkit/reference/preset-feature-matrix/) for details):
|
|
105
|
+
- `main.py` regenerated from selected features for `minimal` / `single-module`; preserved as-shipped for `classic-layered` / `domain-starter`
|
|
106
|
+
- Database and authentication configuration files at preset-specific paths
|
|
107
|
+
- Docker deployment files (`Dockerfile`, `docker-compose.yml`) with the preset's correct uvicorn entrypoint
|
|
108
|
+
- Test configuration (pytest with coverage)
|
|
109
|
+
|
|
82
110
|
### Create a project from a template
|
|
83
111
|
```console
|
|
84
112
|
fastkit startdemo [TEMPLATE] [OPTIONS]
|
|
@@ -117,9 +145,11 @@ fastkit deleteproject <project_name>
|
|
|
117
145
|
|
|
118
146
|
For comprehensive guides and detailed usage instructions, visit our documentation:
|
|
119
147
|
|
|
148
|
+
- 🧭 **[Which starter should I choose?](https://bnbong.github.io/FastAPI-fastkit/user-guide/choosing-a-starter/)** - Beginner decision guide for `startdemo` templates and interactive presets
|
|
120
149
|
- 📚 **[User Guide](https://bnbong.github.io/FastAPI-fastkit/user-guide/quick-start/)** - Detailed installation and usage guides
|
|
121
150
|
- 🎯 **[Tutorial](https://bnbong.github.io/FastAPI-fastkit/tutorial/getting-started/)** - Step-by-step tutorials for beginners
|
|
122
151
|
- 📖 **[CLI Reference](https://bnbong.github.io/FastAPI-fastkit/user-guide/cli-reference/)** - Complete command reference
|
|
152
|
+
- 🧱 **[Architecture Preset Matrix](https://bnbong.github.io/FastAPI-fastkit/reference/preset-feature-matrix/)** - Per-preset / per-feature contract for interactive generation
|
|
123
153
|
- 🔍 **[Template Quality Assurance](https://bnbong.github.io/FastAPI-fastkit/reference/template-quality-assurance/)** - Automated testing and quality standards
|
|
124
154
|
|
|
125
155
|
## Contributing
|
|
@@ -14,6 +14,9 @@
|
|
|
14
14
|
<a href="https://codecov.io/gh/bnbong/FastAPI-fastkit" >
|
|
15
15
|
<img src="https://codecov.io/gh/bnbong/FastAPI-fastkit/graph/badge.svg?token=WS0B6WWD8K"/>
|
|
16
16
|
</a>
|
|
17
|
+
<a href="https://pepy.tech/project/fastapi-fastkit">
|
|
18
|
+
<img src="https://static.pepy.tech/personalized-badge/fastapi-fastkit?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads" alt="PyPI Downloads">
|
|
19
|
+
</a>
|
|
17
20
|
</p>
|
|
18
21
|
|
|
19
22
|
---
|
|
@@ -25,6 +28,7 @@ This project was inspired by the `SpringBoot initializer` & Python Django's `dja
|
|
|
25
28
|
## Key Features
|
|
26
29
|
|
|
27
30
|
- **⚡ Immediate FastAPI project creation** : Super-fast FastAPI workspace & project creation via CLI, inspired by `django-admin` feature of [Python Django](https://github.com/django/django)
|
|
31
|
+
- **✨ Interactive project builder**: Guided step-by-step feature selection for databases, authentication, caching, monitoring, and more with auto-generated code
|
|
28
32
|
- **🎨 Prettier CLI output** : Beautiful CLI experience powered by [rich library](https://github.com/Textualize/rich)
|
|
29
33
|
- **📋 Standards-based FastAPI project templates** : Templates follow Python standards and common FastAPI patterns.
|
|
30
34
|
- **🔍 Automated template quality assurance** : Weekly automated testing ensures all templates remain functional and up-to-date
|
|
@@ -57,6 +61,29 @@ fastkit init [OPTIONS]
|
|
|
57
61
|
- `--package-manager` [pip|uv|pdm|poetry]
|
|
58
62
|
- Stack selection: `minimal` | `standard` | `full` (interactive)
|
|
59
63
|
|
|
64
|
+
### Create a project with interactive mode
|
|
65
|
+
```console
|
|
66
|
+
fastkit init --interactive
|
|
67
|
+
```
|
|
68
|
+
- What it does: Guided step-by-step project setup with intelligent feature selection
|
|
69
|
+
- Features:
|
|
70
|
+
- **Architecture preset**: `minimal` | `single-module` | `classic-layered` | `domain-starter` (default)
|
|
71
|
+
- **Database selection**: PostgreSQL, MySQL, MongoDB, Redis, SQLite
|
|
72
|
+
- **Authentication**: JWT, OAuth2, FastAPI-Users, Session-based
|
|
73
|
+
- **Background tasks**: Celery, Dramatiq
|
|
74
|
+
- **Caching**: Redis, fastapi-cache2
|
|
75
|
+
- **Monitoring**: Loguru, OpenTelemetry, Prometheus
|
|
76
|
+
- **Testing**: Basic (pytest), Coverage, Advanced (with faker, factory-boy)
|
|
77
|
+
- **Utilities**: CORS, Rate-Limiting, Pagination, WebSocket
|
|
78
|
+
- **Deployment**: Docker, docker-compose with auto-generated configs
|
|
79
|
+
- **Package manager**: pip, uv, pdm, poetry
|
|
80
|
+
- **Custom packages**: Add your own dependencies
|
|
81
|
+
- Auto-generates (varies by preset — see [the matrix](https://bnbong.github.io/FastAPI-fastkit/reference/preset-feature-matrix/) for details):
|
|
82
|
+
- `main.py` regenerated from selected features for `minimal` / `single-module`; preserved as-shipped for `classic-layered` / `domain-starter`
|
|
83
|
+
- Database and authentication configuration files at preset-specific paths
|
|
84
|
+
- Docker deployment files (`Dockerfile`, `docker-compose.yml`) with the preset's correct uvicorn entrypoint
|
|
85
|
+
- Test configuration (pytest with coverage)
|
|
86
|
+
|
|
60
87
|
### Create a project from a template
|
|
61
88
|
```console
|
|
62
89
|
fastkit startdemo [TEMPLATE] [OPTIONS]
|
|
@@ -95,9 +122,11 @@ fastkit deleteproject <project_name>
|
|
|
95
122
|
|
|
96
123
|
For comprehensive guides and detailed usage instructions, visit our documentation:
|
|
97
124
|
|
|
125
|
+
- 🧭 **[Which starter should I choose?](https://bnbong.github.io/FastAPI-fastkit/user-guide/choosing-a-starter/)** - Beginner decision guide for `startdemo` templates and interactive presets
|
|
98
126
|
- 📚 **[User Guide](https://bnbong.github.io/FastAPI-fastkit/user-guide/quick-start/)** - Detailed installation and usage guides
|
|
99
127
|
- 🎯 **[Tutorial](https://bnbong.github.io/FastAPI-fastkit/tutorial/getting-started/)** - Step-by-step tutorials for beginners
|
|
100
128
|
- 📖 **[CLI Reference](https://bnbong.github.io/FastAPI-fastkit/user-guide/cli-reference/)** - Complete command reference
|
|
129
|
+
- 🧱 **[Architecture Preset Matrix](https://bnbong.github.io/FastAPI-fastkit/reference/preset-feature-matrix/)** - Per-preset / per-feature contract for interactive generation
|
|
101
130
|
- 🔍 **[Template Quality Assurance](https://bnbong.github.io/FastAPI-fastkit/reference/template-quality-assurance/)** - Automated testing and quality standards
|
|
102
131
|
|
|
103
132
|
## Contributing
|
|
@@ -11,7 +11,7 @@ dependencies = [
|
|
|
11
11
|
]
|
|
12
12
|
requires-python = ">=3.12"
|
|
13
13
|
readme = "README.md"
|
|
14
|
-
version = "1.
|
|
14
|
+
version = "1.3.0"
|
|
15
15
|
|
|
16
16
|
[project.license]
|
|
17
17
|
text = "MIT"
|
|
@@ -24,12 +24,13 @@ Changelog = "https://bnbong.github.io/FastAPI-fastkit/changelog/"
|
|
|
24
24
|
|
|
25
25
|
[project.optional-dependencies]
|
|
26
26
|
dev = [
|
|
27
|
-
"pytest>=
|
|
27
|
+
"pytest>=9.0.3",
|
|
28
28
|
"pytest-cov>=6.2.1",
|
|
29
|
-
"black>=
|
|
29
|
+
"black>=26.3.1",
|
|
30
30
|
"pre-commit>=4.0.1",
|
|
31
31
|
"mypy>=1.12.0",
|
|
32
32
|
"isort>=5.13.2",
|
|
33
|
+
"pygments>=2.20.0",
|
|
33
34
|
]
|
|
34
35
|
|
|
35
36
|
[project.scripts]
|
|
@@ -120,6 +121,9 @@ docs = [
|
|
|
120
121
|
"mkdocs-static-i18n>=1.3.0",
|
|
121
122
|
"pyyaml>=6.0.3",
|
|
122
123
|
"types-PyYAML>=6.0.12.20250915",
|
|
124
|
+
"pygments>=2.20.0",
|
|
125
|
+
"requests>=2.33.0",
|
|
126
|
+
"pymdown-extensions>=10.17.2",
|
|
123
127
|
]
|
|
124
128
|
translation = [
|
|
125
129
|
"openai>=2.8.1",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = 'v1.3.0'
|
|
@@ -23,19 +23,23 @@ import os
|
|
|
23
23
|
import shutil
|
|
24
24
|
import subprocess
|
|
25
25
|
import sys
|
|
26
|
+
import tomllib
|
|
26
27
|
from pathlib import Path
|
|
27
28
|
from typing import Any, Callable, Dict, List, Optional, Tuple
|
|
28
29
|
|
|
29
30
|
import yaml
|
|
30
31
|
|
|
31
32
|
from fastapi_fastkit.backend.main import (
|
|
33
|
+
_parse_setup_dependencies,
|
|
32
34
|
create_venv,
|
|
33
35
|
find_template_core_modules,
|
|
34
36
|
inject_project_metadata,
|
|
35
37
|
install_dependencies_with_manager,
|
|
36
38
|
)
|
|
39
|
+
from fastapi_fastkit.backend.package_managers.poetry_manager import (
|
|
40
|
+
_parse_pip_requirement,
|
|
41
|
+
)
|
|
37
42
|
from fastapi_fastkit.backend.transducer import copy_and_convert_template
|
|
38
|
-
from fastapi_fastkit.core.settings import settings
|
|
39
43
|
from fastapi_fastkit.utils.logging import debug_log, get_logger
|
|
40
44
|
from fastapi_fastkit.utils.main import print_error, print_success, print_warning
|
|
41
45
|
|
|
@@ -127,7 +131,6 @@ class TemplateInspector:
|
|
|
127
131
|
|
|
128
132
|
def _force_cleanup_directory(self, directory_path: str) -> None:
|
|
129
133
|
"""Force cleanup of directory with multiple strategies."""
|
|
130
|
-
import stat
|
|
131
134
|
import time
|
|
132
135
|
|
|
133
136
|
max_retries = 5
|
|
@@ -396,20 +399,39 @@ class TemplateInspector:
|
|
|
396
399
|
return True
|
|
397
400
|
|
|
398
401
|
def _check_file_structure(self) -> bool:
|
|
399
|
-
"""Check the required file and directory structure.
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
402
|
+
"""Check the required file and directory structure.
|
|
403
|
+
|
|
404
|
+
Modern templates may ship ``pyproject.toml-tpl`` as the primary metadata
|
|
405
|
+
file; ``setup.py-tpl`` remains accepted for backward compatibility.
|
|
406
|
+
A template must provide at least one of the two. ``requirements.txt-tpl``
|
|
407
|
+
is no longer strictly required when ``pyproject.toml-tpl`` declares
|
|
408
|
+
``[project].dependencies``.
|
|
409
|
+
"""
|
|
410
|
+
always_required = ["tests", "README.md-tpl"]
|
|
411
|
+
metadata_candidates = ["pyproject.toml-tpl", "setup.py-tpl"]
|
|
412
|
+
|
|
413
|
+
missing_required = [
|
|
414
|
+
path for path in always_required if not (self.template_path / path).exists()
|
|
405
415
|
]
|
|
416
|
+
has_metadata = any(
|
|
417
|
+
(self.template_path / name).exists() for name in metadata_candidates
|
|
418
|
+
)
|
|
406
419
|
|
|
407
|
-
|
|
408
|
-
|
|
420
|
+
if missing_required:
|
|
421
|
+
for path in missing_required:
|
|
409
422
|
error_msg = f"Missing required path: {path}"
|
|
410
423
|
self.errors.append(error_msg)
|
|
411
424
|
debug_log(f"File structure check failed: {error_msg}", "error")
|
|
412
|
-
|
|
425
|
+
if not has_metadata:
|
|
426
|
+
error_msg = (
|
|
427
|
+
"Missing metadata file: expected pyproject.toml-tpl "
|
|
428
|
+
"(preferred) or setup.py-tpl"
|
|
429
|
+
)
|
|
430
|
+
self.errors.append(error_msg)
|
|
431
|
+
debug_log(f"File structure check failed: {error_msg}", "error")
|
|
432
|
+
|
|
433
|
+
if missing_required or not has_metadata:
|
|
434
|
+
return False
|
|
413
435
|
|
|
414
436
|
debug_log("File structure check passed", "info")
|
|
415
437
|
return True
|
|
@@ -427,40 +449,139 @@ class TemplateInspector:
|
|
|
427
449
|
return True
|
|
428
450
|
|
|
429
451
|
def _check_dependencies(self) -> bool:
|
|
430
|
-
"""Check
|
|
452
|
+
"""Check that FastAPI is declared in at least one supported source.
|
|
453
|
+
|
|
454
|
+
All three metadata sources are consulted independently:
|
|
455
|
+
|
|
456
|
+
- ``requirements.txt-tpl``
|
|
457
|
+
- ``pyproject.toml-tpl`` ``[project].dependencies``
|
|
458
|
+
- ``setup.py-tpl`` ``install_requires``
|
|
459
|
+
|
|
460
|
+
The check passes if *any* source declares ``fastapi``, so a template
|
|
461
|
+
with a stale ``requirements.txt-tpl`` still passes when
|
|
462
|
+
``pyproject.toml-tpl`` is authoritative. It fails only when every
|
|
463
|
+
present source is missing ``fastapi`` (or when no source exists at
|
|
464
|
+
all — that also implies no metadata file, which
|
|
465
|
+
``_check_file_structure`` already rejects).
|
|
466
|
+
"""
|
|
431
467
|
req_path = self.template_path / "requirements.txt-tpl"
|
|
468
|
+
pyproject_path = self.template_path / "pyproject.toml-tpl"
|
|
432
469
|
setup_path = self.template_path / "setup.py-tpl"
|
|
433
470
|
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
471
|
+
sources_checked: List[str] = []
|
|
472
|
+
fastapi_declared = False
|
|
473
|
+
|
|
474
|
+
if req_path.exists():
|
|
475
|
+
sources_checked.append("requirements.txt-tpl")
|
|
476
|
+
try:
|
|
477
|
+
with open(req_path, encoding="utf-8") as f:
|
|
478
|
+
deps = f.read().splitlines()
|
|
479
|
+
package_names = {
|
|
480
|
+
_parse_pip_requirement(dep)[0].lower()
|
|
481
|
+
for dep in deps
|
|
482
|
+
if dep.strip() and not dep.strip().startswith("#")
|
|
483
|
+
}
|
|
484
|
+
debug_log(
|
|
485
|
+
f"requirements.txt-tpl dependencies: {sorted(package_names)}",
|
|
486
|
+
"debug",
|
|
487
|
+
)
|
|
488
|
+
if "fastapi" in package_names:
|
|
489
|
+
fastapi_declared = True
|
|
490
|
+
except (OSError, UnicodeDecodeError) as e:
|
|
491
|
+
error_msg = f"Error reading requirements.txt-tpl: {e}"
|
|
492
|
+
self.errors.append(error_msg)
|
|
493
|
+
debug_log(f"Dependencies check failed: {error_msg}", "error")
|
|
494
|
+
return False
|
|
495
|
+
|
|
496
|
+
if pyproject_path.exists():
|
|
497
|
+
sources_checked.append("pyproject.toml-tpl")
|
|
498
|
+
package_names, parse_error = self._extract_pyproject_dependency_names(
|
|
499
|
+
pyproject_path
|
|
500
|
+
)
|
|
501
|
+
if parse_error is not None:
|
|
502
|
+
self.errors.append(parse_error)
|
|
503
|
+
debug_log(f"Dependencies check failed: {parse_error}", "error")
|
|
504
|
+
return False
|
|
505
|
+
debug_log(
|
|
506
|
+
f"pyproject.toml-tpl dependencies: {sorted(package_names)}", "debug"
|
|
507
|
+
)
|
|
508
|
+
if "fastapi" in package_names:
|
|
509
|
+
fastapi_declared = True
|
|
510
|
+
|
|
511
|
+
if setup_path.exists():
|
|
512
|
+
sources_checked.append("setup.py-tpl")
|
|
513
|
+
try:
|
|
514
|
+
with open(setup_path, encoding="utf-8") as f:
|
|
515
|
+
content = f.read()
|
|
516
|
+
deps = _parse_setup_dependencies(content)
|
|
517
|
+
package_names = {
|
|
518
|
+
_parse_pip_requirement(dep)[0].lower() for dep in deps if dep
|
|
519
|
+
}
|
|
520
|
+
debug_log(
|
|
521
|
+
f"setup.py-tpl dependencies: {sorted(package_names)}", "debug"
|
|
522
|
+
)
|
|
523
|
+
if "fastapi" in package_names:
|
|
524
|
+
fastapi_declared = True
|
|
525
|
+
except (OSError, UnicodeDecodeError) as e:
|
|
526
|
+
error_msg = f"Error reading setup.py-tpl: {e}"
|
|
527
|
+
self.errors.append(error_msg)
|
|
528
|
+
debug_log(f"Dependencies check failed: {error_msg}", "error")
|
|
529
|
+
return False
|
|
530
|
+
|
|
531
|
+
if not sources_checked:
|
|
532
|
+
error_msg = (
|
|
533
|
+
"No dependency source found: expected one of requirements.txt-tpl, "
|
|
534
|
+
"pyproject.toml-tpl, or setup.py-tpl"
|
|
535
|
+
)
|
|
441
536
|
self.errors.append(error_msg)
|
|
442
537
|
debug_log(f"Dependencies check failed: {error_msg}", "error")
|
|
443
538
|
return False
|
|
444
539
|
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
error_msg = "FastAPI dependency not found in requirements.txt-tpl"
|
|
452
|
-
self.errors.append(error_msg)
|
|
453
|
-
debug_log(f"Dependencies check failed: {error_msg}", "error")
|
|
454
|
-
return False
|
|
455
|
-
except (OSError, UnicodeDecodeError) as e:
|
|
456
|
-
error_msg = f"Error reading requirements.txt-tpl: {e}"
|
|
540
|
+
if not fastapi_declared:
|
|
541
|
+
error_msg = (
|
|
542
|
+
"FastAPI dependency not found in any source ("
|
|
543
|
+
+ ", ".join(sources_checked)
|
|
544
|
+
+ ")"
|
|
545
|
+
)
|
|
457
546
|
self.errors.append(error_msg)
|
|
458
547
|
debug_log(f"Dependencies check failed: {error_msg}", "error")
|
|
459
548
|
return False
|
|
460
549
|
|
|
461
|
-
debug_log(
|
|
550
|
+
debug_log(
|
|
551
|
+
f"Dependencies check passed (sources: {', '.join(sources_checked)})",
|
|
552
|
+
"info",
|
|
553
|
+
)
|
|
462
554
|
return True
|
|
463
555
|
|
|
556
|
+
@staticmethod
|
|
557
|
+
def _extract_pyproject_dependency_names(
|
|
558
|
+
pyproject_path: Path,
|
|
559
|
+
) -> Tuple[set, Optional[str]]: # type: ignore
|
|
560
|
+
"""Parse a pyproject.toml-tpl and return (lowercased dep names, error).
|
|
561
|
+
|
|
562
|
+
``error`` is ``None`` on success. Returns an empty set with a descriptive
|
|
563
|
+
error string when the file is unreadable or malformed.
|
|
564
|
+
"""
|
|
565
|
+
try:
|
|
566
|
+
with open(pyproject_path, "rb") as f:
|
|
567
|
+
data = tomllib.load(f)
|
|
568
|
+
except (OSError, tomllib.TOMLDecodeError, UnicodeDecodeError) as e:
|
|
569
|
+
return set(), f"Invalid pyproject.toml-tpl: {e}"
|
|
570
|
+
|
|
571
|
+
project = data.get("project", {})
|
|
572
|
+
raw_deps = project.get("dependencies", []) or []
|
|
573
|
+
if not isinstance(raw_deps, list):
|
|
574
|
+
return set(), "pyproject.toml-tpl [project].dependencies must be a list"
|
|
575
|
+
|
|
576
|
+
names: set = set() # type: ignore
|
|
577
|
+
for dep in raw_deps:
|
|
578
|
+
if not isinstance(dep, str) or not dep.strip():
|
|
579
|
+
continue
|
|
580
|
+
name = _parse_pip_requirement(dep)[0]
|
|
581
|
+
if name:
|
|
582
|
+
names.add(name.lower())
|
|
583
|
+
return names, None
|
|
584
|
+
|
|
464
585
|
def _check_fastapi_implementation(self) -> bool:
|
|
465
586
|
"""Check if the template has a proper FastAPI server implementation."""
|
|
466
587
|
try:
|
{fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/backend/interactive/__init__.py
RENAMED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
from .config_builder import InteractiveConfigBuilder
|
|
10
10
|
from .prompts import (
|
|
11
11
|
prompt_additional_features,
|
|
12
|
+
prompt_architecture_preset,
|
|
12
13
|
prompt_authentication_selection,
|
|
13
14
|
prompt_basic_info,
|
|
14
15
|
prompt_caching_selection,
|
|
@@ -31,6 +32,7 @@ from .validators import (
|
|
|
31
32
|
__all__ = [
|
|
32
33
|
"InteractiveConfigBuilder",
|
|
33
34
|
"prompt_basic_info",
|
|
35
|
+
"prompt_architecture_preset",
|
|
34
36
|
"prompt_template_selection",
|
|
35
37
|
"prompt_database_selection",
|
|
36
38
|
"prompt_authentication_selection",
|
|
@@ -12,6 +12,7 @@ from fastapi_fastkit.utils.main import console, print_warning
|
|
|
12
12
|
|
|
13
13
|
from .prompts import (
|
|
14
14
|
prompt_additional_features,
|
|
15
|
+
prompt_architecture_preset,
|
|
15
16
|
prompt_basic_info,
|
|
16
17
|
prompt_template_selection,
|
|
17
18
|
)
|
|
@@ -51,11 +52,15 @@ class InteractiveConfigBuilder:
|
|
|
51
52
|
# Step 1: Basic information
|
|
52
53
|
self._collect_basic_info()
|
|
53
54
|
|
|
54
|
-
# Step 2:
|
|
55
|
+
# Step 2: Architecture preset — chosen early so downstream prompts
|
|
56
|
+
# (and later, preset-specific scaffolding) can branch on the layout.
|
|
57
|
+
self._collect_architecture_preset()
|
|
58
|
+
|
|
59
|
+
# Step 3: Always use Empty template as base for interactive mode
|
|
55
60
|
# (Feature selection will build the project incrementally)
|
|
56
61
|
self.config["base_template"] = None # None = Empty project
|
|
57
62
|
|
|
58
|
-
# Step
|
|
63
|
+
# Step 4: Feature selections
|
|
59
64
|
self._collect_feature_selections()
|
|
60
65
|
|
|
61
66
|
# Step 4: Build final configuration
|
|
@@ -78,6 +83,20 @@ class InteractiveConfigBuilder:
|
|
|
78
83
|
basic_info = prompt_basic_info()
|
|
79
84
|
self.config.update(basic_info)
|
|
80
85
|
|
|
86
|
+
def _collect_architecture_preset(self) -> None:
|
|
87
|
+
"""Collect the user's architecture preset choice.
|
|
88
|
+
|
|
89
|
+
Persists the canonical id on the config under ``architecture_preset``
|
|
90
|
+
(used by downstream code) plus the human-readable description under
|
|
91
|
+
``architecture_preset_description`` (used by the confirmation summary
|
|
92
|
+
so users see what their choice means, not just the raw id).
|
|
93
|
+
"""
|
|
94
|
+
preset = prompt_architecture_preset(self.settings)
|
|
95
|
+
self.config["architecture_preset"] = preset
|
|
96
|
+
self.config["architecture_preset_description"] = (
|
|
97
|
+
self.settings.ARCHITECTURE_PRESETS.get(preset, "")
|
|
98
|
+
)
|
|
99
|
+
|
|
81
100
|
def _collect_template_selection(self) -> None:
|
|
82
101
|
"""Collect template selection."""
|
|
83
102
|
template = prompt_template_selection(self.settings)
|
{fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/backend/interactive/prompts.py
RENAMED
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
from typing import Any, Dict, List, Optional, cast
|
|
16
16
|
|
|
17
17
|
import click
|
|
18
|
-
from rich.panel import Panel
|
|
19
18
|
|
|
20
19
|
from fastapi_fastkit.utils.main import console, print_error
|
|
21
20
|
|
|
@@ -64,6 +63,58 @@ def prompt_basic_info() -> Dict[str, str]:
|
|
|
64
63
|
}
|
|
65
64
|
|
|
66
65
|
|
|
66
|
+
def prompt_architecture_preset(settings: Any) -> str:
|
|
67
|
+
"""
|
|
68
|
+
Prompt for the project's architecture preset.
|
|
69
|
+
|
|
70
|
+
Run early in the interactive flow so downstream prompts (and later,
|
|
71
|
+
preset-specific scaffolding) can branch on the user's choice. Returns
|
|
72
|
+
the canonical preset id (one of the keys in
|
|
73
|
+
``settings.ARCHITECTURE_PRESETS``).
|
|
74
|
+
|
|
75
|
+
The recommended default (``settings.DEFAULT_ARCHITECTURE_PRESET``) is
|
|
76
|
+
annotated as such in the rendered table so users can spot it at a glance
|
|
77
|
+
and accept it with a single Enter press.
|
|
78
|
+
|
|
79
|
+
Args:
|
|
80
|
+
settings: FastkitConfig instance
|
|
81
|
+
|
|
82
|
+
Returns:
|
|
83
|
+
Preset id, e.g. ``"domain-starter"``.
|
|
84
|
+
"""
|
|
85
|
+
console.print("\n[bold cyan]🧱 Architecture Preset[/bold cyan]")
|
|
86
|
+
console.print(
|
|
87
|
+
"[dim]Pick a project layout. Generation logic for each preset is "
|
|
88
|
+
"rolled out incrementally — your choice is recorded in the "
|
|
89
|
+
"config either way.[/dim]\n"
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
presets: Dict[str, str] = settings.ARCHITECTURE_PRESETS
|
|
93
|
+
default_id: str = settings.DEFAULT_ARCHITECTURE_PRESET
|
|
94
|
+
# Derive a display-only mapping so the recommended default is visibly
|
|
95
|
+
# annotated without mutating the canonical catalog in settings.
|
|
96
|
+
display_options: Dict[str, str] = {
|
|
97
|
+
preset_id: (
|
|
98
|
+
f"{description} [bold green](recommended default)[/bold green]"
|
|
99
|
+
if preset_id == default_id
|
|
100
|
+
else description
|
|
101
|
+
)
|
|
102
|
+
for preset_id, description in presets.items()
|
|
103
|
+
}
|
|
104
|
+
render_selection_table("Architecture Presets", display_options)
|
|
105
|
+
|
|
106
|
+
preset_ids = list(presets.keys())
|
|
107
|
+
default_idx = preset_ids.index(default_id) + 1
|
|
108
|
+
|
|
109
|
+
choice = click.prompt(
|
|
110
|
+
f"\nSelect architecture preset (default: {default_id})",
|
|
111
|
+
type=click.IntRange(1, len(preset_ids)),
|
|
112
|
+
default=default_idx,
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
return cast(str, preset_ids[choice - 1])
|
|
116
|
+
|
|
117
|
+
|
|
67
118
|
def prompt_template_selection(settings: Any) -> Optional[str]:
|
|
68
119
|
"""
|
|
69
120
|
Prompt for base template selection.
|
{fastapi_fastkit-1.2.0 → fastapi_fastkit-1.3.0}/src/fastapi_fastkit/backend/interactive/selectors.py
RENAMED
|
@@ -133,6 +133,16 @@ def confirm_selections(config: Dict[str, Any]) -> bool:
|
|
|
133
133
|
table.add_row("Email", config.get("author_email", "N/A"))
|
|
134
134
|
table.add_row("Description", config.get("description", "N/A"))
|
|
135
135
|
|
|
136
|
+
# Architecture preset (interactive ``init`` always sets this; older
|
|
137
|
+
# callers may not — guard with a falsy check to stay backward compatible).
|
|
138
|
+
preset = config.get("architecture_preset")
|
|
139
|
+
if preset:
|
|
140
|
+
preset_description = config.get("architecture_preset_description", "")
|
|
141
|
+
table.add_row(
|
|
142
|
+
"Architecture Preset",
|
|
143
|
+
f"{preset} — {preset_description}" if preset_description else preset,
|
|
144
|
+
)
|
|
145
|
+
|
|
136
146
|
# Template
|
|
137
147
|
if config.get("base_template"):
|
|
138
148
|
table.add_row("Base Template", config["base_template"])
|