dirsql 0.4.12__tar.gz → 0.4.13__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 (229) hide show
  1. {dirsql-0.4.12 → dirsql-0.4.13}/Cargo.lock +1 -1
  2. {dirsql-0.4.12 → dirsql-0.4.13}/Cargo.toml +0 -15
  3. {dirsql-0.4.12 → dirsql-0.4.13}/PKG-INFO +1 -1
  4. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/Cargo.toml +15 -10
  5. dirsql-0.4.13/packages/python/changelog.d/2026-08-04-cast-lints.md +1 -0
  6. dirsql-0.4.13/packages/python/e2e-attestations/chore-766-narrow-pedantic.json +7 -0
  7. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/Cargo.toml +13 -5
  8. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/benches/db_bench.rs +6 -0
  9. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/benches/differ_bench.rs +6 -0
  10. dirsql-0.4.13/packages/rust/changelog.d/2026-08-04-cast-lints.md +1 -0
  11. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/src/config.rs +3 -1
  12. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/src/db.rs +7 -2
  13. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/src/lib.rs +2 -2
  14. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/src/persist.rs +5 -1
  15. dirsql-0.4.12/packages/python/e2e-attestations/claude-763-forbid-unsafe.json +0 -7
  16. dirsql-0.4.12/packages/python/e2e-attestations/feat-745-python-no-ignore.json +0 -7
  17. dirsql-0.4.12/packages/python/e2e-attestations/fix-754-discovery-ext-resolution.json +0 -7
  18. {dirsql-0.4.12 → dirsql-0.4.13}/README.md +0 -0
  19. {dirsql-0.4.12 → dirsql-0.4.13}/dirsql/__init__.py +0 -0
  20. {dirsql-0.4.12 → dirsql-0.4.13}/dirsql/_async.py +0 -0
  21. {dirsql-0.4.12 → dirsql-0.4.13}/dirsql/_dirsql.pyi +0 -0
  22. {dirsql-0.4.12 → dirsql-0.4.13}/dirsql/cli/__init__.py +0 -0
  23. {dirsql-0.4.12 → dirsql-0.4.13}/dirsql/cli/binary_path.py +0 -0
  24. {dirsql-0.4.12 → dirsql-0.4.13}/dirsql/cli/discover_plugins/__init__.py +0 -0
  25. {dirsql-0.4.12 → dirsql-0.4.13}/dirsql/cli/discover_plugins/discovered_fragments.py +0 -0
  26. {dirsql-0.4.12 → dirsql-0.4.13}/dirsql/cli/discover_plugins/discovery_disabled.py +0 -0
  27. {dirsql-0.4.12 → dirsql-0.4.13}/dirsql/cli/discover_plugins/fragment_path.py +0 -0
  28. {dirsql-0.4.12 → dirsql-0.4.13}/dirsql/cli/discover_plugins/user_passed_config.py +0 -0
  29. {dirsql-0.4.12 → dirsql-0.4.13}/dirsql/cli/discover_plugins/with_discovered_plugins.py +0 -0
  30. {dirsql-0.4.12 → dirsql-0.4.13}/dirsql/cli/is_windows.py +0 -0
  31. {dirsql-0.4.12 → dirsql-0.4.13}/dirsql/cli/main.py +0 -0
  32. {dirsql-0.4.12 → dirsql-0.4.13}/dirsql/cli/resolve_config_extensions.py +0 -0
  33. {dirsql-0.4.12 → dirsql-0.4.13}/dirsql/py.typed +0 -0
  34. {dirsql-0.4.12 → dirsql-0.4.13}/dirsql/resolve_config_extensions.py +0 -0
  35. {dirsql-0.4.12 → dirsql-0.4.13}/dirsql/resolve_extension.py +0 -0
  36. {dirsql-0.4.12 → dirsql-0.4.13}/docs/.claude/CLAUDE.md +0 -0
  37. {dirsql-0.4.12 → dirsql-0.4.13}/docs/.vitepress/config.ts +0 -0
  38. {dirsql-0.4.12 → dirsql-0.4.13}/docs/.vitepress/theme/index.ts +0 -0
  39. {dirsql-0.4.12 → dirsql-0.4.13}/docs/.vitepress/theme/lang.ts +0 -0
  40. {dirsql-0.4.12 → dirsql-0.4.13}/docs/AGENTS.md +0 -0
  41. {dirsql-0.4.12 → dirsql-0.4.13}/docs/explanation.md +0 -0
  42. {dirsql-0.4.12 → dirsql-0.4.13}/docs/getting-started.md +0 -0
  43. {dirsql-0.4.12 → dirsql-0.4.13}/docs/howto/columns-from-paths.md +0 -0
  44. {dirsql-0.4.12 → dirsql-0.4.13}/docs/howto/define-tables.md +0 -0
  45. {dirsql-0.4.12 → dirsql-0.4.13}/docs/howto/embed.md +0 -0
  46. {dirsql-0.4.12 → dirsql-0.4.13}/docs/howto/extract-from-contents.md +0 -0
  47. {dirsql-0.4.12 → dirsql-0.4.13}/docs/howto/load-extension.md +0 -0
  48. {dirsql-0.4.12 → dirsql-0.4.13}/docs/howto/parse-files-into-columns.md +0 -0
  49. {dirsql-0.4.12 → dirsql-0.4.13}/docs/howto/persist.md +0 -0
  50. {dirsql-0.4.12 → dirsql-0.4.13}/docs/howto/query-without-config.md +0 -0
  51. {dirsql-0.4.12 → dirsql-0.4.13}/docs/howto/react-to-changes.md +0 -0
  52. {dirsql-0.4.12 → dirsql-0.4.13}/docs/howto/search-by-meaning.md +0 -0
  53. {dirsql-0.4.12 → dirsql-0.4.13}/docs/howto/skip-files.md +0 -0
  54. {dirsql-0.4.12 → dirsql-0.4.13}/docs/howto/write-a-plugin.md +0 -0
  55. {dirsql-0.4.12 → dirsql-0.4.13}/docs/index.md +0 -0
  56. {dirsql-0.4.12 → dirsql-0.4.13}/docs/migrations.md +0 -0
  57. {dirsql-0.4.12 → dirsql-0.4.13}/docs/package.json +0 -0
  58. {dirsql-0.4.12 → dirsql-0.4.13}/docs/plugins.md +0 -0
  59. {dirsql-0.4.12 → dirsql-0.4.13}/docs/pnpm-lock.yaml +0 -0
  60. {dirsql-0.4.12 → dirsql-0.4.13}/docs/pnpm-workspace.yaml +0 -0
  61. {dirsql-0.4.12 → dirsql-0.4.13}/docs/reference/cli.md +0 -0
  62. {dirsql-0.4.12 → dirsql-0.4.13}/docs/reference/columns.md +0 -0
  63. {dirsql-0.4.12 → dirsql-0.4.13}/docs/reference/config.md +0 -0
  64. {dirsql-0.4.12 → dirsql-0.4.13}/docs/reference/hooks.md +0 -0
  65. {dirsql-0.4.12 → dirsql-0.4.13}/docs/reference/http-api.md +0 -0
  66. {dirsql-0.4.12 → dirsql-0.4.13}/docs/reference/path-tables.md +0 -0
  67. {dirsql-0.4.12 → dirsql-0.4.13}/docs/reference/sdk.md +0 -0
  68. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/CHANGELOG.md +0 -0
  69. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/MIGRATIONS.md +0 -0
  70. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/README.md +0 -0
  71. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/changelog.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
  72. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/changelog.d/2026-07-13-plugin-discovery.md +0 -0
  73. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/changelog.d/2026-07-13-rename-extract-to-on-file.md +0 -0
  74. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/changelog.d/2026-07-13-repeatable-config.md +0 -0
  75. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/changelog.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
  76. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/changelog.d/2026-07-20-drop-implicit-files-table.md +0 -0
  77. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/changelog.d/2026-07-21-remove-glob-captures.md +0 -0
  78. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/changelog.d/2026-07-24-hookless-table-config-error.md +0 -0
  79. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/changelog.d/2026-07-24-remove-stat-fact-injection.md +0 -0
  80. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/changelog.d/2026-07-29-restore-python-310.md +0 -0
  81. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/changelog.d/2026-08-02-release-profile.md +0 -0
  82. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/changelog.d/2026-08-02-scan-failures.md +0 -0
  83. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/changelog.d/2026-08-03-discovery-ext-resolution.md +0 -0
  84. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/changelog.d/2026-08-03-manylinux-dynamic-binary.md +0 -0
  85. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/changelog.d/2026-08-03-python-no-ignore.md +0 -0
  86. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/changelog.d/README.md +0 -0
  87. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/conftest.py +0 -0
  88. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/docs/.claude/CLAUDE.md +0 -0
  89. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/docs/.vitepress/config.ts +0 -0
  90. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/docs/.vitepress/theme/index.ts +0 -0
  91. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/docs/.vitepress/theme/lang.ts +0 -0
  92. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/docs/AGENTS.md +0 -0
  93. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/docs/explanation.md +0 -0
  94. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/docs/getting-started.md +0 -0
  95. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/docs/howto/columns-from-paths.md +0 -0
  96. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/docs/howto/define-tables.md +0 -0
  97. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/docs/howto/embed.md +0 -0
  98. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/docs/howto/extract-from-contents.md +0 -0
  99. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/docs/howto/load-extension.md +0 -0
  100. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/docs/howto/parse-files-into-columns.md +0 -0
  101. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/docs/howto/persist.md +0 -0
  102. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/docs/howto/query-without-config.md +0 -0
  103. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/docs/howto/react-to-changes.md +0 -0
  104. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/docs/howto/search-by-meaning.md +0 -0
  105. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/docs/howto/skip-files.md +0 -0
  106. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/docs/howto/write-a-plugin.md +0 -0
  107. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/docs/index.md +0 -0
  108. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/docs/migrations.md +0 -0
  109. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/docs/package.json +0 -0
  110. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/docs/plugins.md +0 -0
  111. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/docs/pnpm-lock.yaml +0 -0
  112. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/docs/pnpm-workspace.yaml +0 -0
  113. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/docs/reference/cli.md +0 -0
  114. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/docs/reference/columns.md +0 -0
  115. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/docs/reference/config.md +0 -0
  116. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/docs/reference/hooks.md +0 -0
  117. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/docs/reference/http-api.md +0 -0
  118. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/docs/reference/path-tables.md +0 -0
  119. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/docs/reference/sdk.md +0 -0
  120. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/migrations.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
  121. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/migrations.d/2026-07-13-rename-extract-to-on-file.md +0 -0
  122. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/migrations.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
  123. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/migrations.d/2026-07-20-drop-implicit-files-table.md +0 -0
  124. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/migrations.d/2026-07-21-remove-glob-captures.md +0 -0
  125. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/migrations.d/2026-07-24-hookless-table-config-error.md +0 -0
  126. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/migrations.d/2026-07-24-remove-stat-fact-injection.md +0 -0
  127. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/migrations.d/2026-07-29-restore-python-310.md +0 -0
  128. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/migrations.d/README.md +0 -0
  129. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/src/lib.rs +0 -0
  130. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/tests/__init__.py +0 -0
  131. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/tests/conftest.py +0 -0
  132. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/tests/e2e/__init__.py +0 -0
  133. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/__init__.py +0 -0
  134. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/dirsql.toml +0 -0
  135. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/tests/integration/__init__.py +0 -0
  136. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/tests/integration/binding/__init__.py +0 -0
  137. {dirsql-0.4.12 → dirsql-0.4.13}/packages/python/tests/integration/hermetic/__init__.py +0 -0
  138. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/CHANGELOG.md +0 -0
  139. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/MIGRATIONS.md +0 -0
  140. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/README.md +0 -0
  141. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/benches/matcher_bench.rs +0 -0
  142. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/benches/scanner_bench.rs +0 -0
  143. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/changelog.d/2026-07-13-batch-ingest-transaction.md +0 -0
  144. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/changelog.d/2026-07-13-chained-pre-post-query-hooks.md +0 -0
  145. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/changelog.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
  146. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/changelog.d/2026-07-13-fan-out-file-table-matching.md +0 -0
  147. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/changelog.d/2026-07-13-persist-wal.md +0 -0
  148. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/changelog.d/2026-07-13-rename-extract-to-on-file.md +0 -0
  149. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/changelog.d/2026-07-13-repeatable-builder-config.md +0 -0
  150. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/changelog.d/2026-07-13-repeatable-cli-config.md +0 -0
  151. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/changelog.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
  152. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/changelog.d/2026-07-13-subcommand-local-config-flags.md +0 -0
  153. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/changelog.d/2026-07-19-path-table-query-fallback.md +0 -0
  154. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/changelog.d/2026-07-19-path-table-vtab.md +0 -0
  155. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/changelog.d/2026-07-20-drop-implicit-files-table.md +0 -0
  156. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/changelog.d/2026-07-20-path-table-glob-semantics.md +0 -0
  157. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/changelog.d/2026-07-20-schema-inference.md +0 -0
  158. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/changelog.d/2026-07-21-on-file-flag.md +0 -0
  159. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/changelog.d/2026-07-21-remove-glob-captures.md +0 -0
  160. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/changelog.d/2026-07-23-init-escalation-example.md +0 -0
  161. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/changelog.d/2026-07-23-query-default-cli.md +0 -0
  162. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/changelog.d/2026-07-24-hookless-table-config-error.md +0 -0
  163. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/changelog.d/2026-07-24-remove-stat-fact-injection.md +0 -0
  164. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/changelog.d/2026-07-29-on-file-failures-accumulate.md +0 -0
  165. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/changelog.d/2026-08-02-drop-regex.md +0 -0
  166. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/changelog.d/2026-08-02-per-file-scan-failures.md +0 -0
  167. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/changelog.d/2026-08-02-release-profile.md +0 -0
  168. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/changelog.d/2026-08-03-gitignore-by-default.md +0 -0
  169. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/changelog.d/2026-08-03-nested-default-ignores.md +0 -0
  170. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/changelog.d/README.md +0 -0
  171. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/docs/explanation.md +0 -0
  172. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/docs/getting-started.md +0 -0
  173. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/docs/howto/columns-from-paths.md +0 -0
  174. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/docs/howto/define-tables.md +0 -0
  175. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/docs/howto/embed.md +0 -0
  176. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/docs/howto/extract-from-contents.md +0 -0
  177. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/docs/howto/load-extension.md +0 -0
  178. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/docs/howto/parse-files-into-columns.md +0 -0
  179. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/docs/howto/persist.md +0 -0
  180. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/docs/howto/query-without-config.md +0 -0
  181. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/docs/howto/react-to-changes.md +0 -0
  182. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/docs/howto/search-by-meaning.md +0 -0
  183. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/docs/howto/skip-files.md +0 -0
  184. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/docs/howto/write-a-plugin.md +0 -0
  185. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/docs/index.md +0 -0
  186. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/docs/migrations.md +0 -0
  187. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/docs/plugins.md +0 -0
  188. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/docs/reference/cli.md +0 -0
  189. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/docs/reference/columns.md +0 -0
  190. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/docs/reference/config.md +0 -0
  191. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/docs/reference/hooks.md +0 -0
  192. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/docs/reference/http-api.md +0 -0
  193. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/docs/reference/path-tables.md +0 -0
  194. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/docs/reference/sdk.md +0 -0
  195. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/migrations.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
  196. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/migrations.d/2026-07-13-fan-out-file-table-matching.md +0 -0
  197. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/migrations.d/2026-07-13-persist-wal.md +0 -0
  198. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/migrations.d/2026-07-13-rename-extract-to-on-file.md +0 -0
  199. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/migrations.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
  200. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/migrations.d/2026-07-13-subcommand-local-config-flags.md +0 -0
  201. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/migrations.d/2026-07-20-drop-implicit-files-table.md +0 -0
  202. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/migrations.d/2026-07-20-path-table-glob-semantics.md +0 -0
  203. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/migrations.d/2026-07-21-remove-glob-captures.md +0 -0
  204. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/migrations.d/2026-07-23-init-escalation-example.md +0 -0
  205. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/migrations.d/2026-07-23-query-default-cli.md +0 -0
  206. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/migrations.d/2026-07-24-hookless-table-config-error.md +0 -0
  207. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/migrations.d/2026-07-24-remove-stat-fact-injection.md +0 -0
  208. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/migrations.d/2026-08-02-per-file-scan-failures.md +0 -0
  209. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/migrations.d/2026-08-03-gitignore-by-default.md +0 -0
  210. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/migrations.d/2026-08-03-nested-default-ignores.md +0 -0
  211. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/migrations.d/README.md +0 -0
  212. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/src/bin/dirsql.rs +0 -0
  213. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/src/cli/execute.rs +0 -0
  214. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/src/cli/init.rs +0 -0
  215. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/src/cli/mod.rs +0 -0
  216. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/src/cli/router.rs +0 -0
  217. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/src/cli/serialize.rs +0 -0
  218. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/src/cli/server.rs +0 -0
  219. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/src/command.rs +0 -0
  220. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/src/default_config.toml +0 -0
  221. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/src/differ.rs +0 -0
  222. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/src/infer.rs +0 -0
  223. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/src/matcher.rs +0 -0
  224. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/src/parsed_vtab.rs +0 -0
  225. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/src/path_table.rs +0 -0
  226. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/src/scanner.rs +0 -0
  227. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/src/vtab.rs +0 -0
  228. {dirsql-0.4.12 → dirsql-0.4.13}/packages/rust/src/watcher.rs +0 -0
  229. {dirsql-0.4.12 → dirsql-0.4.13}/pyproject.toml +0 -0
@@ -500,7 +500,7 @@ dependencies = [
500
500
 
501
501
  [[package]]
502
502
  name = "dirsql-py-ext"
503
- version = "0.4.12"
503
+ version = "0.4.13"
504
504
  dependencies = [
505
505
  "dirsql",
506
506
  "pyo3",
@@ -33,18 +33,3 @@ futures-channel = "0.3"
33
33
  strip = "symbols"
34
34
  lto = "fat"
35
35
  codegen-units = 1
36
-
37
- [workspace.lints.rust]
38
- unsafe_code = "forbid"
39
- rust_2018_idioms = { level = "warn", priority = -1 }
40
-
41
- [workspace.lints.clippy]
42
- # Broad groups kept at `warn` so CI can catch regressions without
43
- # becoming hostile to contributors; upgrade to `deny` in CI if desired.
44
- all = { level = "warn", priority = -1 }
45
- pedantic = { level = "warn", priority = -1 }
46
- # Opinionated opt-outs from pedantic: too noisy vs. useful here.
47
- module_name_repetitions = "allow"
48
- missing_errors_doc = "allow"
49
- missing_panics_doc = "allow"
50
- must_use_candidate = "allow"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dirsql
3
- Version: 0.4.12
3
+ Version: 0.4.13
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.12"
7
+ version = "0.4.13"
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,17 +25,22 @@ 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
28
  [lints.rust]
29
+ # `deny`, not `forbid`: pyo3's proc macros emit `#[allow(unsafe_code)]`, which
30
+ # `forbid` rejects outright (E0453). `deny` still blocks new hand-written
31
+ # `unsafe` unless a site opts in explicitly, which is the guarantee we want.
38
32
  unsafe_code = "deny"
33
+ rust_2018_idioms = { level = "warn", priority = -1 }
34
+
35
+ # The narrow slice of clippy::pedantic worth enforcing (#763); mirrors the
36
+ # core crate's block. No sites in this crate today -- the value is catching
37
+ # future lossy casts at the binding boundary.
38
+ [lints.clippy]
39
+ cast_lossless = "warn"
40
+ cast_possible_truncation = "warn"
41
+ cast_possible_wrap = "warn"
42
+ cast_precision_loss = "warn"
43
+ cast_sign_loss = "warn"
39
44
 
40
45
  [features]
41
46
  default = []
@@ -0,0 +1 @@
1
+ **Changed** — the pyo3 binding crate now enforces the clippy cast lints (`cast_lossless`, `cast_possible_truncation`, `cast_possible_wrap`, `cast_precision_loss`, `cast_sign_loss`) via `[lints.clippy]`, so a future lossy numeric cast at the binding boundary fails the build. No code changes were needed; no observable behavior change.
@@ -0,0 +1,7 @@
1
+ {
2
+ "command": "just test-e2e",
3
+ "ran_at": 1785867315,
4
+ "exit_code": 0,
5
+ "commit": "48dbead65b0060f7ee5cad2e0db969467febbaf3",
6
+ "branch": "chore/766-narrow-pedantic"
7
+ }
@@ -74,11 +74,6 @@ 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
77
  [lints.rust]
83
78
  # `deny`, not `forbid`: rusqlite's API imposes five unavoidable `unsafe`
84
79
  # sites (the `load_extension` guard and four `unsafe impl VTab`/`VTabCursor`).
@@ -87,6 +82,19 @@ walkdir = "2"
87
82
  # with `#[expect(unsafe_code, reason = ...)]`, which is the guarantee we
88
83
  # actually want (#763).
89
84
  unsafe_code = "deny"
85
+ rust_2018_idioms = { level = "warn", priority = -1 }
86
+
87
+ # The narrow slice of clippy::pedantic worth enforcing (#763): dirsql marshals
88
+ # sizes, timestamps, and row indexes between usize/u64 and SQLite's i64, where
89
+ # a silent lossy cast corrupts data. The rest of pedantic is style noise here
90
+ # and stays off. Intentional lossy/bit-preserving casts opt out per-site with
91
+ # `#[expect(clippy::cast_..., reason = ...)]`.
92
+ [lints.clippy]
93
+ cast_lossless = "warn"
94
+ cast_possible_truncation = "warn"
95
+ cast_possible_wrap = "warn"
96
+ cast_precision_loss = "warn"
97
+ cast_sign_loss = "warn"
90
98
 
91
99
  [[bin]]
92
100
  name = "dirsql"
@@ -1,3 +1,9 @@
1
+ #![expect(
2
+ clippy::cast_possible_wrap,
3
+ clippy::cast_precision_loss,
4
+ reason = "bench fixture indices are small; the casts are exact"
5
+ )]
6
+
1
7
  use criterion::{BenchmarkId, Criterion, criterion_group, criterion_main};
2
8
  use dirsql::db::{Db, Value};
3
9
  use std::collections::HashMap;
@@ -1,3 +1,9 @@
1
+ #![expect(
2
+ clippy::cast_possible_wrap,
3
+ clippy::cast_precision_loss,
4
+ reason = "bench fixture indices are small; the casts are exact"
5
+ )]
6
+
1
7
  use criterion::{BenchmarkId, Criterion, criterion_group, criterion_main};
2
8
  use dirsql::db::Value;
3
9
  use dirsql::differ::diff;
@@ -0,0 +1 @@
1
+ **Changed** — lossy numeric casts are now compile errors: the crate enforces the clippy cast lints (`cast_lossless`, `cast_possible_truncation`, `cast_possible_wrap`, `cast_precision_loss`, `cast_sign_loss`) via `[lints.clippy]`. Existing size/timestamp/row-index conversions were rewritten as checked `try_from` conversions (no observable behavior change); the intentional inode/device bit-pattern casts are documented with `#[expect]`. The never-enforced `clippy::pedantic` block was removed from `[workspace.lints]`.
@@ -358,7 +358,9 @@ pub fn load_config_str(content: &str) -> Result<Config> {
358
358
  fn parse_timeout_secs(field: &'static str, raw: Option<i64>) -> Result<Option<Duration>> {
359
359
  match raw {
360
360
  Some(secs) if secs <= 0 => Err(ConfigError::InvalidTimeout { field, value: secs }),
361
- Some(secs) => Ok(Some(Duration::from_secs(secs as u64))),
361
+ Some(secs) => Ok(Some(Duration::from_secs(
362
+ u64::try_from(secs).expect("non-positive values rejected above"),
363
+ ))),
362
364
  None => Ok(None),
363
365
  }
364
366
  }
@@ -465,7 +465,12 @@ impl Db {
465
465
  conn.execute(
466
466
  "INSERT INTO _dirsql_internal_rows (table_name, file_path, row_index, rowid_ref) \
467
467
  VALUES (?1, ?2, ?3, ?4)",
468
- rusqlite::params![table, file_path, row_index as i64, rowid],
468
+ rusqlite::params![
469
+ table,
470
+ file_path,
471
+ i64::try_from(row_index).expect("row index fits in i64"),
472
+ rowid
473
+ ],
469
474
  )?;
470
475
  Ok(())
471
476
  }
@@ -1054,7 +1059,7 @@ mod tests {
1054
1059
  for (i, action) in ["created", "resolved", "reopened"].iter().enumerate() {
1055
1060
  let row = HashMap::from([
1056
1061
  ("action".into(), Value::Text(action.to_string())),
1057
- ("ts".into(), Value::Integer(i as i64)),
1062
+ ("ts".into(), Value::Integer(i64::try_from(i).unwrap())),
1058
1063
  ]);
1059
1064
  db.insert_row("events", &row, "thread.jsonl", i).unwrap();
1060
1065
  }
@@ -1692,10 +1692,10 @@ pub(crate) fn compute_stat_virtuals(rel_path: &str, abs_path: &Path) -> Row {
1692
1692
  let to_secs = |t: std::io::Result<std::time::SystemTime>| {
1693
1693
  t.ok()
1694
1694
  .and_then(|st| st.duration_since(std::time::UNIX_EPOCH).ok())
1695
- .map(|d| d.as_secs() as i64)
1695
+ .and_then(|d| i64::try_from(d.as_secs()).ok())
1696
1696
  };
1697
1697
  (
1698
- Some(metadata.len() as i64),
1698
+ i64::try_from(metadata.len()).ok(),
1699
1699
  to_secs(metadata.modified()),
1700
1700
  to_secs(metadata.created()),
1701
1701
  )
@@ -60,7 +60,7 @@ impl FileStat {
60
60
  let ctime_ns = system_time_to_ns(meta.created().ok());
61
61
  let (inode, dev) = inode_dev(meta);
62
62
  Self {
63
- size: meta.len() as i64,
63
+ size: i64::try_from(meta.len()).expect("file size fits in i64"),
64
64
  mtime_ns,
65
65
  ctime_ns,
66
66
  inode,
@@ -70,6 +70,10 @@ impl FileStat {
70
70
  }
71
71
 
72
72
  #[cfg(unix)]
73
+ #[expect(
74
+ clippy::cast_possible_wrap,
75
+ reason = "inode/device numbers are opaque bit patterns; wrapping reinterpretation is intended"
76
+ )]
73
77
  fn inode_dev(meta: &fs::Metadata) -> (i64, i64) {
74
78
  use std::os::unix::fs::MetadataExt;
75
79
  (meta.ino() as i64, meta.dev() as i64)
@@ -1,7 +0,0 @@
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
- }
@@ -1,7 +0,0 @@
1
- {
2
- "command": "just test-e2e",
3
- "ran_at": 1785777931,
4
- "exit_code": 0,
5
- "commit": "ef9db367f3a4979a0006e7bd40b0808f433b26ee",
6
- "branch": "feat/745-python-no-ignore"
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "command": "just test-e2e",
3
- "ran_at": 1785779409,
4
- "exit_code": 0,
5
- "commit": "610d8ff41538de6e3d5f19b4abea3ec1b351986a",
6
- "branch": "fix/754-discovery-ext-resolution"
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