dirsql 0.4.97__tar.gz → 0.4.99__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 (403) hide show
  1. {dirsql-0.4.97 → dirsql-0.4.99}/Cargo.lock +2 -2
  2. {dirsql-0.4.97 → dirsql-0.4.99}/PKG-INFO +1 -1
  3. {dirsql-0.4.97/packages/python → dirsql-0.4.99}/docs/reference/glob.md +24 -4
  4. {dirsql-0.4.97/packages/rust → dirsql-0.4.99}/docs/reference/path-tables.md +3 -0
  5. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/Cargo.toml +1 -1
  6. dirsql-0.4.99/packages/python/changelog.d/2026-10-07-literal-gitignore.md +3 -0
  7. dirsql-0.4.99/packages/python/changelog.d/2026-10-07-posix-classes-unicode.md +3 -0
  8. {dirsql-0.4.97 → dirsql-0.4.99/packages/python}/docs/reference/glob.md +24 -4
  9. {dirsql-0.4.97 → dirsql-0.4.99/packages/python}/docs/reference/path-tables.md +3 -0
  10. dirsql-0.4.99/packages/python/e2e-attestations/bot-1421-posix-unicode.json +7 -0
  11. dirsql-0.4.99/packages/python/e2e-attestations/bot-1422-literal-gitignore.json +7 -0
  12. dirsql-0.4.99/packages/python/e2e-attestations/bot-1437-test-cache-isolation.json +7 -0
  13. dirsql-0.4.99/packages/python/e2e-attestations/bot-fix-main-place-depth-20261007.json +7 -0
  14. dirsql-0.4.99/packages/python/migrations.d/2026-10-07-literal-gitignore.md +23 -0
  15. dirsql-0.4.99/packages/python/migrations.d/2026-10-07-posix-classes-unicode.md +23 -0
  16. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/Cargo.toml +1 -1
  17. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/reference/glob.md +24 -4
  18. {dirsql-0.4.97/packages/python → dirsql-0.4.99/packages/rust}/docs/reference/path-tables.md +3 -0
  19. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/cli/run.rs +1 -1
  20. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/lib.rs +3 -2
  21. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/matcher.rs +68 -2
  22. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/posix_class.rs +92 -31
  23. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/scanner.rs +37 -2
  24. {dirsql-0.4.97 → dirsql-0.4.99}/Cargo.toml +0 -0
  25. {dirsql-0.4.97 → dirsql-0.4.99}/README.md +0 -0
  26. {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/__init__.py +0 -0
  27. {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/_async.py +0 -0
  28. {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/_dirsql.pyi +0 -0
  29. {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/cli/__init__.py +0 -0
  30. {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/cli/discover_plugins/__init__.py +0 -0
  31. {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/cli/discover_plugins/discovered_fragments.py +0 -0
  32. {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/cli/discover_plugins/discovery_disabled.py +0 -0
  33. {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/cli/discover_plugins/fragment_path.py +0 -0
  34. {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/cli/discover_plugins/with_discovered_plugins.py +0 -0
  35. {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/cli/main.py +0 -0
  36. {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/cli/resolve_config_extensions.py +0 -0
  37. {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/plan_entry_path.py +0 -0
  38. {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/py.typed +0 -0
  39. {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/read_config.py +0 -0
  40. {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/resolve_configs_extension_specs.py +0 -0
  41. {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/resolve_extension.py +0 -0
  42. {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/resolve_package.py +0 -0
  43. {dirsql-0.4.97 → dirsql-0.4.99}/docs/.claude/CLAUDE.md +0 -0
  44. {dirsql-0.4.97 → dirsql-0.4.99}/docs/.vitepress/config.ts +0 -0
  45. {dirsql-0.4.97 → dirsql-0.4.99}/docs/.vitepress/theme/index.ts +0 -0
  46. {dirsql-0.4.97 → dirsql-0.4.99}/docs/.vitepress/theme/lang.ts +0 -0
  47. {dirsql-0.4.97 → dirsql-0.4.99}/docs/AGENTS.md +0 -0
  48. {dirsql-0.4.97 → dirsql-0.4.99}/docs/context/.gitattributes +0 -0
  49. {dirsql-0.4.97 → dirsql-0.4.99}/docs/context/recipes.md +0 -0
  50. {dirsql-0.4.97 → dirsql-0.4.99}/docs/context/troubleshooting.md +0 -0
  51. {dirsql-0.4.97 → dirsql-0.4.99}/docs/context/usage.md +0 -0
  52. {dirsql-0.4.97 → dirsql-0.4.99}/docs/explanation.md +0 -0
  53. {dirsql-0.4.97 → dirsql-0.4.99}/docs/getting-started.md +0 -0
  54. {dirsql-0.4.97 → dirsql-0.4.99}/docs/howto/agent-skill.md +0 -0
  55. {dirsql-0.4.97 → dirsql-0.4.99}/docs/howto/columns-from-paths.md +0 -0
  56. {dirsql-0.4.97 → dirsql-0.4.99}/docs/howto/define-tables.md +0 -0
  57. {dirsql-0.4.97 → dirsql-0.4.99}/docs/howto/embed.md +0 -0
  58. {dirsql-0.4.97 → dirsql-0.4.99}/docs/howto/extract-from-contents.md +0 -0
  59. {dirsql-0.4.97 → dirsql-0.4.99}/docs/howto/load-extension.md +0 -0
  60. {dirsql-0.4.97 → dirsql-0.4.99}/docs/howto/parse-files-into-columns.md +0 -0
  61. {dirsql-0.4.97 → dirsql-0.4.99}/docs/howto/persist.md +0 -0
  62. {dirsql-0.4.97 → dirsql-0.4.99}/docs/howto/query-json.md +0 -0
  63. {dirsql-0.4.97 → dirsql-0.4.99}/docs/howto/query-without-config.md +0 -0
  64. {dirsql-0.4.97 → dirsql-0.4.99}/docs/howto/react-to-changes.md +0 -0
  65. {dirsql-0.4.97 → dirsql-0.4.99}/docs/howto/search-by-meaning.md +0 -0
  66. {dirsql-0.4.97 → dirsql-0.4.99}/docs/howto/search-indexes.md +0 -0
  67. {dirsql-0.4.97 → dirsql-0.4.99}/docs/howto/skip-files.md +0 -0
  68. {dirsql-0.4.97 → dirsql-0.4.99}/docs/howto/write-a-plugin.md +0 -0
  69. {dirsql-0.4.97 → dirsql-0.4.99}/docs/index.md +0 -0
  70. {dirsql-0.4.97 → dirsql-0.4.99}/docs/package.json +0 -0
  71. {dirsql-0.4.97 → dirsql-0.4.99}/docs/plugins.md +0 -0
  72. {dirsql-0.4.97 → dirsql-0.4.99}/docs/pnpm-lock.yaml +0 -0
  73. {dirsql-0.4.97 → dirsql-0.4.99}/docs/pnpm-workspace.yaml +0 -0
  74. {dirsql-0.4.97 → dirsql-0.4.99}/docs/reference/cli.md +0 -0
  75. {dirsql-0.4.97 → dirsql-0.4.99}/docs/reference/columns.md +0 -0
  76. {dirsql-0.4.97 → dirsql-0.4.99}/docs/reference/config.md +0 -0
  77. {dirsql-0.4.97 → dirsql-0.4.99}/docs/reference/hooks.md +0 -0
  78. {dirsql-0.4.97 → dirsql-0.4.99}/docs/reference/http-api.md +0 -0
  79. {dirsql-0.4.97 → dirsql-0.4.99}/docs/reference/sdk.md +0 -0
  80. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/CHANGELOG.md +0 -0
  81. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/MIGRATIONS.md +0 -0
  82. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/README.md +0 -0
  83. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
  84. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-07-13-plugin-discovery.md +0 -0
  85. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-07-13-rename-extract-to-on-file.md +0 -0
  86. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-07-13-repeatable-config.md +0 -0
  87. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
  88. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-07-20-drop-implicit-files-table.md +0 -0
  89. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-07-21-remove-glob-captures.md +0 -0
  90. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-07-24-hookless-table-config-error.md +0 -0
  91. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-07-24-remove-stat-fact-injection.md +0 -0
  92. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-07-29-restore-python-310.md +0 -0
  93. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-08-02-release-profile.md +0 -0
  94. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-08-02-scan-failures.md +0 -0
  95. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-08-03-discovery-ext-resolution.md +0 -0
  96. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-08-03-manylinux-dynamic-binary.md +0 -0
  97. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-08-03-python-no-ignore.md +0 -0
  98. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-08-04-cast-lints.md +0 -0
  99. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-08-04-cli-in-process.md +0 -0
  100. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-08-20-curtaincall-dev-dependency.md +0 -0
  101. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-08-20-declared-table-name.md +0 -0
  102. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-09-04-config-paths-from-argv-module.md +0 -0
  103. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-09-05-config-extension-loader-split.md +0 -0
  104. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-09-05-resolve-config-extensions-split.md +0 -0
  105. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-09-05-resolve-extension-split.md +0 -0
  106. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-09-09-launcher-config-path-scan.md +0 -0
  107. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-09-17-extension-resolution-via-core.md +0 -0
  108. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-09-18-export-scan-failure.md +0 -0
  109. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-09-18-flatten-row-event-in-core.md +0 -0
  110. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-09-18-programmatic-extension-plan.md +0 -0
  111. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-09-20-sigint-ends-a-run-in-progress.md +0 -0
  112. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-09-24-query-rows-in-projection-order.md +0 -0
  113. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-02-readme-docs-host.md +0 -0
  114. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-03-one-glob-rule-for-config-globs.md +0 -0
  115. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-03-path-table-directory-one-level.md +0 -0
  116. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-04-path-table-dotfiles-hidden.md +0 -0
  117. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-05-brace-groups-follow-bash.md +0 -0
  118. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-05-cli-context.md +0 -0
  119. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-05-gitignore-requires-repo.md +0 -0
  120. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-05-path-table-node-modules-named.md +0 -0
  121. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-05-path-table-symlinks.md +0 -0
  122. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-05-path-table-trailing-slash.md +0 -0
  123. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-05-unbalanced-brackets-literal.md +0 -0
  124. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-06-config-braces.md +0 -0
  125. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-06-config-directory.md +0 -0
  126. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-06-config-dotnames.md +0 -0
  127. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-06-config-gitignore.md +0 -0
  128. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-06-config-globs-anchor-at-the-config.md +0 -0
  129. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-06-config-links.md +0 -0
  130. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-06-one-glob-compiler.md +0 -0
  131. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-06-plugin-no-default-records.md +0 -0
  132. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-06-watch-broadcast.md +0 -0
  133. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-06-zero-match-config-table-warning.md +0 -0
  134. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-07-bracket-slash-literal.md +0 -0
  135. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-07-dotdot-and-double-slashes.md +0 -0
  136. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-07-fix-main-build.md +0 -0
  137. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-07-glob-walks-node-modules.md +0 -0
  138. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-07-persist-cache-outside-root.md +0 -0
  139. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/README.md +0 -0
  140. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/conftest.py +0 -0
  141. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/.claude/CLAUDE.md +0 -0
  142. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/.vitepress/config.ts +0 -0
  143. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/.vitepress/theme/index.ts +0 -0
  144. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/.vitepress/theme/lang.ts +0 -0
  145. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/AGENTS.md +0 -0
  146. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/context/.gitattributes +0 -0
  147. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/context/recipes.md +0 -0
  148. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/context/troubleshooting.md +0 -0
  149. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/context/usage.md +0 -0
  150. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/explanation.md +0 -0
  151. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/getting-started.md +0 -0
  152. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/howto/agent-skill.md +0 -0
  153. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/howto/columns-from-paths.md +0 -0
  154. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/howto/define-tables.md +0 -0
  155. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/howto/embed.md +0 -0
  156. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/howto/extract-from-contents.md +0 -0
  157. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/howto/load-extension.md +0 -0
  158. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/howto/parse-files-into-columns.md +0 -0
  159. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/howto/persist.md +0 -0
  160. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/howto/query-json.md +0 -0
  161. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/howto/query-without-config.md +0 -0
  162. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/howto/react-to-changes.md +0 -0
  163. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/howto/search-by-meaning.md +0 -0
  164. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/howto/search-indexes.md +0 -0
  165. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/howto/skip-files.md +0 -0
  166. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/howto/write-a-plugin.md +0 -0
  167. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/index.md +0 -0
  168. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/package.json +0 -0
  169. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/plugins.md +0 -0
  170. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/pnpm-lock.yaml +0 -0
  171. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/pnpm-workspace.yaml +0 -0
  172. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/reference/cli.md +0 -0
  173. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/reference/columns.md +0 -0
  174. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/reference/config.md +0 -0
  175. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/reference/hooks.md +0 -0
  176. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/reference/http-api.md +0 -0
  177. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/reference/sdk.md +0 -0
  178. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/bot-1334-listing-exemptions.json +0 -0
  179. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/bot-1397-watch-broadcast.json +0 -0
  180. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/bot-1398-inotify-error.json +0 -0
  181. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/bot-1399-server-cors.json +0 -0
  182. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/bot-1401-watch-scope.json +0 -0
  183. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/bot-1407-child-place-depth.json +0 -0
  184. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/bot-1414-stat-speed.json +0 -0
  185. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/bot-1415-server-speed.json +0 -0
  186. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/bot-1418-node-modules.json +0 -0
  187. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/bot-1419-dotdot-slashes.json +0 -0
  188. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/bot-1420-bracket-slash.json +0 -0
  189. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/bot-1431-persist-cache-dir.json +0 -0
  190. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/bot-1440-fix-main-build.json +0 -0
  191. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/cc-keen-knuth-f11gyq.json +0 -0
  192. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1056-py-ofpf9.json +0 -0
  193. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1066-p1-resolve-extension.json +0 -0
  194. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1078-argv-config-paths-core.json +0 -0
  195. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1079-p2-resolve-config-extensions.json +0 -0
  196. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1080-share-vtab-scaffolding.json +0 -0
  197. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1081-indicatif-progress.json +0 -0
  198. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1096-watch-moved-dir.json +0 -0
  199. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1109-watch-moved-out.json +0 -0
  200. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1119-ext-plan.json +0 -0
  201. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1120-py-ext.json +0 -0
  202. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1122-ext-cleanup.json +0 -0
  203. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1130-codec-crates.json +0 -0
  204. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1131-flatten-row-event.json +0 -0
  205. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1139-sse-flatten.json +0 -0
  206. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1140-scan-failure-export.json +0 -0
  207. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1148-clippy-all-targets.json +0 -0
  208. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1164-sigint-fatal.json +0 -0
  209. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1170-projection-order.json +0 -0
  210. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1172-on-file-path.json +0 -0
  211. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1173-py-projection-order.json +0 -0
  212. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1184-win-rel-paths.json +0 -0
  213. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1185-win-abs-table-names.json +0 -0
  214. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1186-win-test-harness.json +0 -0
  215. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1196-join-index.json +0 -0
  216. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1199-glob-prefix.json +0 -0
  217. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1201-single-walk.json +0 -0
  218. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1204-embed-batch.json +0 -0
  219. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1207-win-argv-quote.json +0 -0
  220. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1208-win-nonverbatim-paths.json +0 -0
  221. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1215-on-file-batch.json +0 -0
  222. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1216-on-file-cleanup.json +0 -0
  223. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1223-config-glob-rule.json +0 -0
  224. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1223-dir-one-level.json +0 -0
  225. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1225-plugin-no-default.json +0 -0
  226. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1226-stale-docs.json +0 -0
  227. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1232-anchor-plumbing.json +0 -0
  228. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1232-config-anchor.json +0 -0
  229. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1232-multi-watch.json +0 -0
  230. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1232-zero-match.json +0 -0
  231. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1238-parallel-walk.json +0 -0
  232. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1241-content-prefetch.json +0 -0
  233. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1243-ingest-perf.json +0 -0
  234. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1249-dotfiles.json +0 -0
  235. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1256-symlinks.json +0 -0
  236. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1257-trailing-slash.json +0 -0
  237. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1258-config-braces.json +0 -0
  238. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1258-config-directory.json +0 -0
  239. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1258-config-dotnames.json +0 -0
  240. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1258-config-gitignore.json +0 -0
  241. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1258-config-links.json +0 -0
  242. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1258-one-pattern.json +0 -0
  243. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1262-brace-literal.json +0 -0
  244. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1264-context.json +0 -0
  245. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1267-posix-classes.json +0 -0
  246. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1268-unbalanced-brackets.json +0 -0
  247. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1269-utf8-chars.json +0 -0
  248. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1271-node-modules-named.json +0 -0
  249. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1272-ancestor-gitignore.json +0 -0
  250. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1273-walk-prune.json +0 -0
  251. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1285-ingest-fast.json +0 -0
  252. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1286-nested-repo.json +0 -0
  253. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1305-glob-speed.json +0 -0
  254. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1308-glob-speed.json +0 -0
  255. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1310-glob-speed.json +0 -0
  256. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1311-glob-speed.json +0 -0
  257. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1312-glob-speed.json +0 -0
  258. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1318-lazy-stat.json +0 -0
  259. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1320-walk-speed.json +0 -0
  260. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1322-walk-readdir.json +0 -0
  261. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1325-parallel-walk.json +0 -0
  262. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1326-stream-rows.json +0 -0
  263. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1330-python-dirsql-patch.json +0 -0
  264. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1330-python-extensions-patch.json +0 -0
  265. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1330-scanner-effects.json +0 -0
  266. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1330-scanner-gitignore.json +0 -0
  267. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1330-vtab-prefetch-flag.json +0 -0
  268. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1330-vtab-read.json +0 -0
  269. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1351-dot-dirs.json +0 -0
  270. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-819-oneshot-timeout.json +0 -0
  271. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-827-unquote-doubled-quotes.json +0 -0
  272. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-epic-953-slice2-reedline.json +0 -0
  273. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-epic-953-slice3-format.json +0 -0
  274. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-epic-953-stacked-prs-x59wm3.json +0 -0
  275. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-github-issue-825-e4mhhp.json +0 -0
  276. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-issue-951-0eease.json +0 -0
  277. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-issue-962-0jjrfv.json +0 -0
  278. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-issue-986-red-test-e7sjrb.json +0 -0
  279. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-tackle-1034-cachesplit.json +0 -0
  280. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-tackle-1042-py12.json +0 -0
  281. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-tackle-956-xzen74.json +0 -0
  282. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-tackle-957-lrm0z6-worker-calls.json +0 -0
  283. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-tackle-957-lrm0z6.json +0 -0
  284. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-tackle-975-n8mc2h.json +0 -0
  285. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
  286. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-07-13-rename-extract-to-on-file.md +0 -0
  287. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
  288. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-07-20-drop-implicit-files-table.md +0 -0
  289. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-07-21-remove-glob-captures.md +0 -0
  290. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-07-24-hookless-table-config-error.md +0 -0
  291. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-07-24-remove-stat-fact-injection.md +0 -0
  292. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-07-29-restore-python-310.md +0 -0
  293. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-08-04-cli-in-process.md +0 -0
  294. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-08-20-declared-table-name.md +0 -0
  295. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-09-20-sigint-ends-a-run-in-progress.md +0 -0
  296. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-09-24-query-rows-in-projection-order.md +0 -0
  297. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-02-readme-docs-host.md +0 -0
  298. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-03-one-glob-rule-for-config-globs.md +0 -0
  299. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-03-path-table-directory-one-level.md +0 -0
  300. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-04-path-table-dotfiles-hidden.md +0 -0
  301. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-05-brace-groups-follow-bash.md +0 -0
  302. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-05-cli-context.md +0 -0
  303. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-05-gitignore-requires-repo.md +0 -0
  304. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-05-path-table-node-modules-named.md +0 -0
  305. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-05-path-table-symlinks.md +0 -0
  306. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-05-path-table-trailing-slash.md +0 -0
  307. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-05-unbalanced-brackets-literal.md +0 -0
  308. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-06-config-braces.md +0 -0
  309. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-06-config-directory.md +0 -0
  310. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-06-config-dotnames.md +0 -0
  311. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-06-config-gitignore.md +0 -0
  312. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-06-config-globs-anchor-at-the-config.md +0 -0
  313. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-06-config-links.md +0 -0
  314. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-06-one-glob-compiler.md +0 -0
  315. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-06-plugin-no-default-records.md +0 -0
  316. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-06-watch-broadcast.md +0 -0
  317. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-06-zero-match-config-table-warning.md +0 -0
  318. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-07-bracket-slash-literal.md +0 -0
  319. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-07-dotdot-and-double-slashes.md +0 -0
  320. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-07-fix-main-build.md +0 -0
  321. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-07-glob-walks-node-modules.md +0 -0
  322. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-07-persist-cache-outside-root.md +0 -0
  323. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/README.md +0 -0
  324. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/src/lib.rs +0 -0
  325. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/testing-conventions.toml +0 -0
  326. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/tests/__init__.py +0 -0
  327. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/tests/conftest.py +0 -0
  328. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/tests/e2e/__init__.py +0 -0
  329. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/__init__.py +0 -0
  330. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/dirsql.toml +0 -0
  331. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/tests/e2e/speed_of_light.py +0 -0
  332. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/tests/integration/__init__.py +0 -0
  333. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/tests/integration/binding/__init__.py +0 -0
  334. {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/tests/integration/hermetic/__init__.py +0 -0
  335. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/CHANGELOG.md +0 -0
  336. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/MIGRATIONS.md +0 -0
  337. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/README.md +0 -0
  338. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/benches/db_bench.rs +0 -0
  339. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/benches/differ_bench.rs +0 -0
  340. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/benches/matcher_bench.rs +0 -0
  341. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/benches/scanner_bench.rs +0 -0
  342. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/context/.gitattributes +0 -0
  343. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/context/recipes.md +0 -0
  344. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/context/troubleshooting.md +0 -0
  345. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/context/usage.md +0 -0
  346. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/explanation.md +0 -0
  347. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/getting-started.md +0 -0
  348. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/howto/agent-skill.md +0 -0
  349. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/howto/columns-from-paths.md +0 -0
  350. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/howto/define-tables.md +0 -0
  351. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/howto/embed.md +0 -0
  352. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/howto/extract-from-contents.md +0 -0
  353. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/howto/load-extension.md +0 -0
  354. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/howto/parse-files-into-columns.md +0 -0
  355. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/howto/persist.md +0 -0
  356. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/howto/query-json.md +0 -0
  357. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/howto/query-without-config.md +0 -0
  358. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/howto/react-to-changes.md +0 -0
  359. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/howto/search-by-meaning.md +0 -0
  360. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/howto/search-indexes.md +0 -0
  361. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/howto/skip-files.md +0 -0
  362. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/howto/write-a-plugin.md +0 -0
  363. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/index.md +0 -0
  364. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/plugins.md +0 -0
  365. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/reference/cli.md +0 -0
  366. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/reference/columns.md +0 -0
  367. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/reference/config.md +0 -0
  368. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/reference/hooks.md +0 -0
  369. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/reference/http-api.md +0 -0
  370. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/reference/sdk.md +0 -0
  371. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/bin/dirsql.rs +0 -0
  372. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/brace.rs +0 -0
  373. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/cli/context.rs +0 -0
  374. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/cli/execute.rs +0 -0
  375. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/cli/init.rs +0 -0
  376. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/cli/mod.rs +0 -0
  377. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/cli/repl.rs +0 -0
  378. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/cli/router.rs +0 -0
  379. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/cli/serialize.rs +0 -0
  380. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/cli/server.rs +0 -0
  381. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/cli/table.rs +0 -0
  382. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/command.rs +0 -0
  383. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/config.rs +0 -0
  384. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/db.rs +0 -0
  385. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/default_config.toml +0 -0
  386. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/differ.rs +0 -0
  387. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/extension_resolution.rs +0 -0
  388. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/functions.rs +0 -0
  389. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/infer.rs +0 -0
  390. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/launcher.rs +0 -0
  391. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/listing.rs +0 -0
  392. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/on_file.rs +0 -0
  393. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/parsed_vtab.rs +0 -0
  394. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/path_table.rs +0 -0
  395. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/persist.rs +0 -0
  396. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/progress.rs +0 -0
  397. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/row_event_flat.rs +0 -0
  398. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/sql_literal.rs +0 -0
  399. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/tree_walk.rs +0 -0
  400. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/vtab.rs +0 -0
  401. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/vtab_scaffold.rs +0 -0
  402. {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/watcher.rs +0 -0
  403. {dirsql-0.4.97 → dirsql-0.4.99}/pyproject.toml +0 -0
@@ -573,7 +573,7 @@ dependencies = [
573
573
 
574
574
  [[package]]
575
575
  name = "dirsql"
576
- version = "0.4.97"
576
+ version = "0.4.99"
577
577
  dependencies = [
578
578
  "assert_cmd",
579
579
  "axum",
@@ -625,7 +625,7 @@ dependencies = [
625
625
 
626
626
  [[package]]
627
627
  name = "dirsql-py-ext"
628
- version = "0.4.97"
628
+ version = "0.4.99"
629
629
  dependencies = [
630
630
  "dirsql",
631
631
  "pyo3",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dirsql
3
- Version: 0.4.97
3
+ Version: 0.4.99
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
@@ -49,6 +49,13 @@ docs/nested/deep.md
49
49
  docs/nested/.cache/x.md
50
50
  node_modules/pkg/index.js
51
51
  real/r.md
52
+ uni/1.md
53
+ uni/a.md
54
+ uni/é.md
55
+ uni/É.md
56
+ uni/中.md
57
+ uni/٣.md
58
+ uni/¡.md
52
59
  linkdir -> real
53
60
  link.md -> top.md
54
61
  broken -> nowhere
@@ -69,13 +76,21 @@ A test runs every row against dirsql as a path-table and, with the leading
69
76
  | Pattern | Rows | Divergence |
70
77
  | --- | --- | --- |
71
78
  | `./*.md` | `1.md`, `2.md`, `3.md`, `4.md`, `[a].md`, `[z.md`, `a.md`, `b.md`, `c.md`, `link.md`, `my file.md`, `top.md`, `{q}.md` | |
72
- | `./**/*.md` | `1.md`, `2.md`, `3.md`, `4.md`, `[a].md`, `[z.md`, `a.md`, `b.md`, `c.md`, `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md`, `link.md`, `linkdir/r.md`, `my file.md`, `real/r.md`, `top.md`, `{q}.md` | |
73
- | `./**` | `1.md`, `2.md`, `3.md`, `4.md`, `[a].md`, `[z.md`, `a.md`, `b.md`, `c.md`, `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md`, `link.md`, `my file.md`, `node_modules/pkg/index.js`, `real/r.md`, `top.md`, `x.txt`, `{q}.md` | |
79
+ | `./**/*.md` | `1.md`, `2.md`, `3.md`, `4.md`, `[a].md`, `[z.md`, `a.md`, `b.md`, `c.md`, `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md`, `link.md`, `linkdir/r.md`, `my file.md`, `real/r.md`, `top.md`, `uni/1.md`, `uni/a.md`, `uni/¡.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md`, `{q}.md` | |
80
+ | `./**` | `1.md`, `2.md`, `3.md`, `4.md`, `[a].md`, `[z.md`, `a.md`, `b.md`, `c.md`, `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md`, `link.md`, `my file.md`, `node_modules/pkg/index.js`, `real/r.md`, `top.md`, `uni/1.md`, `uni/a.md`, `uni/¡.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md`, `x.txt`, `{q}.md` | |
74
81
  | `./?.md` | `1.md`, `2.md`, `3.md`, `4.md`, `a.md`, `b.md`, `c.md` | |
75
82
  | `./[ab].md` | `a.md`, `b.md` | |
76
83
  | `./[!a].md` | `1.md`, `2.md`, `3.md`, `4.md`, `b.md`, `c.md` | |
77
84
  | `./\[a\].md` | `[a].md` | |
78
85
  | `./[z.md` | `[z.md` | |
86
+ | `./uni/[[:alpha:]].md` | `uni/a.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md` | |
87
+ | `./uni/[[:alnum:]].md` | `uni/1.md`, `uni/a.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md` | |
88
+ | `./uni/[[:lower:]].md` | `uni/a.md`, `uni/é.md` | |
89
+ | `./uni/[[:upper:]].md` | `uni/É.md` | |
90
+ | `./uni/[[:digit:]].md` | `uni/1.md` | |
91
+ | `./uni/[[:punct:]].md` | `uni/¡.md` | |
92
+ | `./uni/[[:word:]].md` | `uni/1.md`, `uni/a.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md` | |
93
+ | `./uni/[![:alpha:]].md` | `uni/1.md`, `uni/¡.md` | |
79
94
  | `./[d/x]ocs/api.md` | none | |
80
95
  | `./docs[/]api.md` | none | |
81
96
  | `./[!/]*/api.md` | none | |
@@ -106,9 +121,11 @@ A test runs every row against dirsql as a path-table and, with the leading
106
121
  | `./docs/*/../api.md` | `docs/nested/../api.md` | |
107
122
  | `./docs` | `docs/api.md`, `docs/guide.md` | directory-name |
108
123
  | `./docs/` | `docs/api.md`, `docs/guide.md` | directory-name |
109
- | `./*/` | `docs/api.md`, `docs/guide.md`, `linkdir/r.md`, `real/r.md` | directory-name |
124
+ | `./*/` | `docs/api.md`, `docs/guide.md`, `linkdir/r.md`, `real/r.md`, `uni/1.md`, `uni/a.md`, `uni/¡.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md` | directory-name |
110
125
  | `./d*` | none | files-only |
111
126
  | `./*.log` | none | gitignore |
127
+ | `./ignored.log` | `ignored.log` | |
128
+ | `./{ignored,x}.log` | `ignored.log` | |
112
129
  | `./**/*.js` | `node_modules/pkg/index.js` | |
113
130
  | `./node_modules/*/index.js` | `node_modules/pkg/index.js` | |
114
131
  | `./docs/**/*.md` | `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md` | |
@@ -121,7 +138,7 @@ A test runs every row against dirsql as a path-table and, with the leading
121
138
 
122
139
  | Tag | Rule | Why |
123
140
  | --- | --- | --- |
124
- | `gitignore` | Inside a git repo, `.gitignore` files hide matching files and directories. `--no-ignore` turns it off. | A query over a repo should not drown in build output. |
141
+ | `gitignore` | Inside a git repo, `.gitignore` files hide files and directories a wildcard matches, never one the pattern spells out. `--no-ignore` turns it off. | A query over a repo should not drown in build output. |
125
142
  | `directory-name` | A pattern's last component that names a directory lists the files directly inside it, like `ls docs`. A trailing `/` is `*` appended. | A table is rows of files, and `ls` is the shell habit. |
126
143
  | `files-only` | A pattern that matches a directory but no file returns nothing. | Every row is a file. |
127
144
  | `absolute` | `/`, `~/` and `../` patterns report absolute `path` values, with `..` folded out textually. | The scanned root is derived from the pattern, so there is no relative base. |
@@ -144,6 +161,9 @@ stderr; the exit code is unchanged. Path-tables never warn.
144
161
  `{a..c}` expand, as do zero-padded
145
162
  `{01..10}` and stepped `{1..10..2}` ranges. Groups nest.
146
163
  - `\[` is a literal bracket.
164
+ - POSIX classes (`[[:alpha:]]`) match Unicode characters, as bash does in a UTF-8
165
+ locale: `[[:alpha:]]` matches `é` and `中`. `[[:digit:]]`, `[[:xdigit:]]` and
166
+ `[[:ascii:]]` stay ASCII.
147
167
  - A dot-named file or directory is listed only where a component spells the
148
168
  dot at that depth: `./**/.*` finds `docs/.draft.md` but does not enter
149
169
  `.config/`.
@@ -262,6 +262,9 @@ directory, deeper files override shallower ones, `!pattern` re-includes, and
262
262
  an ignored directory is pruned rather than walked. In a typical repo this
263
263
  excludes build output, virtualenvs, and caches with zero ceremony.
264
264
 
265
+ A `.gitignore` never hides a path the pattern spells out: `'./debug.log'` lists
266
+ that file even when `*.log` is ignored, while `'./*.log'` does not.
267
+
265
268
  A `.gitignore` is in force only when a directory holding `.git` encloses it.
266
269
  Outside a repo none applies, at the scan's start, above it or below it: a
267
270
  `~/.claude` whose `.gitignore` is `*` still lists its files when `~/.claude`
@@ -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.97"
7
+ version = "0.4.99"
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**
2
+
3
+ - A pattern with no wildcard, such as ./debug.log, lists the file even when .gitignore ignores it; wildcard matches are still filtered.
@@ -0,0 +1,3 @@
1
+ **Changed**
2
+
3
+ - POSIX classes such as `[[:alpha:]]`, `[[:upper:]]` and `[[:punct:]]` match Unicode characters instead of ASCII only: `./[[:alpha:]].md` now matches `é.md`. `digit`, `xdigit` and `ascii` stay ASCII.
@@ -49,6 +49,13 @@ docs/nested/deep.md
49
49
  docs/nested/.cache/x.md
50
50
  node_modules/pkg/index.js
51
51
  real/r.md
52
+ uni/1.md
53
+ uni/a.md
54
+ uni/é.md
55
+ uni/É.md
56
+ uni/中.md
57
+ uni/٣.md
58
+ uni/¡.md
52
59
  linkdir -> real
53
60
  link.md -> top.md
54
61
  broken -> nowhere
@@ -69,13 +76,21 @@ A test runs every row against dirsql as a path-table and, with the leading
69
76
  | Pattern | Rows | Divergence |
70
77
  | --- | --- | --- |
71
78
  | `./*.md` | `1.md`, `2.md`, `3.md`, `4.md`, `[a].md`, `[z.md`, `a.md`, `b.md`, `c.md`, `link.md`, `my file.md`, `top.md`, `{q}.md` | |
72
- | `./**/*.md` | `1.md`, `2.md`, `3.md`, `4.md`, `[a].md`, `[z.md`, `a.md`, `b.md`, `c.md`, `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md`, `link.md`, `linkdir/r.md`, `my file.md`, `real/r.md`, `top.md`, `{q}.md` | |
73
- | `./**` | `1.md`, `2.md`, `3.md`, `4.md`, `[a].md`, `[z.md`, `a.md`, `b.md`, `c.md`, `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md`, `link.md`, `my file.md`, `node_modules/pkg/index.js`, `real/r.md`, `top.md`, `x.txt`, `{q}.md` | |
79
+ | `./**/*.md` | `1.md`, `2.md`, `3.md`, `4.md`, `[a].md`, `[z.md`, `a.md`, `b.md`, `c.md`, `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md`, `link.md`, `linkdir/r.md`, `my file.md`, `real/r.md`, `top.md`, `uni/1.md`, `uni/a.md`, `uni/¡.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md`, `{q}.md` | |
80
+ | `./**` | `1.md`, `2.md`, `3.md`, `4.md`, `[a].md`, `[z.md`, `a.md`, `b.md`, `c.md`, `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md`, `link.md`, `my file.md`, `node_modules/pkg/index.js`, `real/r.md`, `top.md`, `uni/1.md`, `uni/a.md`, `uni/¡.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md`, `x.txt`, `{q}.md` | |
74
81
  | `./?.md` | `1.md`, `2.md`, `3.md`, `4.md`, `a.md`, `b.md`, `c.md` | |
75
82
  | `./[ab].md` | `a.md`, `b.md` | |
76
83
  | `./[!a].md` | `1.md`, `2.md`, `3.md`, `4.md`, `b.md`, `c.md` | |
77
84
  | `./\[a\].md` | `[a].md` | |
78
85
  | `./[z.md` | `[z.md` | |
86
+ | `./uni/[[:alpha:]].md` | `uni/a.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md` | |
87
+ | `./uni/[[:alnum:]].md` | `uni/1.md`, `uni/a.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md` | |
88
+ | `./uni/[[:lower:]].md` | `uni/a.md`, `uni/é.md` | |
89
+ | `./uni/[[:upper:]].md` | `uni/É.md` | |
90
+ | `./uni/[[:digit:]].md` | `uni/1.md` | |
91
+ | `./uni/[[:punct:]].md` | `uni/¡.md` | |
92
+ | `./uni/[[:word:]].md` | `uni/1.md`, `uni/a.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md` | |
93
+ | `./uni/[![:alpha:]].md` | `uni/1.md`, `uni/¡.md` | |
79
94
  | `./[d/x]ocs/api.md` | none | |
80
95
  | `./docs[/]api.md` | none | |
81
96
  | `./[!/]*/api.md` | none | |
@@ -106,9 +121,11 @@ A test runs every row against dirsql as a path-table and, with the leading
106
121
  | `./docs/*/../api.md` | `docs/nested/../api.md` | |
107
122
  | `./docs` | `docs/api.md`, `docs/guide.md` | directory-name |
108
123
  | `./docs/` | `docs/api.md`, `docs/guide.md` | directory-name |
109
- | `./*/` | `docs/api.md`, `docs/guide.md`, `linkdir/r.md`, `real/r.md` | directory-name |
124
+ | `./*/` | `docs/api.md`, `docs/guide.md`, `linkdir/r.md`, `real/r.md`, `uni/1.md`, `uni/a.md`, `uni/¡.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md` | directory-name |
110
125
  | `./d*` | none | files-only |
111
126
  | `./*.log` | none | gitignore |
127
+ | `./ignored.log` | `ignored.log` | |
128
+ | `./{ignored,x}.log` | `ignored.log` | |
112
129
  | `./**/*.js` | `node_modules/pkg/index.js` | |
113
130
  | `./node_modules/*/index.js` | `node_modules/pkg/index.js` | |
114
131
  | `./docs/**/*.md` | `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md` | |
@@ -121,7 +138,7 @@ A test runs every row against dirsql as a path-table and, with the leading
121
138
 
122
139
  | Tag | Rule | Why |
123
140
  | --- | --- | --- |
124
- | `gitignore` | Inside a git repo, `.gitignore` files hide matching files and directories. `--no-ignore` turns it off. | A query over a repo should not drown in build output. |
141
+ | `gitignore` | Inside a git repo, `.gitignore` files hide files and directories a wildcard matches, never one the pattern spells out. `--no-ignore` turns it off. | A query over a repo should not drown in build output. |
125
142
  | `directory-name` | A pattern's last component that names a directory lists the files directly inside it, like `ls docs`. A trailing `/` is `*` appended. | A table is rows of files, and `ls` is the shell habit. |
126
143
  | `files-only` | A pattern that matches a directory but no file returns nothing. | Every row is a file. |
127
144
  | `absolute` | `/`, `~/` and `../` patterns report absolute `path` values, with `..` folded out textually. | The scanned root is derived from the pattern, so there is no relative base. |
@@ -144,6 +161,9 @@ stderr; the exit code is unchanged. Path-tables never warn.
144
161
  `{a..c}` expand, as do zero-padded
145
162
  `{01..10}` and stepped `{1..10..2}` ranges. Groups nest.
146
163
  - `\[` is a literal bracket.
164
+ - POSIX classes (`[[:alpha:]]`) match Unicode characters, as bash does in a UTF-8
165
+ locale: `[[:alpha:]]` matches `é` and `中`. `[[:digit:]]`, `[[:xdigit:]]` and
166
+ `[[:ascii:]]` stay ASCII.
147
167
  - A dot-named file or directory is listed only where a component spells the
148
168
  dot at that depth: `./**/.*` finds `docs/.draft.md` but does not enter
149
169
  `.config/`.
@@ -262,6 +262,9 @@ directory, deeper files override shallower ones, `!pattern` re-includes, and
262
262
  an ignored directory is pruned rather than walked. In a typical repo this
263
263
  excludes build output, virtualenvs, and caches with zero ceremony.
264
264
 
265
+ A `.gitignore` never hides a path the pattern spells out: `'./debug.log'` lists
266
+ that file even when `*.log` is ignored, while `'./*.log'` does not.
267
+
265
268
  A `.gitignore` is in force only when a directory holding `.git` encloses it.
266
269
  Outside a repo none applies, at the scan's start, above it or below it: a
267
270
  `~/.claude` whose `.gitignore` is `*` still lists its files when `~/.claude`
@@ -0,0 +1,7 @@
1
+ {
2
+ "command": "uv run python -m pytest tests/e2e/glob_speed_matchers_test.py -x -q",
3
+ "ran_at": 1791395236,
4
+ "exit_code": 0,
5
+ "commit": "b0d6654084056647e26fb061ad055ded511d5a2c",
6
+ "branch": "bot/1421-posix-unicode"
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "command": "uv run python -m pytest tests/e2e/glob_speed_one_level_test.py -x -q",
3
+ "ran_at": 1791398612,
4
+ "exit_code": 0,
5
+ "commit": "575ebdcb3e11ea49aefcd52ec2bff9c9a4990257",
6
+ "branch": "bot/1422-literal-gitignore"
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "command": "uv run python -m pytest tests/e2e/query_contract_test.py tests/e2e/fanout_test.py -x -q",
3
+ "ran_at": 1791394818,
4
+ "exit_code": 0,
5
+ "commit": "78b84634f11a52eb235c1f09c5a7a43bb5913b01",
6
+ "branch": "bot/1437-test-cache-isolation"
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "command": "uv run python -m pytest tests/e2e/query_contract_test.py -x -q",
3
+ "ran_at": 1791396367,
4
+ "exit_code": 0,
5
+ "commit": "5059be3329c27bc9cf891bfd19e9d2ea8c240fad",
6
+ "branch": "bot/fix-main-place-depth-20261007"
7
+ }
@@ -0,0 +1,23 @@
1
+ ### Named paths ignore .gitignore
2
+
3
+ #### Summary
4
+
5
+ A path the pattern spells out is listed even when a .gitignore ignores it.
6
+
7
+ #### Required changes
8
+
9
+ _None._
10
+
11
+ #### Deprecations removed
12
+
13
+ _None._
14
+
15
+ #### Behavior changes without code changes
16
+
17
+ - A pattern with no wildcard, such as ./debug.log, lists the file even when .gitignore ignores it; wildcard matches are still filtered.
18
+
19
+ #### Verification
20
+
21
+ ```bash
22
+ dirsql query "SELECT path FROM './debug.log'"
23
+ ```
@@ -0,0 +1,23 @@
1
+ ### POSIX classes match Unicode characters
2
+
3
+ #### Summary
4
+
5
+ POSIX classes in globs match Unicode characters, as bash does in a UTF-8 locale.
6
+
7
+ #### Required changes
8
+
9
+ _None._
10
+
11
+ #### Deprecations removed
12
+
13
+ _None._
14
+
15
+ #### Behavior changes without code changes
16
+
17
+ - POSIX classes such as `[[:alpha:]]`, `[[:upper:]]` and `[[:punct:]]` match Unicode characters instead of ASCII only: `./[[:alpha:]].md` now matches `é.md`. `digit`, `xdigit` and `ascii` stay ASCII.
18
+
19
+ #### Verification
20
+
21
+ ```bash
22
+ dirsql query "SELECT path FROM './[[:alpha:]].md'"
23
+ ```
@@ -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.97"
9
+ version = "0.4.99"
10
10
  edition.workspace = true
11
11
  # Literal `license` (not `license.workspace = true`) because
12
12
  # putitoutthere's preflight check reads `[package].license` directly
@@ -49,6 +49,13 @@ docs/nested/deep.md
49
49
  docs/nested/.cache/x.md
50
50
  node_modules/pkg/index.js
51
51
  real/r.md
52
+ uni/1.md
53
+ uni/a.md
54
+ uni/é.md
55
+ uni/É.md
56
+ uni/中.md
57
+ uni/٣.md
58
+ uni/¡.md
52
59
  linkdir -> real
53
60
  link.md -> top.md
54
61
  broken -> nowhere
@@ -69,13 +76,21 @@ A test runs every row against dirsql as a path-table and, with the leading
69
76
  | Pattern | Rows | Divergence |
70
77
  | --- | --- | --- |
71
78
  | `./*.md` | `1.md`, `2.md`, `3.md`, `4.md`, `[a].md`, `[z.md`, `a.md`, `b.md`, `c.md`, `link.md`, `my file.md`, `top.md`, `{q}.md` | |
72
- | `./**/*.md` | `1.md`, `2.md`, `3.md`, `4.md`, `[a].md`, `[z.md`, `a.md`, `b.md`, `c.md`, `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md`, `link.md`, `linkdir/r.md`, `my file.md`, `real/r.md`, `top.md`, `{q}.md` | |
73
- | `./**` | `1.md`, `2.md`, `3.md`, `4.md`, `[a].md`, `[z.md`, `a.md`, `b.md`, `c.md`, `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md`, `link.md`, `my file.md`, `node_modules/pkg/index.js`, `real/r.md`, `top.md`, `x.txt`, `{q}.md` | |
79
+ | `./**/*.md` | `1.md`, `2.md`, `3.md`, `4.md`, `[a].md`, `[z.md`, `a.md`, `b.md`, `c.md`, `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md`, `link.md`, `linkdir/r.md`, `my file.md`, `real/r.md`, `top.md`, `uni/1.md`, `uni/a.md`, `uni/¡.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md`, `{q}.md` | |
80
+ | `./**` | `1.md`, `2.md`, `3.md`, `4.md`, `[a].md`, `[z.md`, `a.md`, `b.md`, `c.md`, `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md`, `link.md`, `my file.md`, `node_modules/pkg/index.js`, `real/r.md`, `top.md`, `uni/1.md`, `uni/a.md`, `uni/¡.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md`, `x.txt`, `{q}.md` | |
74
81
  | `./?.md` | `1.md`, `2.md`, `3.md`, `4.md`, `a.md`, `b.md`, `c.md` | |
75
82
  | `./[ab].md` | `a.md`, `b.md` | |
76
83
  | `./[!a].md` | `1.md`, `2.md`, `3.md`, `4.md`, `b.md`, `c.md` | |
77
84
  | `./\[a\].md` | `[a].md` | |
78
85
  | `./[z.md` | `[z.md` | |
86
+ | `./uni/[[:alpha:]].md` | `uni/a.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md` | |
87
+ | `./uni/[[:alnum:]].md` | `uni/1.md`, `uni/a.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md` | |
88
+ | `./uni/[[:lower:]].md` | `uni/a.md`, `uni/é.md` | |
89
+ | `./uni/[[:upper:]].md` | `uni/É.md` | |
90
+ | `./uni/[[:digit:]].md` | `uni/1.md` | |
91
+ | `./uni/[[:punct:]].md` | `uni/¡.md` | |
92
+ | `./uni/[[:word:]].md` | `uni/1.md`, `uni/a.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md` | |
93
+ | `./uni/[![:alpha:]].md` | `uni/1.md`, `uni/¡.md` | |
79
94
  | `./[d/x]ocs/api.md` | none | |
80
95
  | `./docs[/]api.md` | none | |
81
96
  | `./[!/]*/api.md` | none | |
@@ -106,9 +121,11 @@ A test runs every row against dirsql as a path-table and, with the leading
106
121
  | `./docs/*/../api.md` | `docs/nested/../api.md` | |
107
122
  | `./docs` | `docs/api.md`, `docs/guide.md` | directory-name |
108
123
  | `./docs/` | `docs/api.md`, `docs/guide.md` | directory-name |
109
- | `./*/` | `docs/api.md`, `docs/guide.md`, `linkdir/r.md`, `real/r.md` | directory-name |
124
+ | `./*/` | `docs/api.md`, `docs/guide.md`, `linkdir/r.md`, `real/r.md`, `uni/1.md`, `uni/a.md`, `uni/¡.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md` | directory-name |
110
125
  | `./d*` | none | files-only |
111
126
  | `./*.log` | none | gitignore |
127
+ | `./ignored.log` | `ignored.log` | |
128
+ | `./{ignored,x}.log` | `ignored.log` | |
112
129
  | `./**/*.js` | `node_modules/pkg/index.js` | |
113
130
  | `./node_modules/*/index.js` | `node_modules/pkg/index.js` | |
114
131
  | `./docs/**/*.md` | `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md` | |
@@ -121,7 +138,7 @@ A test runs every row against dirsql as a path-table and, with the leading
121
138
 
122
139
  | Tag | Rule | Why |
123
140
  | --- | --- | --- |
124
- | `gitignore` | Inside a git repo, `.gitignore` files hide matching files and directories. `--no-ignore` turns it off. | A query over a repo should not drown in build output. |
141
+ | `gitignore` | Inside a git repo, `.gitignore` files hide files and directories a wildcard matches, never one the pattern spells out. `--no-ignore` turns it off. | A query over a repo should not drown in build output. |
125
142
  | `directory-name` | A pattern's last component that names a directory lists the files directly inside it, like `ls docs`. A trailing `/` is `*` appended. | A table is rows of files, and `ls` is the shell habit. |
126
143
  | `files-only` | A pattern that matches a directory but no file returns nothing. | Every row is a file. |
127
144
  | `absolute` | `/`, `~/` and `../` patterns report absolute `path` values, with `..` folded out textually. | The scanned root is derived from the pattern, so there is no relative base. |
@@ -144,6 +161,9 @@ stderr; the exit code is unchanged. Path-tables never warn.
144
161
  `{a..c}` expand, as do zero-padded
145
162
  `{01..10}` and stepped `{1..10..2}` ranges. Groups nest.
146
163
  - `\[` is a literal bracket.
164
+ - POSIX classes (`[[:alpha:]]`) match Unicode characters, as bash does in a UTF-8
165
+ locale: `[[:alpha:]]` matches `é` and `中`. `[[:digit:]]`, `[[:xdigit:]]` and
166
+ `[[:ascii:]]` stay ASCII.
147
167
  - A dot-named file or directory is listed only where a component spells the
148
168
  dot at that depth: `./**/.*` finds `docs/.draft.md` but does not enter
149
169
  `.config/`.
@@ -262,6 +262,9 @@ directory, deeper files override shallower ones, `!pattern` re-includes, and
262
262
  an ignored directory is pruned rather than walked. In a typical repo this
263
263
  excludes build output, virtualenvs, and caches with zero ceremony.
264
264
 
265
+ A `.gitignore` never hides a path the pattern spells out: `'./debug.log'` lists
266
+ that file even when `*.log` is ignored, while `'./*.log'` does not.
267
+
265
268
  A `.gitignore` is in force only when a directory holding `.git` encloses it.
266
269
  Outside a repo none applies, at the scan's start, above it or below it: a
267
270
  `~/.claude` whose `.gitignore` is `*` still lists its files when `~/.claude`
@@ -990,7 +990,7 @@ mod tests {
990
990
  #[test]
991
991
  fn persist_flag_bare_enables_default_location() {
992
992
  // Bare `--persist` (no value) → `Some(None)`: persist at the default
993
- // `<root>/.dirsql/cache.db`, no override path.
993
+ // platform cache dir, no override path.
994
994
  let cli = Cli::parse_from(["dirsql", "--persist"]);
995
995
  assert_eq!(cli.common.persist, Some(None));
996
996
  }
@@ -2861,7 +2861,7 @@ mod internal_tests {
2861
2861
  extensions: Vec::new(),
2862
2862
  functions: Vec::new(),
2863
2863
  persist,
2864
- persist_path: None,
2864
+ persist_path: persist.then(|| root.join("cache.db")),
2865
2865
  poll_interval: DEFAULT_POLL_INTERVAL,
2866
2866
  hint_legacy_files_table: false,
2867
2867
  path_table_parser: None,
@@ -4323,7 +4323,8 @@ mod internal_tests {
4323
4323
  "*.txt",
4324
4324
  |_| vec![],
4325
4325
  )];
4326
- let ctx = prepare_persist(dir.path(), &tables, &[], None).unwrap();
4326
+ let ctx =
4327
+ prepare_persist(dir.path(), &tables, &[], Some(&dir.path().join("cache.db"))).unwrap();
4327
4328
  assert!(ctx.cached.is_empty());
4328
4329
  assert!(!ctx.expected_meta.is_empty());
4329
4330
  assert!(
@@ -1,4 +1,4 @@
1
- use crate::posix_class::expand_posix_classes;
1
+ use crate::posix_class::{class_regex, expand_posix_classes};
2
2
  use crate::scanner::{PathGlob, compile_glob, compile_globs};
3
3
  use globset::GlobBuilder;
4
4
  use regex::{Regex, RegexBuilder};
@@ -63,7 +63,10 @@ fn unicode_regex(byte_regex: &str) -> String {
63
63
  [] => break,
64
64
  }
65
65
  }
66
- String::from_utf8_lossy(&out).into_owned()
66
+ String::from_utf8_lossy(&out)
67
+ .chars()
68
+ .map(|c| class_regex(c).unwrap_or_else(|| c.to_string()))
69
+ .collect()
67
70
  }
68
71
 
69
72
  fn hex_byte(digits: [u8; 2]) -> u8 {
@@ -459,4 +462,67 @@ mod tests {
459
462
  assert_eq!(names(&matcher, "notes/7.md"), vec!["n"]);
460
463
  assert!(matcher.match_all(Path::new("notes/x.md")).is_empty());
461
464
  }
465
+
466
+ #[test]
467
+ fn a_posix_class_matches_non_ascii_characters() {
468
+ let matcher = TableMatcher::new(
469
+ &[
470
+ ("a/[[:alpha:]].md", "alpha"),
471
+ ("l/[[:lower:]].md", "lower"),
472
+ ("u/[[:upper:]].md", "upper"),
473
+ ("p/[[:punct:]].md", "punct"),
474
+ ],
475
+ &[],
476
+ )
477
+ .unwrap();
478
+ assert_eq!(names(&matcher, "a/\u{e9}.md"), vec!["alpha"]);
479
+ assert_eq!(names(&matcher, "a/\u{4e2d}.md"), vec!["alpha"]);
480
+ assert_eq!(names(&matcher, "l/\u{e9}.md"), vec!["lower"]);
481
+ assert_eq!(names(&matcher, "u/\u{c9}.md"), vec!["upper"]);
482
+ assert_eq!(names(&matcher, "p/\u{a1}.md"), vec!["punct"]);
483
+ assert!(matcher.match_all(Path::new("l/\u{c9}.md")).is_empty());
484
+ }
485
+
486
+ #[test]
487
+ fn every_posix_class_follows_unicode() {
488
+ let cases = [
489
+ ("alnum", "\u{e9}", "\u{b2}"),
490
+ ("alpha", "\u{663}", "1"),
491
+ ("blank", "\u{3000}", "\u{a0}"),
492
+ ("cntrl", "\u{85}", "\u{ad}"),
493
+ ("graph", "\u{a0}", "\u{3000}"),
494
+ ("lower", "\u{1c5}", "\u{c9}"),
495
+ ("print", "\u{3000}", "\u{85}"),
496
+ ("punct", "\u{301}", "\u{e9}"),
497
+ ("space", "\u{2003}", "\u{a0}"),
498
+ ("upper", "\u{1c5}", "\u{e9}"),
499
+ ("word", "\u{4e2d}", "\u{b2}"),
500
+ ("digit", "7", "\u{663}"),
501
+ ("xdigit", "f", "\u{ff46}"),
502
+ ("ascii", "a", "\u{e9}"),
503
+ ];
504
+ for (class, member, outsider) in cases {
505
+ let matcher =
506
+ TableMatcher::new(&[(format!("[[:{class}:]]").as_str(), "c")], &[]).unwrap();
507
+ assert_eq!(names(&matcher, member), vec!["c"], "{class} {member}");
508
+ assert!(
509
+ matcher.match_all(Path::new(outsider)).is_empty(),
510
+ "{class} {outsider}"
511
+ );
512
+ }
513
+ }
514
+
515
+ #[test]
516
+ fn a_posix_class_never_matches_the_separator() {
517
+ let matcher = TableMatcher::new(&[("a[[:punct:]]b", "c")], &[]).unwrap();
518
+ assert_eq!(names(&matcher, "a.b"), vec!["c"]);
519
+ assert!(matcher.match_all(Path::new("a/b")).is_empty());
520
+ }
521
+
522
+ #[test]
523
+ fn a_negated_posix_class_matches_the_other_unicode_characters() {
524
+ let matcher = TableMatcher::new(&[("[![:alpha:]].md", "c")], &[]).unwrap();
525
+ assert_eq!(names(&matcher, "\u{a1}.md"), vec!["c"]);
526
+ assert!(matcher.match_all(Path::new("\u{e9}.md")).is_empty());
527
+ }
462
528
  }