dirsql 0.4.92__tar.gz → 0.4.93__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 (374) hide show
  1. {dirsql-0.4.92 → dirsql-0.4.93}/Cargo.lock +2 -2
  2. {dirsql-0.4.92 → dirsql-0.4.93}/PKG-INFO +1 -1
  3. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/Cargo.toml +1 -1
  4. dirsql-0.4.93/packages/python/changelog.d/2026-10-06-config-links.md +3 -0
  5. dirsql-0.4.93/packages/python/e2e-attestations/claude-1258-config-links.json +7 -0
  6. dirsql-0.4.93/packages/python/migrations.d/2026-10-06-config-links.md +43 -0
  7. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/Cargo.toml +1 -1
  8. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/matcher.rs +53 -9
  9. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/scanner.rs +36 -25
  10. {dirsql-0.4.92 → dirsql-0.4.93}/Cargo.toml +0 -0
  11. {dirsql-0.4.92 → dirsql-0.4.93}/README.md +0 -0
  12. {dirsql-0.4.92 → dirsql-0.4.93}/dirsql/__init__.py +0 -0
  13. {dirsql-0.4.92 → dirsql-0.4.93}/dirsql/_async.py +0 -0
  14. {dirsql-0.4.92 → dirsql-0.4.93}/dirsql/_dirsql.pyi +0 -0
  15. {dirsql-0.4.92 → dirsql-0.4.93}/dirsql/cli/__init__.py +0 -0
  16. {dirsql-0.4.92 → dirsql-0.4.93}/dirsql/cli/discover_plugins/__init__.py +0 -0
  17. {dirsql-0.4.92 → dirsql-0.4.93}/dirsql/cli/discover_plugins/discovered_fragments.py +0 -0
  18. {dirsql-0.4.92 → dirsql-0.4.93}/dirsql/cli/discover_plugins/discovery_disabled.py +0 -0
  19. {dirsql-0.4.92 → dirsql-0.4.93}/dirsql/cli/discover_plugins/fragment_path.py +0 -0
  20. {dirsql-0.4.92 → dirsql-0.4.93}/dirsql/cli/discover_plugins/with_discovered_plugins.py +0 -0
  21. {dirsql-0.4.92 → dirsql-0.4.93}/dirsql/cli/main.py +0 -0
  22. {dirsql-0.4.92 → dirsql-0.4.93}/dirsql/cli/resolve_config_extensions.py +0 -0
  23. {dirsql-0.4.92 → dirsql-0.4.93}/dirsql/plan_entry_path.py +0 -0
  24. {dirsql-0.4.92 → dirsql-0.4.93}/dirsql/py.typed +0 -0
  25. {dirsql-0.4.92 → dirsql-0.4.93}/dirsql/read_config.py +0 -0
  26. {dirsql-0.4.92 → dirsql-0.4.93}/dirsql/resolve_configs_extension_specs.py +0 -0
  27. {dirsql-0.4.92 → dirsql-0.4.93}/dirsql/resolve_extension.py +0 -0
  28. {dirsql-0.4.92 → dirsql-0.4.93}/dirsql/resolve_package.py +0 -0
  29. {dirsql-0.4.92 → dirsql-0.4.93}/docs/.claude/CLAUDE.md +0 -0
  30. {dirsql-0.4.92 → dirsql-0.4.93}/docs/.vitepress/config.ts +0 -0
  31. {dirsql-0.4.92 → dirsql-0.4.93}/docs/.vitepress/theme/index.ts +0 -0
  32. {dirsql-0.4.92 → dirsql-0.4.93}/docs/.vitepress/theme/lang.ts +0 -0
  33. {dirsql-0.4.92 → dirsql-0.4.93}/docs/AGENTS.md +0 -0
  34. {dirsql-0.4.92 → dirsql-0.4.93}/docs/context/.gitattributes +0 -0
  35. {dirsql-0.4.92 → dirsql-0.4.93}/docs/context/recipes.md +0 -0
  36. {dirsql-0.4.92 → dirsql-0.4.93}/docs/context/troubleshooting.md +0 -0
  37. {dirsql-0.4.92 → dirsql-0.4.93}/docs/context/usage.md +0 -0
  38. {dirsql-0.4.92 → dirsql-0.4.93}/docs/explanation.md +0 -0
  39. {dirsql-0.4.92 → dirsql-0.4.93}/docs/getting-started.md +0 -0
  40. {dirsql-0.4.92 → dirsql-0.4.93}/docs/howto/agent-skill.md +0 -0
  41. {dirsql-0.4.92 → dirsql-0.4.93}/docs/howto/columns-from-paths.md +0 -0
  42. {dirsql-0.4.92 → dirsql-0.4.93}/docs/howto/define-tables.md +0 -0
  43. {dirsql-0.4.92 → dirsql-0.4.93}/docs/howto/embed.md +0 -0
  44. {dirsql-0.4.92 → dirsql-0.4.93}/docs/howto/extract-from-contents.md +0 -0
  45. {dirsql-0.4.92 → dirsql-0.4.93}/docs/howto/load-extension.md +0 -0
  46. {dirsql-0.4.92 → dirsql-0.4.93}/docs/howto/parse-files-into-columns.md +0 -0
  47. {dirsql-0.4.92 → dirsql-0.4.93}/docs/howto/persist.md +0 -0
  48. {dirsql-0.4.92 → dirsql-0.4.93}/docs/howto/query-json.md +0 -0
  49. {dirsql-0.4.92 → dirsql-0.4.93}/docs/howto/query-without-config.md +0 -0
  50. {dirsql-0.4.92 → dirsql-0.4.93}/docs/howto/react-to-changes.md +0 -0
  51. {dirsql-0.4.92 → dirsql-0.4.93}/docs/howto/search-by-meaning.md +0 -0
  52. {dirsql-0.4.92 → dirsql-0.4.93}/docs/howto/search-indexes.md +0 -0
  53. {dirsql-0.4.92 → dirsql-0.4.93}/docs/howto/skip-files.md +0 -0
  54. {dirsql-0.4.92 → dirsql-0.4.93}/docs/howto/write-a-plugin.md +0 -0
  55. {dirsql-0.4.92 → dirsql-0.4.93}/docs/index.md +0 -0
  56. {dirsql-0.4.92 → dirsql-0.4.93}/docs/package.json +0 -0
  57. {dirsql-0.4.92 → dirsql-0.4.93}/docs/plugins.md +0 -0
  58. {dirsql-0.4.92 → dirsql-0.4.93}/docs/pnpm-lock.yaml +0 -0
  59. {dirsql-0.4.92 → dirsql-0.4.93}/docs/pnpm-workspace.yaml +0 -0
  60. {dirsql-0.4.92 → dirsql-0.4.93}/docs/reference/cli.md +0 -0
  61. {dirsql-0.4.92 → dirsql-0.4.93}/docs/reference/columns.md +0 -0
  62. {dirsql-0.4.92 → dirsql-0.4.93}/docs/reference/config.md +0 -0
  63. {dirsql-0.4.92 → dirsql-0.4.93}/docs/reference/hooks.md +0 -0
  64. {dirsql-0.4.92 → dirsql-0.4.93}/docs/reference/http-api.md +0 -0
  65. {dirsql-0.4.92 → dirsql-0.4.93}/docs/reference/path-tables.md +0 -0
  66. {dirsql-0.4.92 → dirsql-0.4.93}/docs/reference/sdk.md +0 -0
  67. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/CHANGELOG.md +0 -0
  68. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/MIGRATIONS.md +0 -0
  69. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/README.md +0 -0
  70. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
  71. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-07-13-plugin-discovery.md +0 -0
  72. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-07-13-rename-extract-to-on-file.md +0 -0
  73. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-07-13-repeatable-config.md +0 -0
  74. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
  75. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-07-20-drop-implicit-files-table.md +0 -0
  76. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-07-21-remove-glob-captures.md +0 -0
  77. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-07-24-hookless-table-config-error.md +0 -0
  78. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-07-24-remove-stat-fact-injection.md +0 -0
  79. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-07-29-restore-python-310.md +0 -0
  80. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-08-02-release-profile.md +0 -0
  81. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-08-02-scan-failures.md +0 -0
  82. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-08-03-discovery-ext-resolution.md +0 -0
  83. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-08-03-manylinux-dynamic-binary.md +0 -0
  84. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-08-03-python-no-ignore.md +0 -0
  85. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-08-04-cast-lints.md +0 -0
  86. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-08-04-cli-in-process.md +0 -0
  87. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-08-20-curtaincall-dev-dependency.md +0 -0
  88. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-08-20-declared-table-name.md +0 -0
  89. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-09-04-config-paths-from-argv-module.md +0 -0
  90. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-09-05-config-extension-loader-split.md +0 -0
  91. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-09-05-resolve-config-extensions-split.md +0 -0
  92. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-09-05-resolve-extension-split.md +0 -0
  93. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-09-09-launcher-config-path-scan.md +0 -0
  94. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-09-17-extension-resolution-via-core.md +0 -0
  95. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-09-18-export-scan-failure.md +0 -0
  96. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-09-18-flatten-row-event-in-core.md +0 -0
  97. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-09-18-programmatic-extension-plan.md +0 -0
  98. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-09-20-sigint-ends-a-run-in-progress.md +0 -0
  99. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-09-24-query-rows-in-projection-order.md +0 -0
  100. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-10-02-readme-docs-host.md +0 -0
  101. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-10-03-one-glob-rule-for-config-globs.md +0 -0
  102. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-10-03-path-table-directory-one-level.md +0 -0
  103. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-10-04-path-table-dotfiles-hidden.md +0 -0
  104. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-10-05-brace-groups-follow-bash.md +0 -0
  105. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-10-05-cli-context.md +0 -0
  106. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-10-05-gitignore-requires-repo.md +0 -0
  107. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-10-05-path-table-node-modules-named.md +0 -0
  108. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-10-05-path-table-symlinks.md +0 -0
  109. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-10-05-path-table-trailing-slash.md +0 -0
  110. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-10-05-unbalanced-brackets-literal.md +0 -0
  111. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-10-06-config-braces.md +0 -0
  112. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-10-06-config-directory.md +0 -0
  113. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-10-06-config-dotnames.md +0 -0
  114. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-10-06-config-gitignore.md +0 -0
  115. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-10-06-config-globs-anchor-at-the-config.md +0 -0
  116. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-10-06-one-glob-compiler.md +0 -0
  117. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-10-06-plugin-no-default-records.md +0 -0
  118. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-10-06-watch-broadcast.md +0 -0
  119. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/2026-10-06-zero-match-config-table-warning.md +0 -0
  120. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/changelog.d/README.md +0 -0
  121. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/conftest.py +0 -0
  122. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/.claude/CLAUDE.md +0 -0
  123. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/.vitepress/config.ts +0 -0
  124. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/.vitepress/theme/index.ts +0 -0
  125. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/.vitepress/theme/lang.ts +0 -0
  126. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/AGENTS.md +0 -0
  127. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/context/.gitattributes +0 -0
  128. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/context/recipes.md +0 -0
  129. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/context/troubleshooting.md +0 -0
  130. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/context/usage.md +0 -0
  131. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/explanation.md +0 -0
  132. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/getting-started.md +0 -0
  133. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/howto/agent-skill.md +0 -0
  134. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/howto/columns-from-paths.md +0 -0
  135. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/howto/define-tables.md +0 -0
  136. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/howto/embed.md +0 -0
  137. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/howto/extract-from-contents.md +0 -0
  138. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/howto/load-extension.md +0 -0
  139. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/howto/parse-files-into-columns.md +0 -0
  140. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/howto/persist.md +0 -0
  141. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/howto/query-json.md +0 -0
  142. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/howto/query-without-config.md +0 -0
  143. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/howto/react-to-changes.md +0 -0
  144. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/howto/search-by-meaning.md +0 -0
  145. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/howto/search-indexes.md +0 -0
  146. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/howto/skip-files.md +0 -0
  147. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/howto/write-a-plugin.md +0 -0
  148. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/index.md +0 -0
  149. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/package.json +0 -0
  150. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/plugins.md +0 -0
  151. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/pnpm-lock.yaml +0 -0
  152. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/pnpm-workspace.yaml +0 -0
  153. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/reference/cli.md +0 -0
  154. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/reference/columns.md +0 -0
  155. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/reference/config.md +0 -0
  156. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/reference/hooks.md +0 -0
  157. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/reference/http-api.md +0 -0
  158. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/reference/path-tables.md +0 -0
  159. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/docs/reference/sdk.md +0 -0
  160. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/bot-1397-watch-broadcast.json +0 -0
  161. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/bot-1398-inotify-error.json +0 -0
  162. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/bot-1399-server-cors.json +0 -0
  163. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/bot-1401-watch-scope.json +0 -0
  164. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/bot-1407-child-place-depth.json +0 -0
  165. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/cc-keen-knuth-f11gyq.json +0 -0
  166. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1056-py-ofpf9.json +0 -0
  167. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1066-p1-resolve-extension.json +0 -0
  168. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1078-argv-config-paths-core.json +0 -0
  169. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1079-p2-resolve-config-extensions.json +0 -0
  170. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1080-share-vtab-scaffolding.json +0 -0
  171. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1081-indicatif-progress.json +0 -0
  172. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1096-watch-moved-dir.json +0 -0
  173. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1109-watch-moved-out.json +0 -0
  174. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1119-ext-plan.json +0 -0
  175. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1120-py-ext.json +0 -0
  176. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1122-ext-cleanup.json +0 -0
  177. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1130-codec-crates.json +0 -0
  178. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1131-flatten-row-event.json +0 -0
  179. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1139-sse-flatten.json +0 -0
  180. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1140-scan-failure-export.json +0 -0
  181. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1148-clippy-all-targets.json +0 -0
  182. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1164-sigint-fatal.json +0 -0
  183. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1170-projection-order.json +0 -0
  184. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1172-on-file-path.json +0 -0
  185. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1173-py-projection-order.json +0 -0
  186. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1184-win-rel-paths.json +0 -0
  187. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1185-win-abs-table-names.json +0 -0
  188. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1186-win-test-harness.json +0 -0
  189. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1196-join-index.json +0 -0
  190. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1199-glob-prefix.json +0 -0
  191. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1201-single-walk.json +0 -0
  192. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1204-embed-batch.json +0 -0
  193. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1207-win-argv-quote.json +0 -0
  194. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1208-win-nonverbatim-paths.json +0 -0
  195. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1215-on-file-batch.json +0 -0
  196. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1216-on-file-cleanup.json +0 -0
  197. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1223-config-glob-rule.json +0 -0
  198. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1223-dir-one-level.json +0 -0
  199. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1225-plugin-no-default.json +0 -0
  200. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1226-stale-docs.json +0 -0
  201. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1232-anchor-plumbing.json +0 -0
  202. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1232-config-anchor.json +0 -0
  203. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1232-multi-watch.json +0 -0
  204. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1232-zero-match.json +0 -0
  205. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1238-parallel-walk.json +0 -0
  206. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1241-content-prefetch.json +0 -0
  207. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1243-ingest-perf.json +0 -0
  208. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1249-dotfiles.json +0 -0
  209. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1256-symlinks.json +0 -0
  210. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1257-trailing-slash.json +0 -0
  211. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1258-config-braces.json +0 -0
  212. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1258-config-directory.json +0 -0
  213. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1258-config-dotnames.json +0 -0
  214. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1258-config-gitignore.json +0 -0
  215. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1258-one-pattern.json +0 -0
  216. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1262-brace-literal.json +0 -0
  217. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1264-context.json +0 -0
  218. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1267-posix-classes.json +0 -0
  219. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1268-unbalanced-brackets.json +0 -0
  220. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1269-utf8-chars.json +0 -0
  221. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1271-node-modules-named.json +0 -0
  222. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1272-ancestor-gitignore.json +0 -0
  223. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1273-walk-prune.json +0 -0
  224. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1285-ingest-fast.json +0 -0
  225. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1286-nested-repo.json +0 -0
  226. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1305-glob-speed.json +0 -0
  227. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1308-glob-speed.json +0 -0
  228. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1310-glob-speed.json +0 -0
  229. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1311-glob-speed.json +0 -0
  230. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1312-glob-speed.json +0 -0
  231. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1318-lazy-stat.json +0 -0
  232. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1320-walk-speed.json +0 -0
  233. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1322-walk-readdir.json +0 -0
  234. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1325-parallel-walk.json +0 -0
  235. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1326-stream-rows.json +0 -0
  236. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1330-python-dirsql-patch.json +0 -0
  237. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1330-python-extensions-patch.json +0 -0
  238. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1330-scanner-effects.json +0 -0
  239. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1330-scanner-gitignore.json +0 -0
  240. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1330-vtab-prefetch-flag.json +0 -0
  241. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1330-vtab-read.json +0 -0
  242. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-1351-dot-dirs.json +0 -0
  243. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-819-oneshot-timeout.json +0 -0
  244. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-827-unquote-doubled-quotes.json +0 -0
  245. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-epic-953-slice2-reedline.json +0 -0
  246. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-epic-953-slice3-format.json +0 -0
  247. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-epic-953-stacked-prs-x59wm3.json +0 -0
  248. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-github-issue-825-e4mhhp.json +0 -0
  249. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-issue-951-0eease.json +0 -0
  250. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-issue-962-0jjrfv.json +0 -0
  251. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-issue-986-red-test-e7sjrb.json +0 -0
  252. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-tackle-1034-cachesplit.json +0 -0
  253. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-tackle-1042-py12.json +0 -0
  254. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-tackle-956-xzen74.json +0 -0
  255. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-tackle-957-lrm0z6-worker-calls.json +0 -0
  256. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-tackle-957-lrm0z6.json +0 -0
  257. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/e2e-attestations/claude-tackle-975-n8mc2h.json +0 -0
  258. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
  259. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/2026-07-13-rename-extract-to-on-file.md +0 -0
  260. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
  261. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/2026-07-20-drop-implicit-files-table.md +0 -0
  262. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/2026-07-21-remove-glob-captures.md +0 -0
  263. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/2026-07-24-hookless-table-config-error.md +0 -0
  264. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/2026-07-24-remove-stat-fact-injection.md +0 -0
  265. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/2026-07-29-restore-python-310.md +0 -0
  266. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/2026-08-04-cli-in-process.md +0 -0
  267. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/2026-08-20-declared-table-name.md +0 -0
  268. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/2026-09-20-sigint-ends-a-run-in-progress.md +0 -0
  269. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/2026-09-24-query-rows-in-projection-order.md +0 -0
  270. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/2026-10-02-readme-docs-host.md +0 -0
  271. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/2026-10-03-one-glob-rule-for-config-globs.md +0 -0
  272. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/2026-10-03-path-table-directory-one-level.md +0 -0
  273. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/2026-10-04-path-table-dotfiles-hidden.md +0 -0
  274. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/2026-10-05-brace-groups-follow-bash.md +0 -0
  275. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/2026-10-05-cli-context.md +0 -0
  276. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/2026-10-05-gitignore-requires-repo.md +0 -0
  277. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/2026-10-05-path-table-node-modules-named.md +0 -0
  278. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/2026-10-05-path-table-symlinks.md +0 -0
  279. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/2026-10-05-path-table-trailing-slash.md +0 -0
  280. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/2026-10-05-unbalanced-brackets-literal.md +0 -0
  281. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/2026-10-06-config-braces.md +0 -0
  282. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/2026-10-06-config-directory.md +0 -0
  283. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/2026-10-06-config-dotnames.md +0 -0
  284. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/2026-10-06-config-gitignore.md +0 -0
  285. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/2026-10-06-config-globs-anchor-at-the-config.md +0 -0
  286. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/2026-10-06-one-glob-compiler.md +0 -0
  287. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/2026-10-06-plugin-no-default-records.md +0 -0
  288. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/2026-10-06-watch-broadcast.md +0 -0
  289. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/2026-10-06-zero-match-config-table-warning.md +0 -0
  290. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/migrations.d/README.md +0 -0
  291. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/src/lib.rs +0 -0
  292. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/testing-conventions.toml +0 -0
  293. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/tests/__init__.py +0 -0
  294. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/tests/conftest.py +0 -0
  295. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/tests/e2e/__init__.py +0 -0
  296. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/__init__.py +0 -0
  297. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/dirsql.toml +0 -0
  298. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/tests/e2e/speed_of_light.py +0 -0
  299. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/tests/integration/__init__.py +0 -0
  300. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/tests/integration/binding/__init__.py +0 -0
  301. {dirsql-0.4.92 → dirsql-0.4.93}/packages/python/tests/integration/hermetic/__init__.py +0 -0
  302. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/CHANGELOG.md +0 -0
  303. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/MIGRATIONS.md +0 -0
  304. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/README.md +0 -0
  305. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/benches/db_bench.rs +0 -0
  306. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/benches/differ_bench.rs +0 -0
  307. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/benches/matcher_bench.rs +0 -0
  308. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/benches/scanner_bench.rs +0 -0
  309. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/docs/context/.gitattributes +0 -0
  310. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/docs/context/recipes.md +0 -0
  311. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/docs/context/troubleshooting.md +0 -0
  312. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/docs/context/usage.md +0 -0
  313. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/docs/explanation.md +0 -0
  314. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/docs/getting-started.md +0 -0
  315. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/docs/howto/agent-skill.md +0 -0
  316. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/docs/howto/columns-from-paths.md +0 -0
  317. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/docs/howto/define-tables.md +0 -0
  318. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/docs/howto/embed.md +0 -0
  319. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/docs/howto/extract-from-contents.md +0 -0
  320. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/docs/howto/load-extension.md +0 -0
  321. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/docs/howto/parse-files-into-columns.md +0 -0
  322. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/docs/howto/persist.md +0 -0
  323. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/docs/howto/query-json.md +0 -0
  324. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/docs/howto/query-without-config.md +0 -0
  325. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/docs/howto/react-to-changes.md +0 -0
  326. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/docs/howto/search-by-meaning.md +0 -0
  327. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/docs/howto/search-indexes.md +0 -0
  328. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/docs/howto/skip-files.md +0 -0
  329. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/docs/howto/write-a-plugin.md +0 -0
  330. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/docs/index.md +0 -0
  331. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/docs/plugins.md +0 -0
  332. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/docs/reference/cli.md +0 -0
  333. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/docs/reference/columns.md +0 -0
  334. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/docs/reference/config.md +0 -0
  335. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/docs/reference/hooks.md +0 -0
  336. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/docs/reference/http-api.md +0 -0
  337. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/docs/reference/path-tables.md +0 -0
  338. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/docs/reference/sdk.md +0 -0
  339. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/bin/dirsql.rs +0 -0
  340. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/brace.rs +0 -0
  341. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/cli/context.rs +0 -0
  342. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/cli/execute.rs +0 -0
  343. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/cli/init.rs +0 -0
  344. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/cli/mod.rs +0 -0
  345. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/cli/repl.rs +0 -0
  346. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/cli/router.rs +0 -0
  347. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/cli/run.rs +0 -0
  348. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/cli/serialize.rs +0 -0
  349. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/cli/server.rs +0 -0
  350. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/cli/table.rs +0 -0
  351. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/command.rs +0 -0
  352. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/config.rs +0 -0
  353. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/db.rs +0 -0
  354. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/default_config.toml +0 -0
  355. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/differ.rs +0 -0
  356. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/extension_resolution.rs +0 -0
  357. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/functions.rs +0 -0
  358. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/infer.rs +0 -0
  359. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/launcher.rs +0 -0
  360. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/lib.rs +0 -0
  361. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/listing.rs +0 -0
  362. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/on_file.rs +0 -0
  363. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/parsed_vtab.rs +0 -0
  364. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/path_table.rs +0 -0
  365. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/persist.rs +0 -0
  366. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/posix_class.rs +0 -0
  367. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/progress.rs +0 -0
  368. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/row_event_flat.rs +0 -0
  369. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/sql_literal.rs +0 -0
  370. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/tree_walk.rs +0 -0
  371. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/vtab.rs +0 -0
  372. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/vtab_scaffold.rs +0 -0
  373. {dirsql-0.4.92 → dirsql-0.4.93}/packages/rust/src/watcher.rs +0 -0
  374. {dirsql-0.4.92 → dirsql-0.4.93}/pyproject.toml +0 -0
@@ -552,7 +552,7 @@ checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8"
552
552
 
553
553
  [[package]]
554
554
  name = "dirsql"
555
- version = "0.4.92"
555
+ version = "0.4.93"
556
556
  dependencies = [
557
557
  "assert_cmd",
558
558
  "axum",
@@ -603,7 +603,7 @@ dependencies = [
603
603
 
604
604
  [[package]]
605
605
  name = "dirsql-py-ext"
606
- version = "0.4.92"
606
+ version = "0.4.93"
607
607
  dependencies = [
608
608
  "dirsql",
609
609
  "pyo3",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dirsql
3
- Version: 0.4.92
3
+ Version: 0.4.93
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
@@ -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.92"
7
+ version = "0.4.93"
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,3 @@
1
+ **Changed** A declared `[[table]] glob` skips `node_modules` unless the glob
2
+ names it, and follows symlinks, as a path-table does. `**/*.js` no longer lists
3
+ `node_modules/...`; `link.md -> top.md` and `linkdir/*` now list their rows.
@@ -0,0 +1,7 @@
1
+ {
2
+ "command": "uv run python -m pytest tests/e2e/glob_speed_symlink_test.py tests/e2e/glob_speed_node_modules_test.py tests/e2e/glob_speed_dotfiles_test.py tests/e2e/glob_speed_matchers_test.py tests/e2e/query_contract_test.py -x -q",
3
+ "ran_at": 1791338642,
4
+ "exit_code": 0,
5
+ "commit": "81890d53f01c2d6e6e833e0748a6ff952e3382c5",
6
+ "branch": "claude/1258-config-links"
7
+ }
@@ -0,0 +1,43 @@
1
+ ### Config globs skip node_modules unless named, and follow symlinks
2
+
3
+ #### Summary
4
+
5
+ `glob = "**/*.js"` used to list files under any `node_modules`; it now does
6
+ not, unless a component of the glob is `node_modules`. Symlinked files and
7
+ directories, which a config glob used to ignore, are now followed as in a
8
+ path-table and in bash.
9
+
10
+ #### Required changes
11
+
12
+ | Before | After |
13
+ | --- | --- |
14
+ | `glob = "**/*.js"` (included `node_modules/`) | `glob = "node_modules/**/*.js"` to list it |
15
+
16
+ #### Deprecations removed
17
+
18
+ _None._
19
+
20
+ #### Behavior changes without code changes
21
+
22
+ - A glob with no `node_modules` component never matches under one.
23
+ - A symlinked file or directory the glob reaches now yields rows.
24
+
25
+ #### Verification
26
+
27
+ ```bash
28
+ cd "$(mktemp -d)"
29
+ mkdir real node_modules
30
+ echo '[{"p":"r"}]' > real/r.json
31
+ echo '[{"p":"n"}]' > node_modules/n.json
32
+ ln -s real linkdir
33
+ cat > .dirsql.toml <<'TOML'
34
+ [[table]]
35
+ name = "t"
36
+ glob = "**/*.json"
37
+ ddl = "CREATE TABLE t (p TEXT)"
38
+ on-file = "jq -sc add"
39
+ TOML
40
+ dirsql query "SELECT p FROM t" -c .dirsql.toml
41
+ # expected: no row from node_modules; rows for real/ (symlinked linkdir/ is
42
+ # reached by `linkdir/*.json`, not by `**`)
43
+ ```
@@ -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.92"
9
+ version = "0.4.93"
10
10
  edition.workspace = true
11
11
  # Literal `license` (not `license.workspace = true`) because
12
12
  # putitoutthere's preflight check reads `[package].license` directly
@@ -1,5 +1,5 @@
1
1
  use crate::posix_class::expand_posix_classes;
2
- use crate::scanner::{PathGlob, compile_glob};
2
+ use crate::scanner::{PathGlob, compile_glob, compile_globs};
3
3
  use globset::GlobBuilder;
4
4
  use regex::{Regex, RegexBuilder};
5
5
  use std::ffi::OsStr;
@@ -80,23 +80,30 @@ pub struct MatchResult {
80
80
  pub table_name: String,
81
81
  }
82
82
 
83
+ const NODE_MODULES: &str = "node_modules";
84
+
83
85
  #[derive(Clone)]
84
86
  struct PatternEntry {
85
87
  pattern: PathGlob,
86
88
  table_name: String,
89
+ names_node_modules: bool,
87
90
  }
88
91
 
89
92
  /// Maps file paths to table names based on glob patterns.
90
93
  /// Every matching pattern fires: a file matching N patterns yields N
91
94
  /// `MatchResult`s (one per table), so a file can belong to multiple tables.
92
- /// An ignore list filters paths entirely. `{name}` placeholders in glob
93
- /// patterns are accepted and behave like `*`.
95
+ /// An ignore list filters paths entirely.
94
96
  #[derive(Clone)]
95
97
  pub struct TableMatcher {
96
98
  entries: Vec<PatternEntry>,
97
99
  ignore_set: Vec<Pattern>,
98
100
  ignore_dir_set: Vec<Pattern>,
99
101
  gitignore: bool,
102
+ walk: PathGlob,
103
+ }
104
+
105
+ fn has_node_modules_component(path: &Path) -> bool {
106
+ path.components().any(|c| c.as_os_str() == NODE_MODULES)
100
107
  }
101
108
 
102
109
  impl TableMatcher {
@@ -107,8 +114,11 @@ impl TableMatcher {
107
114
  entries.push(PatternEntry {
108
115
  pattern: compile_glob(pattern)?,
109
116
  table_name: table_name.to_string(),
117
+ names_node_modules: pattern.split('/').any(|c| c == NODE_MODULES),
110
118
  });
111
119
  }
120
+ let globs: Vec<&str> = mappings.iter().map(|(pattern, _)| *pattern).collect();
121
+ let walk = compile_globs(&globs)?;
112
122
 
113
123
  let mut ignore_set = Vec::new();
114
124
  let mut ignore_dir_set = Vec::new();
@@ -124,6 +134,7 @@ impl TableMatcher {
124
134
  ignore_set,
125
135
  ignore_dir_set,
126
136
  gitignore: false,
137
+ walk,
127
138
  })
128
139
  }
129
140
 
@@ -143,18 +154,27 @@ impl TableMatcher {
143
154
  pub fn match_all(&self, path: &Path) -> Vec<MatchResult> {
144
155
  self.entries
145
156
  .iter()
146
- .filter(|entry| entry.pattern.is_match_unhidden(path))
157
+ .filter(|entry| {
158
+ entry.pattern.is_match_unhidden(path)
159
+ && (entry.names_node_modules || !has_node_modules_component(path))
160
+ })
147
161
  .map(|entry| MatchResult {
148
162
  table_name: entry.table_name.clone(),
149
163
  })
150
164
  .collect()
151
165
  }
152
166
 
153
- /// Whether any table's glob spells the dot-named `name`.
154
- pub(crate) fn spells_dot_name(&self, name: &OsStr) -> bool {
155
- self.entries
156
- .iter()
157
- .any(|entry| entry.pattern.spells_dot_name(name))
167
+ /// The one glob a walk for every table at once follows.
168
+ pub(crate) fn walk_glob(&self) -> &PathGlob {
169
+ &self.walk
170
+ }
171
+
172
+ /// Whether the walk may skip a directory called `name` outright: it is
173
+ /// `node_modules` and no table's glob names it.
174
+ pub(crate) fn prunes_directory(&self, name: &OsStr) -> bool {
175
+ name == NODE_MODULES
176
+ && !self.entries.is_empty()
177
+ && !self.entries.iter().any(|e| e.names_node_modules)
158
178
  }
159
179
 
160
180
  /// Returns true if the path matches any ignore pattern.
@@ -196,6 +216,30 @@ mod tests {
196
216
  assert!(matcher.with_gitignore(true).respects_gitignore());
197
217
  }
198
218
 
219
+ #[test]
220
+ fn node_modules_is_skipped_unless_a_table_names_it() {
221
+ let matcher =
222
+ TableMatcher::new(&[("**/*.js", "all"), ("node_modules/*.js", "nm")], &[]).unwrap();
223
+ assert_eq!(names(&matcher, "pkg/a.js"), vec!["all"]);
224
+ assert_eq!(
225
+ names(&matcher, "pkg/node_modules/a.js"),
226
+ Vec::<String>::new()
227
+ );
228
+ assert_eq!(names(&matcher, "node_modules/a.js"), vec!["nm"]);
229
+ }
230
+
231
+ #[test]
232
+ fn the_walk_prunes_node_modules_only_while_no_table_names_it() {
233
+ let name = OsStr::new("node_modules");
234
+ let plain = TableMatcher::new(&[("**/*.js", "t")], &[]).unwrap();
235
+ let naming = TableMatcher::new(&[("node_modules/*.js", "t")], &[]).unwrap();
236
+ let none = TableMatcher::new(&[], &[]).unwrap();
237
+ assert!(plain.prunes_directory(name));
238
+ assert!(!plain.prunes_directory(OsStr::new("src")));
239
+ assert!(!naming.prunes_directory(name));
240
+ assert!(!none.prunes_directory(name));
241
+ }
242
+
199
243
  #[test]
200
244
  fn match_all_returns_empty_for_no_match() {
201
245
  let matcher = TableMatcher::new(&[("*.csv", "data")], &[]).unwrap();
@@ -104,7 +104,7 @@ fn scan_below(
104
104
  // regardless of the absolute root directory.
105
105
  let walker = Walk {
106
106
  ignore: matcher,
107
- glob: None,
107
+ glob: Some(matcher.walk_glob()),
108
108
  gitignore,
109
109
  in_repo: repo.is_some(),
110
110
  frames: repo.map_or_else(Vec::new, |top| {
@@ -318,7 +318,16 @@ impl PathGlob {
318
318
  /// it a lone `*` would cross `/` and the explicit non-recursive spelling would
319
319
  /// silently recurse. `**` still crosses separators.
320
320
  pub fn compile_glob(pattern: &str) -> Result<PathGlob, GlobError> {
321
- let words = crate::brace::expand(pattern);
321
+ compile_globs(&[pattern])
322
+ }
323
+
324
+ /// One [`PathGlob`] over every word of every pattern: the walk a set of
325
+ /// tables shares, entering what any of them could reach.
326
+ pub fn compile_globs(patterns: &[&str]) -> Result<PathGlob, GlobError> {
327
+ let words: Vec<String> = patterns
328
+ .iter()
329
+ .flat_map(|pattern| crate::brace::expand(pattern))
330
+ .collect();
322
331
  let mut files = Vec::new();
323
332
  let mut spelled_dot_names = Vec::new();
324
333
  for word in &words {
@@ -403,7 +412,11 @@ fn walk(
403
412
  visit: &mut dyn FnMut(PathBuf, &Path),
404
413
  ) {
405
414
  let rel = start.strip_prefix(root).unwrap_or(start);
406
- let states = walker.glob.map_or_else(Vec::new, PathGlob::start);
415
+ let states = walker.glob.map_or_else(Vec::new, |glob| {
416
+ rel.components().fold(glob.start(), |states, component| {
417
+ glob.step(&states, component.as_os_str(), Kind::Dir)
418
+ })
419
+ });
407
420
  let place = Place {
408
421
  walk: walker,
409
422
  dir: start.to_path_buf(),
@@ -590,16 +603,16 @@ impl Walk<'_> {
590
603
  /// `.gitignore` files in force.
591
604
  fn admits(&self, depth: usize, is_dir: bool, name: &OsStr, path: &Path, rel: &Path) -> bool {
592
605
  should_descend(depth, is_dir, name, rel, self.ignore)
606
+ && !(is_dir && self.ignore.prunes_directory(name))
593
607
  && self.admits_name(name)
594
608
  && (self.frames.is_empty() || !is_gitignored(&self.frames, path, is_dir))
595
609
  }
596
610
 
597
611
  fn admits_name(&self, name: &OsStr) -> bool {
598
- !is_dot_named(name)
599
- || match self.glob {
600
- Some(glob) => glob.spells_dot_name(name),
601
- None => self.ignore.spells_dot_name(name),
602
- }
612
+ match self.glob {
613
+ Some(glob) => !is_dot_named(name) || glob.spells_dot_name(name),
614
+ None => true,
615
+ }
603
616
  }
604
617
 
605
618
  fn next_states(&self, states: &[usize], name: &OsStr, kind: Kind) -> Vec<usize> {
@@ -1405,23 +1418,21 @@ mod tests {
1405
1418
  }
1406
1419
 
1407
1420
  #[test]
1408
- fn a_table_walk_admits_a_dot_name_only_a_table_glob_spells() {
1409
- let ignore = TableMatcher::new(&[(".env", "t")], &[]).unwrap();
1410
- let walk = walk_with(&ignore, None, Vec::new());
1411
- assert!(walk.admits(
1412
- 1,
1413
- false,
1414
- OsStr::new(".env"),
1415
- Path::new("/r/.env"),
1416
- Path::new(".env")
1417
- ));
1418
- assert!(!walk.admits(
1419
- 1,
1420
- false,
1421
- OsStr::new(".other"),
1422
- Path::new("/r/.other"),
1423
- Path::new(".other")
1424
- ));
1421
+ fn a_table_walk_skips_a_node_modules_directory_no_table_names() {
1422
+ let ignore = TableMatcher::new(&[("**/*.js", "t")], &[]).unwrap();
1423
+ let walk = walk_with(&ignore, Some(ignore.walk_glob()), Vec::new());
1424
+ let admits = |is_dir, name: &str| {
1425
+ walk.admits(
1426
+ 1,
1427
+ is_dir,
1428
+ OsStr::new(name),
1429
+ Path::new(name),
1430
+ Path::new(name),
1431
+ )
1432
+ };
1433
+ assert!(!admits(true, "node_modules"));
1434
+ assert!(admits(false, "node_modules"));
1435
+ assert!(admits(true, "src"));
1425
1436
  }
1426
1437
 
1427
1438
  #[test]
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes