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.
Files changed (220) hide show
  1. quadkit_cli-0.0.4/.gitignore +183 -0
  2. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/PKG-INFO +66 -32
  3. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/README.md +44 -10
  4. quadkit_cli-0.0.4/docs/ARCHITECTURE.md +586 -0
  5. quadkit_cli-0.0.4/docs/COMMANDS.md +258 -0
  6. quadkit_cli-0.0.4/docs/CONFIGURATION.md +46 -0
  7. quadkit_cli-0.0.4/docs/GUIDE.md +205 -0
  8. quadkit_cli-0.0.4/docs/HOWTOS.md +92 -0
  9. quadkit_cli-0.0.4/docs/PROJECT_LAYOUT.md +242 -0
  10. quadkit_cli-0.0.4/docs/PUBLIC_PACKAGE_CLI_MATRIX.md +89 -0
  11. quadkit_cli-0.0.4/docs/QUICKSTART.md +67 -0
  12. quadkit_cli-0.0.4/docs/TROUBLESHOOTING.md +150 -0
  13. quadkit_cli-0.0.4/example.yaml +8 -0
  14. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/pyproject.toml +22 -23
  15. quadkit_cli-0.0.4/src/quadkit/cli/commands/__init__.py +48 -0
  16. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/config.py +37 -10
  17. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/db_bootstrap.py +5 -5
  18. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/events.py +7 -6
  19. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/init.py +3 -1
  20. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/inspect.py +2 -1
  21. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/meta.py +58 -38
  22. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/new.py +6 -3
  23. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/project.py +3 -4
  24. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/system.py +38 -33
  25. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/config.py +0 -3
  26. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/contributors/core.py +4 -1
  27. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/lib/__init__.py +0 -2
  28. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/lib/config_loader.py +10 -2
  29. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/output/manager.py +8 -9
  30. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/package_names.py +42 -8
  31. quadkit_cli-0.0.4/src/quadkit/cli/registry/__init__.py +363 -0
  32. quadkit_cli-0.0.4/src/quadkit/cli/registry/_lazy_exports.py +167 -0
  33. quadkit_cli-0.0.4/src/quadkit/cli/registry/database.py +216 -0
  34. 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
  35. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/health_checks/providers.py +3 -14
  36. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/migration.py +7 -1
  37. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/presets.py +7 -5
  38. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/secrets.py +6 -1
  39. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/template.py +4 -5
  40. quadkit_cli-0.0.4/src/quadkit/cli/runtime/__init__.py +37 -0
  41. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/runtime/context.py +8 -1
  42. quadkit_cli-0.0.4/src/quadkit/cli/runtime/main.py +330 -0
  43. quadkit_cli-0.0.4/src/quadkit/cli/scaffold/__init__.py +59 -0
  44. quadkit_cli-0.0.4/src/quadkit/cli/scaffold/app_files.py +377 -0
  45. quadkit_cli-0.0.4/src/quadkit/cli/scaffold/module_files.py +328 -0
  46. quadkit_cli-0.0.4/src/quadkit/cli/scaffold/render.py +193 -0
  47. quadkit_cli-0.0.4/src/quadkit/cli/scaffold/specs.py +201 -0
  48. quadkit_cli-0.0.4/src/quadkit/cli/scaffold/support_files.py +143 -0
  49. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/conftest.py +2 -4
  50. quadkit_cli-0.0.4/tests/helpers/runner.py +153 -0
  51. quadkit_cli-0.0.4/tests/unit/commands/test_events_cmd.py +58 -0
  52. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/commands/test_system.py +15 -5
  53. quadkit_cli-0.0.4/tests/unit/registry/test_completion.py +80 -0
  54. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/registry/test_database.py +5 -5
  55. quadkit_cli-0.0.4/tests/unit/registry/test_presets.py +120 -0
  56. quadkit_cli-0.0.4/tests/unit/registry/test_template.py +180 -0
  57. quadkit_cli-0.0.4/tests/unit/test_add.py +131 -0
  58. quadkit_cli-0.0.4/tests/unit/test_cli_contribution_system__testclicontributorsubprovider.py +478 -0
  59. quadkit_cli-0.0.4/tests/unit/test_cli_import_isolation.py +229 -0
  60. quadkit_cli-0.0.4/tests/unit/test_generator_option_help.py +65 -0
  61. quadkit_cli-0.0.4/tests/unit/test_health_checks.py +312 -0
  62. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_new.py +1 -1
  63. quadkit_cli-0.0.4/tests/unit/test_package_names.py +153 -0
  64. quadkit_cli-0.0.4/tests/unit/test_public_surface.py +85 -0
  65. quadkit_cli-0.0.4/tests/unit/test_scaffold_and_validators.py +314 -0
  66. quadkit_cli-0.0.4/tests/unit/test_storage_driver_generator.py +46 -0
  67. quadkit_cli-0.0.3/.gitignore +0 -24
  68. quadkit_cli-0.0.3/example.yaml +0 -13
  69. quadkit_cli-0.0.3/src/quadkit/cli/commands/__init__.py +0 -36
  70. quadkit_cli-0.0.3/src/quadkit/cli/lib/config_gen.py +0 -310
  71. quadkit_cli-0.0.3/src/quadkit/cli/lib/console.py +0 -18
  72. quadkit_cli-0.0.3/src/quadkit/cli/registry/__init__.py +0 -338
  73. quadkit_cli-0.0.3/src/quadkit/cli/runtime/__init__.py +0 -8
  74. quadkit_cli-0.0.3/src/quadkit/cli/runtime/main.py +0 -154
  75. quadkit_cli-0.0.3/src/quadkit/cli/scaffold.py +0 -1176
  76. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/LICENSE +0 -0
  77. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/NOTICE +0 -0
  78. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/__init__.py +0 -0
  79. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/assembly/__init__.py +0 -0
  80. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/assembly/assembler.py +0 -0
  81. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/add.py +0 -0
  82. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/config_utils.py +0 -0
  83. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/contrib.py +0 -0
  84. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/db.py +0 -0
  85. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/db_commands_data.py +0 -0
  86. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/db_commands_migrations.py +0 -0
  87. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/db_commands_ops.py +0 -0
  88. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/dev.py +0 -0
  89. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/gen.py +0 -0
  90. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/py.typed +0 -0
  91. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/run.py +0 -0
  92. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/commands/shell.py +0 -0
  93. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/constants.py +0 -0
  94. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/contributors/__init__.py +0 -0
  95. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/contributors/base.py +0 -0
  96. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/contributors/discovery.py +0 -0
  97. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/contributors/registry.py +0 -0
  98. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/contributors/runtime.py +1 -1
  99. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/decorators.py +0 -0
  100. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/di/__init__.py +0 -0
  101. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/di/provider.py +0 -0
  102. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/di/sub_providers/__init__.py +0 -0
  103. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/di/sub_providers/contributor.py +0 -0
  104. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/events.py +0 -0
  105. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/exceptions.py +0 -0
  106. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/generators/__init__.py +0 -0
  107. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/generators/base.py +0 -0
  108. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/generators/field_parser.py +0 -0
  109. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/generators/provider.py +0 -0
  110. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/generators/test.py +0 -0
  111. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/hooks.py +0 -0
  112. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/layout.py +0 -0
  113. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/lib/entry_point.py +0 -0
  114. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/lib/naming.py +0 -0
  115. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/lib/templates.py +0 -0
  116. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/module.py +0 -0
  117. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/output/__init__.py +0 -0
  118. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/protocols.py +0 -0
  119. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/py.typed +0 -0
  120. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/backend_base.py +0 -0
  121. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/command.py +0 -0
  122. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/completion.py +0 -0
  123. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/config.py +0 -0
  124. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/environment.py +0 -0
  125. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/formatter.py +0 -0
  126. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/generator.py +0 -0
  127. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/health.py +0 -0
  128. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/health_checks/__init__.py +0 -0
  129. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/health_checks/base.py +0 -0
  130. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/health_checks/deps.py +0 -0
  131. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/health_checks/project.py +0 -0
  132. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/health_checks/python_env.py +0 -0
  133. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/health_checks/tools.py +0 -0
  134. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/health_checks/vcs_docker.py +0 -0
  135. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/hook.py +0 -0
  136. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/inspect.py +0 -0
  137. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/provider.py +0 -0
  138. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/provider_catalog.py +0 -0
  139. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/provider_registry.py +0 -0
  140. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/serializer.py +0 -0
  141. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/server.py +0 -0
  142. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/task.py +0 -0
  143. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/telemetry.py +0 -0
  144. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/version.py +0 -0
  145. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/registry/watcher.py +0 -0
  146. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/runtime/error_handler.py +0 -0
  147. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/scaffold_package.py +0 -0
  148. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/templates/provider.py.jinja2 +0 -0
  149. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/templates/py.typed +0 -0
  150. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/templates/test_unit.py.jinja2 +0 -0
  151. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/cli/types.py +0 -0
  152. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/src/quadkit/py.typed +0 -0
  153. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/integration/__init__.py +0 -0
  154. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/integration/test_cli_lifecycle.py +0 -0
  155. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/test_package_structure_p1.py +0 -0
  156. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/__init__.py +0 -0
  157. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/_test_cli_contribution_system_support.py +0 -0
  158. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/commands/__init__.py +0 -0
  159. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/commands/test_config.py +0 -0
  160. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/commands/test_config_happy_paths.py +0 -0
  161. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/commands/test_contrib.py +0 -0
  162. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/commands/test_inspect.py +0 -0
  163. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/commands/test_meta.py +0 -0
  164. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/commands/test_run.py +0 -0
  165. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/commands/test_shell.py +0 -0
  166. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/di/test_config_alignment.py +0 -0
  167. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/lib/test_templates.py +0 -0
  168. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/registry/__init__.py +0 -0
  169. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/registry/test_environment.py +0 -0
  170. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/registry/test_formatter.py +0 -0
  171. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/registry/test_health.py +0 -0
  172. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/registry/test_hook.py +0 -0
  173. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/registry/test_inspect_registry.py +0 -0
  174. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/registry/test_migration.py +0 -0
  175. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/registry/test_secrets.py +0 -0
  176. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/registry/test_serializer.py +0 -0
  177. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/registry/test_task.py +0 -0
  178. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/registry/test_telemetry.py +0 -0
  179. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/registry/test_version.py +0 -0
  180. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/registry/test_watcher.py +0 -0
  181. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_base_contributor.py +0 -0
  182. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_cli_constants.py +0 -0
  183. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_cli_context.py +0 -0
  184. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_cli_contribution_system.py +0 -0
  185. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_cli_errors.py +0 -0
  186. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_cli_exceptions.py +0 -0
  187. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_cli_module.py +0 -0
  188. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_cli_types.py +0 -0
  189. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_config_async.py +0 -0
  190. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_config_loader.py +0 -0
  191. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_config_save.py +0 -0
  192. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_config_validate.py +0 -0
  193. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_contributor_registry.py +0 -0
  194. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_contributor_runtime.py +0 -0
  195. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_core_contributor.py +0 -0
  196. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_db.py +0 -0
  197. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_decorators.py +0 -0
  198. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_dev_command.py +0 -0
  199. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_error_handler.py +0 -0
  200. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_events.py +0 -0
  201. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_exception_handling.py +0 -0
  202. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_field_parser.py +0 -0
  203. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_gen.py +0 -0
  204. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_gen_controller.py +0 -0
  205. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_gen_provider.py +0 -0
  206. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_generator_base.py +0 -0
  207. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_generator_registry.py +0 -0
  208. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_generators_contract.py +0 -0
  209. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_hooks.py +0 -0
  210. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_init_command.py +0 -0
  211. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_layout.py +0 -0
  212. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_main.py +0 -0
  213. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_output.py +0 -0
  214. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_output_json.py +0 -0
  215. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_project.py +0 -0
  216. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_project_layout.py +0 -0
  217. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_provider_registry.py +0 -0
  218. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_round40_hardening.py +0 -0
  219. {quadkit_cli-0.0.3 → quadkit_cli-0.0.4}/tests/unit/test_run_detection.py +0 -0
  220. {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
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.dev
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.dev
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>=23.0.0
30
- Requires-Dist: httpx>=0.25.0
31
- Requires-Dist: jinja2>=3.1.0
32
- Requires-Dist: pydantic>=2.10.0
33
- Requires-Dist: pyyaml>=6.0
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>=13.0.0
37
- Requires-Dist: shellingham>=1.5.0
38
- Requires-Dist: tomli>=2.0.0
39
- Requires-Dist: typer[all]>=0.9.0
40
- Requires-Dist: watchfiles>=0.21.0
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>=0.21.0; extra == 'all'
43
- Requires-Dist: pytest-cov>=4.0.0; extra == 'all'
44
- Requires-Dist: pytest>=8.0.0; extra == 'all'
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>=23.0.0; extra == 'dev'
48
- Requires-Dist: mypy>=1.0.0; extra == 'dev'
49
- Requires-Dist: ruff>=0.1.0; extra == 'dev'
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>=0.21.0; extra == 'test'
52
- Requires-Dist: pytest-cov>=4.0.0; extra == 'test'
53
- Requires-Dist: pytest>=8.0.0; extra == 'test'
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
+ ![Quadkit](https://raw.githubusercontent.com/dbtinoy-/quadkit/main/banner.jpg)
60
+
61
+ [![PyPI](https://img.shields.io/pypi/v/quadkit-cli?color=%2322c55e&label=pypi)](https://pypi.org/project/quadkit-cli/)
62
+ [![Python](https://img.shields.io/pypi/pyversions/quadkit-cli?color=%2322c55e)](https://pypi.org/project/quadkit-cli/)
63
+ [![License](https://img.shields.io/pypi/l/quadkit-cli?color=%2322c55e)](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 my_app.app:create_app --host 0.0.0.0 --port 8000 --workers 4
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](../../docs/reference/quadkit-cli.md).
138
+ [quadkit-cli reference](https://dbtinoy-.github.io/quadkit/reference/quadkit-cli/).
114
139
 
115
140
  ## Optional extras
116
141
 
117
- Verified against the package's `pyproject.toml`: `[dev]`, `[test]`,
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` (fields include `default_template`, `default_database`,
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](../../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](../../docs/reference/stability.md).
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
- Issues: <https://github.com/dbtinoy-/quadkit/issues>
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
+ ![Quadkit](https://raw.githubusercontent.com/dbtinoy-/quadkit/main/banner.jpg)
4
+
5
+ [![PyPI](https://img.shields.io/pypi/v/quadkit-cli?color=%2322c55e&label=pypi)](https://pypi.org/project/quadkit-cli/)
6
+ [![Python](https://img.shields.io/pypi/pyversions/quadkit-cli?color=%2322c55e)](https://pypi.org/project/quadkit-cli/)
7
+ [![License](https://img.shields.io/pypi/l/quadkit-cli?color=%2322c55e)](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 my_app.app:create_app --host 0.0.0.0 --port 8000 --workers 4
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](../../docs/reference/quadkit-cli.md).
82
+ [quadkit-cli reference](https://dbtinoy-.github.io/quadkit/reference/quadkit-cli/).
58
83
 
59
84
  ## Optional extras
60
85
 
61
- Verified against the package's `pyproject.toml`: `[dev]`, `[test]`,
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` (fields include `default_template`, `default_database`,
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](../../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](../../docs/reference/stability.md).
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
- Issues: <https://github.com/dbtinoy-/quadkit/issues>
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).