quadkit-cli 0.0.3__tar.gz → 0.0.4__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.
- quadkit_cli-0.0.4/.gitignore +183 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/PKG-INFO +66 -32
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/README.md +44 -10
- quadkit_cli-0.0.4/docs/ARCHITECTURE.md +586 -0
- quadkit_cli-0.0.4/docs/COMMANDS.md +258 -0
- quadkit_cli-0.0.4/docs/CONFIGURATION.md +46 -0
- quadkit_cli-0.0.4/docs/GUIDE.md +205 -0
- quadkit_cli-0.0.4/docs/HOWTOS.md +92 -0
- quadkit_cli-0.0.4/docs/PROJECT_LAYOUT.md +242 -0
- quadkit_cli-0.0.4/docs/PUBLIC_PACKAGE_CLI_MATRIX.md +89 -0
- quadkit_cli-0.0.4/docs/QUICKSTART.md +67 -0
- quadkit_cli-0.0.4/docs/TROUBLESHOOTING.md +150 -0
- quadkit_cli-0.0.4/example.yaml +8 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/pyproject.toml +22 -23
- quadkit_cli-0.0.4/src/quadkit/cli/commands/__init__.py +48 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/config.py +37 -10
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/db_bootstrap.py +5 -5
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/events.py +7 -6
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/init.py +3 -1
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/inspect.py +2 -1
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/meta.py +58 -38
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/new.py +6 -3
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/project.py +3 -4
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/system.py +38 -33
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/config.py +0 -3
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/contributors/core.py +4 -1
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/lib/__init__.py +0 -2
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/lib/config_loader.py +10 -2
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/output/manager.py +8 -9
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/package_names.py +42 -8
- quadkit_cli-0.0.4/src/quadkit/cli/registry/__init__.py +363 -0
- quadkit_cli-0.0.4/src/quadkit/cli/registry/_lazy_exports.py +167 -0
- quadkit_cli-0.0.4/src/quadkit/cli/registry/database.py +216 -0
- quadkit_cli-0.0.3/src/quadkit/cli/registry/database.py → quadkit_cli-0.0.4/src/quadkit/cli/registry/database_backends.py +6 -192
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/health_checks/providers.py +3 -14
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/migration.py +7 -1
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/presets.py +7 -5
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/secrets.py +6 -1
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/template.py +4 -5
- quadkit_cli-0.0.4/src/quadkit/cli/runtime/__init__.py +37 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/runtime/context.py +8 -1
- quadkit_cli-0.0.4/src/quadkit/cli/runtime/main.py +330 -0
- quadkit_cli-0.0.4/src/quadkit/cli/scaffold/__init__.py +59 -0
- quadkit_cli-0.0.4/src/quadkit/cli/scaffold/app_files.py +377 -0
- quadkit_cli-0.0.4/src/quadkit/cli/scaffold/module_files.py +328 -0
- quadkit_cli-0.0.4/src/quadkit/cli/scaffold/render.py +193 -0
- quadkit_cli-0.0.4/src/quadkit/cli/scaffold/specs.py +201 -0
- quadkit_cli-0.0.4/src/quadkit/cli/scaffold/support_files.py +143 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/conftest.py +2 -4
- quadkit_cli-0.0.4/tests/helpers/runner.py +153 -0
- quadkit_cli-0.0.4/tests/unit/commands/test_events_cmd.py +58 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/commands/test_system.py +15 -5
- quadkit_cli-0.0.4/tests/unit/registry/test_completion.py +80 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/registry/test_database.py +5 -5
- quadkit_cli-0.0.4/tests/unit/registry/test_presets.py +120 -0
- quadkit_cli-0.0.4/tests/unit/registry/test_template.py +180 -0
- quadkit_cli-0.0.4/tests/unit/test_add.py +131 -0
- quadkit_cli-0.0.4/tests/unit/test_cli_contribution_system__testclicontributorsubprovider.py +478 -0
- quadkit_cli-0.0.4/tests/unit/test_cli_import_isolation.py +229 -0
- quadkit_cli-0.0.4/tests/unit/test_generator_option_help.py +65 -0
- quadkit_cli-0.0.4/tests/unit/test_health_checks.py +312 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_new.py +1 -1
- quadkit_cli-0.0.4/tests/unit/test_package_names.py +153 -0
- quadkit_cli-0.0.4/tests/unit/test_public_surface.py +85 -0
- quadkit_cli-0.0.4/tests/unit/test_scaffold_and_validators.py +314 -0
- quadkit_cli-0.0.4/tests/unit/test_storage_driver_generator.py +46 -0
- quadkit_cli-0.0.3/.gitignore +0 -24
- quadkit_cli-0.0.3/example.yaml +0 -13
- quadkit_cli-0.0.3/src/quadkit/cli/commands/__init__.py +0 -36
- quadkit_cli-0.0.3/src/quadkit/cli/lib/config_gen.py +0 -310
- quadkit_cli-0.0.3/src/quadkit/cli/lib/console.py +0 -18
- quadkit_cli-0.0.3/src/quadkit/cli/registry/__init__.py +0 -338
- quadkit_cli-0.0.3/src/quadkit/cli/runtime/__init__.py +0 -8
- quadkit_cli-0.0.3/src/quadkit/cli/runtime/main.py +0 -154
- quadkit_cli-0.0.3/src/quadkit/cli/scaffold.py +0 -1176
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/LICENSE +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/NOTICE +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/__init__.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/assembly/__init__.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/assembly/assembler.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/add.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/config_utils.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/contrib.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/db.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/db_commands_data.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/db_commands_migrations.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/db_commands_ops.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/dev.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/gen.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/py.typed +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/run.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/shell.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/constants.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/contributors/__init__.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/contributors/base.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/contributors/discovery.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/contributors/registry.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/contributors/runtime.py +1 -1
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/decorators.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/di/__init__.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/di/provider.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/di/sub_providers/__init__.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/di/sub_providers/contributor.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/events.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/exceptions.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/generators/__init__.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/generators/base.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/generators/field_parser.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/generators/provider.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/generators/test.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/hooks.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/layout.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/lib/entry_point.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/lib/naming.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/lib/templates.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/module.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/output/__init__.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/protocols.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/py.typed +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/backend_base.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/command.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/completion.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/config.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/environment.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/formatter.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/generator.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/health.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/health_checks/__init__.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/health_checks/base.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/health_checks/deps.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/health_checks/project.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/health_checks/python_env.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/health_checks/tools.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/health_checks/vcs_docker.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/hook.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/inspect.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/provider.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/provider_catalog.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/provider_registry.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/serializer.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/server.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/task.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/telemetry.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/version.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/watcher.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/runtime/error_handler.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/scaffold_package.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/templates/provider.py.jinja2 +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/templates/py.typed +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/templates/test_unit.py.jinja2 +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/types.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/py.typed +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/integration/__init__.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/integration/test_cli_lifecycle.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/test_package_structure_p1.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/__init__.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/_test_cli_contribution_system_support.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/commands/__init__.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/commands/test_config.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/commands/test_config_happy_paths.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/commands/test_contrib.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/commands/test_inspect.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/commands/test_meta.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/commands/test_run.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/commands/test_shell.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/di/test_config_alignment.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/lib/test_templates.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/registry/__init__.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/registry/test_environment.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/registry/test_formatter.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/registry/test_health.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/registry/test_hook.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/registry/test_inspect_registry.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/registry/test_migration.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/registry/test_secrets.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/registry/test_serializer.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/registry/test_task.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/registry/test_telemetry.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/registry/test_version.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/registry/test_watcher.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_base_contributor.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_cli_constants.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_cli_context.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_cli_contribution_system.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_cli_errors.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_cli_exceptions.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_cli_module.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_cli_types.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_config_async.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_config_loader.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_config_save.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_config_validate.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_contributor_registry.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_contributor_runtime.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_core_contributor.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_db.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_decorators.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_dev_command.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_error_handler.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_events.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_exception_handling.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_field_parser.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_gen.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_gen_controller.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_gen_provider.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_generator_base.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_generator_registry.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_generators_contract.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_hooks.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_init_command.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_layout.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_main.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_output.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_output_json.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_project.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_project_layout.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_provider_registry.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_round40_hardening.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_run_detection.py +0 -0
- {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_server_registry.py +0 -0
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
*
|
|
2
|
+
!tests/
|
|
3
|
+
!tests/**
|
|
4
|
+
!README.md
|
|
5
|
+
!AGENTS.md
|
|
6
|
+
!DEVELOPMENT.md
|
|
7
|
+
!QUICKGUIDE.md
|
|
8
|
+
!MILESTONE*.md
|
|
9
|
+
!TESTS*.md
|
|
10
|
+
!CHANGELOG.md
|
|
11
|
+
!AUDIT*.md
|
|
12
|
+
!REF*.md
|
|
13
|
+
!AUDIT*.json
|
|
14
|
+
!LICENSE
|
|
15
|
+
!LICENSE-MIT.txt
|
|
16
|
+
!NOTICE
|
|
17
|
+
!TRADEMARK.md
|
|
18
|
+
!conftest.py
|
|
19
|
+
!CONTRIBUTING.md
|
|
20
|
+
!CODE_OF_CONDUCT.md
|
|
21
|
+
!SECURITY.md
|
|
22
|
+
!GOVERNANCE.md
|
|
23
|
+
!pyproject.toml
|
|
24
|
+
!uv.lock
|
|
25
|
+
!docker-compose.yml
|
|
26
|
+
!.env.example
|
|
27
|
+
!.env.full.example
|
|
28
|
+
!.importlinter
|
|
29
|
+
!.superpowers/
|
|
30
|
+
!.superpowers/**
|
|
31
|
+
!.gitattributes
|
|
32
|
+
!.editorconfig
|
|
33
|
+
!Makefile
|
|
34
|
+
!docker-compose.test.yml
|
|
35
|
+
!quadkit.yaml.example
|
|
36
|
+
!.github/
|
|
37
|
+
!.github/workflows/
|
|
38
|
+
!.github/workflows/**
|
|
39
|
+
!.github/dependabot.yml
|
|
40
|
+
!.devcontainer/
|
|
41
|
+
!.devcontainer/**
|
|
42
|
+
!tools/
|
|
43
|
+
!tools/**
|
|
44
|
+
!*example.yaml
|
|
45
|
+
|
|
46
|
+
# Quadkit Packages
|
|
47
|
+
!quadkit*/
|
|
48
|
+
!quadkit*/pyproject.toml
|
|
49
|
+
!quadkit*/CHANGELOG.md
|
|
50
|
+
!quadkit*/README.md
|
|
51
|
+
!quadkit*/alembic.ini
|
|
52
|
+
!quadkit*/mypy.ini
|
|
53
|
+
!quadkit*/*.yaml.example
|
|
54
|
+
!quadkit*/src/
|
|
55
|
+
!quadkit*/src/**
|
|
56
|
+
!quadkit*/docs/
|
|
57
|
+
!quadkit*/docs/**
|
|
58
|
+
!quadkit*/tests/
|
|
59
|
+
!quadkit*/tests/**
|
|
60
|
+
|
|
61
|
+
# Keep quadkit docs
|
|
62
|
+
!/docs/
|
|
63
|
+
!docs/**
|
|
64
|
+
|
|
65
|
+
# Session / cutover plans at the repo root
|
|
66
|
+
!plans/
|
|
67
|
+
!plans/**
|
|
68
|
+
|
|
69
|
+
# Keep example files for README examples
|
|
70
|
+
!/examples/
|
|
71
|
+
!/examples/**
|
|
72
|
+
|
|
73
|
+
# Re-ignore these AFTER negations (last match wins)
|
|
74
|
+
*.tape
|
|
75
|
+
examples/*/runs/
|
|
76
|
+
__pycache__/
|
|
77
|
+
*.pyc
|
|
78
|
+
*.pyo
|
|
79
|
+
*.egg-info/
|
|
80
|
+
dist/
|
|
81
|
+
build/
|
|
82
|
+
.eggs/
|
|
83
|
+
*.egg
|
|
84
|
+
.pytest_cache/
|
|
85
|
+
.mypy_cache/
|
|
86
|
+
.ruff_cache/
|
|
87
|
+
htmlcov/
|
|
88
|
+
.coverage
|
|
89
|
+
coverage.xml
|
|
90
|
+
test.db
|
|
91
|
+
!quadkit*/tests/fixtures/test.db
|
|
92
|
+
*.log
|
|
93
|
+
*.tmp
|
|
94
|
+
|
|
95
|
+
# Company-specific files (keep private, do not commit)
|
|
96
|
+
.company/
|
|
97
|
+
COMPANY_*.md
|
|
98
|
+
company-config/
|
|
99
|
+
internal-docs/
|
|
100
|
+
# Editor swap files
|
|
101
|
+
*.swp
|
|
102
|
+
|
|
103
|
+
!core/
|
|
104
|
+
!packages/
|
|
105
|
+
!core/quadkit*/
|
|
106
|
+
!packages/quadkit*/
|
|
107
|
+
!core/quadkit*/pyproject.toml
|
|
108
|
+
!packages/quadkit*/pyproject.toml
|
|
109
|
+
!core/quadkit*/CHANGELOG.md
|
|
110
|
+
!packages/quadkit*/CHANGELOG.md
|
|
111
|
+
!core/quadkit*/README.md
|
|
112
|
+
!packages/quadkit*/README.md
|
|
113
|
+
!core/quadkit*/alembic.ini
|
|
114
|
+
!packages/quadkit*/alembic.ini
|
|
115
|
+
!core/quadkit*/mypy.ini
|
|
116
|
+
!packages/quadkit*/mypy.ini
|
|
117
|
+
!core/quadkit*/*.yaml.example
|
|
118
|
+
!packages/quadkit*/*.yaml.example
|
|
119
|
+
!core/quadkit*/src/
|
|
120
|
+
!core/quadkit*/src/**
|
|
121
|
+
!packages/quadkit*/src/
|
|
122
|
+
!packages/quadkit*/src/**
|
|
123
|
+
!core/quadkit*/tests/
|
|
124
|
+
!core/quadkit*/tests/**
|
|
125
|
+
!packages/quadkit*/tests/
|
|
126
|
+
!packages/quadkit*/tests/**
|
|
127
|
+
!core/quadkit*/docs/
|
|
128
|
+
!core/quadkit*/docs/**
|
|
129
|
+
!packages/quadkit*/docs/
|
|
130
|
+
!packages/quadkit*/docs/**
|
|
131
|
+
|
|
132
|
+
# dev/
|
|
133
|
+
!dev/
|
|
134
|
+
!dev/**
|
|
135
|
+
|
|
136
|
+
# Admin dev playground (committed dev asset; local SQLite files stay ignored)
|
|
137
|
+
!packages/quadkit-admin/playground/
|
|
138
|
+
!packages/quadkit-admin/playground/serve.py
|
|
139
|
+
|
|
140
|
+
# gatewai apps
|
|
141
|
+
!apps/
|
|
142
|
+
!apps/**
|
|
143
|
+
!apps/gatewai/
|
|
144
|
+
!apps/gatewai/**
|
|
145
|
+
apps/**/node_modules/
|
|
146
|
+
apps/**/dist/
|
|
147
|
+
apps/**/__pycache__/
|
|
148
|
+
apps/**/*.pyc
|
|
149
|
+
apps/**/*.db
|
|
150
|
+
apps/**/*.db-wal
|
|
151
|
+
apps/**/*.db-shm
|
|
152
|
+
|
|
153
|
+
# Re-exclude private content under the tiered paths.
|
|
154
|
+
# MUST come after the !...docs/** negations above — last match wins.
|
|
155
|
+
core/quadkit*/docs/plans/
|
|
156
|
+
packages/quadkit*/docs/plans/
|
|
157
|
+
core/quadkit*/docs/**/
|
|
158
|
+
packages/quadkit*/docs/**/
|
|
159
|
+
|
|
160
|
+
# Re-exclude tooling artifacts under the tiered paths
|
|
161
|
+
__pycache__/
|
|
162
|
+
*.pyc
|
|
163
|
+
*.pyo
|
|
164
|
+
*.egg-info/
|
|
165
|
+
.pytest_cache/
|
|
166
|
+
.mypy_cache/
|
|
167
|
+
.ruff_cache/
|
|
168
|
+
htmlcov/
|
|
169
|
+
.coverage
|
|
170
|
+
coverage.xml
|
|
171
|
+
test.db
|
|
172
|
+
*.tmp
|
|
173
|
+
*.log
|
|
174
|
+
!core/quadkit*/tests/fixtures/test.db
|
|
175
|
+
!packages/quadkit*/tests/fixtures/test.db
|
|
176
|
+
|
|
177
|
+
# Allow the generated example gifs to be tracked (README hero images).
|
|
178
|
+
!core/quadkit*/docs/gifs/
|
|
179
|
+
!core/quadkit*/docs/gifs/**
|
|
180
|
+
!packages/*/quadkit*/docs/gifs/
|
|
181
|
+
!packages/*/quadkit*/docs/gifs/**
|
|
182
|
+
examples/*/screenshot.png
|
|
183
|
+
!banner*
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: quadkit-cli
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.4
|
|
4
4
|
Summary: Command-line interface for Quadkit Framework - Project scaffolding, code generation, and development tools
|
|
5
|
-
Project-URL: Homepage, https://quadkit
|
|
5
|
+
Project-URL: Homepage, https://dbtinoy-.github.io/quadkit/
|
|
6
6
|
Project-URL: Repository, https://github.com/dbtinoy-/quadkit
|
|
7
|
-
Project-URL: Documentation, https://quadkit
|
|
7
|
+
Project-URL: Documentation, https://dbtinoy-.github.io/quadkit/
|
|
8
8
|
Project-URL: Issues, https://github.com/dbtinoy-/quadkit/issues
|
|
9
9
|
Project-URL: Changelog, https://github.com/dbtinoy-/quadkit/blob/main/CHANGELOG.md
|
|
10
10
|
Author-email: Quadkit Framework Team <team@quadkit.dev>
|
|
@@ -26,36 +26,42 @@ Classifier: Topic :: Software Development :: Code Generators
|
|
|
26
26
|
Classifier: Topic :: Utilities
|
|
27
27
|
Classifier: Typing :: Typed
|
|
28
28
|
Requires-Python: >=3.11
|
|
29
|
-
Requires-Dist: aiofiles
|
|
30
|
-
Requires-Dist:
|
|
31
|
-
Requires-Dist:
|
|
32
|
-
Requires-Dist:
|
|
33
|
-
Requires-Dist: pyyaml
|
|
29
|
+
Requires-Dist: aiofiles<26,>=23.0.0
|
|
30
|
+
Requires-Dist: click<9,>=8.1.0
|
|
31
|
+
Requires-Dist: httpx<1,>=0.25.0
|
|
32
|
+
Requires-Dist: jinja2<4,>=3.1.0
|
|
33
|
+
Requires-Dist: pyyaml<7,>=6.0
|
|
34
34
|
Requires-Dist: quadkit-contracts>=0.0.2
|
|
35
35
|
Requires-Dist: quadkit>=0.0.2
|
|
36
|
-
Requires-Dist: rich
|
|
37
|
-
Requires-Dist: shellingham
|
|
38
|
-
Requires-Dist: tomli
|
|
39
|
-
Requires-Dist: typer[all]
|
|
40
|
-
Requires-Dist: watchfiles
|
|
36
|
+
Requires-Dist: rich<14,>=13.0.0
|
|
37
|
+
Requires-Dist: shellingham<2,>=1.5.0
|
|
38
|
+
Requires-Dist: tomli<3,>=2.0.0
|
|
39
|
+
Requires-Dist: typer[all]<1,>=0.9.0
|
|
40
|
+
Requires-Dist: watchfiles<2,>=0.21.0
|
|
41
41
|
Provides-Extra: all
|
|
42
|
-
Requires-Dist: pytest-asyncio
|
|
43
|
-
Requires-Dist: pytest-cov
|
|
44
|
-
Requires-Dist: pytest
|
|
42
|
+
Requires-Dist: pytest-asyncio<2,>=0.21.0; extra == 'all'
|
|
43
|
+
Requires-Dist: pytest-cov<8,>=4.0.0; extra == 'all'
|
|
44
|
+
Requires-Dist: pytest<10,>=8.0.0; extra == 'all'
|
|
45
45
|
Requires-Dist: quadkit-testing>=0.0.2; extra == 'all'
|
|
46
46
|
Provides-Extra: dev
|
|
47
|
-
Requires-Dist: black
|
|
48
|
-
Requires-Dist: mypy
|
|
49
|
-
Requires-Dist: ruff
|
|
47
|
+
Requires-Dist: black<27,>=23.0.0; extra == 'dev'
|
|
48
|
+
Requires-Dist: mypy<3,>=1.0.0; extra == 'dev'
|
|
49
|
+
Requires-Dist: ruff<1,>=0.1.0; extra == 'dev'
|
|
50
50
|
Provides-Extra: test
|
|
51
|
-
Requires-Dist: pytest-asyncio
|
|
52
|
-
Requires-Dist: pytest-cov
|
|
53
|
-
Requires-Dist: pytest
|
|
51
|
+
Requires-Dist: pytest-asyncio<2,>=0.21.0; extra == 'test'
|
|
52
|
+
Requires-Dist: pytest-cov<8,>=4.0.0; extra == 'test'
|
|
53
|
+
Requires-Dist: pytest<10,>=8.0.0; extra == 'test'
|
|
54
54
|
Requires-Dist: quadkit-testing>=0.0.2; extra == 'test'
|
|
55
55
|
Description-Content-Type: text/markdown
|
|
56
56
|
|
|
57
57
|
# quadkit-cli
|
|
58
58
|
|
|
59
|
+

|
|
60
|
+
|
|
61
|
+
[](https://pypi.org/project/quadkit-cli/)
|
|
62
|
+
[](https://pypi.org/project/quadkit-cli/)
|
|
63
|
+
[](https://github.com/dbtinoy-/quadkit/blob/main/LICENSE)
|
|
64
|
+
|
|
59
65
|
The `quadkit` command line: project scaffolding, generators, a smart
|
|
60
66
|
runner, and administrative commands for every stage of the application
|
|
61
67
|
lifecycle. Contributor-based — other packages can register their own
|
|
@@ -63,6 +69,16 @@ commands.
|
|
|
63
69
|
|
|
64
70
|
For day-to-day Quadkit developers: scaffold, generate, run, inspect.
|
|
65
71
|
|
|
72
|
+
## The quadkit family
|
|
73
|
+
|
|
74
|
+
| Package | Role |
|
|
75
|
+
| --- | --- |
|
|
76
|
+
| [`quadkit-contracts`](https://pypi.org/project/quadkit-contracts/) | zero-dependency protocols, types, exception hierarchy |
|
|
77
|
+
| [`quadkit`](https://pypi.org/project/quadkit/) | the framework core — DI container, modules, config, logging, `Result` |
|
|
78
|
+
| [`quadkit-web`](https://pypi.org/project/quadkit-web/) | ASGI layer — controllers, routing, middleware, OpenAPI docs |
|
|
79
|
+
| [`quadkit-cli`](https://pypi.org/project/quadkit-cli/) | project scaffolding and code generators |
|
|
80
|
+
| [`quadkit-testing`](https://pypi.org/project/quadkit-testing/) | in-process test beds, fakes, fixtures |
|
|
81
|
+
|
|
66
82
|
## Installation
|
|
67
83
|
|
|
68
84
|
```bash
|
|
@@ -78,15 +94,24 @@ Requires **Python >= 3.11**.
|
|
|
78
94
|
There is no code to write — the product is the command line:
|
|
79
95
|
|
|
80
96
|
```bash
|
|
81
|
-
# Create a new project (template defaults to web-api)
|
|
97
|
+
# Create a new project (template defaults to web-api); the package
|
|
98
|
+
# inside is my_api/ with app.py exposing create_app()
|
|
82
99
|
quadkit new project my-api
|
|
100
|
+
cd my-api
|
|
83
101
|
|
|
84
102
|
# Generate application code (list all generators: quadkit gen list)
|
|
85
103
|
quadkit gen provider MyProvider
|
|
86
104
|
quadkit gen controller Orders
|
|
87
105
|
|
|
88
106
|
# Serve the application; reload is on by default, pass --no-reload in prod
|
|
89
|
-
quadkit run
|
|
107
|
+
quadkit run my_api.app:create_app --host 0.0.0.0 --port 8000 --workers 4
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Eleven generators ship today (`quadkit gen list`):
|
|
111
|
+
|
|
112
|
+
```text
|
|
113
|
+
controller middleware graphql webhook websocket exception_filter
|
|
114
|
+
interceptor error resource provider test
|
|
90
115
|
```
|
|
91
116
|
|
|
92
117
|
Global options: `--json` for machine-readable output, `--quiet`,
|
|
@@ -110,18 +135,16 @@ Global options: `--json` for machine-readable output, `--quiet`,
|
|
|
110
135
|
| `quadkit version` | framework and package versions |
|
|
111
136
|
|
|
112
137
|
Per-distribution guide:
|
|
113
|
-
[quadkit-cli reference](
|
|
138
|
+
[quadkit-cli reference](https://dbtinoy-.github.io/quadkit/reference/quadkit-cli/).
|
|
114
139
|
|
|
115
140
|
## Optional extras
|
|
116
141
|
|
|
117
|
-
|
|
118
|
-
`[all]`.
|
|
142
|
+
`[dev]` and `[test]` bundle tooling; `[all]` pulls everything.
|
|
119
143
|
|
|
120
144
|
## Configuration
|
|
121
145
|
|
|
122
146
|
The CLI reads `application.yaml` like any Quadkit application; its own
|
|
123
|
-
section is `cli` (
|
|
124
|
-
`color`, `verbose`), overridable via `QK_CLI__*`, e.g.
|
|
147
|
+
section is `cli` (`color`), overridable via `QK_CLI__*`, e.g.
|
|
125
148
|
`QK_CLI__COLOR=false`.
|
|
126
149
|
|
|
127
150
|
## Error handling
|
|
@@ -140,7 +163,7 @@ exported tree.
|
|
|
140
163
|
The CLI reads configuration and scaffolds code — it does not serve
|
|
141
164
|
traffic. As with every distribution, keep the `0.x` line pinned and
|
|
142
165
|
review release notes on upgrade. Report vulnerabilities privately per
|
|
143
|
-
[SECURITY.md](
|
|
166
|
+
[SECURITY.md](https://github.com/dbtinoy-/quadkit/blob/main/SECURITY.md).
|
|
144
167
|
|
|
145
168
|
## Stability
|
|
146
169
|
|
|
@@ -148,6 +171,17 @@ Version `0.0.3` in the `0.x` series, released in lockstep with the
|
|
|
148
171
|
other four distributions; APIs may change between minor versions until
|
|
149
172
|
1.0 — pin an exact version (`quadkit-cli==0.0.3`) or a tight range
|
|
150
173
|
(`>=0.0.3,<0.1.0`). Full policy:
|
|
151
|
-
[stability and compatibility](
|
|
174
|
+
[stability and compatibility](https://dbtinoy-.github.io/quadkit/reference/stability/).
|
|
175
|
+
|
|
176
|
+
## Links
|
|
177
|
+
|
|
178
|
+
- **Documentation** — <https://dbtinoy-.github.io/quadkit/>
|
|
179
|
+
- **Getting started** — <https://dbtinoy-.github.io/quadkit/getting-started/installation/>
|
|
180
|
+
- **Changelog** — <https://github.com/dbtinoy-/quadkit/blob/main/CHANGELOG.md>
|
|
181
|
+
- **Issues** — <https://github.com/dbtinoy-/quadkit/issues>
|
|
182
|
+
- **Security** — report privately per [SECURITY.md](https://github.com/dbtinoy-/quadkit/blob/main/SECURITY.md)
|
|
183
|
+
- **Contributing** — [CONTRIBUTING.md](https://github.com/dbtinoy-/quadkit/blob/main/CONTRIBUTING.md)
|
|
152
184
|
|
|
153
|
-
|
|
185
|
+
Apache-2.0 — see [LICENSE](https://github.com/dbtinoy-/quadkit/blob/main/LICENSE). "Quadkit" and the
|
|
186
|
+
Quadkit logo are trademarks of the project — see
|
|
187
|
+
[TRADEMARK.md](https://github.com/dbtinoy-/quadkit/blob/main/TRADEMARK.md).
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# quadkit-cli
|
|
2
2
|
|
|
3
|
+

|
|
4
|
+
|
|
5
|
+
[](https://pypi.org/project/quadkit-cli/)
|
|
6
|
+
[](https://pypi.org/project/quadkit-cli/)
|
|
7
|
+
[](https://github.com/dbtinoy-/quadkit/blob/main/LICENSE)
|
|
8
|
+
|
|
3
9
|
The `quadkit` command line: project scaffolding, generators, a smart
|
|
4
10
|
runner, and administrative commands for every stage of the application
|
|
5
11
|
lifecycle. Contributor-based — other packages can register their own
|
|
@@ -7,6 +13,16 @@ commands.
|
|
|
7
13
|
|
|
8
14
|
For day-to-day Quadkit developers: scaffold, generate, run, inspect.
|
|
9
15
|
|
|
16
|
+
## The quadkit family
|
|
17
|
+
|
|
18
|
+
| Package | Role |
|
|
19
|
+
| --- | --- |
|
|
20
|
+
| [`quadkit-contracts`](https://pypi.org/project/quadkit-contracts/) | zero-dependency protocols, types, exception hierarchy |
|
|
21
|
+
| [`quadkit`](https://pypi.org/project/quadkit/) | the framework core — DI container, modules, config, logging, `Result` |
|
|
22
|
+
| [`quadkit-web`](https://pypi.org/project/quadkit-web/) | ASGI layer — controllers, routing, middleware, OpenAPI docs |
|
|
23
|
+
| [`quadkit-cli`](https://pypi.org/project/quadkit-cli/) | project scaffolding and code generators |
|
|
24
|
+
| [`quadkit-testing`](https://pypi.org/project/quadkit-testing/) | in-process test beds, fakes, fixtures |
|
|
25
|
+
|
|
10
26
|
## Installation
|
|
11
27
|
|
|
12
28
|
```bash
|
|
@@ -22,15 +38,24 @@ Requires **Python >= 3.11**.
|
|
|
22
38
|
There is no code to write — the product is the command line:
|
|
23
39
|
|
|
24
40
|
```bash
|
|
25
|
-
# Create a new project (template defaults to web-api)
|
|
41
|
+
# Create a new project (template defaults to web-api); the package
|
|
42
|
+
# inside is my_api/ with app.py exposing create_app()
|
|
26
43
|
quadkit new project my-api
|
|
44
|
+
cd my-api
|
|
27
45
|
|
|
28
46
|
# Generate application code (list all generators: quadkit gen list)
|
|
29
47
|
quadkit gen provider MyProvider
|
|
30
48
|
quadkit gen controller Orders
|
|
31
49
|
|
|
32
50
|
# Serve the application; reload is on by default, pass --no-reload in prod
|
|
33
|
-
quadkit run
|
|
51
|
+
quadkit run my_api.app:create_app --host 0.0.0.0 --port 8000 --workers 4
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Eleven generators ship today (`quadkit gen list`):
|
|
55
|
+
|
|
56
|
+
```text
|
|
57
|
+
controller middleware graphql webhook websocket exception_filter
|
|
58
|
+
interceptor error resource provider test
|
|
34
59
|
```
|
|
35
60
|
|
|
36
61
|
Global options: `--json` for machine-readable output, `--quiet`,
|
|
@@ -54,18 +79,16 @@ Global options: `--json` for machine-readable output, `--quiet`,
|
|
|
54
79
|
| `quadkit version` | framework and package versions |
|
|
55
80
|
|
|
56
81
|
Per-distribution guide:
|
|
57
|
-
[quadkit-cli reference](
|
|
82
|
+
[quadkit-cli reference](https://dbtinoy-.github.io/quadkit/reference/quadkit-cli/).
|
|
58
83
|
|
|
59
84
|
## Optional extras
|
|
60
85
|
|
|
61
|
-
|
|
62
|
-
`[all]`.
|
|
86
|
+
`[dev]` and `[test]` bundle tooling; `[all]` pulls everything.
|
|
63
87
|
|
|
64
88
|
## Configuration
|
|
65
89
|
|
|
66
90
|
The CLI reads `application.yaml` like any Quadkit application; its own
|
|
67
|
-
section is `cli` (
|
|
68
|
-
`color`, `verbose`), overridable via `QK_CLI__*`, e.g.
|
|
91
|
+
section is `cli` (`color`), overridable via `QK_CLI__*`, e.g.
|
|
69
92
|
`QK_CLI__COLOR=false`.
|
|
70
93
|
|
|
71
94
|
## Error handling
|
|
@@ -84,7 +107,7 @@ exported tree.
|
|
|
84
107
|
The CLI reads configuration and scaffolds code — it does not serve
|
|
85
108
|
traffic. As with every distribution, keep the `0.x` line pinned and
|
|
86
109
|
review release notes on upgrade. Report vulnerabilities privately per
|
|
87
|
-
[SECURITY.md](
|
|
110
|
+
[SECURITY.md](https://github.com/dbtinoy-/quadkit/blob/main/SECURITY.md).
|
|
88
111
|
|
|
89
112
|
## Stability
|
|
90
113
|
|
|
@@ -92,6 +115,17 @@ Version `0.0.3` in the `0.x` series, released in lockstep with the
|
|
|
92
115
|
other four distributions; APIs may change between minor versions until
|
|
93
116
|
1.0 — pin an exact version (`quadkit-cli==0.0.3`) or a tight range
|
|
94
117
|
(`>=0.0.3,<0.1.0`). Full policy:
|
|
95
|
-
[stability and compatibility](
|
|
118
|
+
[stability and compatibility](https://dbtinoy-.github.io/quadkit/reference/stability/).
|
|
119
|
+
|
|
120
|
+
## Links
|
|
121
|
+
|
|
122
|
+
- **Documentation** — <https://dbtinoy-.github.io/quadkit/>
|
|
123
|
+
- **Getting started** — <https://dbtinoy-.github.io/quadkit/getting-started/installation/>
|
|
124
|
+
- **Changelog** — <https://github.com/dbtinoy-/quadkit/blob/main/CHANGELOG.md>
|
|
125
|
+
- **Issues** — <https://github.com/dbtinoy-/quadkit/issues>
|
|
126
|
+
- **Security** — report privately per [SECURITY.md](https://github.com/dbtinoy-/quadkit/blob/main/SECURITY.md)
|
|
127
|
+
- **Contributing** — [CONTRIBUTING.md](https://github.com/dbtinoy-/quadkit/blob/main/CONTRIBUTING.md)
|
|
96
128
|
|
|
97
|
-
|
|
129
|
+
Apache-2.0 — see [LICENSE](https://github.com/dbtinoy-/quadkit/blob/main/LICENSE). "Quadkit" and the
|
|
130
|
+
Quadkit logo are trademarks of the project — see
|
|
131
|
+
[TRADEMARK.md](https://github.com/dbtinoy-/quadkit/blob/main/TRADEMARK.md).
|