dirsql 0.3.119__tar.gz → 0.3.120__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 (195) hide show
  1. {dirsql-0.3.119 → dirsql-0.3.120}/Cargo.lock +1 -1
  2. {dirsql-0.3.119 → dirsql-0.3.120}/PKG-INFO +1 -1
  3. {dirsql-0.3.119 → dirsql-0.3.120}/docs/howto/write-a-plugin.md +1 -1
  4. {dirsql-0.3.119/packages/python → dirsql-0.3.120}/docs/reference/cli.md +6 -3
  5. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/Cargo.toml +1 -1
  6. {dirsql-0.3.119/packages/rust → dirsql-0.3.120/packages/python}/docs/howto/write-a-plugin.md +1 -1
  7. {dirsql-0.3.119/packages/rust → dirsql-0.3.120/packages/python}/docs/reference/cli.md +6 -3
  8. dirsql-0.3.120/packages/python/e2e-attestations/feat-637-init-escalation-example.json +7 -0
  9. dirsql-0.3.120/packages/rust/changelog.d/2026-07-23-init-escalation-example.md +10 -0
  10. {dirsql-0.3.119/packages/python → dirsql-0.3.120/packages/rust}/docs/howto/write-a-plugin.md +1 -1
  11. {dirsql-0.3.119 → dirsql-0.3.120/packages/rust}/docs/reference/cli.md +6 -3
  12. dirsql-0.3.120/packages/rust/migrations.d/2026-07-23-init-escalation-example.md +64 -0
  13. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/src/bin/dirsql.rs +6 -6
  14. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/src/cli/init.rs +5 -4
  15. dirsql-0.3.120/packages/rust/src/default_config.toml +33 -0
  16. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/src/lib.rs +6 -5
  17. dirsql-0.3.119/packages/python/e2e-attestations/feat-655-drop-glob-captures.json +0 -7
  18. dirsql-0.3.119/packages/rust/src/default_config.toml +0 -3
  19. {dirsql-0.3.119 → dirsql-0.3.120}/Cargo.toml +0 -0
  20. {dirsql-0.3.119 → dirsql-0.3.120}/README.md +0 -0
  21. {dirsql-0.3.119 → dirsql-0.3.120}/dirsql/__init__.py +0 -0
  22. {dirsql-0.3.119 → dirsql-0.3.120}/dirsql/_async.py +0 -0
  23. {dirsql-0.3.119 → dirsql-0.3.120}/dirsql/_dirsql.pyi +0 -0
  24. {dirsql-0.3.119 → dirsql-0.3.120}/dirsql/cli/__init__.py +0 -0
  25. {dirsql-0.3.119 → dirsql-0.3.120}/dirsql/cli/binary_path.py +0 -0
  26. {dirsql-0.3.119 → dirsql-0.3.120}/dirsql/cli/discover_plugins/__init__.py +0 -0
  27. {dirsql-0.3.119 → dirsql-0.3.120}/dirsql/cli/discover_plugins/discovered_fragments.py +0 -0
  28. {dirsql-0.3.119 → dirsql-0.3.120}/dirsql/cli/discover_plugins/discovery_disabled.py +0 -0
  29. {dirsql-0.3.119 → dirsql-0.3.120}/dirsql/cli/discover_plugins/fragment_path.py +0 -0
  30. {dirsql-0.3.119 → dirsql-0.3.120}/dirsql/cli/discover_plugins/user_passed_config.py +0 -0
  31. {dirsql-0.3.119 → dirsql-0.3.120}/dirsql/cli/discover_plugins/with_discovered_plugins.py +0 -0
  32. {dirsql-0.3.119 → dirsql-0.3.120}/dirsql/cli/is_windows.py +0 -0
  33. {dirsql-0.3.119 → dirsql-0.3.120}/dirsql/cli/main.py +0 -0
  34. {dirsql-0.3.119 → dirsql-0.3.120}/dirsql/cli/resolve_config_extensions.py +0 -0
  35. {dirsql-0.3.119 → dirsql-0.3.120}/dirsql/py.typed +0 -0
  36. {dirsql-0.3.119 → dirsql-0.3.120}/dirsql/resolve_config_extensions.py +0 -0
  37. {dirsql-0.3.119 → dirsql-0.3.120}/dirsql/resolve_extension.py +0 -0
  38. {dirsql-0.3.119 → dirsql-0.3.120}/docs/.claude/CLAUDE.md +0 -0
  39. {dirsql-0.3.119 → dirsql-0.3.120}/docs/.vitepress/config.ts +0 -0
  40. {dirsql-0.3.119 → dirsql-0.3.120}/docs/.vitepress/theme/index.ts +0 -0
  41. {dirsql-0.3.119 → dirsql-0.3.120}/docs/.vitepress/theme/lang.ts +0 -0
  42. {dirsql-0.3.119 → dirsql-0.3.120}/docs/AGENTS.md +0 -0
  43. {dirsql-0.3.119 → dirsql-0.3.120}/docs/explanation.md +0 -0
  44. {dirsql-0.3.119 → dirsql-0.3.120}/docs/getting-started.md +0 -0
  45. {dirsql-0.3.119 → dirsql-0.3.120}/docs/howto/columns-from-paths.md +0 -0
  46. {dirsql-0.3.119 → dirsql-0.3.120}/docs/howto/define-tables.md +0 -0
  47. {dirsql-0.3.119 → dirsql-0.3.120}/docs/howto/embed.md +0 -0
  48. {dirsql-0.3.119 → dirsql-0.3.120}/docs/howto/extract-from-contents.md +0 -0
  49. {dirsql-0.3.119 → dirsql-0.3.120}/docs/howto/load-extension.md +0 -0
  50. {dirsql-0.3.119 → dirsql-0.3.120}/docs/howto/persist.md +0 -0
  51. {dirsql-0.3.119 → dirsql-0.3.120}/docs/howto/query-without-config.md +0 -0
  52. {dirsql-0.3.119 → dirsql-0.3.120}/docs/howto/react-to-changes.md +0 -0
  53. {dirsql-0.3.119 → dirsql-0.3.120}/docs/howto/search-by-meaning.md +0 -0
  54. {dirsql-0.3.119 → dirsql-0.3.120}/docs/howto/skip-files.md +0 -0
  55. {dirsql-0.3.119 → dirsql-0.3.120}/docs/index.md +0 -0
  56. {dirsql-0.3.119 → dirsql-0.3.120}/docs/migrations.md +0 -0
  57. {dirsql-0.3.119 → dirsql-0.3.120}/docs/package.json +0 -0
  58. {dirsql-0.3.119 → dirsql-0.3.120}/docs/pnpm-lock.yaml +0 -0
  59. {dirsql-0.3.119 → dirsql-0.3.120}/docs/pnpm-workspace.yaml +0 -0
  60. {dirsql-0.3.119 → dirsql-0.3.120}/docs/reference/columns.md +0 -0
  61. {dirsql-0.3.119 → dirsql-0.3.120}/docs/reference/config.md +0 -0
  62. {dirsql-0.3.119 → dirsql-0.3.120}/docs/reference/hooks.md +0 -0
  63. {dirsql-0.3.119 → dirsql-0.3.120}/docs/reference/http-api.md +0 -0
  64. {dirsql-0.3.119 → dirsql-0.3.120}/docs/reference/path-tables.md +0 -0
  65. {dirsql-0.3.119 → dirsql-0.3.120}/docs/reference/sdk.md +0 -0
  66. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/CHANGELOG.md +0 -0
  67. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/MIGRATIONS.md +0 -0
  68. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/README.md +0 -0
  69. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/changelog.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
  70. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/changelog.d/2026-07-13-plugin-discovery.md +0 -0
  71. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/changelog.d/2026-07-13-rename-extract-to-on-file.md +0 -0
  72. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/changelog.d/2026-07-13-repeatable-config.md +0 -0
  73. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/changelog.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
  74. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/changelog.d/2026-07-20-drop-implicit-files-table.md +0 -0
  75. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/changelog.d/2026-07-21-remove-glob-captures.md +0 -0
  76. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/changelog.d/README.md +0 -0
  77. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/conftest.py +0 -0
  78. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/docs/.claude/CLAUDE.md +0 -0
  79. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/docs/.vitepress/config.ts +0 -0
  80. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/docs/.vitepress/theme/index.ts +0 -0
  81. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/docs/.vitepress/theme/lang.ts +0 -0
  82. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/docs/AGENTS.md +0 -0
  83. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/docs/explanation.md +0 -0
  84. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/docs/getting-started.md +0 -0
  85. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/docs/howto/columns-from-paths.md +0 -0
  86. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/docs/howto/define-tables.md +0 -0
  87. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/docs/howto/embed.md +0 -0
  88. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/docs/howto/extract-from-contents.md +0 -0
  89. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/docs/howto/load-extension.md +0 -0
  90. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/docs/howto/persist.md +0 -0
  91. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/docs/howto/query-without-config.md +0 -0
  92. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/docs/howto/react-to-changes.md +0 -0
  93. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/docs/howto/search-by-meaning.md +0 -0
  94. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/docs/howto/skip-files.md +0 -0
  95. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/docs/index.md +0 -0
  96. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/docs/migrations.md +0 -0
  97. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/docs/package.json +0 -0
  98. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/docs/pnpm-lock.yaml +0 -0
  99. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/docs/pnpm-workspace.yaml +0 -0
  100. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/docs/reference/columns.md +0 -0
  101. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/docs/reference/config.md +0 -0
  102. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/docs/reference/hooks.md +0 -0
  103. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/docs/reference/http-api.md +0 -0
  104. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/docs/reference/path-tables.md +0 -0
  105. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/docs/reference/sdk.md +0 -0
  106. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/e2e-attestations/feat-631-on-file-flag.json +0 -0
  107. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/migrations.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
  108. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/migrations.d/2026-07-13-rename-extract-to-on-file.md +0 -0
  109. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/migrations.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
  110. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/migrations.d/2026-07-20-drop-implicit-files-table.md +0 -0
  111. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/migrations.d/2026-07-21-remove-glob-captures.md +0 -0
  112. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/migrations.d/README.md +0 -0
  113. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/src/lib.rs +0 -0
  114. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/tests/__init__.py +0 -0
  115. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/tests/conftest.py +0 -0
  116. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/tests/e2e/__init__.py +0 -0
  117. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/__init__.py +0 -0
  118. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/dirsql.toml +0 -0
  119. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/tests/integration/__init__.py +0 -0
  120. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/tests/integration/binding/__init__.py +0 -0
  121. {dirsql-0.3.119 → dirsql-0.3.120}/packages/python/tests/integration/hermetic/__init__.py +0 -0
  122. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/CHANGELOG.md +0 -0
  123. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/Cargo.toml +0 -0
  124. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/MIGRATIONS.md +0 -0
  125. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/README.md +0 -0
  126. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/benches/db_bench.rs +0 -0
  127. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/benches/differ_bench.rs +0 -0
  128. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/benches/matcher_bench.rs +0 -0
  129. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/benches/scanner_bench.rs +0 -0
  130. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/changelog.d/2026-07-13-batch-ingest-transaction.md +0 -0
  131. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/changelog.d/2026-07-13-chained-pre-post-query-hooks.md +0 -0
  132. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/changelog.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
  133. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/changelog.d/2026-07-13-fan-out-file-table-matching.md +0 -0
  134. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/changelog.d/2026-07-13-persist-wal.md +0 -0
  135. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/changelog.d/2026-07-13-rename-extract-to-on-file.md +0 -0
  136. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/changelog.d/2026-07-13-repeatable-builder-config.md +0 -0
  137. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/changelog.d/2026-07-13-repeatable-cli-config.md +0 -0
  138. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/changelog.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
  139. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/changelog.d/2026-07-13-subcommand-local-config-flags.md +0 -0
  140. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/changelog.d/2026-07-19-path-table-query-fallback.md +0 -0
  141. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/changelog.d/2026-07-19-path-table-vtab.md +0 -0
  142. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/changelog.d/2026-07-20-drop-implicit-files-table.md +0 -0
  143. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/changelog.d/2026-07-20-path-table-glob-semantics.md +0 -0
  144. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/changelog.d/2026-07-20-schema-inference.md +0 -0
  145. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/changelog.d/2026-07-21-on-file-flag.md +0 -0
  146. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/changelog.d/2026-07-21-remove-glob-captures.md +0 -0
  147. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/changelog.d/README.md +0 -0
  148. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/docs/explanation.md +0 -0
  149. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/docs/getting-started.md +0 -0
  150. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/docs/howto/columns-from-paths.md +0 -0
  151. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/docs/howto/define-tables.md +0 -0
  152. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/docs/howto/embed.md +0 -0
  153. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/docs/howto/extract-from-contents.md +0 -0
  154. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/docs/howto/load-extension.md +0 -0
  155. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/docs/howto/persist.md +0 -0
  156. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/docs/howto/query-without-config.md +0 -0
  157. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/docs/howto/react-to-changes.md +0 -0
  158. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/docs/howto/search-by-meaning.md +0 -0
  159. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/docs/howto/skip-files.md +0 -0
  160. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/docs/index.md +0 -0
  161. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/docs/migrations.md +0 -0
  162. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/docs/reference/columns.md +0 -0
  163. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/docs/reference/config.md +0 -0
  164. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/docs/reference/hooks.md +0 -0
  165. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/docs/reference/http-api.md +0 -0
  166. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/docs/reference/path-tables.md +0 -0
  167. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/docs/reference/sdk.md +0 -0
  168. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/migrations.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
  169. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/migrations.d/2026-07-13-fan-out-file-table-matching.md +0 -0
  170. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/migrations.d/2026-07-13-persist-wal.md +0 -0
  171. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/migrations.d/2026-07-13-rename-extract-to-on-file.md +0 -0
  172. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/migrations.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
  173. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/migrations.d/2026-07-13-subcommand-local-config-flags.md +0 -0
  174. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/migrations.d/2026-07-20-drop-implicit-files-table.md +0 -0
  175. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/migrations.d/2026-07-20-path-table-glob-semantics.md +0 -0
  176. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/migrations.d/2026-07-21-remove-glob-captures.md +0 -0
  177. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/migrations.d/README.md +0 -0
  178. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/src/cli/execute.rs +0 -0
  179. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/src/cli/mod.rs +0 -0
  180. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/src/cli/router.rs +0 -0
  181. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/src/cli/serialize.rs +0 -0
  182. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/src/cli/server.rs +0 -0
  183. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/src/command.rs +0 -0
  184. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/src/config.rs +0 -0
  185. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/src/db.rs +0 -0
  186. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/src/differ.rs +0 -0
  187. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/src/infer.rs +0 -0
  188. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/src/matcher.rs +0 -0
  189. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/src/parsed_vtab.rs +0 -0
  190. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/src/path_table.rs +0 -0
  191. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/src/persist.rs +0 -0
  192. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/src/scanner.rs +0 -0
  193. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/src/vtab.rs +0 -0
  194. {dirsql-0.3.119 → dirsql-0.3.120}/packages/rust/src/watcher.rs +0 -0
  195. {dirsql-0.3.119 → dirsql-0.3.120}/pyproject.toml +0 -0
