dirsql 0.4.1__tar.gz → 0.4.2__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 (209) hide show
  1. {dirsql-0.4.1 → dirsql-0.4.2}/Cargo.lock +1 -1
  2. {dirsql-0.4.1 → dirsql-0.4.2}/PKG-INFO +1 -1
  3. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/Cargo.toml +1 -1
  4. dirsql-0.4.2/packages/python/e2e-attestations/claude-710-accumulate-onfile.json +7 -0
  5. dirsql-0.4.2/packages/rust/changelog.d/2026-07-29-on-file-failures-accumulate.md +8 -0
  6. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/src/lib.rs +60 -5
  7. dirsql-0.4.1/packages/python/e2e-attestations/claude-tackle-698-bz6ere.json +0 -7
  8. {dirsql-0.4.1 → dirsql-0.4.2}/Cargo.toml +0 -0
  9. {dirsql-0.4.1 → dirsql-0.4.2}/README.md +0 -0
  10. {dirsql-0.4.1 → dirsql-0.4.2}/dirsql/__init__.py +0 -0
  11. {dirsql-0.4.1 → dirsql-0.4.2}/dirsql/_async.py +0 -0
  12. {dirsql-0.4.1 → dirsql-0.4.2}/dirsql/_dirsql.pyi +0 -0
  13. {dirsql-0.4.1 → dirsql-0.4.2}/dirsql/cli/__init__.py +0 -0
  14. {dirsql-0.4.1 → dirsql-0.4.2}/dirsql/cli/binary_path.py +0 -0
  15. {dirsql-0.4.1 → dirsql-0.4.2}/dirsql/cli/discover_plugins/__init__.py +0 -0
  16. {dirsql-0.4.1 → dirsql-0.4.2}/dirsql/cli/discover_plugins/discovered_fragments.py +0 -0
  17. {dirsql-0.4.1 → dirsql-0.4.2}/dirsql/cli/discover_plugins/discovery_disabled.py +0 -0
  18. {dirsql-0.4.1 → dirsql-0.4.2}/dirsql/cli/discover_plugins/fragment_path.py +0 -0
  19. {dirsql-0.4.1 → dirsql-0.4.2}/dirsql/cli/discover_plugins/user_passed_config.py +0 -0
  20. {dirsql-0.4.1 → dirsql-0.4.2}/dirsql/cli/discover_plugins/with_discovered_plugins.py +0 -0
  21. {dirsql-0.4.1 → dirsql-0.4.2}/dirsql/cli/is_windows.py +0 -0
  22. {dirsql-0.4.1 → dirsql-0.4.2}/dirsql/cli/main.py +0 -0
  23. {dirsql-0.4.1 → dirsql-0.4.2}/dirsql/cli/resolve_config_extensions.py +0 -0
  24. {dirsql-0.4.1 → dirsql-0.4.2}/dirsql/py.typed +0 -0
  25. {dirsql-0.4.1 → dirsql-0.4.2}/dirsql/resolve_config_extensions.py +0 -0
  26. {dirsql-0.4.1 → dirsql-0.4.2}/dirsql/resolve_extension.py +0 -0
  27. {dirsql-0.4.1 → dirsql-0.4.2}/docs/.claude/CLAUDE.md +0 -0
  28. {dirsql-0.4.1 → dirsql-0.4.2}/docs/.vitepress/config.ts +0 -0
  29. {dirsql-0.4.1 → dirsql-0.4.2}/docs/.vitepress/theme/index.ts +0 -0
  30. {dirsql-0.4.1 → dirsql-0.4.2}/docs/.vitepress/theme/lang.ts +0 -0
  31. {dirsql-0.4.1 → dirsql-0.4.2}/docs/AGENTS.md +0 -0
  32. {dirsql-0.4.1 → dirsql-0.4.2}/docs/explanation.md +0 -0
  33. {dirsql-0.4.1 → dirsql-0.4.2}/docs/getting-started.md +0 -0
  34. {dirsql-0.4.1 → dirsql-0.4.2}/docs/howto/columns-from-paths.md +0 -0
  35. {dirsql-0.4.1 → dirsql-0.4.2}/docs/howto/define-tables.md +0 -0
  36. {dirsql-0.4.1 → dirsql-0.4.2}/docs/howto/embed.md +0 -0
  37. {dirsql-0.4.1 → dirsql-0.4.2}/docs/howto/extract-from-contents.md +0 -0
  38. {dirsql-0.4.1 → dirsql-0.4.2}/docs/howto/load-extension.md +0 -0
  39. {dirsql-0.4.1 → dirsql-0.4.2}/docs/howto/parse-files-into-columns.md +0 -0
  40. {dirsql-0.4.1 → dirsql-0.4.2}/docs/howto/persist.md +0 -0
  41. {dirsql-0.4.1 → dirsql-0.4.2}/docs/howto/query-without-config.md +0 -0
  42. {dirsql-0.4.1 → dirsql-0.4.2}/docs/howto/react-to-changes.md +0 -0
  43. {dirsql-0.4.1 → dirsql-0.4.2}/docs/howto/search-by-meaning.md +0 -0
  44. {dirsql-0.4.1 → dirsql-0.4.2}/docs/howto/skip-files.md +0 -0
  45. {dirsql-0.4.1 → dirsql-0.4.2}/docs/howto/write-a-plugin.md +0 -0
  46. {dirsql-0.4.1 → dirsql-0.4.2}/docs/index.md +0 -0
  47. {dirsql-0.4.1 → dirsql-0.4.2}/docs/migrations.md +0 -0
  48. {dirsql-0.4.1 → dirsql-0.4.2}/docs/package.json +0 -0
  49. {dirsql-0.4.1 → dirsql-0.4.2}/docs/pnpm-lock.yaml +0 -0
  50. {dirsql-0.4.1 → dirsql-0.4.2}/docs/pnpm-workspace.yaml +0 -0
  51. {dirsql-0.4.1 → dirsql-0.4.2}/docs/reference/cli.md +0 -0
  52. {dirsql-0.4.1 → dirsql-0.4.2}/docs/reference/columns.md +0 -0
  53. {dirsql-0.4.1 → dirsql-0.4.2}/docs/reference/config.md +0 -0
  54. {dirsql-0.4.1 → dirsql-0.4.2}/docs/reference/hooks.md +0 -0
  55. {dirsql-0.4.1 → dirsql-0.4.2}/docs/reference/http-api.md +0 -0
  56. {dirsql-0.4.1 → dirsql-0.4.2}/docs/reference/path-tables.md +0 -0
  57. {dirsql-0.4.1 → dirsql-0.4.2}/docs/reference/sdk.md +0 -0
  58. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/CHANGELOG.md +0 -0
  59. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/MIGRATIONS.md +0 -0
  60. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/README.md +0 -0
  61. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/changelog.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
  62. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/changelog.d/2026-07-13-plugin-discovery.md +0 -0
  63. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/changelog.d/2026-07-13-rename-extract-to-on-file.md +0 -0
  64. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/changelog.d/2026-07-13-repeatable-config.md +0 -0
  65. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/changelog.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
  66. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/changelog.d/2026-07-20-drop-implicit-files-table.md +0 -0
  67. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/changelog.d/2026-07-21-remove-glob-captures.md +0 -0
  68. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/changelog.d/2026-07-24-hookless-table-config-error.md +0 -0
  69. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/changelog.d/2026-07-24-remove-stat-fact-injection.md +0 -0
  70. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/changelog.d/2026-07-29-restore-python-310.md +0 -0
  71. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/changelog.d/README.md +0 -0
  72. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/conftest.py +0 -0
  73. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/docs/.claude/CLAUDE.md +0 -0
  74. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/docs/.vitepress/config.ts +0 -0
  75. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/docs/.vitepress/theme/index.ts +0 -0
  76. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/docs/.vitepress/theme/lang.ts +0 -0
  77. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/docs/AGENTS.md +0 -0
  78. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/docs/explanation.md +0 -0
  79. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/docs/getting-started.md +0 -0
  80. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/docs/howto/columns-from-paths.md +0 -0
  81. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/docs/howto/define-tables.md +0 -0
  82. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/docs/howto/embed.md +0 -0
  83. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/docs/howto/extract-from-contents.md +0 -0
  84. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/docs/howto/load-extension.md +0 -0
  85. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/docs/howto/parse-files-into-columns.md +0 -0
  86. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/docs/howto/persist.md +0 -0
  87. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/docs/howto/query-without-config.md +0 -0
  88. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/docs/howto/react-to-changes.md +0 -0
  89. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/docs/howto/search-by-meaning.md +0 -0
  90. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/docs/howto/skip-files.md +0 -0
  91. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/docs/howto/write-a-plugin.md +0 -0
  92. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/docs/index.md +0 -0
  93. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/docs/migrations.md +0 -0
  94. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/docs/package.json +0 -0
  95. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/docs/pnpm-lock.yaml +0 -0
  96. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/docs/pnpm-workspace.yaml +0 -0
  97. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/docs/reference/cli.md +0 -0
  98. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/docs/reference/columns.md +0 -0
  99. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/docs/reference/config.md +0 -0
  100. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/docs/reference/hooks.md +0 -0
  101. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/docs/reference/http-api.md +0 -0
  102. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/docs/reference/path-tables.md +0 -0
  103. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/docs/reference/sdk.md +0 -0
  104. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/migrations.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
  105. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/migrations.d/2026-07-13-rename-extract-to-on-file.md +0 -0
  106. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/migrations.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
  107. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/migrations.d/2026-07-20-drop-implicit-files-table.md +0 -0
  108. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/migrations.d/2026-07-21-remove-glob-captures.md +0 -0
  109. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/migrations.d/2026-07-24-hookless-table-config-error.md +0 -0
  110. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/migrations.d/2026-07-24-remove-stat-fact-injection.md +0 -0
  111. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/migrations.d/2026-07-29-restore-python-310.md +0 -0
  112. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/migrations.d/README.md +0 -0
  113. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/src/lib.rs +0 -0
  114. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/tests/__init__.py +0 -0
  115. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/tests/conftest.py +0 -0
  116. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/tests/e2e/__init__.py +0 -0
  117. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/__init__.py +0 -0
  118. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/dirsql.toml +0 -0
  119. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/tests/integration/__init__.py +0 -0
  120. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/tests/integration/binding/__init__.py +0 -0
  121. {dirsql-0.4.1 → dirsql-0.4.2}/packages/python/tests/integration/hermetic/__init__.py +0 -0
  122. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/CHANGELOG.md +0 -0
  123. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/Cargo.toml +0 -0
  124. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/MIGRATIONS.md +0 -0
  125. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/README.md +0 -0
  126. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/benches/db_bench.rs +0 -0
  127. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/benches/differ_bench.rs +0 -0
  128. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/benches/matcher_bench.rs +0 -0
  129. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/benches/scanner_bench.rs +0 -0
  130. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/changelog.d/2026-07-13-batch-ingest-transaction.md +0 -0
  131. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/changelog.d/2026-07-13-chained-pre-post-query-hooks.md +0 -0
  132. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/changelog.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
  133. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/changelog.d/2026-07-13-fan-out-file-table-matching.md +0 -0
  134. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/changelog.d/2026-07-13-persist-wal.md +0 -0
  135. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/changelog.d/2026-07-13-rename-extract-to-on-file.md +0 -0
  136. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/changelog.d/2026-07-13-repeatable-builder-config.md +0 -0
  137. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/changelog.d/2026-07-13-repeatable-cli-config.md +0 -0
  138. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/changelog.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
  139. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/changelog.d/2026-07-13-subcommand-local-config-flags.md +0 -0
  140. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/changelog.d/2026-07-19-path-table-query-fallback.md +0 -0
  141. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/changelog.d/2026-07-19-path-table-vtab.md +0 -0
  142. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/changelog.d/2026-07-20-drop-implicit-files-table.md +0 -0
  143. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/changelog.d/2026-07-20-path-table-glob-semantics.md +0 -0
  144. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/changelog.d/2026-07-20-schema-inference.md +0 -0
  145. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/changelog.d/2026-07-21-on-file-flag.md +0 -0
  146. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/changelog.d/2026-07-21-remove-glob-captures.md +0 -0
  147. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/changelog.d/2026-07-23-init-escalation-example.md +0 -0
  148. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/changelog.d/2026-07-23-query-default-cli.md +0 -0
  149. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/changelog.d/2026-07-24-hookless-table-config-error.md +0 -0
  150. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/changelog.d/2026-07-24-remove-stat-fact-injection.md +0 -0
  151. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/changelog.d/README.md +0 -0
  152. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/docs/explanation.md +0 -0
  153. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/docs/getting-started.md +0 -0
  154. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/docs/howto/columns-from-paths.md +0 -0
  155. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/docs/howto/define-tables.md +0 -0
  156. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/docs/howto/embed.md +0 -0
  157. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/docs/howto/extract-from-contents.md +0 -0
  158. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/docs/howto/load-extension.md +0 -0
  159. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/docs/howto/parse-files-into-columns.md +0 -0
  160. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/docs/howto/persist.md +0 -0
  161. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/docs/howto/query-without-config.md +0 -0
  162. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/docs/howto/react-to-changes.md +0 -0
  163. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/docs/howto/search-by-meaning.md +0 -0
  164. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/docs/howto/skip-files.md +0 -0
  165. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/docs/howto/write-a-plugin.md +0 -0
  166. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/docs/index.md +0 -0
  167. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/docs/migrations.md +0 -0
  168. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/docs/reference/cli.md +0 -0
  169. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/docs/reference/columns.md +0 -0
  170. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/docs/reference/config.md +0 -0
  171. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/docs/reference/hooks.md +0 -0
  172. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/docs/reference/http-api.md +0 -0
  173. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/docs/reference/path-tables.md +0 -0
  174. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/docs/reference/sdk.md +0 -0
  175. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/migrations.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
  176. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/migrations.d/2026-07-13-fan-out-file-table-matching.md +0 -0
  177. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/migrations.d/2026-07-13-persist-wal.md +0 -0
  178. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/migrations.d/2026-07-13-rename-extract-to-on-file.md +0 -0
  179. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/migrations.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
  180. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/migrations.d/2026-07-13-subcommand-local-config-flags.md +0 -0
  181. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/migrations.d/2026-07-20-drop-implicit-files-table.md +0 -0
  182. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/migrations.d/2026-07-20-path-table-glob-semantics.md +0 -0
  183. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/migrations.d/2026-07-21-remove-glob-captures.md +0 -0
  184. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/migrations.d/2026-07-23-init-escalation-example.md +0 -0
  185. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/migrations.d/2026-07-23-query-default-cli.md +0 -0
  186. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/migrations.d/2026-07-24-hookless-table-config-error.md +0 -0
  187. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/migrations.d/2026-07-24-remove-stat-fact-injection.md +0 -0
  188. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/migrations.d/README.md +0 -0
  189. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/src/bin/dirsql.rs +0 -0
  190. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/src/cli/execute.rs +0 -0
  191. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/src/cli/init.rs +0 -0
  192. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/src/cli/mod.rs +0 -0
  193. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/src/cli/router.rs +0 -0
  194. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/src/cli/serialize.rs +0 -0
  195. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/src/cli/server.rs +0 -0
  196. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/src/command.rs +0 -0
  197. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/src/config.rs +0 -0
  198. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/src/db.rs +0 -0
  199. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/src/default_config.toml +0 -0
  200. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/src/differ.rs +0 -0
  201. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/src/infer.rs +0 -0
  202. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/src/matcher.rs +0 -0
  203. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/src/parsed_vtab.rs +0 -0
  204. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/src/path_table.rs +0 -0
  205. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/src/persist.rs +0 -0
  206. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/src/scanner.rs +0 -0
  207. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/src/vtab.rs +0 -0
  208. {dirsql-0.4.1 → dirsql-0.4.2}/packages/rust/src/watcher.rs +0 -0
  209. {dirsql-0.4.1 → dirsql-0.4.2}/pyproject.toml +0 -0
@@ -500,7 +500,7 @@ dependencies = [
500
500
 
501
501
  [[package]]
502
502
  name = "dirsql-py-ext"
503
- version = "0.4.1"
503
+ version = "0.4.2"
504
504
  dependencies = [
505
505
  "dirsql",
506
506
  "pyo3",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dirsql
3
- Version: 0.4.1
3
+ Version: 0.4.2
4
4
  Requires-Dist: tomli>=2 ; python_full_version < '3.11'
5
5
  Summary: Ephemeral SQL index over a local directory
6
6
  Keywords: sql,filesystem,directory,sqlite,index
@@ -4,7 +4,7 @@ name = "dirsql-py-ext"
4
4
  # pypi/maturin handler can rewrite it via `write-version` before
5
5
  # `maturin build`. `pyproject.toml` declares `dynamic = ["version"]`
6
6
  # and maturin reads this field. Mirrors `packages/rust/Cargo.toml`.
7
- version = "0.4.1"
7
+ version = "0.4.2"
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,7 @@
1
+ {
2
+ "command": "uv run python -m pytest tests/e2e/ -x -q",
3
+ "ran_at": 1785444370,
4
+ "exit_code": 0,
5
+ "commit": "287fb980b2380a894543a652a0439f6ab8ea71cf",
6
+ "branch": "claude/710-accumulate-onfile"
7
+ }
@@ -0,0 +1,8 @@
1
+ **Changed** — a scan now attempts every matched file instead of stopping at the
2
+ first whose `on-file` hook fails, and reports every failure rather than only the
3
+ first. A single failure still raises `DirSqlError::OnFile` unchanged; several
4
+ now raise a new `DirSqlError::OnFileMany` carrying one `OnFileFailure { path,
5
+ message }` per file.
6
+
7
+ A scan with failures still fails and still leaves the cache exactly as it was —
8
+ only the reporting improved. Committing a partial index is tracked in #697.
@@ -78,6 +78,16 @@ pub const DEFAULT_CONFIG_TOML: &str = include_str!("default_config.toml");
78
78
  type BoxError = Box<dyn StdError + Send + Sync + 'static>;
79
79
  type OnFileFn = dyn Fn(&str) -> std::result::Result<Vec<Row>, BoxError> + Send + Sync + 'static;
80
80
 
81
+ /// One file whose on-file hook failed, carried so a scan can report every
82
+ /// failure rather than only whichever came first.
83
+ #[derive(Debug, Clone, PartialEq, Eq)]
84
+ pub struct OnFileFailure {
85
+ /// Path relative to the scan root.
86
+ pub path: String,
87
+ /// The hook's error, as rendered by its `Display`.
88
+ pub message: String,
89
+ }
90
+
81
91
  #[derive(Debug, Error)]
82
92
  pub enum DirSqlError {
83
93
  #[error(transparent)]
@@ -122,6 +132,20 @@ pub enum DirSqlError {
122
132
  #[error("on-file error for {path}: {message}")]
123
133
  OnFile { path: String, message: String },
124
134
 
135
+ /// Several files' on-file hooks failed during one scan. A scan attempts
136
+ /// every matched file, so more than one can fail; reporting only the first
137
+ /// would make the rest invisible until it was fixed and the scan re-run.
138
+ #[error(
139
+ "{} files failed their on-file hook:\n{}",
140
+ .failures.len(),
141
+ .failures
142
+ .iter()
143
+ .map(|OnFileFailure { path, message }| format!(" {path}: {message}"))
144
+ .collect::<Vec<_>>()
145
+ .join("\n")
146
+ )]
147
+ OnFileMany { failures: Vec<OnFileFailure> },
148
+
125
149
  #[error("config error: {message}")]
126
150
  Config {
127
151
  message: String,
@@ -816,6 +840,7 @@ impl DirSQL {
816
840
  }
817
841
 
818
842
  let snapshot_ns = now_ns();
843
+ let mut on_file_failures: Vec<OnFileFailure> = Vec::new();
819
844
  for ScannedFile {
820
845
  rel_path,
821
846
  table_name,
@@ -827,11 +852,20 @@ impl DirSQL {
827
852
  })?;
828
853
  let strict = *strict_map.get(&table_name).unwrap_or(&false);
829
854
  let abs_path = root.join(&rel_path);
830
- let raw_rows =
831
- on_file(&abs_path.to_string_lossy()).map_err(|e| DirSqlError::OnFile {
832
- path: rel_path.clone(),
833
- message: e.to_string(),
834
- })?;
855
+ // A hook failure is this file's problem, not the scan's: record it
856
+ // and keep going, so one unreadable file cannot hide the state of
857
+ // every file after it. The collected failures still fail the build
858
+ // below -- whether a partial index commits is dirsql#697.
859
+ let raw_rows = match on_file(&abs_path.to_string_lossy()) {
860
+ Ok(rows) => rows,
861
+ Err(e) => {
862
+ on_file_failures.push(OnFileFailure {
863
+ path: rel_path.clone(),
864
+ message: e.to_string(),
865
+ });
866
+ continue;
867
+ }
868
+ };
835
869
 
836
870
  // When updating an existing file in the persistent cache, drop
837
871
  // its old rows before inserting the new ones.
@@ -870,6 +904,27 @@ impl DirSQL {
870
904
  write_meta(db.conn(), meta).map_err(DirSqlError::sqlite)?;
871
905
  }
872
906
 
907
+ // Returning before the commit drops `_tx`, so a scan with failures
908
+ // still leaves the cache exactly as it was -- the pre-existing
909
+ // behavior. The single-failure case keeps its original error verbatim;
910
+ // only the multi-failure case reports more than it used to. Whether a
911
+ // partial index should commit instead is dirsql#697.
912
+ match on_file_failures.len() {
913
+ 0 => {}
914
+ 1 => {
915
+ let only = on_file_failures.remove(0);
916
+ return Err(DirSqlError::OnFile {
917
+ path: only.path,
918
+ message: only.message,
919
+ });
920
+ }
921
+ _ => {
922
+ return Err(DirSqlError::OnFileMany {
923
+ failures: on_file_failures,
924
+ });
925
+ }
926
+ }
927
+
873
928
  // Commit the ingest transaction.
874
929
  _tx.commit().map_err(DirSqlError::sqlite)?;
875
930
 
@@ -1,7 +0,0 @@
1
- {
2
- "command": "uv run python -m pytest tests/e2e/ -x -q",
3
- "ran_at": 1785328821,
4
- "exit_code": 0,
5
- "commit": "a133d0f16d5e9d1b3892b3854f52eac535a9012f",
6
- "branch": "claude/tackle-698-bz6ere"
7
- }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes