dirsql 0.4.10__tar.gz → 0.4.12__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 (226) hide show
  1. {dirsql-0.4.10 → dirsql-0.4.12}/Cargo.lock +1 -1
  2. {dirsql-0.4.10 → dirsql-0.4.12}/PKG-INFO +1 -1
  3. {dirsql-0.4.10 → dirsql-0.4.12}/docs/plugins.md +3 -3
  4. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/Cargo.toml +13 -1
  5. dirsql-0.4.12/packages/python/changelog.d/2026-08-03-manylinux-dynamic-binary.md +9 -0
  6. {dirsql-0.4.10/packages/rust → dirsql-0.4.12/packages/python}/docs/plugins.md +3 -3
  7. dirsql-0.4.12/packages/python/e2e-attestations/claude-763-forbid-unsafe.json +7 -0
  8. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/Cargo.toml +14 -0
  9. {dirsql-0.4.10/packages/python → dirsql-0.4.12/packages/rust}/docs/plugins.md +3 -3
  10. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/src/db.rs +4 -0
  11. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/src/parsed_vtab.rs +5 -0
  12. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/src/vtab.rs +5 -0
  13. {dirsql-0.4.10 → dirsql-0.4.12}/Cargo.toml +0 -0
  14. {dirsql-0.4.10 → dirsql-0.4.12}/README.md +0 -0
  15. {dirsql-0.4.10 → dirsql-0.4.12}/dirsql/__init__.py +0 -0
  16. {dirsql-0.4.10 → dirsql-0.4.12}/dirsql/_async.py +0 -0
  17. {dirsql-0.4.10 → dirsql-0.4.12}/dirsql/_dirsql.pyi +0 -0
  18. {dirsql-0.4.10 → dirsql-0.4.12}/dirsql/cli/__init__.py +0 -0
  19. {dirsql-0.4.10 → dirsql-0.4.12}/dirsql/cli/binary_path.py +0 -0
  20. {dirsql-0.4.10 → dirsql-0.4.12}/dirsql/cli/discover_plugins/__init__.py +0 -0
  21. {dirsql-0.4.10 → dirsql-0.4.12}/dirsql/cli/discover_plugins/discovered_fragments.py +0 -0
  22. {dirsql-0.4.10 → dirsql-0.4.12}/dirsql/cli/discover_plugins/discovery_disabled.py +0 -0
  23. {dirsql-0.4.10 → dirsql-0.4.12}/dirsql/cli/discover_plugins/fragment_path.py +0 -0
  24. {dirsql-0.4.10 → dirsql-0.4.12}/dirsql/cli/discover_plugins/user_passed_config.py +0 -0
  25. {dirsql-0.4.10 → dirsql-0.4.12}/dirsql/cli/discover_plugins/with_discovered_plugins.py +0 -0
  26. {dirsql-0.4.10 → dirsql-0.4.12}/dirsql/cli/is_windows.py +0 -0
  27. {dirsql-0.4.10 → dirsql-0.4.12}/dirsql/cli/main.py +0 -0
  28. {dirsql-0.4.10 → dirsql-0.4.12}/dirsql/cli/resolve_config_extensions.py +0 -0
  29. {dirsql-0.4.10 → dirsql-0.4.12}/dirsql/py.typed +0 -0
  30. {dirsql-0.4.10 → dirsql-0.4.12}/dirsql/resolve_config_extensions.py +0 -0
  31. {dirsql-0.4.10 → dirsql-0.4.12}/dirsql/resolve_extension.py +0 -0
  32. {dirsql-0.4.10 → dirsql-0.4.12}/docs/.claude/CLAUDE.md +0 -0
  33. {dirsql-0.4.10 → dirsql-0.4.12}/docs/.vitepress/config.ts +0 -0
  34. {dirsql-0.4.10 → dirsql-0.4.12}/docs/.vitepress/theme/index.ts +0 -0
  35. {dirsql-0.4.10 → dirsql-0.4.12}/docs/.vitepress/theme/lang.ts +0 -0
  36. {dirsql-0.4.10 → dirsql-0.4.12}/docs/AGENTS.md +0 -0
  37. {dirsql-0.4.10 → dirsql-0.4.12}/docs/explanation.md +0 -0
  38. {dirsql-0.4.10 → dirsql-0.4.12}/docs/getting-started.md +0 -0
  39. {dirsql-0.4.10 → dirsql-0.4.12}/docs/howto/columns-from-paths.md +0 -0
  40. {dirsql-0.4.10 → dirsql-0.4.12}/docs/howto/define-tables.md +0 -0
  41. {dirsql-0.4.10 → dirsql-0.4.12}/docs/howto/embed.md +0 -0
  42. {dirsql-0.4.10 → dirsql-0.4.12}/docs/howto/extract-from-contents.md +0 -0
  43. {dirsql-0.4.10 → dirsql-0.4.12}/docs/howto/load-extension.md +0 -0
  44. {dirsql-0.4.10 → dirsql-0.4.12}/docs/howto/parse-files-into-columns.md +0 -0
  45. {dirsql-0.4.10 → dirsql-0.4.12}/docs/howto/persist.md +0 -0
  46. {dirsql-0.4.10 → dirsql-0.4.12}/docs/howto/query-without-config.md +0 -0
  47. {dirsql-0.4.10 → dirsql-0.4.12}/docs/howto/react-to-changes.md +0 -0
  48. {dirsql-0.4.10 → dirsql-0.4.12}/docs/howto/search-by-meaning.md +0 -0
  49. {dirsql-0.4.10 → dirsql-0.4.12}/docs/howto/skip-files.md +0 -0
  50. {dirsql-0.4.10 → dirsql-0.4.12}/docs/howto/write-a-plugin.md +0 -0
  51. {dirsql-0.4.10 → dirsql-0.4.12}/docs/index.md +0 -0
  52. {dirsql-0.4.10 → dirsql-0.4.12}/docs/migrations.md +0 -0
  53. {dirsql-0.4.10 → dirsql-0.4.12}/docs/package.json +0 -0
  54. {dirsql-0.4.10 → dirsql-0.4.12}/docs/pnpm-lock.yaml +0 -0
  55. {dirsql-0.4.10 → dirsql-0.4.12}/docs/pnpm-workspace.yaml +0 -0
  56. {dirsql-0.4.10 → dirsql-0.4.12}/docs/reference/cli.md +0 -0
  57. {dirsql-0.4.10 → dirsql-0.4.12}/docs/reference/columns.md +0 -0
  58. {dirsql-0.4.10 → dirsql-0.4.12}/docs/reference/config.md +0 -0
  59. {dirsql-0.4.10 → dirsql-0.4.12}/docs/reference/hooks.md +0 -0
  60. {dirsql-0.4.10 → dirsql-0.4.12}/docs/reference/http-api.md +0 -0
  61. {dirsql-0.4.10 → dirsql-0.4.12}/docs/reference/path-tables.md +0 -0
  62. {dirsql-0.4.10 → dirsql-0.4.12}/docs/reference/sdk.md +0 -0
  63. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/CHANGELOG.md +0 -0
  64. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/MIGRATIONS.md +0 -0
  65. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/README.md +0 -0
  66. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/changelog.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
  67. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/changelog.d/2026-07-13-plugin-discovery.md +0 -0
  68. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/changelog.d/2026-07-13-rename-extract-to-on-file.md +0 -0
  69. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/changelog.d/2026-07-13-repeatable-config.md +0 -0
  70. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/changelog.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
  71. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/changelog.d/2026-07-20-drop-implicit-files-table.md +0 -0
  72. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/changelog.d/2026-07-21-remove-glob-captures.md +0 -0
  73. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/changelog.d/2026-07-24-hookless-table-config-error.md +0 -0
  74. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/changelog.d/2026-07-24-remove-stat-fact-injection.md +0 -0
  75. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/changelog.d/2026-07-29-restore-python-310.md +0 -0
  76. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/changelog.d/2026-08-02-release-profile.md +0 -0
  77. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/changelog.d/2026-08-02-scan-failures.md +0 -0
  78. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/changelog.d/2026-08-03-discovery-ext-resolution.md +0 -0
  79. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/changelog.d/2026-08-03-python-no-ignore.md +0 -0
  80. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/changelog.d/README.md +0 -0
  81. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/conftest.py +0 -0
  82. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/docs/.claude/CLAUDE.md +0 -0
  83. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/docs/.vitepress/config.ts +0 -0
  84. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/docs/.vitepress/theme/index.ts +0 -0
  85. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/docs/.vitepress/theme/lang.ts +0 -0
  86. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/docs/AGENTS.md +0 -0
  87. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/docs/explanation.md +0 -0
  88. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/docs/getting-started.md +0 -0
  89. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/docs/howto/columns-from-paths.md +0 -0
  90. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/docs/howto/define-tables.md +0 -0
  91. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/docs/howto/embed.md +0 -0
  92. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/docs/howto/extract-from-contents.md +0 -0
  93. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/docs/howto/load-extension.md +0 -0
  94. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/docs/howto/parse-files-into-columns.md +0 -0
  95. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/docs/howto/persist.md +0 -0
  96. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/docs/howto/query-without-config.md +0 -0
  97. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/docs/howto/react-to-changes.md +0 -0
  98. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/docs/howto/search-by-meaning.md +0 -0
  99. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/docs/howto/skip-files.md +0 -0
  100. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/docs/howto/write-a-plugin.md +0 -0
  101. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/docs/index.md +0 -0
  102. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/docs/migrations.md +0 -0
  103. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/docs/package.json +0 -0
  104. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/docs/pnpm-lock.yaml +0 -0
  105. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/docs/pnpm-workspace.yaml +0 -0
  106. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/docs/reference/cli.md +0 -0
  107. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/docs/reference/columns.md +0 -0
  108. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/docs/reference/config.md +0 -0
  109. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/docs/reference/hooks.md +0 -0
  110. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/docs/reference/http-api.md +0 -0
  111. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/docs/reference/path-tables.md +0 -0
  112. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/docs/reference/sdk.md +0 -0
  113. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/e2e-attestations/feat-745-python-no-ignore.json +0 -0
  114. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/e2e-attestations/fix-754-discovery-ext-resolution.json +0 -0
  115. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/migrations.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
  116. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/migrations.d/2026-07-13-rename-extract-to-on-file.md +0 -0
  117. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/migrations.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
  118. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/migrations.d/2026-07-20-drop-implicit-files-table.md +0 -0
  119. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/migrations.d/2026-07-21-remove-glob-captures.md +0 -0
  120. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/migrations.d/2026-07-24-hookless-table-config-error.md +0 -0
  121. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/migrations.d/2026-07-24-remove-stat-fact-injection.md +0 -0
  122. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/migrations.d/2026-07-29-restore-python-310.md +0 -0
  123. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/migrations.d/README.md +0 -0
  124. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/src/lib.rs +0 -0
  125. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/tests/__init__.py +0 -0
  126. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/tests/conftest.py +0 -0
  127. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/tests/e2e/__init__.py +0 -0
  128. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/__init__.py +0 -0
  129. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/dirsql.toml +0 -0
  130. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/tests/integration/__init__.py +0 -0
  131. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/tests/integration/binding/__init__.py +0 -0
  132. {dirsql-0.4.10 → dirsql-0.4.12}/packages/python/tests/integration/hermetic/__init__.py +0 -0
  133. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/CHANGELOG.md +0 -0
  134. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/MIGRATIONS.md +0 -0
  135. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/README.md +0 -0
  136. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/benches/db_bench.rs +0 -0
  137. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/benches/differ_bench.rs +0 -0
  138. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/benches/matcher_bench.rs +0 -0
  139. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/benches/scanner_bench.rs +0 -0
  140. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/changelog.d/2026-07-13-batch-ingest-transaction.md +0 -0
  141. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/changelog.d/2026-07-13-chained-pre-post-query-hooks.md +0 -0
  142. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/changelog.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
  143. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/changelog.d/2026-07-13-fan-out-file-table-matching.md +0 -0
  144. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/changelog.d/2026-07-13-persist-wal.md +0 -0
  145. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/changelog.d/2026-07-13-rename-extract-to-on-file.md +0 -0
  146. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/changelog.d/2026-07-13-repeatable-builder-config.md +0 -0
  147. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/changelog.d/2026-07-13-repeatable-cli-config.md +0 -0
  148. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/changelog.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
  149. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/changelog.d/2026-07-13-subcommand-local-config-flags.md +0 -0
  150. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/changelog.d/2026-07-19-path-table-query-fallback.md +0 -0
  151. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/changelog.d/2026-07-19-path-table-vtab.md +0 -0
  152. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/changelog.d/2026-07-20-drop-implicit-files-table.md +0 -0
  153. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/changelog.d/2026-07-20-path-table-glob-semantics.md +0 -0
  154. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/changelog.d/2026-07-20-schema-inference.md +0 -0
  155. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/changelog.d/2026-07-21-on-file-flag.md +0 -0
  156. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/changelog.d/2026-07-21-remove-glob-captures.md +0 -0
  157. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/changelog.d/2026-07-23-init-escalation-example.md +0 -0
  158. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/changelog.d/2026-07-23-query-default-cli.md +0 -0
  159. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/changelog.d/2026-07-24-hookless-table-config-error.md +0 -0
  160. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/changelog.d/2026-07-24-remove-stat-fact-injection.md +0 -0
  161. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/changelog.d/2026-07-29-on-file-failures-accumulate.md +0 -0
  162. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/changelog.d/2026-08-02-drop-regex.md +0 -0
  163. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/changelog.d/2026-08-02-per-file-scan-failures.md +0 -0
  164. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/changelog.d/2026-08-02-release-profile.md +0 -0
  165. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/changelog.d/2026-08-03-gitignore-by-default.md +0 -0
  166. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/changelog.d/2026-08-03-nested-default-ignores.md +0 -0
  167. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/changelog.d/README.md +0 -0
  168. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/docs/explanation.md +0 -0
  169. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/docs/getting-started.md +0 -0
  170. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/docs/howto/columns-from-paths.md +0 -0
  171. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/docs/howto/define-tables.md +0 -0
  172. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/docs/howto/embed.md +0 -0
  173. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/docs/howto/extract-from-contents.md +0 -0
  174. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/docs/howto/load-extension.md +0 -0
  175. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/docs/howto/parse-files-into-columns.md +0 -0
  176. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/docs/howto/persist.md +0 -0
  177. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/docs/howto/query-without-config.md +0 -0
  178. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/docs/howto/react-to-changes.md +0 -0
  179. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/docs/howto/search-by-meaning.md +0 -0
  180. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/docs/howto/skip-files.md +0 -0
  181. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/docs/howto/write-a-plugin.md +0 -0
  182. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/docs/index.md +0 -0
  183. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/docs/migrations.md +0 -0
  184. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/docs/reference/cli.md +0 -0
  185. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/docs/reference/columns.md +0 -0
  186. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/docs/reference/config.md +0 -0
  187. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/docs/reference/hooks.md +0 -0
  188. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/docs/reference/http-api.md +0 -0
  189. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/docs/reference/path-tables.md +0 -0
  190. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/docs/reference/sdk.md +0 -0
  191. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/migrations.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
  192. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/migrations.d/2026-07-13-fan-out-file-table-matching.md +0 -0
  193. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/migrations.d/2026-07-13-persist-wal.md +0 -0
  194. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/migrations.d/2026-07-13-rename-extract-to-on-file.md +0 -0
  195. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/migrations.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
  196. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/migrations.d/2026-07-13-subcommand-local-config-flags.md +0 -0
  197. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/migrations.d/2026-07-20-drop-implicit-files-table.md +0 -0
  198. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/migrations.d/2026-07-20-path-table-glob-semantics.md +0 -0
  199. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/migrations.d/2026-07-21-remove-glob-captures.md +0 -0
  200. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/migrations.d/2026-07-23-init-escalation-example.md +0 -0
  201. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/migrations.d/2026-07-23-query-default-cli.md +0 -0
  202. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/migrations.d/2026-07-24-hookless-table-config-error.md +0 -0
  203. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/migrations.d/2026-07-24-remove-stat-fact-injection.md +0 -0
  204. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/migrations.d/2026-08-02-per-file-scan-failures.md +0 -0
  205. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/migrations.d/2026-08-03-gitignore-by-default.md +0 -0
  206. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/migrations.d/2026-08-03-nested-default-ignores.md +0 -0
  207. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/migrations.d/README.md +0 -0
  208. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/src/bin/dirsql.rs +0 -0
  209. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/src/cli/execute.rs +0 -0
  210. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/src/cli/init.rs +0 -0
  211. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/src/cli/mod.rs +0 -0
  212. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/src/cli/router.rs +0 -0
  213. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/src/cli/serialize.rs +0 -0
  214. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/src/cli/server.rs +0 -0
  215. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/src/command.rs +0 -0
  216. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/src/config.rs +0 -0
  217. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/src/default_config.toml +0 -0
  218. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/src/differ.rs +0 -0
  219. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/src/infer.rs +0 -0
  220. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/src/lib.rs +0 -0
  221. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/src/matcher.rs +0 -0
  222. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/src/path_table.rs +0 -0
  223. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/src/persist.rs +0 -0
  224. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/src/scanner.rs +0 -0
  225. {dirsql-0.4.10 → dirsql-0.4.12}/packages/rust/src/watcher.rs +0 -0
  226. {dirsql-0.4.10 → dirsql-0.4.12}/pyproject.toml +0 -0
@@ -500,7 +500,7 @@ dependencies = [
500
500
 
501
501
  [[package]]
502
502
  name = "dirsql-py-ext"
503
- version = "0.4.10"
503
+ version = "0.4.12"
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.10
3
+ Version: 0.4.12
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
@@ -38,7 +38,7 @@ export DIRSQL_EMBEDDINGS_BASE_URL="https://api.openai.com"
38
38
  export DIRSQL_EMBEDDINGS_MODEL="text-embedding-3-small"
39
39
  export DIRSQL_EMBEDDINGS_API_KEY="sk-…"
40
40
 
41
- uvx --with dirsql-plugin-embeddings --with sqlite-vec dirsql server
41
+ uvx --with dirsql-plugin-embeddings dirsql server
42
42
  ```
43
43
 
44
44
  The launcher finds the package through its `dirsql` entry point and injects
@@ -46,7 +46,7 @@ the shipped `dirsql.toml` fragment as an ordinary `-c` flag, composed after
46
46
  your own configs. The fragment declares three things:
47
47
 
48
48
  - the `sqlite-vec` extension (resolved from the installed `sqlite-vec`
49
- package hence the second `--with`), for `vec_distance_cosine()`;
49
+ package, which the plugin depends on), for `vec_distance_cosine()`;
50
50
  - the `documents` table (`path`, `text`, `embedding`), whose
51
51
  [`on-file`](./reference/hooks.md#on-file) hook embeds each matched file at
52
52
  index time;
@@ -59,7 +59,7 @@ Ask a question as a `{"q": …}` body — via `POST /query` against the server,
59
59
  or in one shot from the shell:
60
60
 
61
61
  ```sh
62
- uvx --with dirsql-plugin-embeddings --with sqlite-vec \
62
+ uvx --with dirsql-plugin-embeddings \
63
63
  dirsql query '{"q": "how do I cook spaghetti?"}'
64
64
  # [{"path":"pasta.md","distance":0.113}, …]
65
65
  ```
@@ -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.10"
7
+ version = "0.4.12"
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
@@ -25,6 +25,18 @@ crate-type = ["cdylib", "rlib"]
25
25
  dirsql.workspace = true
26
26
  pyo3 = { version = "0.28", features = ["extension-module", "generate-import-lib", "abi3-py310"], optional = true }
27
27
 
28
+ # Opted in per-crate rather than via `[lints] workspace = true`: the workspace
29
+ # block also carries `clippy::pedantic`, which currently reports 475 warnings
30
+ # across the three crates and would fail `clippy -D warnings` immediately
31
+ # (#763).
32
+ #
33
+ # `deny`, not the workspace's aspirational `forbid`: pyo3's proc macros emit `#[allow(unsafe_code)]`, which `forbid`
34
+ # rejects outright (E0453).
35
+ # `deny` still blocks new hand-written `unsafe` unless a site opts in
36
+ # explicitly, which is the guarantee we want.
37
+ [lints.rust]
38
+ unsafe_code = "deny"
39
+
28
40
  [features]
29
41
  default = []
30
42
  extension-module = ["pyo3/extension-module"]
@@ -0,0 +1,9 @@
1
+ **Fixed** The manylinux wheel's bundled `dirsql` binary is now dynamically
2
+ linked against glibc instead of static-pie musl, so SQLite extension loading
3
+ (`[[dirsql.extension]]`, the embeddings plugin, `sqlite-vec`) works from the
4
+ published PyPI artifact. A static-pie binary cannot `dlopen`, so every
5
+ extension load failed with `Dynamic loading not supported` on Linux via
6
+ `pip`/`uvx`. The linking change lands in the release pipeline
7
+ (putitoutthere's `_matrix.yml` pypi `bundle_cli` lane); a PR-time
8
+ extension-load probe in `release-precheck.yml` guards against regression.
9
+ (#755)
@@ -38,7 +38,7 @@ export DIRSQL_EMBEDDINGS_BASE_URL="https://api.openai.com"
38
38
  export DIRSQL_EMBEDDINGS_MODEL="text-embedding-3-small"
39
39
  export DIRSQL_EMBEDDINGS_API_KEY="sk-…"
40
40
 
41
- uvx --with dirsql-plugin-embeddings --with sqlite-vec dirsql server
41
+ uvx --with dirsql-plugin-embeddings dirsql server
42
42
  ```
43
43
 
44
44
  The launcher finds the package through its `dirsql` entry point and injects
@@ -46,7 +46,7 @@ the shipped `dirsql.toml` fragment as an ordinary `-c` flag, composed after
46
46
  your own configs. The fragment declares three things:
47
47
 
48
48
  - the `sqlite-vec` extension (resolved from the installed `sqlite-vec`
49
- package hence the second `--with`), for `vec_distance_cosine()`;
49
+ package, which the plugin depends on), for `vec_distance_cosine()`;
50
50
  - the `documents` table (`path`, `text`, `embedding`), whose
51
51
  [`on-file`](./reference/hooks.md#on-file) hook embeds each matched file at
52
52
  index time;
@@ -59,7 +59,7 @@ Ask a question as a `{"q": …}` body — via `POST /query` against the server,
59
59
  or in one shot from the shell:
60
60
 
61
61
  ```sh
62
- uvx --with dirsql-plugin-embeddings --with sqlite-vec \
62
+ uvx --with dirsql-plugin-embeddings \
63
63
  dirsql query '{"q": "how do I cook spaghetti?"}'
64
64
  # [{"path":"pasta.md","distance":0.113}, …]
65
65
  ```
@@ -0,0 +1,7 @@
1
+ {
2
+ "command": "uv run python -m pytest tests/e2e/ -x -q",
3
+ "ran_at": 1785791343,
4
+ "exit_code": 0,
5
+ "commit": "b1b8d2b6b2a200ba4d4aa844221dd7b8e85da92c",
6
+ "branch": "claude/763-forbid-unsafe"
7
+ }
@@ -74,6 +74,20 @@ toml = "0.8"
74
74
  wait-timeout = "0.2"
75
75
  walkdir = "2"
76
76
 
77
+ # Opted in per-crate rather than via `[lints] workspace = true`: the workspace
78
+ # block also carries `clippy::pedantic`, which currently reports 475 warnings
79
+ # across the three crates and would fail `clippy -D warnings` immediately
80
+ # (#763). This is the lint whose absence actually mattered -- it forbids
81
+ # nothing until a crate opts in.
82
+ [lints.rust]
83
+ # `deny`, not `forbid`: rusqlite's API imposes five unavoidable `unsafe`
84
+ # sites (the `load_extension` guard and four `unsafe impl VTab`/`VTabCursor`).
85
+ # `forbid` cannot be overridden at all, so it would make the crate
86
+ # uncompilable; `deny` blocks new `unsafe` unless a site opts in explicitly
87
+ # with `#[expect(unsafe_code, reason = ...)]`, which is the guarantee we
88
+ # actually want (#763).
89
+ unsafe_code = "deny"
90
+
77
91
  [[bin]]
78
92
  name = "dirsql"
79
93
  path = "src/bin/dirsql.rs"
@@ -38,7 +38,7 @@ export DIRSQL_EMBEDDINGS_BASE_URL="https://api.openai.com"
38
38
  export DIRSQL_EMBEDDINGS_MODEL="text-embedding-3-small"
39
39
  export DIRSQL_EMBEDDINGS_API_KEY="sk-…"
40
40
 
41
- uvx --with dirsql-plugin-embeddings --with sqlite-vec dirsql server
41
+ uvx --with dirsql-plugin-embeddings dirsql server
42
42
  ```
43
43
 
44
44
  The launcher finds the package through its `dirsql` entry point and injects
@@ -46,7 +46,7 @@ the shipped `dirsql.toml` fragment as an ordinary `-c` flag, composed after
46
46
  your own configs. The fragment declares three things:
47
47
 
48
48
  - the `sqlite-vec` extension (resolved from the installed `sqlite-vec`
49
- package hence the second `--with`), for `vec_distance_cosine()`;
49
+ package, which the plugin depends on), for `vec_distance_cosine()`;
50
50
  - the `documents` table (`path`, `text`, `embedding`), whose
51
51
  [`on-file`](./reference/hooks.md#on-file) hook embeds each matched file at
52
52
  index time;
@@ -59,7 +59,7 @@ Ask a question as a `{"q": …}` body — via `POST /query` against the server,
59
59
  or in one shot from the shell:
60
60
 
61
61
  ```sh
62
- uvx --with dirsql-plugin-embeddings --with sqlite-vec \
62
+ uvx --with dirsql-plugin-embeddings \
63
63
  dirsql query '{"q": "how do I cook spaghetti?"}'
64
64
  # [{"path":"pasta.md","distance":0.113}, …]
65
65
  ```
@@ -327,6 +327,10 @@ impl Db {
327
327
  /// call via [`rusqlite::LoadExtensionGuard`] and disabled again on return,
328
328
  /// so the SQL `load_extension()` function is never left exposed to later
329
329
  /// queries. A missing or unloadable file surfaces as [`DbError::Sqlite`].
330
+ #[expect(
331
+ unsafe_code,
332
+ reason = "rusqlite's load_extension API is unsafe by design"
333
+ )]
330
334
  pub fn load_extension(&self, path: &Path, entrypoint: Option<&str>) -> Result<()> {
331
335
  // SAFETY: loading an extension executes native code from `path`. The
332
336
  // path is operator-supplied configuration (a `[[dirsql.extension]]`
@@ -198,6 +198,7 @@ struct ParsedTab {
198
198
  rows: Vec<JsonRow>,
199
199
  }
200
200
 
201
+ #[expect(unsafe_code, reason = "rusqlite requires VTab to be an unsafe trait")]
201
202
  unsafe impl<'vtab> VTab<'vtab> for ParsedTab {
202
203
  type Aux = ();
203
204
  type Cursor = ParsedTabCursor;
@@ -271,6 +272,10 @@ struct ParsedTabCursor {
271
272
  index: usize,
272
273
  }
273
274
 
275
+ #[expect(
276
+ unsafe_code,
277
+ reason = "rusqlite requires VTabCursor to be an unsafe trait"
278
+ )]
274
279
  unsafe impl VTabCursor for ParsedTabCursor {
275
280
  fn filter(
276
281
  &mut self,
@@ -197,6 +197,7 @@ struct PathTab {
197
197
  spec: Arc<ScanSpec>,
198
198
  }
199
199
 
200
+ #[expect(unsafe_code, reason = "rusqlite requires VTab to be an unsafe trait")]
200
201
  unsafe impl<'vtab> VTab<'vtab> for PathTab {
201
202
  type Aux = ();
202
203
  type Cursor = PathTabCursor;
@@ -250,6 +251,10 @@ struct PathTabCursor {
250
251
  index: usize,
251
252
  }
252
253
 
254
+ #[expect(
255
+ unsafe_code,
256
+ reason = "rusqlite requires VTabCursor to be an unsafe trait"
257
+ )]
253
258
  unsafe impl VTabCursor for PathTabCursor {
254
259
  fn filter(
255
260
  &mut self,
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