@@ -500,7 +500,7 @@ dependencies = [
500
500
 
501
501
  [[package]]
502
502
  name = "dirsql-py-ext"
503
- version = "0.3.119"
503
+ version = "0.3.120"
504
504
  dependencies = [
505
505
  "dirsql",
506
506
  "pyo3",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dirsql
3
- Version: 0.3.119
3
+ Version: 0.3.120
4
4
  Summary: Ephemeral SQL index over a local directory
5
5
  Keywords: sql,filesystem,directory,sqlite,index
6
6
  Author: Kevin Scott
@@ -217,7 +217,7 @@ Discovery is deliberately narrow. Know exactly who does what:
217
217
  your config still takes ordering precedence
218
218
  ([composing configs](../reference/config.md#composing-multiple-configs)). When
219
219
  you pass no `-c` of your own, the launcher also keeps the
220
- shipped starter `files` table (an internal `--include-default`), so plugins
220
+ shipped starter `records` table (an internal `--include-default`), so plugins
221
221
  **add** tables rather than standing alone. Discovery is **pip/uvx only** for now — the `npx`
222
222
  launcher does not yet discover — and is switched off per invocation with
223
223
  [`--no-plugin` or `DIRSQL_NO_PLUGIN=1`](../reference/cli.md#plugins).
@@ -183,8 +183,11 @@ stderr, with exit code `1`.
183
183
 
184
184
  ## `dirsql init`
185
185
 
186
- Writes a starter `.dirsql.toml` defining a catch-all `files` table, as a
187
- scaffold to edit:
186
+ Writes a starter `.dirsql.toml` as a scaffold to edit. It does **not**
187
+ duplicate the zero-config floor (`SELECT * FROM './'` already lists every file
188
+ with no config); instead it shows the **escalation**: one named `[[table]]`
189
+ with a glob, a schema, and a real `on-file` hook that pulls structured rows
190
+ out of your files.
188
191
 
189
192
  ```bash
190
193
  dirsql init
@@ -225,7 +228,7 @@ installed in the same environment as `dirsql` (`pip install …`, or
225
228
  loads its fragment — its tables are queryable with zero config edits.
226
229
  Installed = active: there is no enable step and no naming convention. The
227
230
  fragment is composed *after* your own `-c` configs (so your config takes
228
- precedence in ordering), and the shipped starter `files` table is preserved.
231
+ precedence in ordering), and the shipped starter `records` table is preserved.
229
232
 
230
233
  Discovery is **launcher-only** — the standalone `cargo`-installed binary does no
231
234
  discovery, and the SDKs never auto-discover (pass a plugin's config explicitly
@@ -4,7 +4,7 @@ name = "dirsql-py-ext"
4
4
  # pypi/maturin handler can rewrite it via `write-version` before
5
5
  # `maturin build`. `pyproject.toml` declares `dynamic = ["version"]`
6
6
  # and maturin reads this field. Mirrors `packages/rust/Cargo.toml`.
7
- version = "0.3.119"
7
+ version = "0.3.120"
8
8
  # abi3 note: the `abi3-py311` pyo3 feature (below) builds ONE stable-ABI
9
9
  # `cp311-abi3` wheel per platform that loads on every CPython >= 3.11
10
10
  # (matching `pyproject.toml`'s `requires-python = ">=3.11"`), instead of
@@ -217,7 +217,7 @@ Discovery is deliberately narrow. Know exactly who does what:
217
217
  your config still takes ordering precedence
218
218
  ([composing configs](../reference/config.md#composing-multiple-configs)). When
219
219
  you pass no `-c` of your own, the launcher also keeps the
220
- shipped starter `files` table (an internal `--include-default`), so plugins
220
+ shipped starter `records` table (an internal `--include-default`), so plugins
221
221
  **add** tables rather than standing alone. Discovery is **pip/uvx only** for now — the `npx`
222
222
  launcher does not yet discover — and is switched off per invocation with
223
223
  [`--no-plugin` or `DIRSQL_NO_PLUGIN=1`](../reference/cli.md#plugins).
@@ -183,8 +183,11 @@ stderr, with exit code `1`.
183
183
 
184
184
  ## `dirsql init`
185
185
 
186
- Writes a starter `.dirsql.toml` defining a catch-all `files` table, as a
187
- scaffold to edit:
186
+ Writes a starter `.dirsql.toml` as a scaffold to edit. It does **not**
187
+ duplicate the zero-config floor (`SELECT * FROM './'` already lists every file
188
+ with no config); instead it shows the **escalation**: one named `[[table]]`
189
+ with a glob, a schema, and a real `on-file` hook that pulls structured rows
190
+ out of your files.
188
191
 
189
192
  ```bash
190
193
  dirsql init
@@ -225,7 +228,7 @@ installed in the same environment as `dirsql` (`pip install …`, or
225
228
  loads its fragment — its tables are queryable with zero config edits.
226
229
  Installed = active: there is no enable step and no naming convention. The
227
230
  fragment is composed *after* your own `-c` configs (so your config takes
228
- precedence in ordering), and the shipped starter `files` table is preserved.
231
+ precedence in ordering), and the shipped starter `records` table is preserved.
229
232
 
230
233
  Discovery is **launcher-only** — the standalone `cargo`-installed binary does no
231
234
  discovery, and the SDKs never auto-discover (pass a plugin's config explicitly
@@ -0,0 +1,7 @@
1
+ {
2
+ "command": "just test-e2e",
3
+ "ran_at": 1784825108,
4
+ "exit_code": 0,
5
+ "commit": "6b2c6696cfbf87c61a1e4d57c5f0acd6c65fb50d",
6
+ "branch": "feat/637-init-escalation-example"
7
+ }
@@ -0,0 +1,10 @@
1
+ **Changed** — `dirsql init` now scaffolds an *escalation* example instead of a
2
+ catch-all `files` table. Because any path (`./`, `../`, `/`, `~/`) is already a
3
+ zero-config live view of the filesystem (`SELECT * FROM './'`), duplicating
4
+ that as a starter table taught nothing. The generated `.dirsql.toml` is now a
5
+ single named `[[table]]` (`records`) with a scoped `glob`, a pinned DDL, and a
6
+ real `on-file = "cat {path}"` hook that turns each matched `*.json` file into
7
+ rows — with a commented custom-parser stub and a header comment pointing at the
8
+ zero-config floor. The scaffold works as written: `dirsql init` then
9
+ `dirsql query "SELECT * FROM records" -c .dirsql.toml` returns the parsed rows.
10
+ The `--include-default` launcher path seeds this same table.
@@ -217,7 +217,7 @@ Discovery is deliberately narrow. Know exactly who does what:
217
217
  your config still takes ordering precedence
218
218
  ([composing configs](../reference/config.md#composing-multiple-configs)). When
219
219
  you pass no `-c` of your own, the launcher also keeps the
220
- shipped starter `files` table (an internal `--include-default`), so plugins
220
+ shipped starter `records` table (an internal `--include-default`), so plugins
221
221
  **add** tables rather than standing alone. Discovery is **pip/uvx only** for now — the `npx`
222
222
  launcher does not yet discover — and is switched off per invocation with
223
223
  [`--no-plugin` or `DIRSQL_NO_PLUGIN=1`](../reference/cli.md#plugins).
@@ -183,8 +183,11 @@ stderr, with exit code `1`.
183
183
 
184
184
  ## `dirsql init`
185
185
 
186
- Writes a starter `.dirsql.toml` defining a catch-all `files` table, as a
187
- scaffold to edit:
186
+ Writes a starter `.dirsql.toml` as a scaffold to edit. It does **not**
187
+ duplicate the zero-config floor (`SELECT * FROM './'` already lists every file
188
+ with no config); instead it shows the **escalation**: one named `[[table]]`
189
+ with a glob, a schema, and a real `on-file` hook that pulls structured rows
190
+ out of your files.
188
191
 
189
192
  ```bash
190
193
  dirsql init
@@ -225,7 +228,7 @@ installed in the same environment as `dirsql` (`pip install …`, or
225
228
  loads its fragment — its tables are queryable with zero config edits.
226
229
  Installed = active: there is no enable step and no naming convention. The
227
230
  fragment is composed *after* your own `-c` configs (so your config takes
228
- precedence in ordering), and the shipped starter `files` table is preserved.
231
+ precedence in ordering), and the shipped starter `records` table is preserved.
229
232
 
230
233
  Discovery is **launcher-only** — the standalone `cargo`-installed binary does no
231
234
  discovery, and the SDKs never auto-discover (pass a plugin's config explicitly
@@ -0,0 +1,64 @@
1
+ ### `dirsql init` output rewritten as an escalation example (#637)
2
+
3
+ #### Summary
4
+
5
+ `dirsql init` no longer writes a catch-all `files` table over `**/*` with a
6
+ stat-column schema. That table only duplicated the zero-config path-table floor
7
+ (`SELECT * FROM './'`), which already lists every file with `path`, `basename`,
8
+ `dir`, `ext`, `size`, `mtime` and `ctime` and no config at all. The generated
9
+ `.dirsql.toml` is now an **escalation** scaffold: one named `[[table]]`
10
+ (`records`) with a scoped `glob = "**/*.json"`, a pinned
11
+ `ddl = "CREATE TABLE records (id TEXT, name TEXT)"`, and a real
12
+ `on-file = "cat {path}"` hook whose rows come entirely from the hook (dirsql
13
+ injects no columns). The internal `--include-default` launcher path seeds this
14
+ same table's glob and DDL.
15
+
16
+ The public `init` contract is otherwise unchanged: `--root`, `--output`,
17
+ `--force`, the no-auto-load behavior, and every exit-code / error arm are the
18
+ same. Only the *bytes written* changed.
19
+
20
+ Carrying a genuine `on-file` hook keeps the shipped asset a valid config both
21
+ today and once hook-less `[[table]]` entries become a load error, so
22
+ `--include-default` (which parses the asset with `.expect(...)`) never panics.
23
+
24
+ #### Required changes
25
+
26
+ | Surface | Before | After |
27
+ | ------- | ------ | ----- |
28
+ | Query the init scaffold | `dirsql query "SELECT * FROM files" -c .dirsql.toml` | `dirsql query "SELECT * FROM records" -c .dirsql.toml` |
29
+ | Want the old `files` table | (what `init` emitted) | write it yourself (snippet below) and pass with `-c` |
30
+
31
+ To restore the previous starter table verbatim, write this `.dirsql.toml` and
32
+ pass it explicitly:
33
+
34
+ ```toml
35
+ [[table]]
36
+ ddl = "CREATE TABLE files (path TEXT, basename TEXT, dir TEXT, ext TEXT, size INTEGER, mtime INTEGER, ctime INTEGER)"
37
+ glob = "**/*"
38
+ ```
39
+
40
+ Note: this hook-less form loads today but is on track to become a config error;
41
+ prefer the zero-config `SELECT * FROM './'` for filesystem listings.
42
+
43
+ #### Deprecations removed
44
+
45
+ _None._
46
+
47
+ #### Behavior changes without code changes
48
+
49
+ - `dirsql init` writes different bytes: a `records` escalation example rather
50
+ than a `files` catch-all table. No flags or exit codes changed.
51
+ - `--include-default` now seeds a `records` table (glob `**/*.json`) instead of
52
+ a `files` table (glob `**/*`).
53
+
54
+ #### Verification
55
+
56
+ ```bash
57
+ cd "$(mktemp -d)"
58
+ printf '[{"id":"1","name":"widget"}]' > things.json
59
+ dirsql init
60
+ dirsql query "SELECT id, name FROM records" -c .dirsql.toml
61
+ # [{"id":"1","name":"widget"}]
62
+ dirsql query "SELECT basename FROM './'" # the zero-config floor still needs no config
63
+ # [{"basename":".dirsql.toml"},{"basename":"things.json"}]
64
+ ```
@@ -75,7 +75,7 @@ struct ConfigArgs {
75
75
  config: Vec<PathBuf>,
76
76
 
77
77
  /// Internal (launcher-only): seed the resolved config set with the shipped
78
- /// starter `files` table *before* the `-c` configs, so an explicit `-c`
78
+ /// starter `records` table *before* the `-c` configs, so an explicit `-c`
79
79
  /// composes with it instead of standing alone. `--include-default -c
80
80
  /// <plugin>` yields that table **plus** the plugin's tables — the additive
81
81
  /// composition the plugin launcher (#529) injects for the no-user-`-c`
@@ -328,14 +328,14 @@ fn load_state(cfg: &ConfigArgs, path_table_parser: Option<String>) -> AppState {
328
328
  }
329
329
 
330
330
  let mut builder = DirSQL::builder();
331
- // `--include-default` seeds the shipped starter `files` table before the
331
+ // `--include-default` seeds the shipped starter `records` table before the
332
332
  // `-c` configs, so an explicit config composes with it instead of standing
333
333
  // alone (#604). Programmatic tables sort before config tables in
334
- // `resolve`, giving `[starter] ++ [-c]`; a starter-vs-config `files`
334
+ // `resolve`, giving `[starter] ++ [-c]`; a starter-vs-config `records`
335
335
  // collision hits the existing dedup in `compile_matcher`. With no `-c` at
336
336
  // all the flag still applies, yielding just the starter table.
337
337
  if cfg.include_default {
338
- builder = builder.table(default_files_table());
338
+ builder = builder.table(default_records_table());
339
339
  }
340
340
  for config_path in &cfg.config {
341
341
  // Canonicalize so config-relative paths (extension libraries, hook
@@ -487,11 +487,11 @@ fn load_configless_state(cfg: &ConfigArgs, path_table_parser: Option<String>) ->
487
487
  }
488
488
  }
489
489
 
490
- /// The shipped starter `files` table, parsed from the [`dirsql::DEFAULT_CONFIG_TOML`]
490
+ /// The shipped starter `records` table, parsed from the [`dirsql::DEFAULT_CONFIG_TOML`]
491
491
  /// asset `dirsql init` writes. Used only by the explicit `--include-default`
492
492
  /// compose path (#604), which seeds it as a programmatic table *before* the
493
493
  /// `-c` configs. There is no implicit no-`-c` fallback (#636).
494
- fn default_files_table() -> Table {
494
+ fn default_records_table() -> Table {
495
495
  let config = dirsql::config::load_config_str(dirsql::DEFAULT_CONFIG_TOML)
496
496
  .expect("DEFAULT_CONFIG_TOML must be valid dirsql config TOML");
497
497
  let table_config = &config.tables[0];
@@ -2,10 +2,11 @@
2
2
  //! `docs/reference/cli.md` for the user-facing contract.
3
3
  //!
4
4
  //! `init` does not inspect the target directory at all: it writes
5
- //! [`super::DEFAULT_CONFIG_TOML`] verbatim -- the same single `files` table
6
- //! [zero-config mode](../bin/dirsql.rs) parses that same asset to build --
7
- //! so a user always has something loadable to hand-edit, and the two
8
- //! surfaces can never drift apart. No LLM, no network, no filesystem walk.
5
+ //! [`super::DEFAULT_CONFIG_TOML`] verbatim -- the escalation scaffold (a named
6
+ //! `[[table]]` with glob, DDL, and a real `on-file` hook) that the
7
+ //! `--include-default` launcher path also seeds from -- so a user always has
8
+ //! a loadable, working config to hand-edit, and the two surfaces can never
9
+ //! drift apart. No LLM, no network, no filesystem walk.
9
10
 
10
11
  use std::path::PathBuf;
11
12
 
@@ -0,0 +1,33 @@
1
+ # You do NOT need this file to use dirsql.
2
+ #
3
+ # Any FROM target that starts with ./, ../, /, or ~/ is a live, read-only
4
+ # view of the filesystem -- no config required. To list every file under the
5
+ # current directory:
6
+ #
7
+ # dirsql query "SELECT * FROM './'"
8
+ #
9
+ # That path-table gives you path, basename, dir, ext, size, mtime and ctime
10
+ # for free, and takes a glob to scope it: "SELECT * FROM './**/*.md'".
11
+ #
12
+ # Reach for a config file only to ESCALATE past that floor: to name a table,
13
+ # scope it, pin a schema, and pull STRUCTURED rows out of your files. The
14
+ # example below does exactly that -- edit it, then run:
15
+ #
16
+ # dirsql query "SELECT * FROM records" -c .dirsql.toml
17
+
18
+ [[table]]
19
+ # The files this table is built from (glob, relative to the index root).
20
+ glob = "**/*.json"
21
+
22
+ # The table's schema. Rows come entirely from the on-file hook below --
23
+ # dirsql injects no columns of its own -- so the hook must emit exactly
24
+ # these fields.
25
+ ddl = "CREATE TABLE records (id TEXT, name TEXT)"
26
+
27
+ # on-file runs once per matched file, receives its absolute {path}, and
28
+ # prints a JSON array of row objects. Each *.json file here is already such
29
+ # an array, so `cat` is enough. For any other format, point this at your own
30
+ # parser instead -- it just has to read {path} and print the same JSON shape:
31
+ #
32
+ # on-file = "./parse.py {path}"
33
+ on-file = "cat {path}"
@@ -67,11 +67,12 @@ pub use crate::watcher::FileEvent as RawFileEvent;
67
67
  pub type Row = HashMap<String, Value>;
68
68
  pub type WatchStream = UnboundedReceiver<RowEvent>;
69
69
 
70
- /// The baked-in default config -- a single `files` table over every file, built
71
- /// from the seven stat columns. A builder with no `.config()` and no
72
- /// programmatic tables serves this (parity with the CLI's no-`-c` default,
73
- /// #603); `dirsql init` writes it verbatim; the CLI serves it directly. One
74
- /// asset, so the SDK default, the CLI default, and `init` can never drift.
70
+ /// The escalation scaffold `dirsql init` writes verbatim: one named
71
+ /// `[[table]]` (glob + DDL + a real `on-file` hook) demonstrating how to pull
72
+ /// structured rows out of files, rather than duplicating the zero-config
73
+ /// path-table floor (`SELECT * FROM './'`). The `--include-default` launcher
74
+ /// path also seeds this table's glob/DDL. Carrying a genuine hook keeps it a
75
+ /// valid config even once hook-less `[[table]]` entries become a load error.
75
76
  pub const DEFAULT_CONFIG_TOML: &str = include_str!("default_config.toml");
76
77
 
77
78
  type BoxError = Box<dyn StdError + Send + Sync + 'static>;
@@ -1,7 +0,0 @@
1
- {
2
- "command": "just test-e2e",
3
- "ran_at": 1784634695,
4
- "exit_code": 0,
5
- "commit": "d5dfb6f091ee4270d20067031e22b20ffe356dd9",
6
- "branch": "feat/655-drop-glob-captures"
7
- }
@@ -1,3 +0,0 @@
1
- [[table]]
2
- ddl = "CREATE TABLE files (path TEXT, basename TEXT, dir TEXT, ext TEXT, size INTEGER, mtime INTEGER, ctime INTEGER)"
3
- glob = "**/*"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes