dirsql 0.4.80__tar.gz → 0.4.82__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 (338) hide show
  1. {dirsql-0.4.80 → dirsql-0.4.82}/Cargo.lock +2 -2
  2. {dirsql-0.4.80 → dirsql-0.4.82}/PKG-INFO +1 -1
  3. {dirsql-0.4.80 → dirsql-0.4.82}/dirsql/_async.py +4 -1
  4. {dirsql-0.4.80 → dirsql-0.4.82}/dirsql/cli/discover_plugins/with_discovered_plugins.py +3 -8
  5. {dirsql-0.4.80/packages/rust → dirsql-0.4.82}/docs/howto/write-a-plugin.md +3 -4
  6. {dirsql-0.4.80 → dirsql-0.4.82}/docs/reference/cli.md +2 -1
  7. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/Cargo.toml +1 -1
  8. dirsql-0.4.82/packages/python/changelog.d/2026-10-06-plugin-no-default-records.md +1 -0
  9. {dirsql-0.4.80 → dirsql-0.4.82/packages/python}/docs/howto/write-a-plugin.md +3 -4
  10. {dirsql-0.4.80/packages/rust → dirsql-0.4.82/packages/python}/docs/reference/cli.md +2 -1
  11. dirsql-0.4.82/packages/python/e2e-attestations/claude-1225-plugin-no-default.json +7 -0
  12. dirsql-0.4.82/packages/python/e2e-attestations/claude-1232-anchor-plumbing.json +7 -0
  13. dirsql-0.4.82/packages/python/e2e-attestations/claude-1330-python-dirsql-patch.json +7 -0
  14. dirsql-0.4.82/packages/python/e2e-attestations/claude-1330-scanner-effects.json +7 -0
  15. dirsql-0.4.82/packages/python/e2e-attestations/claude-1330-scanner-gitignore.json +7 -0
  16. dirsql-0.4.82/packages/python/e2e-attestations/claude-1330-vtab-read.json +7 -0
  17. dirsql-0.4.82/packages/python/migrations.d/2026-10-06-plugin-no-default-records.md +30 -0
  18. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/testing-conventions.toml +0 -11
  19. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/Cargo.toml +1 -1
  20. {dirsql-0.4.80/packages/python → dirsql-0.4.82/packages/rust}/docs/howto/write-a-plugin.md +3 -4
  21. {dirsql-0.4.80/packages/python → dirsql-0.4.82/packages/rust}/docs/reference/cli.md +2 -1
  22. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/cli/init.rs +2 -4
  23. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/cli/run.rs +5 -73
  24. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/launcher.rs +1 -7
  25. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/lib.rs +382 -99
  26. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/persist.rs +23 -3
  27. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/scanner.rs +22 -0
  28. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/vtab.rs +68 -2
  29. {dirsql-0.4.80 → dirsql-0.4.82}/pyproject.toml +0 -3
  30. dirsql-0.4.80/dirsql/cli/discover_plugins/user_passed_config.py +0 -15
  31. {dirsql-0.4.80 → dirsql-0.4.82}/Cargo.toml +0 -0
  32. {dirsql-0.4.80 → dirsql-0.4.82}/README.md +0 -0
  33. {dirsql-0.4.80 → dirsql-0.4.82}/dirsql/__init__.py +0 -0
  34. {dirsql-0.4.80 → dirsql-0.4.82}/dirsql/_dirsql.pyi +0 -0
  35. {dirsql-0.4.80 → dirsql-0.4.82}/dirsql/cli/__init__.py +0 -0
  36. {dirsql-0.4.80 → dirsql-0.4.82}/dirsql/cli/discover_plugins/__init__.py +0 -0
  37. {dirsql-0.4.80 → dirsql-0.4.82}/dirsql/cli/discover_plugins/discovered_fragments.py +0 -0
  38. {dirsql-0.4.80 → dirsql-0.4.82}/dirsql/cli/discover_plugins/discovery_disabled.py +0 -0
  39. {dirsql-0.4.80 → dirsql-0.4.82}/dirsql/cli/discover_plugins/fragment_path.py +0 -0
  40. {dirsql-0.4.80 → dirsql-0.4.82}/dirsql/cli/main.py +0 -0
  41. {dirsql-0.4.80 → dirsql-0.4.82}/dirsql/cli/resolve_config_extensions.py +0 -0
  42. {dirsql-0.4.80 → dirsql-0.4.82}/dirsql/plan_entry_path.py +0 -0
  43. {dirsql-0.4.80 → dirsql-0.4.82}/dirsql/py.typed +0 -0
  44. {dirsql-0.4.80 → dirsql-0.4.82}/dirsql/read_config.py +0 -0
  45. {dirsql-0.4.80 → dirsql-0.4.82}/dirsql/resolve_configs_extension_specs.py +0 -0
  46. {dirsql-0.4.80 → dirsql-0.4.82}/dirsql/resolve_extension.py +0 -0
  47. {dirsql-0.4.80 → dirsql-0.4.82}/dirsql/resolve_package.py +0 -0
  48. {dirsql-0.4.80 → dirsql-0.4.82}/docs/.claude/CLAUDE.md +0 -0
  49. {dirsql-0.4.80 → dirsql-0.4.82}/docs/.vitepress/config.ts +0 -0
  50. {dirsql-0.4.80 → dirsql-0.4.82}/docs/.vitepress/theme/index.ts +0 -0
  51. {dirsql-0.4.80 → dirsql-0.4.82}/docs/.vitepress/theme/lang.ts +0 -0
  52. {dirsql-0.4.80 → dirsql-0.4.82}/docs/AGENTS.md +0 -0
  53. {dirsql-0.4.80 → dirsql-0.4.82}/docs/context/.gitattributes +0 -0
  54. {dirsql-0.4.80 → dirsql-0.4.82}/docs/context/recipes.md +0 -0
  55. {dirsql-0.4.80 → dirsql-0.4.82}/docs/context/troubleshooting.md +0 -0
  56. {dirsql-0.4.80 → dirsql-0.4.82}/docs/context/usage.md +0 -0
  57. {dirsql-0.4.80 → dirsql-0.4.82}/docs/explanation.md +0 -0
  58. {dirsql-0.4.80 → dirsql-0.4.82}/docs/getting-started.md +0 -0
  59. {dirsql-0.4.80 → dirsql-0.4.82}/docs/howto/agent-skill.md +0 -0
  60. {dirsql-0.4.80 → dirsql-0.4.82}/docs/howto/columns-from-paths.md +0 -0
  61. {dirsql-0.4.80 → dirsql-0.4.82}/docs/howto/define-tables.md +0 -0
  62. {dirsql-0.4.80 → dirsql-0.4.82}/docs/howto/embed.md +0 -0
  63. {dirsql-0.4.80 → dirsql-0.4.82}/docs/howto/extract-from-contents.md +0 -0
  64. {dirsql-0.4.80 → dirsql-0.4.82}/docs/howto/load-extension.md +0 -0
  65. {dirsql-0.4.80 → dirsql-0.4.82}/docs/howto/parse-files-into-columns.md +0 -0
  66. {dirsql-0.4.80 → dirsql-0.4.82}/docs/howto/persist.md +0 -0
  67. {dirsql-0.4.80 → dirsql-0.4.82}/docs/howto/query-json.md +0 -0
  68. {dirsql-0.4.80 → dirsql-0.4.82}/docs/howto/query-without-config.md +0 -0
  69. {dirsql-0.4.80 → dirsql-0.4.82}/docs/howto/react-to-changes.md +0 -0
  70. {dirsql-0.4.80 → dirsql-0.4.82}/docs/howto/search-by-meaning.md +0 -0
  71. {dirsql-0.4.80 → dirsql-0.4.82}/docs/howto/search-indexes.md +0 -0
  72. {dirsql-0.4.80 → dirsql-0.4.82}/docs/howto/skip-files.md +0 -0
  73. {dirsql-0.4.80 → dirsql-0.4.82}/docs/index.md +0 -0
  74. {dirsql-0.4.80 → dirsql-0.4.82}/docs/package.json +0 -0
  75. {dirsql-0.4.80 → dirsql-0.4.82}/docs/plugins.md +0 -0
  76. {dirsql-0.4.80 → dirsql-0.4.82}/docs/pnpm-lock.yaml +0 -0
  77. {dirsql-0.4.80 → dirsql-0.4.82}/docs/pnpm-workspace.yaml +0 -0
  78. {dirsql-0.4.80 → dirsql-0.4.82}/docs/reference/columns.md +0 -0
  79. {dirsql-0.4.80 → dirsql-0.4.82}/docs/reference/config.md +0 -0
  80. {dirsql-0.4.80 → dirsql-0.4.82}/docs/reference/hooks.md +0 -0
  81. {dirsql-0.4.80 → dirsql-0.4.82}/docs/reference/http-api.md +0 -0
  82. {dirsql-0.4.80 → dirsql-0.4.82}/docs/reference/path-tables.md +0 -0
  83. {dirsql-0.4.80 → dirsql-0.4.82}/docs/reference/sdk.md +0 -0
  84. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/CHANGELOG.md +0 -0
  85. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/MIGRATIONS.md +0 -0
  86. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/README.md +0 -0
  87. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
  88. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-07-13-plugin-discovery.md +0 -0
  89. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-07-13-rename-extract-to-on-file.md +0 -0
  90. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-07-13-repeatable-config.md +0 -0
  91. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
  92. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-07-20-drop-implicit-files-table.md +0 -0
  93. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-07-21-remove-glob-captures.md +0 -0
  94. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-07-24-hookless-table-config-error.md +0 -0
  95. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-07-24-remove-stat-fact-injection.md +0 -0
  96. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-07-29-restore-python-310.md +0 -0
  97. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-08-02-release-profile.md +0 -0
  98. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-08-02-scan-failures.md +0 -0
  99. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-08-03-discovery-ext-resolution.md +0 -0
  100. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-08-03-manylinux-dynamic-binary.md +0 -0
  101. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-08-03-python-no-ignore.md +0 -0
  102. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-08-04-cast-lints.md +0 -0
  103. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-08-04-cli-in-process.md +0 -0
  104. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-08-20-curtaincall-dev-dependency.md +0 -0
  105. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-08-20-declared-table-name.md +0 -0
  106. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-09-04-config-paths-from-argv-module.md +0 -0
  107. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-09-05-config-extension-loader-split.md +0 -0
  108. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-09-05-resolve-config-extensions-split.md +0 -0
  109. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-09-05-resolve-extension-split.md +0 -0
  110. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-09-09-launcher-config-path-scan.md +0 -0
  111. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-09-17-extension-resolution-via-core.md +0 -0
  112. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-09-18-export-scan-failure.md +0 -0
  113. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-09-18-flatten-row-event-in-core.md +0 -0
  114. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-09-18-programmatic-extension-plan.md +0 -0
  115. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-09-20-sigint-ends-a-run-in-progress.md +0 -0
  116. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-09-24-query-rows-in-projection-order.md +0 -0
  117. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-10-02-readme-docs-host.md +0 -0
  118. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-10-03-one-glob-rule-for-config-globs.md +0 -0
  119. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-10-03-path-table-directory-one-level.md +0 -0
  120. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-10-04-path-table-dotfiles-hidden.md +0 -0
  121. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-10-05-brace-groups-follow-bash.md +0 -0
  122. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-10-05-cli-context.md +0 -0
  123. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-10-05-gitignore-requires-repo.md +0 -0
  124. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-10-05-path-table-node-modules-named.md +0 -0
  125. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-10-05-path-table-symlinks.md +0 -0
  126. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/2026-10-05-path-table-trailing-slash.md +0 -0
  127. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/changelog.d/README.md +0 -0
  128. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/conftest.py +0 -0
  129. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/.claude/CLAUDE.md +0 -0
  130. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/.vitepress/config.ts +0 -0
  131. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/.vitepress/theme/index.ts +0 -0
  132. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/.vitepress/theme/lang.ts +0 -0
  133. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/AGENTS.md +0 -0
  134. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/context/.gitattributes +0 -0
  135. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/context/recipes.md +0 -0
  136. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/context/troubleshooting.md +0 -0
  137. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/context/usage.md +0 -0
  138. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/explanation.md +0 -0
  139. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/getting-started.md +0 -0
  140. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/howto/agent-skill.md +0 -0
  141. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/howto/columns-from-paths.md +0 -0
  142. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/howto/define-tables.md +0 -0
  143. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/howto/embed.md +0 -0
  144. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/howto/extract-from-contents.md +0 -0
  145. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/howto/load-extension.md +0 -0
  146. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/howto/parse-files-into-columns.md +0 -0
  147. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/howto/persist.md +0 -0
  148. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/howto/query-json.md +0 -0
  149. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/howto/query-without-config.md +0 -0
  150. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/howto/react-to-changes.md +0 -0
  151. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/howto/search-by-meaning.md +0 -0
  152. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/howto/search-indexes.md +0 -0
  153. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/howto/skip-files.md +0 -0
  154. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/index.md +0 -0
  155. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/package.json +0 -0
  156. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/plugins.md +0 -0
  157. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/pnpm-lock.yaml +0 -0
  158. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/pnpm-workspace.yaml +0 -0
  159. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/reference/columns.md +0 -0
  160. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/reference/config.md +0 -0
  161. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/reference/hooks.md +0 -0
  162. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/reference/http-api.md +0 -0
  163. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/reference/path-tables.md +0 -0
  164. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/docs/reference/sdk.md +0 -0
  165. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/cc-keen-knuth-f11gyq.json +0 -0
  166. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1056-py-ofpf9.json +0 -0
  167. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1066-p1-resolve-extension.json +0 -0
  168. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1078-argv-config-paths-core.json +0 -0
  169. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1079-p2-resolve-config-extensions.json +0 -0
  170. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1080-share-vtab-scaffolding.json +0 -0
  171. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1081-indicatif-progress.json +0 -0
  172. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1096-watch-moved-dir.json +0 -0
  173. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1109-watch-moved-out.json +0 -0
  174. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1119-ext-plan.json +0 -0
  175. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1120-py-ext.json +0 -0
  176. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1122-ext-cleanup.json +0 -0
  177. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1130-codec-crates.json +0 -0
  178. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1131-flatten-row-event.json +0 -0
  179. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1139-sse-flatten.json +0 -0
  180. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1140-scan-failure-export.json +0 -0
  181. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1148-clippy-all-targets.json +0 -0
  182. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1164-sigint-fatal.json +0 -0
  183. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1170-projection-order.json +0 -0
  184. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1172-on-file-path.json +0 -0
  185. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1173-py-projection-order.json +0 -0
  186. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1184-win-rel-paths.json +0 -0
  187. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1185-win-abs-table-names.json +0 -0
  188. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1186-win-test-harness.json +0 -0
  189. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1196-join-index.json +0 -0
  190. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1199-glob-prefix.json +0 -0
  191. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1201-single-walk.json +0 -0
  192. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1204-embed-batch.json +0 -0
  193. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1207-win-argv-quote.json +0 -0
  194. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1208-win-nonverbatim-paths.json +0 -0
  195. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1215-on-file-batch.json +0 -0
  196. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1216-on-file-cleanup.json +0 -0
  197. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1223-config-glob-rule.json +0 -0
  198. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1223-dir-one-level.json +0 -0
  199. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1226-stale-docs.json +0 -0
  200. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1238-parallel-walk.json +0 -0
  201. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1241-content-prefetch.json +0 -0
  202. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1243-ingest-perf.json +0 -0
  203. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1249-dotfiles.json +0 -0
  204. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1256-symlinks.json +0 -0
  205. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1257-trailing-slash.json +0 -0
  206. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1262-brace-literal.json +0 -0
  207. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1264-context.json +0 -0
  208. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1267-posix-classes.json +0 -0
  209. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1269-utf8-chars.json +0 -0
  210. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1271-node-modules-named.json +0 -0
  211. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1272-ancestor-gitignore.json +0 -0
  212. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1273-walk-prune.json +0 -0
  213. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1285-ingest-fast.json +0 -0
  214. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1286-nested-repo.json +0 -0
  215. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1305-glob-speed.json +0 -0
  216. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1308-glob-speed.json +0 -0
  217. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1310-glob-speed.json +0 -0
  218. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1311-glob-speed.json +0 -0
  219. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1312-glob-speed.json +0 -0
  220. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1318-lazy-stat.json +0 -0
  221. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1320-walk-speed.json +0 -0
  222. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1322-walk-readdir.json +0 -0
  223. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1325-parallel-walk.json +0 -0
  224. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1326-stream-rows.json +0 -0
  225. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-1351-dot-dirs.json +0 -0
  226. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-819-oneshot-timeout.json +0 -0
  227. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-827-unquote-doubled-quotes.json +0 -0
  228. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-epic-953-slice2-reedline.json +0 -0
  229. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-epic-953-slice3-format.json +0 -0
  230. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-epic-953-stacked-prs-x59wm3.json +0 -0
  231. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-github-issue-825-e4mhhp.json +0 -0
  232. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-issue-951-0eease.json +0 -0
  233. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-issue-962-0jjrfv.json +0 -0
  234. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-issue-986-red-test-e7sjrb.json +0 -0
  235. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-tackle-1034-cachesplit.json +0 -0
  236. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-tackle-1042-py12.json +0 -0
  237. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-tackle-956-xzen74.json +0 -0
  238. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-tackle-957-lrm0z6-worker-calls.json +0 -0
  239. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-tackle-957-lrm0z6.json +0 -0
  240. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/e2e-attestations/claude-tackle-975-n8mc2h.json +0 -0
  241. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/migrations.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
  242. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/migrations.d/2026-07-13-rename-extract-to-on-file.md +0 -0
  243. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/migrations.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
  244. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/migrations.d/2026-07-20-drop-implicit-files-table.md +0 -0
  245. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/migrations.d/2026-07-21-remove-glob-captures.md +0 -0
  246. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/migrations.d/2026-07-24-hookless-table-config-error.md +0 -0
  247. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/migrations.d/2026-07-24-remove-stat-fact-injection.md +0 -0
  248. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/migrations.d/2026-07-29-restore-python-310.md +0 -0
  249. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/migrations.d/2026-08-04-cli-in-process.md +0 -0
  250. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/migrations.d/2026-08-20-declared-table-name.md +0 -0
  251. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/migrations.d/2026-09-20-sigint-ends-a-run-in-progress.md +0 -0
  252. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/migrations.d/2026-09-24-query-rows-in-projection-order.md +0 -0
  253. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/migrations.d/2026-10-02-readme-docs-host.md +0 -0
  254. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/migrations.d/2026-10-03-one-glob-rule-for-config-globs.md +0 -0
  255. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/migrations.d/2026-10-03-path-table-directory-one-level.md +0 -0
  256. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/migrations.d/2026-10-04-path-table-dotfiles-hidden.md +0 -0
  257. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/migrations.d/2026-10-05-brace-groups-follow-bash.md +0 -0
  258. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/migrations.d/2026-10-05-cli-context.md +0 -0
  259. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/migrations.d/2026-10-05-gitignore-requires-repo.md +0 -0
  260. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/migrations.d/2026-10-05-path-table-node-modules-named.md +0 -0
  261. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/migrations.d/2026-10-05-path-table-symlinks.md +0 -0
  262. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/migrations.d/2026-10-05-path-table-trailing-slash.md +0 -0
  263. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/migrations.d/README.md +0 -0
  264. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/src/lib.rs +0 -0
  265. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/tests/__init__.py +0 -0
  266. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/tests/conftest.py +0 -0
  267. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/tests/e2e/__init__.py +0 -0
  268. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/__init__.py +0 -0
  269. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/dirsql.toml +0 -0
  270. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/tests/e2e/speed_of_light.py +0 -0
  271. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/tests/integration/__init__.py +0 -0
  272. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/tests/integration/binding/__init__.py +0 -0
  273. {dirsql-0.4.80 → dirsql-0.4.82}/packages/python/tests/integration/hermetic/__init__.py +0 -0
  274. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/CHANGELOG.md +0 -0
  275. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/MIGRATIONS.md +0 -0
  276. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/README.md +0 -0
  277. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/benches/db_bench.rs +0 -0
  278. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/benches/differ_bench.rs +0 -0
  279. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/benches/matcher_bench.rs +0 -0
  280. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/benches/scanner_bench.rs +0 -0
  281. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/docs/context/.gitattributes +0 -0
  282. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/docs/context/recipes.md +0 -0
  283. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/docs/context/troubleshooting.md +0 -0
  284. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/docs/context/usage.md +0 -0
  285. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/docs/explanation.md +0 -0
  286. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/docs/getting-started.md +0 -0
  287. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/docs/howto/agent-skill.md +0 -0
  288. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/docs/howto/columns-from-paths.md +0 -0
  289. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/docs/howto/define-tables.md +0 -0
  290. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/docs/howto/embed.md +0 -0
  291. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/docs/howto/extract-from-contents.md +0 -0
  292. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/docs/howto/load-extension.md +0 -0
  293. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/docs/howto/parse-files-into-columns.md +0 -0
  294. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/docs/howto/persist.md +0 -0
  295. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/docs/howto/query-json.md +0 -0
  296. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/docs/howto/query-without-config.md +0 -0
  297. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/docs/howto/react-to-changes.md +0 -0
  298. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/docs/howto/search-by-meaning.md +0 -0
  299. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/docs/howto/search-indexes.md +0 -0
  300. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/docs/howto/skip-files.md +0 -0
  301. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/docs/index.md +0 -0
  302. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/docs/plugins.md +0 -0
  303. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/docs/reference/columns.md +0 -0
  304. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/docs/reference/config.md +0 -0
  305. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/docs/reference/hooks.md +0 -0
  306. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/docs/reference/http-api.md +0 -0
  307. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/docs/reference/path-tables.md +0 -0
  308. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/docs/reference/sdk.md +0 -0
  309. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/bin/dirsql.rs +0 -0
  310. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/brace.rs +0 -0
  311. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/cli/context.rs +0 -0
  312. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/cli/execute.rs +0 -0
  313. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/cli/mod.rs +0 -0
  314. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/cli/repl.rs +0 -0
  315. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/cli/router.rs +0 -0
  316. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/cli/serialize.rs +0 -0
  317. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/cli/server.rs +0 -0
  318. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/cli/table.rs +0 -0
  319. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/command.rs +0 -0
  320. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/config.rs +0 -0
  321. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/db.rs +0 -0
  322. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/default_config.toml +0 -0
  323. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/differ.rs +0 -0
  324. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/extension_resolution.rs +0 -0
  325. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/functions.rs +0 -0
  326. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/infer.rs +0 -0
  327. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/listing.rs +0 -0
  328. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/matcher.rs +0 -0
  329. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/on_file.rs +0 -0
  330. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/parsed_vtab.rs +0 -0
  331. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/path_table.rs +0 -0
  332. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/posix_class.rs +0 -0
  333. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/progress.rs +0 -0
  334. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/row_event_flat.rs +0 -0
  335. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/sql_literal.rs +0 -0
  336. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/tree_walk.rs +0 -0
  337. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/vtab_scaffold.rs +0 -0
  338. {dirsql-0.4.80 → dirsql-0.4.82}/packages/rust/src/watcher.rs +0 -0
@@ -552,7 +552,7 @@ checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8"
552
552
 
553
553
  [[package]]
554
554
  name = "dirsql"
555
- version = "0.4.80"
555
+ version = "0.4.82"
556
556
  dependencies = [
557
557
  "assert_cmd",
558
558
  "axum",
@@ -602,7 +602,7 @@ dependencies = [
602
602
 
603
603
  [[package]]
604
604
  name = "dirsql-py-ext"
605
- version = "0.4.80"
605
+ version = "0.4.82"
606
606
  dependencies = [
607
607
  "dirsql",
608
608
  "pyo3",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dirsql
3
- Version: 0.4.80
3
+ Version: 0.4.82
4
4
  Requires-Dist: bin-shim>=0.1
5
5
  Summary: Ephemeral SQL index over a local directory
6
6
  Keywords: sql,filesystem,directory,sqlite,index
@@ -137,7 +137,7 @@ class DirSQL:
137
137
  if config_extensions is not None:
138
138
  extensions = [*(extensions or []), *config_extensions]
139
139
  suppress = True
140
- return _RustDirSQL(
140
+ return self._new_core(
141
141
  self._root,
142
142
  tables=self._tables,
143
143
  ignore=self._ignore,
@@ -149,6 +149,9 @@ class DirSQL:
149
149
  suppress_config_extensions=suppress,
150
150
  )
151
151
 
152
+ def _new_core(self, root, **kwargs):
153
+ return _RustDirSQL(root, **kwargs)
154
+
152
155
  def _resolved_extensions(self):
153
156
  """Resolve each programmatic extension's ``path`` to a loadable file.
154
157
 
@@ -4,24 +4,21 @@ This is the public entry point of the ``discover_plugins`` package (installed =
4
4
  active, CLI only; #363/#529). A plugin is an ordinary Python package that
5
5
  declares ``[project.entry-points.dirsql]`` naming its top-level module and ships
6
6
  a ``dirsql.toml`` fragment there; when installed alongside ``dirsql``, the
7
- ``pip``/``uvx`` launcher discovers it and injects the fragment as a ``-c`` flag
8
- plus the hidden ``--include-default`` (#604) when the user gave no ``-c``.
7
+ ``pip``/``uvx`` launcher discovers it and injects the fragment as a ``-c`` flag.
9
8
  Opt out via ``--no-plugin`` / ``DIRSQL_NO_PLUGIN=1``. The compiled binary knows
10
9
  nothing about plugins, and the SDK never discovers -- only this CLI launcher.
11
- The helpers each live in their own module (``user_passed_config``,
12
- ``discovery_disabled``, ``fragment_path``, ``discovered_fragments``).
10
+ The helpers each live in their own module (``discovery_disabled``, ``fragment_path``, ``discovered_fragments``).
13
11
  """
14
12
 
15
13
  from __future__ import annotations
16
14
 
17
15
  from .discovered_fragments import discovered_fragments
18
16
  from .discovery_disabled import NO_PLUGIN_FLAG, discovery_disabled
19
- from .user_passed_config import user_passed_config
20
17
 
21
18
 
22
19
  def with_discovered_plugins(argv: list[str]) -> list[str]:
23
20
  """Return ``argv`` with each installed plugin's fragment appended as ``-c``
24
- (plus ``--include-default`` when the user passed no ``-c``). ``--no-plugin``
21
+ ``--no-plugin``
25
22
  / ``DIRSQL_NO_PLUGIN`` skip discovery, consuming the flag. ``init`` and ``context`` take no
26
23
  config, so they are left untouched. Raises if a declared plugin is missing its
27
24
  module or fragment (the launcher surfaces a clean error).
@@ -40,8 +37,6 @@ def with_discovered_plugins(argv: list[str]) -> list[str]:
40
37
  if not fragments:
41
38
  return argv
42
39
  injected: list[str] = []
43
- if not user_passed_config(argv):
44
- injected.append("--include-default")
45
40
  for fragment in fragments:
46
41
  injected.append("-c")
47
42
  injected.append(fragment)
@@ -195,10 +195,9 @@ Discovery is deliberately narrow. Know exactly who does what:
195
195
  - **The `uvx`/`pip` launcher injects `-c <fragment>` per installed plugin.**
196
196
  Each discovered plugin's fragment is appended after your own `-c` configs, so
197
197
  your config still takes ordering precedence
198
- ([composing configs](../reference/config.md#composing-multiple-configs)). When
199
- you pass no `-c` of your own, the launcher also keeps the
200
- shipped starter `records` table (an internal `--include-default`), so plugins
201
- **add** tables rather than standing alone. Discovery is **pip/uvx only** for now — the `npx`
198
+ ([composing configs](../reference/config.md#composing-multiple-configs)). The
199
+ launcher adds only the plugin's tables and functions; it seeds no `records`
200
+ table. Discovery is **pip/uvx only** for now — the `npx`
202
201
  launcher does not yet discover — and is switched off per invocation with
203
202
  [`--no-plugin` or `DIRSQL_NO_PLUGIN=1`](../reference/cli.md#plugins).
204
203
  - **The SDK never auto-discovers.** Pass a plugin's config explicitly (the
@@ -465,7 +465,8 @@ installed in the same environment as `dirsql` (`pip install …`, or
465
465
  loads its fragment — its tables are queryable with zero config edits.
466
466
  Installed = active: there is no enable step and no naming convention. The
467
467
  fragment is composed *after* your own `-c` configs (so your config takes
468
- precedence in ordering), and the shipped starter `records` table is preserved.
468
+ precedence in ordering). A plugin adds its own tables and nothing else: no
469
+ `records` table is seeded.
469
470
 
470
471
  Discovery is **launcher-only** — the standalone `cargo`-installed binary does no
471
472
  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.4.80"
7
+ version = "0.4.82"
8
8
  # abi3 note: the `abi3-py310` pyo3 feature (below) builds ONE stable-ABI
9
9
  # `cp310-abi3` wheel per platform that loads on every CPython >= 3.10
10
10
  # (matching `pyproject.toml`'s `requires-python = ">=3.10"`), instead of
@@ -0,0 +1 @@
1
+ **Removed** — an installed plugin no longer seeds a phantom `records` table. The `uvx`/`pip` launcher used to append the hidden `--include-default` whenever it discovered a plugin and the user passed no `-c`, so `SELECT * FROM records` returned one all-NULL row per `**/*.json` file and every query paid a full walk of those files first. A plugin now adds its own tables and functions and nothing else; the internal `--include-default` flag is gone.
@@ -195,10 +195,9 @@ Discovery is deliberately narrow. Know exactly who does what:
195
195
  - **The `uvx`/`pip` launcher injects `-c <fragment>` per installed plugin.**
196
196
  Each discovered plugin's fragment is appended after your own `-c` configs, so
197
197
  your config still takes ordering precedence
198
- ([composing configs](../reference/config.md#composing-multiple-configs)). When
199
- you pass no `-c` of your own, the launcher also keeps the
200
- shipped starter `records` table (an internal `--include-default`), so plugins
201
- **add** tables rather than standing alone. Discovery is **pip/uvx only** for now — the `npx`
198
+ ([composing configs](../reference/config.md#composing-multiple-configs)). The
199
+ launcher adds only the plugin's tables and functions; it seeds no `records`
200
+ table. Discovery is **pip/uvx only** for now — the `npx`
202
201
  launcher does not yet discover — and is switched off per invocation with
203
202
  [`--no-plugin` or `DIRSQL_NO_PLUGIN=1`](../reference/cli.md#plugins).
204
203
  - **The SDK never auto-discovers.** Pass a plugin's config explicitly (the
@@ -465,7 +465,8 @@ installed in the same environment as `dirsql` (`pip install …`, or
465
465
  loads its fragment — its tables are queryable with zero config edits.
466
466
  Installed = active: there is no enable step and no naming convention. The
467
467
  fragment is composed *after* your own `-c` configs (so your config takes
468
- precedence in ordering), and the shipped starter `records` table is preserved.
468
+ precedence in ordering). A plugin adds its own tables and nothing else: no
469
+ `records` table is seeded.
469
470
 
470
471
  Discovery is **launcher-only** — the standalone `cargo`-installed binary does no
471
472
  discovery, and the SDKs never auto-discover (pass a plugin's config explicitly
@@ -0,0 +1,7 @@
1
+ {
2
+ "command": "uv run python -m pytest tests/e2e/plugin_discovery_test.py tests/e2e/plugin_extension_discovery_test.py tests/e2e/extension_package_test.py tests/e2e/cli_version_test.py tests/e2e/query_contract_test.py -x -q",
3
+ "ran_at": 1791301754,
4
+ "exit_code": 0,
5
+ "commit": "9a556e333ff2cbcbcba2e6eba31a3e14c7aab008",
6
+ "branch": "claude/1225-plugin-no-default"
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "command": "uv run python -m pytest tests/e2e/capture_collision_test.py tests/e2e/declared_table_name_test.py tests/e2e/extension_package_test.py tests/e2e/query_contract_test.py tests/e2e/plugin_discovery_test.py tests/e2e/sigint_interrupt_test.py tests/e2e/fanout_test.py tests/e2e/use_case_transcripts_test.py tests/e2e/plugin_extension_discovery_test.py tests/e2e/on_file_query_test.py -x -q",
3
+ "ran_at": 1791302031,
4
+ "exit_code": 0,
5
+ "commit": "1746a7286f9b11c9ecb0078ec263e69ecce29d7f",
6
+ "branch": "claude/1232-anchor-plumbing"
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "command": "uv run python -m pytest tests/e2e/capture_collision_test.py tests/e2e/fanout_test.py tests/e2e/cli_version_test.py tests/e2e/extension_package_test.py tests/e2e/on_file_query_test.py tests/e2e/sigint_interrupt_test.py tests/e2e/plugin_extension_discovery_test.py tests/e2e/plugin_discovery_test.py tests/e2e/query_contract_test.py -x -q",
3
+ "ran_at": 1791302200,
4
+ "exit_code": 0,
5
+ "commit": "1553e866cb8da7050a1c444833e269c831f6e0a1",
6
+ "branch": "claude/1330-python-dirsql-patch"
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "command": "uv run python -m pytest tests/e2e/declared_table_name_test.py tests/e2e/use_case_join_test.py -x -q",
3
+ "ran_at": 1791300931,
4
+ "exit_code": 0,
5
+ "commit": "dbe4a7ad92b3f630f0fec40a9e09523babc3b594",
6
+ "branch": "claude/1330-scanner-effects"
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "command": "uv run python -m pytest tests/e2e/glob_speed_gitignore_test.py -x -q",
3
+ "ran_at": 1791300776,
4
+ "exit_code": 0,
5
+ "commit": "bfe83ade86865e07e355567fb96c33cda36a46bb",
6
+ "branch": "claude/1330-scanner-gitignore"
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "command": "uv run python -m pytest tests/e2e/use_case_join_test.py tests/e2e/use_case_transcripts_test.py -x -q",
3
+ "ran_at": 1791301146,
4
+ "exit_code": 0,
5
+ "commit": "89e397ecdff80eb3659c42b1135f70a47705cf37",
6
+ "branch": "claude/1330-vtab-read"
7
+ }
@@ -0,0 +1,30 @@
1
+ ### Plugin launcher no longer seeds a `records` table
2
+
3
+ #### Summary
4
+
5
+ With a plugin installed, the `uvx`/`pip` launcher used to add the hidden `--include-default`, which seeded a placeholder `records` table (glob `**/*.json`, every row all-NULL) alongside the plugin's tables. It now injects only `-c <fragment>` per plugin. Queries that never named `records` are unaffected and no longer walk every JSON file first; a query that read the placeholder `records` now fails with `no such table: records`.
6
+
7
+ #### Required changes
8
+
9
+ | Surface | Before | After |
10
+ | ------- | ------ | ----- |
11
+ | `SELECT count(*) FROM records` with a plugin installed | one row per `*.json` file | `no such table: records` |
12
+ | Want a real `records` table | (placeholder) | define it in your own config and pass it with `-c` |
13
+
14
+ #### Deprecations removed
15
+
16
+ The hidden `--include-default` flag (internal, never documented) is removed.
17
+
18
+ #### Behavior changes without code changes
19
+
20
+ - Plugin-enabled queries no longer show a `dirsql: indexing N/M files` progress line for files no plugin table matches.
21
+
22
+ #### Verification
23
+
24
+ ```bash
25
+ cd "$(mktemp -d)"
26
+ echo '{"id":1}' > a.json
27
+ uvx --with dirsql-plugin-embeddings dirsql query "SELECT count(*) FROM records"
28
+ ```
29
+
30
+ Expected: `no such table: records`.
@@ -14,17 +14,6 @@ extra_scope = ["packages/rust/src", "packages/python/src", "packages/python/test
14
14
  fail_under = 100
15
15
  branch = true
16
16
 
17
- # The hermetic integration tier is defined by patching the first-party core
18
- # boundary: `dirsql._async._RustDirSQL` is the PyO3 class, and replacing it is
19
- # what lets these tests run SQLite-free and native-build-free. There is no
20
- # third-party target to re-root onto, so `no-first-party-patch` has nothing to
21
- # say about this seam. Every other patch in both files targets stdlib and stays
22
- # gated.
23
- [[python.exempt]]
24
- path = "tests/integration/hermetic/dirsql_test.py"
25
- rules = ["no-first-party-patch"]
26
- reason = "the hermetic tier IS the _RustDirSQL core-boundary patch; no third-party target exists to move it to"
27
-
28
17
  [[python.exempt]]
29
18
  path = "tests/integration/hermetic/extensions_test.py"
30
19
  rules = ["no-first-party-patch"]
@@ -6,7 +6,7 @@ description = "Ephemeral SQL index over a local directory"
6
6
  # version stays for the binding crates (publish = false). The literal
7
7
  # intentionally lags the published version: putitoutthere rewrites it to
8
8
  # the planned release version at build time and never commits it back.
9
- version = "0.4.80"
9
+ version = "0.4.82"
10
10
  edition.workspace = true
11
11
  # Literal `license` (not `license.workspace = true`) because
12
12
  # putitoutthere's preflight check reads `[package].license` directly
@@ -195,10 +195,9 @@ Discovery is deliberately narrow. Know exactly who does what:
195
195
  - **The `uvx`/`pip` launcher injects `-c <fragment>` per installed plugin.**
196
196
  Each discovered plugin's fragment is appended after your own `-c` configs, so
197
197
  your config still takes ordering precedence
198
- ([composing configs](../reference/config.md#composing-multiple-configs)). When
199
- you pass no `-c` of your own, the launcher also keeps the
200
- shipped starter `records` table (an internal `--include-default`), so plugins
201
- **add** tables rather than standing alone. Discovery is **pip/uvx only** for now — the `npx`
198
+ ([composing configs](../reference/config.md#composing-multiple-configs)). The
199
+ launcher adds only the plugin's tables and functions; it seeds no `records`
200
+ table. Discovery is **pip/uvx only** for now — the `npx`
202
201
  launcher does not yet discover — and is switched off per invocation with
203
202
  [`--no-plugin` or `DIRSQL_NO_PLUGIN=1`](../reference/cli.md#plugins).
204
203
  - **The SDK never auto-discovers.** Pass a plugin's config explicitly (the
@@ -465,7 +465,8 @@ installed in the same environment as `dirsql` (`pip install …`, or
465
465
  loads its fragment — its tables are queryable with zero config edits.
466
466
  Installed = active: there is no enable step and no naming convention. The
467
467
  fragment is composed *after* your own `-c` configs (so your config takes
468
- precedence in ordering), and the shipped starter `records` table is preserved.
468
+ precedence in ordering). A plugin adds its own tables and nothing else: no
469
+ `records` table is seeded.
469
470
 
470
471
  Discovery is **launcher-only** — the standalone `cargo`-installed binary does no
471
472
  discovery, and the SDKs never auto-discover (pass a plugin's config explicitly
@@ -3,10 +3,8 @@
3
3
  //!
4
4
  //! `init` does not inspect the target directory at all: it writes
5
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.
6
+ //! `[[table]]` with glob, DDL, and a real `on-file` hook) -- so a
7
+ //! user always has a loadable, working config to hand-edit. No LLM, no network, no filesystem walk.
10
8
 
11
9
  use std::path::PathBuf;
12
10
 
@@ -25,7 +25,7 @@ use super::{
25
25
  repl::run_repl,
26
26
  serve_with_state, table,
27
27
  };
28
- use crate::{DirSQL, Extension, Row, Table};
28
+ use crate::{DirSQL, Extension};
29
29
  use clap::{Args, Parser, Subcommand, ValueEnum};
30
30
  use serde_json::Value;
31
31
 
@@ -104,17 +104,6 @@ struct ConfigArgs {
104
104
  #[arg(short = 'c', long)]
105
105
  config: Vec<PathBuf>,
106
106
 
107
- /// Internal (launcher-only): seed the resolved config set with the shipped
108
- /// starter `records` table *before* the `-c` configs, so an explicit `-c`
109
- /// composes with it instead of standing alone. `--include-default -c
110
- /// <plugin>` yields that table **plus** the plugin's tables — the additive
111
- /// composition the plugin launcher (#529) injects for the no-user-`-c`
112
- /// case (#604). This is an explicit opt-in, not the implicit no-`-c`
113
- /// fallback (which was retired in #636). Hidden from `--help`: it is
114
- /// internal plumbing for the launcher, not a documented public flag.
115
- #[arg(long = "include-default", hide = true)]
116
- include_default: bool,
117
-
118
107
  /// Load a SQLite extension by literal path, overriding a TOML config's
119
108
  /// `[[dirsql.extension]]` entries. Repeatable. Format: `<path>` or
120
109
  /// `<path>::<entrypoint>`.
@@ -502,23 +491,14 @@ async fn run_server(args: ServerArgs) -> u8 {
502
491
  }
503
492
 
504
493
  fn load_state(cfg: &ConfigArgs, path_table_parser: Option<String>) -> AppState {
505
- // Neither a `-c` nor the launcher's `--include-default` -> index the
506
- // invocation directory with no named tables. A `./.dirsql.toml` on disk is
507
- // NOT consulted (#602); pass it explicitly with `-c` to use it.
508
- if cfg.config.is_empty() && !cfg.include_default {
494
+ // No `-c` -> index the invocation directory with no named tables. A
495
+ // `./.dirsql.toml` on disk is NOT consulted (#602); pass it explicitly
496
+ // with `-c` to use it.
497
+ if cfg.config.is_empty() {
509
498
  return load_configless_state(cfg, path_table_parser);
510
499
  }
511
500
 
512
501
  let mut builder = DirSQL::builder();
513
- // `--include-default` seeds the shipped starter `records` table before the
514
- // `-c` configs, so an explicit config composes with it instead of standing
515
- // alone (#604). Programmatic tables sort before config tables in
516
- // `resolve`, giving `[starter] ++ [-c]`; a starter-vs-config `records`
517
- // collision hits the existing dedup in `compile_matcher`. With no `-c` at
518
- // all the flag still applies, yielding just the starter table.
519
- if cfg.include_default {
520
- builder = builder.table(default_records_table());
521
- }
522
502
  for config_path in &cfg.config {
523
503
  // Canonicalize so config-relative paths (extension libraries, hook
524
504
  // working directories) resolve against an absolute parent — `notify`
@@ -616,22 +596,6 @@ fn load_configless_state(cfg: &ConfigArgs, path_table_parser: Option<String>) ->
616
596
  }
617
597
  }
618
598
 
619
- /// The shipped starter `records` table, parsed from the [`crate::DEFAULT_CONFIG_TOML`]
620
- /// asset `dirsql init` writes. Used only by the explicit `--include-default`
621
- /// compose path (#604), which seeds it as a programmatic table *before* the
622
- /// `-c` configs. There is no implicit no-`-c` fallback (#636).
623
- fn default_records_table() -> Table {
624
- let config = crate::config::load_config_str(crate::DEFAULT_CONFIG_TOML)
625
- .expect("DEFAULT_CONFIG_TOML must be valid dirsql config TOML");
626
- let table_config = &config.tables[0];
627
- Table::new(
628
- table_config.name.clone(),
629
- table_config.ddl.clone(),
630
- table_config.glob.clone(),
631
- |_path| vec![Row::new()],
632
- )
633
- }
634
-
635
599
  #[cfg(unix)]
636
600
  async fn wait_for_shutdown() -> std::io::Result<()> {
637
601
  use tokio::signal::unix::{SignalKind, signal};
@@ -947,29 +911,6 @@ mod tests {
947
911
  );
948
912
  }
949
913
 
950
- #[test]
951
- fn include_default_defaults_false_without_the_flag() {
952
- // Absent -> false: `-c` keeps its replacement semantics unless the
953
- // launcher explicitly opts the baked-in default back in (#604).
954
- let cli = Cli::parse_from(["dirsql"]);
955
- assert!(!cli.common.include_default);
956
- }
957
-
958
- #[test]
959
- fn include_default_flag_sets_true() {
960
- let cli = Cli::parse_from(["dirsql", "--include-default"]);
961
- assert!(cli.common.include_default);
962
- }
963
-
964
- #[test]
965
- fn include_default_parses_after_the_query_subcommand() {
966
- // Subcommand-local (#609): the launcher injects it AFTER `query`
967
- // alongside `-c <plugin>`.
968
- assert!(
969
- query_common(&["dirsql", "query", "SELECT 1", "--include-default"]).include_default
970
- );
971
- }
972
-
973
914
  #[test]
974
915
  fn persist_flag_absent_is_none() {
975
916
  let cli = Cli::parse_from(["dirsql"]);
@@ -1104,7 +1045,6 @@ mod tests {
1104
1045
  // integration tier.
1105
1046
  let cfg = ConfigArgs {
1106
1047
  config: Vec::new(),
1107
- include_default: false,
1108
1048
  extension: vec!["/ext/vec0.so::sqlite3_vec_init".to_string()],
1109
1049
  persist: None,
1110
1050
  no_ignore: false,
@@ -1192,12 +1132,4 @@ mod tests {
1192
1132
  ]);
1193
1133
  assert_eq!(code, 2);
1194
1134
  }
1195
-
1196
- #[test]
1197
- fn default_records_table_is_built_from_the_shipped_starter_config() {
1198
- // `--include-default` seeds this table, so a starter config that
1199
- // stopped parsing would break that flag rather than `dirsql init`.
1200
- let table = default_records_table();
1201
- assert!(table.ddl.contains("records"));
1202
- }
1203
1135
  }
@@ -94,13 +94,7 @@ mod tests {
94
94
  #[test]
95
95
  fn collects_a_discovery_injected_fragment_rather_than_the_default() {
96
96
  assert_eq!(
97
- scan(&[
98
- "query",
99
- "SELECT 1",
100
- "--include-default",
101
- "-c",
102
- "/frag/dirsql.toml"
103
- ]),
97
+ scan(&["query", "SELECT 1", "-c", "/frag/dirsql.toml"]),
104
98
  ["/frag/dirsql.toml"]
105
99
  );
106
100
  }