dirsql 0.4.105__tar.gz → 0.4.107__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 (423) hide show
  1. {dirsql-0.4.105 → dirsql-0.4.107}/Cargo.lock +2 -2
  2. {dirsql-0.4.105 → dirsql-0.4.107}/PKG-INFO +1 -1
  3. {dirsql-0.4.105 → dirsql-0.4.107}/docs/howto/react-to-changes.md +2 -1
  4. {dirsql-0.4.105/packages/rust → dirsql-0.4.107}/docs/reference/http-api.md +1 -1
  5. {dirsql-0.4.105 → dirsql-0.4.107}/docs/reference/sdk.md +4 -0
  6. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/Cargo.toml +1 -1
  7. dirsql-0.4.107/packages/python/changelog.d/2026-10-08-watch-requires-named-table.md +1 -0
  8. {dirsql-0.4.105/packages/rust → dirsql-0.4.107/packages/python}/docs/howto/react-to-changes.md +2 -1
  9. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/reference/http-api.md +1 -1
  10. {dirsql-0.4.105/packages/rust → dirsql-0.4.107/packages/python}/docs/reference/sdk.md +4 -0
  11. dirsql-0.4.107/packages/python/e2e-attestations/bot-1406-watch-no-tables-1008.json +7 -0
  12. dirsql-0.4.107/packages/python/e2e-attestations/bot-1459-rescan-on-overflow-1008.json +7 -0
  13. dirsql-0.4.107/packages/python/migrations.d/2026-10-08-watch-requires-named-table.md +23 -0
  14. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/Cargo.toml +1 -1
  15. {dirsql-0.4.105/packages/python → dirsql-0.4.107/packages/rust}/docs/howto/react-to-changes.md +2 -1
  16. {dirsql-0.4.105 → dirsql-0.4.107/packages/rust}/docs/reference/http-api.md +1 -1
  17. {dirsql-0.4.105/packages/python → dirsql-0.4.107/packages/rust}/docs/reference/sdk.md +4 -0
  18. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/cli/server.rs +25 -3
  19. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/db.rs +52 -0
  20. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/lib.rs +237 -42
  21. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/watcher.rs +35 -0
  22. {dirsql-0.4.105 → dirsql-0.4.107}/Cargo.toml +0 -0
  23. {dirsql-0.4.105 → dirsql-0.4.107}/README.md +0 -0
  24. {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/__init__.py +0 -0
  25. {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/_async.py +0 -0
  26. {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/_dirsql.pyi +0 -0
  27. {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/cli/__init__.py +0 -0
  28. {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/cli/discover_plugins/__init__.py +0 -0
  29. {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/cli/discover_plugins/discovered_fragments.py +0 -0
  30. {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/cli/discover_plugins/discovery_disabled.py +0 -0
  31. {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/cli/discover_plugins/fragment_path.py +0 -0
  32. {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/cli/discover_plugins/with_discovered_plugins.py +0 -0
  33. {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/cli/main.py +0 -0
  34. {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/cli/resolve_config_extensions.py +0 -0
  35. {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/plan_entry_path.py +0 -0
  36. {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/py.typed +0 -0
  37. {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/read_config.py +0 -0
  38. {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/resolve_configs_extension_specs.py +0 -0
  39. {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/resolve_extension.py +0 -0
  40. {dirsql-0.4.105 → dirsql-0.4.107}/dirsql/resolve_package.py +0 -0
  41. {dirsql-0.4.105 → dirsql-0.4.107}/docs/.claude/CLAUDE.md +0 -0
  42. {dirsql-0.4.105 → dirsql-0.4.107}/docs/.vitepress/config.ts +0 -0
  43. {dirsql-0.4.105 → dirsql-0.4.107}/docs/.vitepress/theme/index.ts +0 -0
  44. {dirsql-0.4.105 → dirsql-0.4.107}/docs/.vitepress/theme/lang.ts +0 -0
  45. {dirsql-0.4.105 → dirsql-0.4.107}/docs/AGENTS.md +0 -0
  46. {dirsql-0.4.105 → dirsql-0.4.107}/docs/context/.gitattributes +0 -0
  47. {dirsql-0.4.105 → dirsql-0.4.107}/docs/context/recipes.md +0 -0
  48. {dirsql-0.4.105 → dirsql-0.4.107}/docs/context/troubleshooting.md +0 -0
  49. {dirsql-0.4.105 → dirsql-0.4.107}/docs/context/usage.md +0 -0
  50. {dirsql-0.4.105 → dirsql-0.4.107}/docs/explanation.md +0 -0
  51. {dirsql-0.4.105 → dirsql-0.4.107}/docs/getting-started.md +0 -0
  52. {dirsql-0.4.105 → dirsql-0.4.107}/docs/howto/agent-skill.md +0 -0
  53. {dirsql-0.4.105 → dirsql-0.4.107}/docs/howto/columns-from-paths.md +0 -0
  54. {dirsql-0.4.105 → dirsql-0.4.107}/docs/howto/define-tables.md +0 -0
  55. {dirsql-0.4.105 → dirsql-0.4.107}/docs/howto/embed.md +0 -0
  56. {dirsql-0.4.105 → dirsql-0.4.107}/docs/howto/extract-from-contents.md +0 -0
  57. {dirsql-0.4.105 → dirsql-0.4.107}/docs/howto/load-extension.md +0 -0
  58. {dirsql-0.4.105 → dirsql-0.4.107}/docs/howto/parse-files-into-columns.md +0 -0
  59. {dirsql-0.4.105 → dirsql-0.4.107}/docs/howto/persist.md +0 -0
  60. {dirsql-0.4.105 → dirsql-0.4.107}/docs/howto/query-json.md +0 -0
  61. {dirsql-0.4.105 → dirsql-0.4.107}/docs/howto/query-without-config.md +0 -0
  62. {dirsql-0.4.105 → dirsql-0.4.107}/docs/howto/search-by-meaning.md +0 -0
  63. {dirsql-0.4.105 → dirsql-0.4.107}/docs/howto/search-indexes.md +0 -0
  64. {dirsql-0.4.105 → dirsql-0.4.107}/docs/howto/skip-files.md +0 -0
  65. {dirsql-0.4.105 → dirsql-0.4.107}/docs/howto/write-a-plugin.md +0 -0
  66. {dirsql-0.4.105 → dirsql-0.4.107}/docs/index.md +0 -0
  67. {dirsql-0.4.105 → dirsql-0.4.107}/docs/package.json +0 -0
  68. {dirsql-0.4.105 → dirsql-0.4.107}/docs/plugins.md +0 -0
  69. {dirsql-0.4.105 → dirsql-0.4.107}/docs/pnpm-lock.yaml +0 -0
  70. {dirsql-0.4.105 → dirsql-0.4.107}/docs/pnpm-workspace.yaml +0 -0
  71. {dirsql-0.4.105 → dirsql-0.4.107}/docs/reference/cli.md +0 -0
  72. {dirsql-0.4.105 → dirsql-0.4.107}/docs/reference/columns.md +0 -0
  73. {dirsql-0.4.105 → dirsql-0.4.107}/docs/reference/config.md +0 -0
  74. {dirsql-0.4.105 → dirsql-0.4.107}/docs/reference/glob.md +0 -0
  75. {dirsql-0.4.105 → dirsql-0.4.107}/docs/reference/hooks.md +0 -0
  76. {dirsql-0.4.105 → dirsql-0.4.107}/docs/reference/path-tables.md +0 -0
  77. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/CHANGELOG.md +0 -0
  78. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/MIGRATIONS.md +0 -0
  79. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/README.md +0 -0
  80. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
  81. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-07-13-plugin-discovery.md +0 -0
  82. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-07-13-rename-extract-to-on-file.md +0 -0
  83. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-07-13-repeatable-config.md +0 -0
  84. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
  85. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-07-20-drop-implicit-files-table.md +0 -0
  86. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-07-21-remove-glob-captures.md +0 -0
  87. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-07-24-hookless-table-config-error.md +0 -0
  88. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-07-24-remove-stat-fact-injection.md +0 -0
  89. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-07-29-restore-python-310.md +0 -0
  90. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-08-02-release-profile.md +0 -0
  91. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-08-02-scan-failures.md +0 -0
  92. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-08-03-discovery-ext-resolution.md +0 -0
  93. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-08-03-manylinux-dynamic-binary.md +0 -0
  94. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-08-03-python-no-ignore.md +0 -0
  95. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-08-04-cast-lints.md +0 -0
  96. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-08-04-cli-in-process.md +0 -0
  97. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-08-20-curtaincall-dev-dependency.md +0 -0
  98. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-08-20-declared-table-name.md +0 -0
  99. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-09-04-config-paths-from-argv-module.md +0 -0
  100. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-09-05-config-extension-loader-split.md +0 -0
  101. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-09-05-resolve-config-extensions-split.md +0 -0
  102. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-09-05-resolve-extension-split.md +0 -0
  103. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-09-09-launcher-config-path-scan.md +0 -0
  104. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-09-17-extension-resolution-via-core.md +0 -0
  105. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-09-18-export-scan-failure.md +0 -0
  106. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-09-18-flatten-row-event-in-core.md +0 -0
  107. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-09-18-programmatic-extension-plan.md +0 -0
  108. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-09-20-sigint-ends-a-run-in-progress.md +0 -0
  109. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-09-24-query-rows-in-projection-order.md +0 -0
  110. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-02-readme-docs-host.md +0 -0
  111. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-03-one-glob-rule-for-config-globs.md +0 -0
  112. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-03-path-table-directory-one-level.md +0 -0
  113. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-04-path-table-dotfiles-hidden.md +0 -0
  114. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-05-brace-groups-follow-bash.md +0 -0
  115. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-05-cli-context.md +0 -0
  116. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-05-gitignore-requires-repo.md +0 -0
  117. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-05-path-table-node-modules-named.md +0 -0
  118. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-05-path-table-symlinks.md +0 -0
  119. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-05-path-table-trailing-slash.md +0 -0
  120. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-05-unbalanced-brackets-literal.md +0 -0
  121. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-06-config-braces.md +0 -0
  122. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-06-config-directory.md +0 -0
  123. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-06-config-dotnames.md +0 -0
  124. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-06-config-gitignore.md +0 -0
  125. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-06-config-globs-anchor-at-the-config.md +0 -0
  126. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-06-config-links.md +0 -0
  127. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-06-one-glob-compiler.md +0 -0
  128. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-06-plugin-no-default-records.md +0 -0
  129. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-06-watch-broadcast.md +0 -0
  130. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-06-zero-match-config-table-warning.md +0 -0
  131. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-07-bracket-slash-literal.md +0 -0
  132. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-07-dotdot-and-double-slashes.md +0 -0
  133. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-07-dotdot-as-written.md +0 -0
  134. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-07-glob-walks-node-modules.md +0 -0
  135. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-07-literal-gitignore.md +0 -0
  136. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-07-on-file-ndjson.md +0 -0
  137. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-07-parallel-hooks.md +0 -0
  138. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-07-persist-cache-outside-root.md +0 -0
  139. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-07-posix-classes-unicode.md +0 -0
  140. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-07-spread-few-large-files.md +0 -0
  141. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/2026-10-08-small-walks-stay-on-one-thread.md +0 -0
  142. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/changelog.d/README.md +0 -0
  143. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/conftest.py +0 -0
  144. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/.claude/CLAUDE.md +0 -0
  145. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/.vitepress/config.ts +0 -0
  146. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/.vitepress/theme/index.ts +0 -0
  147. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/.vitepress/theme/lang.ts +0 -0
  148. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/AGENTS.md +0 -0
  149. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/context/.gitattributes +0 -0
  150. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/context/recipes.md +0 -0
  151. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/context/troubleshooting.md +0 -0
  152. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/context/usage.md +0 -0
  153. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/explanation.md +0 -0
  154. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/getting-started.md +0 -0
  155. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/howto/agent-skill.md +0 -0
  156. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/howto/columns-from-paths.md +0 -0
  157. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/howto/define-tables.md +0 -0
  158. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/howto/embed.md +0 -0
  159. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/howto/extract-from-contents.md +0 -0
  160. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/howto/load-extension.md +0 -0
  161. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/howto/parse-files-into-columns.md +0 -0
  162. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/howto/persist.md +0 -0
  163. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/howto/query-json.md +0 -0
  164. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/howto/query-without-config.md +0 -0
  165. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/howto/search-by-meaning.md +0 -0
  166. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/howto/search-indexes.md +0 -0
  167. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/howto/skip-files.md +0 -0
  168. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/howto/write-a-plugin.md +0 -0
  169. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/index.md +0 -0
  170. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/package.json +0 -0
  171. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/plugins.md +0 -0
  172. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/pnpm-lock.yaml +0 -0
  173. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/pnpm-workspace.yaml +0 -0
  174. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/reference/cli.md +0 -0
  175. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/reference/columns.md +0 -0
  176. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/reference/config.md +0 -0
  177. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/reference/glob.md +0 -0
  178. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/reference/hooks.md +0 -0
  179. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/docs/reference/path-tables.md +0 -0
  180. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1334-listing-exemptions.json +0 -0
  181. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1397-watch-broadcast.json +0 -0
  182. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1398-inotify-error.json +0 -0
  183. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1399-server-cors.json +0 -0
  184. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1401-watch-scope.json +0 -0
  185. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1407-child-place-depth.json +0 -0
  186. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1414-stat-speed.json +0 -0
  187. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1415-server-speed.json +0 -0
  188. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1418-node-modules.json +0 -0
  189. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1419-dotdot-slashes.json +0 -0
  190. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1420-bracket-slash.json +0 -0
  191. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1421-posix-unicode.json +0 -0
  192. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1422-literal-gitignore.json +0 -0
  193. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1426-walk-spawn-threshold-1008.json +0 -0
  194. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1428-ndjson-hooks.json +0 -0
  195. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1429-parallel-hooks.json +0 -0
  196. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1430-dotdot-as-written.json +0 -0
  197. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1431-persist-cache-dir.json +0 -0
  198. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1437-test-cache-isolation.json +0 -0
  199. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1440-fix-main-build.json +0 -0
  200. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1448-wildcard-ignored-prefix.json +0 -0
  201. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1451-named-dir-never-hidden.json +0 -0
  202. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1454-split-few-files.json +0 -0
  203. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-1457-incremental-refresh-1008.json +0 -0
  204. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/bot-fix-main-place-depth-20261007.json +0 -0
  205. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/cc-keen-knuth-f11gyq.json +0 -0
  206. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1056-py-ofpf9.json +0 -0
  207. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1066-p1-resolve-extension.json +0 -0
  208. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1078-argv-config-paths-core.json +0 -0
  209. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1079-p2-resolve-config-extensions.json +0 -0
  210. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1080-share-vtab-scaffolding.json +0 -0
  211. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1081-indicatif-progress.json +0 -0
  212. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1096-watch-moved-dir.json +0 -0
  213. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1109-watch-moved-out.json +0 -0
  214. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1119-ext-plan.json +0 -0
  215. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1120-py-ext.json +0 -0
  216. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1122-ext-cleanup.json +0 -0
  217. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1130-codec-crates.json +0 -0
  218. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1131-flatten-row-event.json +0 -0
  219. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1139-sse-flatten.json +0 -0
  220. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1140-scan-failure-export.json +0 -0
  221. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1148-clippy-all-targets.json +0 -0
  222. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1164-sigint-fatal.json +0 -0
  223. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1170-projection-order.json +0 -0
  224. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1172-on-file-path.json +0 -0
  225. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1173-py-projection-order.json +0 -0
  226. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1184-win-rel-paths.json +0 -0
  227. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1185-win-abs-table-names.json +0 -0
  228. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1186-win-test-harness.json +0 -0
  229. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1196-join-index.json +0 -0
  230. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1199-glob-prefix.json +0 -0
  231. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1201-single-walk.json +0 -0
  232. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1204-embed-batch.json +0 -0
  233. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1207-win-argv-quote.json +0 -0
  234. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1208-win-nonverbatim-paths.json +0 -0
  235. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1215-on-file-batch.json +0 -0
  236. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1216-on-file-cleanup.json +0 -0
  237. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1223-config-glob-rule.json +0 -0
  238. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1223-dir-one-level.json +0 -0
  239. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1225-plugin-no-default.json +0 -0
  240. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1226-stale-docs.json +0 -0
  241. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1232-anchor-plumbing.json +0 -0
  242. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1232-config-anchor.json +0 -0
  243. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1232-multi-watch.json +0 -0
  244. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1232-zero-match.json +0 -0
  245. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1238-parallel-walk.json +0 -0
  246. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1241-content-prefetch.json +0 -0
  247. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1243-ingest-perf.json +0 -0
  248. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1249-dotfiles.json +0 -0
  249. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1256-symlinks.json +0 -0
  250. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1257-trailing-slash.json +0 -0
  251. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1258-config-braces.json +0 -0
  252. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1258-config-directory.json +0 -0
  253. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1258-config-dotnames.json +0 -0
  254. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1258-config-gitignore.json +0 -0
  255. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1258-config-links.json +0 -0
  256. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1258-one-pattern.json +0 -0
  257. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1262-brace-literal.json +0 -0
  258. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1264-context.json +0 -0
  259. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1267-posix-classes.json +0 -0
  260. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1268-unbalanced-brackets.json +0 -0
  261. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1269-utf8-chars.json +0 -0
  262. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1271-node-modules-named.json +0 -0
  263. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1272-ancestor-gitignore.json +0 -0
  264. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1273-walk-prune.json +0 -0
  265. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1285-ingest-fast.json +0 -0
  266. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1286-nested-repo.json +0 -0
  267. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1305-glob-speed.json +0 -0
  268. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1308-glob-speed.json +0 -0
  269. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1310-glob-speed.json +0 -0
  270. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1311-glob-speed.json +0 -0
  271. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1312-glob-speed.json +0 -0
  272. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1318-lazy-stat.json +0 -0
  273. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1320-walk-speed.json +0 -0
  274. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1322-walk-readdir.json +0 -0
  275. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1325-parallel-walk.json +0 -0
  276. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1326-stream-rows.json +0 -0
  277. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1330-python-dirsql-patch.json +0 -0
  278. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1330-python-extensions-patch.json +0 -0
  279. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1330-scanner-effects.json +0 -0
  280. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1330-scanner-gitignore.json +0 -0
  281. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1330-vtab-prefetch-flag.json +0 -0
  282. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1330-vtab-read.json +0 -0
  283. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-1351-dot-dirs.json +0 -0
  284. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-819-oneshot-timeout.json +0 -0
  285. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-827-unquote-doubled-quotes.json +0 -0
  286. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-epic-953-slice2-reedline.json +0 -0
  287. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-epic-953-slice3-format.json +0 -0
  288. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-epic-953-stacked-prs-x59wm3.json +0 -0
  289. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-github-issue-825-e4mhhp.json +0 -0
  290. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-issue-951-0eease.json +0 -0
  291. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-issue-962-0jjrfv.json +0 -0
  292. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-issue-986-red-test-e7sjrb.json +0 -0
  293. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-tackle-1034-cachesplit.json +0 -0
  294. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-tackle-1042-py12.json +0 -0
  295. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-tackle-956-xzen74.json +0 -0
  296. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-tackle-957-lrm0z6-worker-calls.json +0 -0
  297. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-tackle-957-lrm0z6.json +0 -0
  298. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/e2e-attestations/claude-tackle-975-n8mc2h.json +0 -0
  299. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
  300. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-07-13-rename-extract-to-on-file.md +0 -0
  301. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
  302. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-07-20-drop-implicit-files-table.md +0 -0
  303. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-07-21-remove-glob-captures.md +0 -0
  304. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-07-24-hookless-table-config-error.md +0 -0
  305. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-07-24-remove-stat-fact-injection.md +0 -0
  306. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-07-29-restore-python-310.md +0 -0
  307. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-08-04-cli-in-process.md +0 -0
  308. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-08-20-declared-table-name.md +0 -0
  309. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-09-20-sigint-ends-a-run-in-progress.md +0 -0
  310. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-09-24-query-rows-in-projection-order.md +0 -0
  311. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-02-readme-docs-host.md +0 -0
  312. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-03-one-glob-rule-for-config-globs.md +0 -0
  313. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-03-path-table-directory-one-level.md +0 -0
  314. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-04-path-table-dotfiles-hidden.md +0 -0
  315. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-05-brace-groups-follow-bash.md +0 -0
  316. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-05-cli-context.md +0 -0
  317. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-05-gitignore-requires-repo.md +0 -0
  318. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-05-path-table-node-modules-named.md +0 -0
  319. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-05-path-table-symlinks.md +0 -0
  320. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-05-path-table-trailing-slash.md +0 -0
  321. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-05-unbalanced-brackets-literal.md +0 -0
  322. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-06-config-braces.md +0 -0
  323. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-06-config-directory.md +0 -0
  324. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-06-config-dotnames.md +0 -0
  325. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-06-config-gitignore.md +0 -0
  326. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-06-config-globs-anchor-at-the-config.md +0 -0
  327. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-06-config-links.md +0 -0
  328. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-06-one-glob-compiler.md +0 -0
  329. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-06-plugin-no-default-records.md +0 -0
  330. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-06-watch-broadcast.md +0 -0
  331. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-06-zero-match-config-table-warning.md +0 -0
  332. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-07-bracket-slash-literal.md +0 -0
  333. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-07-dotdot-and-double-slashes.md +0 -0
  334. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-07-dotdot-as-written.md +0 -0
  335. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-07-glob-walks-node-modules.md +0 -0
  336. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-07-literal-gitignore.md +0 -0
  337. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-07-on-file-ndjson.md +0 -0
  338. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-07-parallel-hooks.md +0 -0
  339. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-07-persist-cache-outside-root.md +0 -0
  340. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-07-posix-classes-unicode.md +0 -0
  341. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-07-spread-few-large-files.md +0 -0
  342. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/2026-10-08-small-walks-stay-on-one-thread.md +0 -0
  343. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/migrations.d/README.md +0 -0
  344. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/src/lib.rs +0 -0
  345. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/testing-conventions.toml +0 -0
  346. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/tests/__init__.py +0 -0
  347. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/tests/conftest.py +0 -0
  348. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/tests/e2e/__init__.py +0 -0
  349. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/__init__.py +0 -0
  350. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/dirsql.toml +0 -0
  351. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/tests/e2e/speed_of_light.py +0 -0
  352. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/tests/integration/__init__.py +0 -0
  353. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/tests/integration/binding/__init__.py +0 -0
  354. {dirsql-0.4.105 → dirsql-0.4.107}/packages/python/tests/integration/hermetic/__init__.py +0 -0
  355. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/CHANGELOG.md +0 -0
  356. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/MIGRATIONS.md +0 -0
  357. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/README.md +0 -0
  358. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/benches/db_bench.rs +0 -0
  359. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/benches/differ_bench.rs +0 -0
  360. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/benches/matcher_bench.rs +0 -0
  361. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/benches/scanner_bench.rs +0 -0
  362. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/context/.gitattributes +0 -0
  363. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/context/recipes.md +0 -0
  364. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/context/troubleshooting.md +0 -0
  365. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/context/usage.md +0 -0
  366. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/explanation.md +0 -0
  367. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/getting-started.md +0 -0
  368. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/howto/agent-skill.md +0 -0
  369. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/howto/columns-from-paths.md +0 -0
  370. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/howto/define-tables.md +0 -0
  371. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/howto/embed.md +0 -0
  372. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/howto/extract-from-contents.md +0 -0
  373. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/howto/load-extension.md +0 -0
  374. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/howto/parse-files-into-columns.md +0 -0
  375. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/howto/persist.md +0 -0
  376. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/howto/query-json.md +0 -0
  377. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/howto/query-without-config.md +0 -0
  378. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/howto/search-by-meaning.md +0 -0
  379. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/howto/search-indexes.md +0 -0
  380. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/howto/skip-files.md +0 -0
  381. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/howto/write-a-plugin.md +0 -0
  382. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/index.md +0 -0
  383. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/plugins.md +0 -0
  384. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/reference/cli.md +0 -0
  385. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/reference/columns.md +0 -0
  386. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/reference/config.md +0 -0
  387. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/reference/glob.md +0 -0
  388. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/reference/hooks.md +0 -0
  389. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/docs/reference/path-tables.md +0 -0
  390. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/bin/dirsql.rs +0 -0
  391. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/brace.rs +0 -0
  392. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/cli/context.rs +0 -0
  393. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/cli/execute.rs +0 -0
  394. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/cli/init.rs +0 -0
  395. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/cli/mod.rs +0 -0
  396. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/cli/repl.rs +0 -0
  397. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/cli/router.rs +0 -0
  398. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/cli/run.rs +0 -0
  399. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/cli/serialize.rs +0 -0
  400. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/cli/table.rs +0 -0
  401. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/command.rs +0 -0
  402. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/config.rs +0 -0
  403. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/default_config.toml +0 -0
  404. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/differ.rs +0 -0
  405. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/extension_resolution.rs +0 -0
  406. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/functions.rs +0 -0
  407. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/infer.rs +0 -0
  408. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/launcher.rs +0 -0
  409. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/listing.rs +0 -0
  410. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/matcher.rs +0 -0
  411. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/on_file.rs +0 -0
  412. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/parsed_vtab.rs +0 -0
  413. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/path_table.rs +0 -0
  414. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/persist.rs +0 -0
  415. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/posix_class.rs +0 -0
  416. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/progress.rs +0 -0
  417. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/row_event_flat.rs +0 -0
  418. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/scanner.rs +0 -0
  419. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/sql_literal.rs +0 -0
  420. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/tree_walk.rs +0 -0
  421. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/vtab.rs +0 -0
  422. {dirsql-0.4.105 → dirsql-0.4.107}/packages/rust/src/vtab_scaffold.rs +0 -0
  423. {dirsql-0.4.105 → dirsql-0.4.107}/pyproject.toml +0 -0
@@ -573,7 +573,7 @@ dependencies = [
573
573
 
574
574
  [[package]]
575
575
  name = "dirsql"
576
- version = "0.4.105"
576
+ version = "0.4.107"
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.105"
628
+ version = "0.4.107"
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.105
3
+ Version: 0.4.107
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
@@ -7,7 +7,8 @@ side.
7
7
 
8
8
  Row events are emitted for **named tables**, so this flow needs a config —
9
9
  [path-tables](../reference/path-tables.md) are scanned per query and are not
10
- watched. Define one next to your files. A named table's columns are whatever
10
+ watched, so `watch()` on an instance with no named tables raises an error and
11
+ `/events` returns `503`. Define one next to your files. A named table's columns are whatever
11
12
  its [`on-file`](../reference/config.md#table) hook emits; here a minimal hook
12
13
  prints each file's basename:
13
14
 
@@ -115,4 +115,4 @@ Row values serialize as in [`POST /query`](#value-serialization).
115
115
  |---|---|
116
116
  | `200` | Stream opened (`text/event-stream`). |
117
117
  | `405` | `POST /events`. Plain-text body `method not allowed`. |
118
- | `503` | The server is in [degraded mode](./cli.md#degraded-mode), or its filesystem watcher failed to start (for example, the inotify limit is exhausted). JSON `{"error": …}` body; for a watcher failure the message starts `filesystem watcher failed to start:` and gives the reason. `POST /query` keeps working. |
118
+ | `503` | The server is in [degraded mode](./cli.md#degraded-mode), or its filesystem watcher failed to start (for example, the inotify limit is exhausted, or the instance has no named tables). JSON `{"error": …}` body; for a watcher failure the message starts `filesystem watcher failed to start:` and gives the reason. `POST /query` keeps working. |
@@ -301,6 +301,10 @@ under the root. The watcher starts on first iteration (Python/TypeScript)
301
301
  or at the `watch()` call (Rust). The stream never terminates on its own;
302
302
  stop consuming it to stop.
303
303
 
304
+ An instance with no named tables cannot be watched: path-tables emit no
305
+ watch events, so `watch()` (and the polling primitives) raise an error naming
306
+ that cause. Define a table first.
307
+
304
308
  Python/TypeScript: each `watch()` call returns an independent stream, and every stream
305
309
  on one instance receives every event observed after it was created, so
306
310
  several consumers (one per client, say) can share one instance.
@@ -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.105"
7
+ version = "0.4.107"
8
8
  # abi3 note: the `abi3-py310` pyo3 feature (below) builds ONE stable-ABI
9
9
  # `cp310-abi3` wheel per platform that loads on every CPython >= 3.10
10
10
  # (matching `pyproject.toml`'s `requires-python = ">=3.10"`), instead of
@@ -0,0 +1 @@
1
+ **Changed** — `watch()` (and the polling primitives) on an instance with no named tables now fails immediately with `watching requires at least one named table: path-tables emit no watch events; define a table`, instead of starting a watcher that never yields. The `dirsql server` `/events` endpoint returns 503 with the same reason; `/query` is unaffected.
@@ -7,7 +7,8 @@ side.
7
7
 
8
8
  Row events are emitted for **named tables**, so this flow needs a config —
9
9
  [path-tables](../reference/path-tables.md) are scanned per query and are not
10
- watched. Define one next to your files. A named table's columns are whatever
10
+ watched, so `watch()` on an instance with no named tables raises an error and
11
+ `/events` returns `503`. Define one next to your files. A named table's columns are whatever
11
12
  its [`on-file`](../reference/config.md#table) hook emits; here a minimal hook
12
13
  prints each file's basename:
13
14
 
@@ -115,4 +115,4 @@ Row values serialize as in [`POST /query`](#value-serialization).
115
115
  |---|---|
116
116
  | `200` | Stream opened (`text/event-stream`). |
117
117
  | `405` | `POST /events`. Plain-text body `method not allowed`. |
118
- | `503` | The server is in [degraded mode](./cli.md#degraded-mode), or its filesystem watcher failed to start (for example, the inotify limit is exhausted). JSON `{"error": …}` body; for a watcher failure the message starts `filesystem watcher failed to start:` and gives the reason. `POST /query` keeps working. |
118
+ | `503` | The server is in [degraded mode](./cli.md#degraded-mode), or its filesystem watcher failed to start (for example, the inotify limit is exhausted, or the instance has no named tables). JSON `{"error": …}` body; for a watcher failure the message starts `filesystem watcher failed to start:` and gives the reason. `POST /query` keeps working. |
@@ -301,6 +301,10 @@ under the root. The watcher starts on first iteration (Python/TypeScript)
301
301
  or at the `watch()` call (Rust). The stream never terminates on its own;
302
302
  stop consuming it to stop.
303
303
 
304
+ An instance with no named tables cannot be watched: path-tables emit no
305
+ watch events, so `watch()` (and the polling primitives) raise an error naming
306
+ that cause. Define a table first.
307
+
304
308
  Python/TypeScript: each `watch()` call returns an independent stream, and every stream
305
309
  on one instance receives every event observed after it was created, so
306
310
  several consumers (one per client, say) can share one instance.
@@ -0,0 +1,7 @@
1
+ {
2
+ "command": "uv run python -m pytest tests/e2e/server_speed_test.py tests/e2e/query_contract_test.py tests/e2e/sigint_interrupt_test.py tests/e2e/cli_version_test.py -x -q",
3
+ "ran_at": 1791474667,
4
+ "exit_code": 0,
5
+ "commit": "31f567c6cc0e5873a9bdc41df84e95a6722527f1",
6
+ "branch": "bot/1406-watch-no-tables-1008"
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "command": "uv run python -m pytest tests/e2e/on_file_query_test.py tests/e2e/query_contract_test.py tests/e2e/use_case_notebook_test.py -x -q",
3
+ "ran_at": 1791464863,
4
+ "exit_code": 0,
5
+ "commit": "480d3e491818207f55eb2d8dc6c95498dc27afab",
6
+ "branch": "bot/1459-rescan-on-overflow-1008"
7
+ }
@@ -0,0 +1,23 @@
1
+ ### `watch()` requires a named table
2
+
3
+ #### Summary
4
+
5
+ `watch()`, `poll_events()`/`pollEvents()` and `start_watching()`/`startWatcher()` on an instance with no named tables now raise an error naming the cause, rather than watching and silently yielding nothing. Path-tables emit no watch events. Instances with at least one named table are unaffected.
6
+
7
+ #### Required changes
8
+
9
+ | Before | After |
10
+ | --- | --- |
11
+ | `DirSQL(root).watch()` yields nothing forever | Define a table (programmatic or `[[table]]`), or stop calling `watch()` |
12
+
13
+ #### Deprecations removed
14
+
15
+ _None._
16
+
17
+ #### Behavior changes without code changes
18
+
19
+ A path-table-only instance that called `watch()` now gets an error. `dirsql server` with no tables returns 503 from `/events`.
20
+
21
+ #### Verification
22
+
23
+ Run `dirsql server -c <config with no [[table]]>` and `curl -i http://localhost:7117/events`; expect `503` naming "path-tables emit no watch events".
@@ -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.105"
9
+ version = "0.4.107"
10
10
  edition.workspace = true
11
11
  # Literal `license` (not `license.workspace = true`) because
12
12
  # putitoutthere's preflight check reads `[package].license` directly
@@ -7,7 +7,8 @@ side.
7
7
 
8
8
  Row events are emitted for **named tables**, so this flow needs a config —
9
9
  [path-tables](../reference/path-tables.md) are scanned per query and are not
10
- watched. Define one next to your files. A named table's columns are whatever
10
+ watched, so `watch()` on an instance with no named tables raises an error and
11
+ `/events` returns `503`. Define one next to your files. A named table's columns are whatever
11
12
  its [`on-file`](../reference/config.md#table) hook emits; here a minimal hook
12
13
  prints each file's basename:
13
14
 
@@ -115,4 +115,4 @@ Row values serialize as in [`POST /query`](#value-serialization).
115
115
  |---|---|
116
116
  | `200` | Stream opened (`text/event-stream`). |
117
117
  | `405` | `POST /events`. Plain-text body `method not allowed`. |
118
- | `503` | The server is in [degraded mode](./cli.md#degraded-mode), or its filesystem watcher failed to start (for example, the inotify limit is exhausted). JSON `{"error": …}` body; for a watcher failure the message starts `filesystem watcher failed to start:` and gives the reason. `POST /query` keeps working. |
118
+ | `503` | The server is in [degraded mode](./cli.md#degraded-mode), or its filesystem watcher failed to start (for example, the inotify limit is exhausted, or the instance has no named tables). JSON `{"error": …}` body; for a watcher failure the message starts `filesystem watcher failed to start:` and gives the reason. `POST /query` keeps working. |
@@ -301,6 +301,10 @@ under the root. The watcher starts on first iteration (Python/TypeScript)
301
301
  or at the `watch()` call (Rust). The stream never terminates on its own;
302
302
  stop consuming it to stop.
303
303
 
304
+ An instance with no named tables cannot be watched: path-tables emit no
305
+ watch events, so `watch()` (and the polling primitives) raise an error naming
306
+ that cause. Define a table first.
307
+
304
308
  Python/TypeScript: each `watch()` call returns an independent stream, and every stream
305
309
  on one instance receives every event observed after it was created, so
306
310
  several consumers (one per client, say) can share one instance.
@@ -109,6 +109,16 @@ fn start_watch_task(db: DirSQL, tx: broadcast::Sender<String>) -> Option<String>
109
109
  mod tests {
110
110
  use super::*;
111
111
 
112
+ fn db_with_a_table(root: &std::path::Path) -> DirSQL {
113
+ let config = root.join("dirsql.toml");
114
+ std::fs::write(
115
+ &config,
116
+ "[[table]]\nname = \"t\"\nddl = \"CREATE TABLE t (x TEXT)\"\nglob = \"*.none\"\non-file = \"true\"\n",
117
+ )
118
+ .unwrap();
119
+ DirSQL::builder().root(root).config(config).build().unwrap()
120
+ }
121
+
112
122
  // An `Unavailable` state needs no DB/filesystem, so the real bind /
113
123
  // graceful-shutdown plumbing runs without standing up an index.
114
124
  #[tokio::test]
@@ -130,7 +140,7 @@ mod tests {
130
140
  #[tokio::test]
131
141
  async fn serve_with_a_ready_db_attaches_the_watcher_then_shuts_down() {
132
142
  let dir = tempfile::tempdir().unwrap();
133
- let db = DirSQL::new(dir.path(), Vec::new()).unwrap();
143
+ let db = db_with_a_table(dir.path());
134
144
  let config = ServerConfig::bind("127.0.0.1".to_string(), 0);
135
145
  let handle = serve(config, db).await.expect("bind on an ephemeral port");
136
146
  assert_ne!(handle.local_addr().port(), 0);
@@ -140,17 +150,29 @@ mod tests {
140
150
  #[tokio::test]
141
151
  async fn start_watch_task_reports_no_failure_once_the_watcher_attaches() {
142
152
  let dir = tempfile::tempdir().unwrap();
143
- let db = DirSQL::new(dir.path(), Vec::new()).unwrap();
153
+ let db = db_with_a_table(dir.path());
144
154
  let (tx, _) = broadcast::channel::<String>(1);
145
155
  assert_eq!(start_watch_task(db, tx), None);
146
156
  }
147
157
 
158
+ #[tokio::test]
159
+ async fn start_watch_task_names_the_cause_without_named_tables() {
160
+ let dir = tempfile::tempdir().unwrap();
161
+ let db = DirSQL::new(dir.path(), Vec::new()).unwrap();
162
+ let (tx, _) = broadcast::channel::<String>(1);
163
+ let reason = start_watch_task(db, tx).expect("watch() must fail");
164
+ assert!(
165
+ reason.contains("path-tables emit no watch events"),
166
+ "got: {reason}"
167
+ );
168
+ }
169
+
148
170
  // `poll_events` locks out `watch`, the one deterministic way to make the
149
171
  // watcher refuse to attach without exhausting inotify.
150
172
  #[tokio::test]
151
173
  async fn start_watch_task_returns_the_reason_when_the_watcher_cannot_attach() {
152
174
  let dir = tempfile::tempdir().unwrap();
153
- let db = DirSQL::new(dir.path(), Vec::new()).unwrap();
175
+ let db = db_with_a_table(dir.path());
154
176
  db.poll_events(std::time::Duration::ZERO).unwrap();
155
177
  let (tx, _) = broadcast::channel::<String>(1);
156
178
  let reason = start_watch_task(db, tx).expect("watch() must fail");
@@ -991,6 +991,22 @@ impl Db {
991
991
  .collect()
992
992
  }
993
993
 
994
+ /// Every distinct `(table_name, file_path)` that owns rows, ordered by
995
+ /// table then path. A per-table hook's rows have no file owner and are
996
+ /// not listed.
997
+ pub fn owned_files(&self) -> Result<Vec<(String, String)>> {
998
+ let mut stmt = self.conn.prepare(
999
+ "SELECT DISTINCT table_name, file_path FROM ( \
1000
+ SELECT table_name, file_path FROM _dirsql_internal_rows \
1001
+ UNION ALL \
1002
+ SELECT table_name, file_path FROM _dirsql_internal_ranges) \
1003
+ WHERE file_path != '' \
1004
+ ORDER BY table_name, file_path",
1005
+ )?;
1006
+ let rows = stmt.query_map([], |r| Ok((r.get(0)?, r.get(1)?)))?;
1007
+ Ok(rows.collect::<rusqlite::Result<Vec<_>>>()?)
1008
+ }
1009
+
994
1010
  /// Every distinct `(table_name, file_path)` whose file sits beneath the
995
1011
  /// directory `dir`, ordered by table then path.
996
1012
  pub fn files_under(&self, dir: &str) -> Result<Vec<(String, String)>> {
@@ -2496,6 +2512,42 @@ mod tests {
2496
2512
  assert!(db.files_under("nothing").unwrap().is_empty());
2497
2513
  }
2498
2514
 
2515
+ #[test]
2516
+ fn owned_files_lists_each_file_once_and_skips_the_batch_owner() {
2517
+ let db = Db::new().unwrap();
2518
+ db.create_table("t1", "CREATE TABLE t1 (id TEXT)").unwrap();
2519
+ db.create_table("t2", "CREATE TABLE t2 (id TEXT)").unwrap();
2520
+ let row = HashMap::from([("id".into(), Value::Text("x".into()))]);
2521
+ for (table, file, idx) in [
2522
+ ("t2", "c.jsonl", 0),
2523
+ ("t1", "a.jsonl", 0),
2524
+ ("t1", "a.jsonl", 1),
2525
+ ("t1", "d/b.jsonl", 0),
2526
+ ("t1", "", 0),
2527
+ ] {
2528
+ db.insert_row(table, &row, file, idx).unwrap();
2529
+ }
2530
+
2531
+ assert_eq!(
2532
+ db.owned_files().unwrap(),
2533
+ vec![
2534
+ ("t1".to_string(), "a.jsonl".to_string()),
2535
+ ("t1".to_string(), "d/b.jsonl".to_string()),
2536
+ ("t2".to_string(), "c.jsonl".to_string()),
2537
+ ]
2538
+ );
2539
+ }
2540
+
2541
+ #[test]
2542
+ fn owned_files_surfaces_sql_failure() {
2543
+ let db = Db::new().unwrap();
2544
+ db.conn
2545
+ .execute("DROP TABLE _dirsql_internal_rows", [])
2546
+ .unwrap();
2547
+ let err = db.owned_files().unwrap_err();
2548
+ assert!(matches!(err, DbError::Sqlite(_)), "got: {err:?}");
2549
+ }
2550
+
2499
2551
  #[test]
2500
2552
  fn files_under_surfaces_sql_failure() {
2501
2553
  let db = Db::new().unwrap();