dirsql 0.4.34__tar.gz → 0.4.36__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 (211) hide show
  1. {dirsql-0.4.34 → dirsql-0.4.36}/Cargo.lock +2 -2
  2. {dirsql-0.4.34 → dirsql-0.4.36}/PKG-INFO +1 -1
  3. dirsql-0.4.36/dirsql/cli/config_paths_from_argv.py +28 -0
  4. {dirsql-0.4.34 → dirsql-0.4.36}/dirsql/cli/resolve_config_extensions.py +2 -25
  5. {dirsql-0.4.34 → dirsql-0.4.36}/docs/reference/cli.md +18 -0
  6. {dirsql-0.4.34/packages/rust → dirsql-0.4.36}/docs/reference/config.md +9 -0
  7. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/Cargo.toml +1 -1
  8. dirsql-0.4.36/packages/python/changelog.d/2026-09-04-config-paths-from-argv-module.md +3 -0
  9. {dirsql-0.4.34/packages/rust → dirsql-0.4.36/packages/python}/docs/reference/cli.md +18 -0
  10. {dirsql-0.4.34 → dirsql-0.4.36/packages/python}/docs/reference/config.md +9 -0
  11. dirsql-0.4.36/packages/python/e2e-attestations/claude-tackle-1034-cachesplit.json +7 -0
  12. dirsql-0.4.36/packages/python/e2e-attestations/claude-tackle-1042-py12.json +7 -0
  13. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/testing-conventions.toml +1 -1
  14. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/Cargo.toml +1 -1
  15. {dirsql-0.4.34/packages/python → dirsql-0.4.36/packages/rust}/docs/reference/cli.md +18 -0
  16. {dirsql-0.4.34/packages/python → dirsql-0.4.36/packages/rust}/docs/reference/config.md +9 -0
  17. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/src/functions.rs +204 -32
  18. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/src/progress.rs +146 -21
  19. {dirsql-0.4.34 → dirsql-0.4.36}/Cargo.toml +0 -0
  20. {dirsql-0.4.34 → dirsql-0.4.36}/README.md +0 -0
  21. {dirsql-0.4.34 → dirsql-0.4.36}/dirsql/__init__.py +0 -0
  22. {dirsql-0.4.34 → dirsql-0.4.36}/dirsql/_async.py +0 -0
  23. {dirsql-0.4.34 → dirsql-0.4.36}/dirsql/_dirsql.pyi +0 -0
  24. {dirsql-0.4.34 → dirsql-0.4.36}/dirsql/cli/__init__.py +0 -0
  25. {dirsql-0.4.34 → dirsql-0.4.36}/dirsql/cli/discover_plugins/__init__.py +0 -0
  26. {dirsql-0.4.34 → dirsql-0.4.36}/dirsql/cli/discover_plugins/discovered_fragments.py +0 -0
  27. {dirsql-0.4.34 → dirsql-0.4.36}/dirsql/cli/discover_plugins/discovery_disabled.py +0 -0
  28. {dirsql-0.4.34 → dirsql-0.4.36}/dirsql/cli/discover_plugins/fragment_path.py +0 -0
  29. {dirsql-0.4.34 → dirsql-0.4.36}/dirsql/cli/discover_plugins/user_passed_config.py +0 -0
  30. {dirsql-0.4.34 → dirsql-0.4.36}/dirsql/cli/discover_plugins/with_discovered_plugins.py +0 -0
  31. {dirsql-0.4.34 → dirsql-0.4.36}/dirsql/cli/main.py +0 -0
  32. {dirsql-0.4.34 → dirsql-0.4.36}/dirsql/py.typed +0 -0
  33. {dirsql-0.4.34 → dirsql-0.4.36}/dirsql/resolve_config_extensions.py +0 -0
  34. {dirsql-0.4.34 → dirsql-0.4.36}/dirsql/resolve_extension.py +0 -0
  35. {dirsql-0.4.34 → dirsql-0.4.36}/docs/.claude/CLAUDE.md +0 -0
  36. {dirsql-0.4.34 → dirsql-0.4.36}/docs/.vitepress/config.ts +0 -0
  37. {dirsql-0.4.34 → dirsql-0.4.36}/docs/.vitepress/theme/index.ts +0 -0
  38. {dirsql-0.4.34 → dirsql-0.4.36}/docs/.vitepress/theme/lang.ts +0 -0
  39. {dirsql-0.4.34 → dirsql-0.4.36}/docs/AGENTS.md +0 -0
  40. {dirsql-0.4.34 → dirsql-0.4.36}/docs/explanation.md +0 -0
  41. {dirsql-0.4.34 → dirsql-0.4.36}/docs/getting-started.md +0 -0
  42. {dirsql-0.4.34 → dirsql-0.4.36}/docs/howto/columns-from-paths.md +0 -0
  43. {dirsql-0.4.34 → dirsql-0.4.36}/docs/howto/define-tables.md +0 -0
  44. {dirsql-0.4.34 → dirsql-0.4.36}/docs/howto/embed.md +0 -0
  45. {dirsql-0.4.34 → dirsql-0.4.36}/docs/howto/extract-from-contents.md +0 -0
  46. {dirsql-0.4.34 → dirsql-0.4.36}/docs/howto/load-extension.md +0 -0
  47. {dirsql-0.4.34 → dirsql-0.4.36}/docs/howto/parse-files-into-columns.md +0 -0
  48. {dirsql-0.4.34 → dirsql-0.4.36}/docs/howto/persist.md +0 -0
  49. {dirsql-0.4.34 → dirsql-0.4.36}/docs/howto/query-json.md +0 -0
  50. {dirsql-0.4.34 → dirsql-0.4.36}/docs/howto/query-without-config.md +0 -0
  51. {dirsql-0.4.34 → dirsql-0.4.36}/docs/howto/react-to-changes.md +0 -0
  52. {dirsql-0.4.34 → dirsql-0.4.36}/docs/howto/search-by-meaning.md +0 -0
  53. {dirsql-0.4.34 → dirsql-0.4.36}/docs/howto/search-indexes.md +0 -0
  54. {dirsql-0.4.34 → dirsql-0.4.36}/docs/howto/skip-files.md +0 -0
  55. {dirsql-0.4.34 → dirsql-0.4.36}/docs/howto/write-a-plugin.md +0 -0
  56. {dirsql-0.4.34 → dirsql-0.4.36}/docs/index.md +0 -0
  57. {dirsql-0.4.34 → dirsql-0.4.36}/docs/package.json +0 -0
  58. {dirsql-0.4.34 → dirsql-0.4.36}/docs/plugins.md +0 -0
  59. {dirsql-0.4.34 → dirsql-0.4.36}/docs/pnpm-lock.yaml +0 -0
  60. {dirsql-0.4.34 → dirsql-0.4.36}/docs/pnpm-workspace.yaml +0 -0
  61. {dirsql-0.4.34 → dirsql-0.4.36}/docs/reference/columns.md +0 -0
  62. {dirsql-0.4.34 → dirsql-0.4.36}/docs/reference/hooks.md +0 -0
  63. {dirsql-0.4.34 → dirsql-0.4.36}/docs/reference/http-api.md +0 -0
  64. {dirsql-0.4.34 → dirsql-0.4.36}/docs/reference/path-tables.md +0 -0
  65. {dirsql-0.4.34 → dirsql-0.4.36}/docs/reference/sdk.md +0 -0
  66. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/CHANGELOG.md +0 -0
  67. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/MIGRATIONS.md +0 -0
  68. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/README.md +0 -0
  69. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/changelog.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
  70. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/changelog.d/2026-07-13-plugin-discovery.md +0 -0
  71. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/changelog.d/2026-07-13-rename-extract-to-on-file.md +0 -0
  72. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/changelog.d/2026-07-13-repeatable-config.md +0 -0
  73. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/changelog.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
  74. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/changelog.d/2026-07-20-drop-implicit-files-table.md +0 -0
  75. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/changelog.d/2026-07-21-remove-glob-captures.md +0 -0
  76. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/changelog.d/2026-07-24-hookless-table-config-error.md +0 -0
  77. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/changelog.d/2026-07-24-remove-stat-fact-injection.md +0 -0
  78. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/changelog.d/2026-07-29-restore-python-310.md +0 -0
  79. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/changelog.d/2026-08-02-release-profile.md +0 -0
  80. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/changelog.d/2026-08-02-scan-failures.md +0 -0
  81. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/changelog.d/2026-08-03-discovery-ext-resolution.md +0 -0
  82. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/changelog.d/2026-08-03-manylinux-dynamic-binary.md +0 -0
  83. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/changelog.d/2026-08-03-python-no-ignore.md +0 -0
  84. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/changelog.d/2026-08-04-cast-lints.md +0 -0
  85. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/changelog.d/2026-08-04-cli-in-process.md +0 -0
  86. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/changelog.d/2026-08-20-curtaincall-dev-dependency.md +0 -0
  87. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/changelog.d/2026-08-20-declared-table-name.md +0 -0
  88. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/changelog.d/README.md +0 -0
  89. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/conftest.py +0 -0
  90. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/docs/.claude/CLAUDE.md +0 -0
  91. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/docs/.vitepress/config.ts +0 -0
  92. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/docs/.vitepress/theme/index.ts +0 -0
  93. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/docs/.vitepress/theme/lang.ts +0 -0
  94. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/docs/AGENTS.md +0 -0
  95. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/docs/explanation.md +0 -0
  96. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/docs/getting-started.md +0 -0
  97. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/docs/howto/columns-from-paths.md +0 -0
  98. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/docs/howto/define-tables.md +0 -0
  99. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/docs/howto/embed.md +0 -0
  100. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/docs/howto/extract-from-contents.md +0 -0
  101. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/docs/howto/load-extension.md +0 -0
  102. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/docs/howto/parse-files-into-columns.md +0 -0
  103. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/docs/howto/persist.md +0 -0
  104. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/docs/howto/query-json.md +0 -0
  105. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/docs/howto/query-without-config.md +0 -0
  106. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/docs/howto/react-to-changes.md +0 -0
  107. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/docs/howto/search-by-meaning.md +0 -0
  108. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/docs/howto/search-indexes.md +0 -0
  109. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/docs/howto/skip-files.md +0 -0
  110. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/docs/howto/write-a-plugin.md +0 -0
  111. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/docs/index.md +0 -0
  112. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/docs/package.json +0 -0
  113. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/docs/plugins.md +0 -0
  114. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/docs/pnpm-lock.yaml +0 -0
  115. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/docs/pnpm-workspace.yaml +0 -0
  116. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/docs/reference/columns.md +0 -0
  117. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/docs/reference/hooks.md +0 -0
  118. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/docs/reference/http-api.md +0 -0
  119. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/docs/reference/path-tables.md +0 -0
  120. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/docs/reference/sdk.md +0 -0
  121. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/e2e-attestations/cc-keen-knuth-f11gyq.json +0 -0
  122. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/e2e-attestations/claude-819-oneshot-timeout.json +0 -0
  123. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/e2e-attestations/claude-827-unquote-doubled-quotes.json +0 -0
  124. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/e2e-attestations/claude-epic-953-slice2-reedline.json +0 -0
  125. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/e2e-attestations/claude-epic-953-slice3-format.json +0 -0
  126. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/e2e-attestations/claude-epic-953-stacked-prs-x59wm3.json +0 -0
  127. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/e2e-attestations/claude-github-issue-825-e4mhhp.json +0 -0
  128. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/e2e-attestations/claude-issue-951-0eease.json +0 -0
  129. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/e2e-attestations/claude-issue-962-0jjrfv.json +0 -0
  130. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/e2e-attestations/claude-issue-986-red-test-e7sjrb.json +0 -0
  131. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/e2e-attestations/claude-tackle-956-xzen74.json +0 -0
  132. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/e2e-attestations/claude-tackle-957-lrm0z6-worker-calls.json +0 -0
  133. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/e2e-attestations/claude-tackle-957-lrm0z6.json +0 -0
  134. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/e2e-attestations/claude-tackle-975-n8mc2h.json +0 -0
  135. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/migrations.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
  136. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/migrations.d/2026-07-13-rename-extract-to-on-file.md +0 -0
  137. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/migrations.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
  138. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/migrations.d/2026-07-20-drop-implicit-files-table.md +0 -0
  139. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/migrations.d/2026-07-21-remove-glob-captures.md +0 -0
  140. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/migrations.d/2026-07-24-hookless-table-config-error.md +0 -0
  141. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/migrations.d/2026-07-24-remove-stat-fact-injection.md +0 -0
  142. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/migrations.d/2026-07-29-restore-python-310.md +0 -0
  143. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/migrations.d/2026-08-04-cli-in-process.md +0 -0
  144. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/migrations.d/2026-08-20-declared-table-name.md +0 -0
  145. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/migrations.d/README.md +0 -0
  146. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/src/lib.rs +0 -0
  147. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/tests/__init__.py +0 -0
  148. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/tests/conftest.py +0 -0
  149. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/tests/e2e/__init__.py +0 -0
  150. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/__init__.py +0 -0
  151. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/dirsql.toml +0 -0
  152. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/tests/integration/__init__.py +0 -0
  153. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/tests/integration/binding/__init__.py +0 -0
  154. {dirsql-0.4.34 → dirsql-0.4.36}/packages/python/tests/integration/hermetic/__init__.py +0 -0
  155. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/CHANGELOG.md +0 -0
  156. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/MIGRATIONS.md +0 -0
  157. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/README.md +0 -0
  158. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/benches/db_bench.rs +0 -0
  159. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/benches/differ_bench.rs +0 -0
  160. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/benches/matcher_bench.rs +0 -0
  161. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/benches/scanner_bench.rs +0 -0
  162. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/docs/explanation.md +0 -0
  163. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/docs/getting-started.md +0 -0
  164. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/docs/howto/columns-from-paths.md +0 -0
  165. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/docs/howto/define-tables.md +0 -0
  166. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/docs/howto/embed.md +0 -0
  167. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/docs/howto/extract-from-contents.md +0 -0
  168. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/docs/howto/load-extension.md +0 -0
  169. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/docs/howto/parse-files-into-columns.md +0 -0
  170. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/docs/howto/persist.md +0 -0
  171. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/docs/howto/query-json.md +0 -0
  172. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/docs/howto/query-without-config.md +0 -0
  173. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/docs/howto/react-to-changes.md +0 -0
  174. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/docs/howto/search-by-meaning.md +0 -0
  175. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/docs/howto/search-indexes.md +0 -0
  176. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/docs/howto/skip-files.md +0 -0
  177. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/docs/howto/write-a-plugin.md +0 -0
  178. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/docs/index.md +0 -0
  179. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/docs/plugins.md +0 -0
  180. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/docs/reference/columns.md +0 -0
  181. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/docs/reference/hooks.md +0 -0
  182. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/docs/reference/http-api.md +0 -0
  183. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/docs/reference/path-tables.md +0 -0
  184. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/docs/reference/sdk.md +0 -0
  185. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/src/bin/dirsql.rs +0 -0
  186. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/src/cli/execute.rs +0 -0
  187. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/src/cli/init.rs +0 -0
  188. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/src/cli/mod.rs +0 -0
  189. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/src/cli/repl.rs +0 -0
  190. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/src/cli/router.rs +0 -0
  191. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/src/cli/run.rs +0 -0
  192. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/src/cli/serialize.rs +0 -0
  193. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/src/cli/server.rs +0 -0
  194. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/src/cli/table.rs +0 -0
  195. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/src/command.rs +0 -0
  196. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/src/config.rs +0 -0
  197. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/src/db.rs +0 -0
  198. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/src/default_config.toml +0 -0
  199. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/src/differ.rs +0 -0
  200. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/src/infer.rs +0 -0
  201. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/src/lib.rs +0 -0
  202. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/src/matcher.rs +0 -0
  203. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/src/parsed_cache.rs +0 -0
  204. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/src/parsed_vtab.rs +0 -0
  205. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/src/path_table.rs +0 -0
  206. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/src/persist.rs +0 -0
  207. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/src/scanner.rs +0 -0
  208. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/src/sql_literal.rs +0 -0
  209. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/src/vtab.rs +0 -0
  210. {dirsql-0.4.34 → dirsql-0.4.36}/packages/rust/src/watcher.rs +0 -0
  211. {dirsql-0.4.34 → dirsql-0.4.36}/pyproject.toml +0 -0
@@ -540,7 +540,7 @@ checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8"
540
540
 
541
541
  [[package]]
542
542
  name = "dirsql"
543
- version = "0.4.34"
543
+ version = "0.4.36"
544
544
  dependencies = [
545
545
  "assert_cmd",
546
546
  "axum",
@@ -583,7 +583,7 @@ dependencies = [
583
583
 
584
584
  [[package]]
585
585
  name = "dirsql-py-ext"
586
- version = "0.4.34"
586
+ version = "0.4.36"
587
587
  dependencies = [
588
588
  "dirsql",
589
589
  "pyo3",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dirsql
3
- Version: 0.4.34
3
+ Version: 0.4.36
4
4
  Requires-Dist: tomli>=2 ; python_full_version < '3.11'
5
5
  Requires-Dist: bin-shim>=0.1
6
6
  Summary: Ephemeral SQL index over a local directory
@@ -0,0 +1,28 @@
1
+ """Config-path extraction from the launcher's argv.
2
+
3
+ Every config flag occurrence counts -- ``-c``/``--config`` are repeatable,
4
+ and plugin discovery injects fragments as additional ``-c`` flags -- so the
5
+ scan collects them all, in argv order.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+
11
+ def config_paths_from_argv(argv: list[str]) -> list[str]:
12
+ """Every config value in argv, in order (``--config X``, ``--config=X``,
13
+ ``-c X``, ``-c=X``, ``-cX``), or the default when none are given."""
14
+ paths: list[str] = []
15
+ i = 0
16
+ while i < len(argv):
17
+ a = argv[i]
18
+ if a == "--config" or a == "-c":
19
+ # A bare trailing flag (no following value) yields "".
20
+ paths.append(next(iter(argv[i + 1 :]), ""))
21
+ i += 2
22
+ continue
23
+ if a.startswith("--config="):
24
+ paths.append(a[len("--config=") :])
25
+ elif a.startswith("-c"):
26
+ paths.append(a[len("-c") :].removeprefix("="))
27
+ i += 1
28
+ return paths or ["./.dirsql.toml"]
@@ -8,10 +8,6 @@ extensions and this launcher passes the resolved literal paths to the binary
8
8
  via repeatable ``--extension`` flags; the binary then loads those and ignores
9
9
  the configs' own extension entries.
10
10
 
11
- Every config flag occurrence counts -- ``-c``/``--config`` are repeatable,
12
- and plugin discovery injects fragments as additional ``-c`` flags -- so the
13
- scan collects them all, in argv order.
14
-
15
11
  Native-language configs (``.py`` / ``.js`` / ``.mjs`` / ``.cjs``) are untouched:
16
12
  the binary dispatches those to ``dirsql interpret``, whose handshake already
17
13
  carries resolved paths.
@@ -20,32 +16,13 @@ carries resolved paths.
20
16
  from __future__ import annotations
21
17
 
22
18
  from ..resolve_config_extensions import resolve_configs_extension_specs
19
+ from .config_paths_from_argv import config_paths_from_argv
23
20
 
24
21
  # Config extensions the binary dispatches to `dirsql interpret`; never
25
22
  # pre-resolved here (that path resolves via the handshake).
26
23
  _NATIVE_SUFFIXES = (".py", ".js", ".mjs", ".cjs")
27
24
 
28
25
 
29
- def _config_paths_from_argv(argv: list[str]) -> list[str]:
30
- """Every config value in argv, in order (``--config X``, ``--config=X``,
31
- ``-c X``, ``-c=X``, ``-cX``), or the default when none are given."""
32
- paths: list[str] = []
33
- i = 0
34
- while i < len(argv):
35
- a = argv[i]
36
- if a == "--config" or a == "-c":
37
- # A bare trailing flag (no following value) yields "".
38
- paths.append(next(iter(argv[i + 1 :]), ""))
39
- i += 2
40
- continue
41
- if a.startswith("--config="):
42
- paths.append(a[len("--config=") :])
43
- elif a.startswith("-c"):
44
- paths.append(a[len("-c") :].removeprefix("="))
45
- i += 1
46
- return paths or ["./.dirsql.toml"]
47
-
48
-
49
26
  def with_resolved_extensions(argv: list[str]) -> list[str]:
50
27
  """Return ``argv`` plus ``--extension`` flags when a TOML config names an
51
28
  extension by package name; otherwise return ``argv`` unchanged. Raises if a
@@ -53,7 +30,7 @@ def with_resolved_extensions(argv: list[str]) -> list[str]:
53
30
  if argv and argv[0] == "init":
54
31
  return argv
55
32
  config_paths = [
56
- p for p in _config_paths_from_argv(argv) if not p.endswith(_NATIVE_SUFFIXES)
33
+ p for p in config_paths_from_argv(argv) if not p.endswith(_NATIVE_SUFFIXES)
57
34
  ]
58
35
  if not config_paths:
59
36
  return argv
@@ -498,6 +498,24 @@ and, when the query ends:
498
498
  dirsql: ran 41231 worker calls in 2m41s
499
499
  ```
500
500
 
501
+ A worker that keeps a cache of its own can say so per response
502
+ (`{"meta": {"cached": true}}` — see [Worker
503
+ protocol](./config.md#worker-protocol)), and those round trips are then split
504
+ out, because the number that answers *"will this be fast next time"* is not
505
+ the total:
506
+
507
+ ```
508
+ dirsql: running 9204 worker calls (8811 cached)
509
+ dirsql: ran 41231 worker calls in 2m41s (38104 cached)
510
+ ```
511
+
512
+ Both figures count **worker round trips, not rows**. A function declared
513
+ `deterministic = true` lets SQLite reuse one answer for identical arguments
514
+ within a query, so repeated content never reaches the worker at all and both
515
+ numbers sit below the row count on a corpus with duplicates. The split covers
516
+ only what the worker itself reports serving from cache. A worker that sends no
517
+ `meta` gets the unsplit line above, not a `(0 cached)`.
518
+
501
519
  A query that calls no worker prints nothing, whatever the setting — the
502
520
  reporting only ever speaks when there is something to report.
503
521
 
@@ -161,6 +161,15 @@ request line in, one response line out, per call:
161
161
  JSON-text vectors) — or `{"err": "message"}`, which **fails the query**
162
162
  with that message. An `{"err": ...}` response leaves the healthy worker
163
163
  running; only transport failures (timeout, crash) recycle it.
164
+ - **Optional `"meta"`**, alongside `"ok"`: a second top-level object carrying
165
+ facts about how the answer was produced rather than what it is. One key is
166
+ read today — `{"ok": [...], "meta": {"cached": true}}` says the worker
167
+ answered from a cache of its own, which dirsql reports as the `(N cached)`
168
+ split on its [worker-call progress line](./cli.md#progress-reporting). The
169
+ field is **optional and advisory**: a worker that omits it is a worker that
170
+ reports no cache hits, keys dirsql does not recognize are ignored (they
171
+ always have been), and a `meta` of an unexpected shape is ignored too rather
172
+ than failing a query over a progress counter.
164
173
  - **stderr passes through** to `dirsql`'s stderr, so a worker's progress
165
174
  bars and download logs reach the terminal.
166
175
 
@@ -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.34"
7
+ version = "0.4.36"
8
8
  # abi3 note: the `abi3-py310` pyo3 feature (below) builds ONE stable-ABI
9
9
  # `cp310-abi3` wheel per platform that loads on every CPython >= 3.10
10
10
  # (matching `pyproject.toml`'s `requires-python = ">=3.10"`), instead of
@@ -0,0 +1,3 @@
1
+ **Changed**
2
+
3
+ - **The launcher's argv config-path scan moved to its own module.** `config_paths_from_argv` now lives in `dirsql/cli/config_paths_from_argv.py`; `with_resolved_extensions` imports it. Internal reorganisation with no change to the published API or CLI behavior, mirroring the TypeScript launcher. (#1042)
@@ -498,6 +498,24 @@ and, when the query ends:
498
498
  dirsql: ran 41231 worker calls in 2m41s
499
499
  ```
500
500
 
501
+ A worker that keeps a cache of its own can say so per response
502
+ (`{"meta": {"cached": true}}` — see [Worker
503
+ protocol](./config.md#worker-protocol)), and those round trips are then split
504
+ out, because the number that answers *"will this be fast next time"* is not
505
+ the total:
506
+
507
+ ```
508
+ dirsql: running 9204 worker calls (8811 cached)
509
+ dirsql: ran 41231 worker calls in 2m41s (38104 cached)
510
+ ```
511
+
512
+ Both figures count **worker round trips, not rows**. A function declared
513
+ `deterministic = true` lets SQLite reuse one answer for identical arguments
514
+ within a query, so repeated content never reaches the worker at all and both
515
+ numbers sit below the row count on a corpus with duplicates. The split covers
516
+ only what the worker itself reports serving from cache. A worker that sends no
517
+ `meta` gets the unsplit line above, not a `(0 cached)`.
518
+
501
519
  A query that calls no worker prints nothing, whatever the setting — the
502
520
  reporting only ever speaks when there is something to report.
503
521
 
@@ -161,6 +161,15 @@ request line in, one response line out, per call:
161
161
  JSON-text vectors) — or `{"err": "message"}`, which **fails the query**
162
162
  with that message. An `{"err": ...}` response leaves the healthy worker
163
163
  running; only transport failures (timeout, crash) recycle it.
164
+ - **Optional `"meta"`**, alongside `"ok"`: a second top-level object carrying
165
+ facts about how the answer was produced rather than what it is. One key is
166
+ read today — `{"ok": [...], "meta": {"cached": true}}` says the worker
167
+ answered from a cache of its own, which dirsql reports as the `(N cached)`
168
+ split on its [worker-call progress line](./cli.md#progress-reporting). The
169
+ field is **optional and advisory**: a worker that omits it is a worker that
170
+ reports no cache hits, keys dirsql does not recognize are ignored (they
171
+ always have been), and a `meta` of an unexpected shape is ignored too rather
172
+ than failing a query over a progress counter.
164
173
  - **stderr passes through** to `dirsql`'s stderr, so a worker's progress
165
174
  bars and download logs reach the terminal.
166
175
 
@@ -0,0 +1,7 @@
1
+ {
2
+ "command": "just test-e2e",
3
+ "ran_at": 1788557530,
4
+ "exit_code": 0,
5
+ "commit": "97fdc1dfbdf490f71bd2067d8be66a50dce22bcb",
6
+ "branch": "claude/tackle-1034-cachesplit"
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "command": "just test-e2e",
3
+ "ran_at": 1788565282,
4
+ "exit_code": 0,
5
+ "commit": "9257c5204b6cf9b491cf5487aedbf026c5255338",
6
+ "branch": "claude/tackle-1042-py12"
7
+ }
@@ -10,7 +10,7 @@
10
10
  extra_scope = ["packages/rust/src", "packages/python/src"]
11
11
 
12
12
  [python]
13
- one_function_per_file = { max_lines = 100 }
13
+ one_function_per_file = { max_lines = 15 }
14
14
 
15
15
  # Same floor as the root file, which this lane no longer reads.
16
16
  [python.coverage]
@@ -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.34"
9
+ version = "0.4.36"
10
10
  edition.workspace = true
11
11
  # Literal `license` (not `license.workspace = true`) because
12
12
  # putitoutthere's preflight check reads `[package].license` directly
@@ -498,6 +498,24 @@ and, when the query ends:
498
498
  dirsql: ran 41231 worker calls in 2m41s
499
499
  ```
500
500
 
501
+ A worker that keeps a cache of its own can say so per response
502
+ (`{"meta": {"cached": true}}` — see [Worker
503
+ protocol](./config.md#worker-protocol)), and those round trips are then split
504
+ out, because the number that answers *"will this be fast next time"* is not
505
+ the total:
506
+
507
+ ```
508
+ dirsql: running 9204 worker calls (8811 cached)
509
+ dirsql: ran 41231 worker calls in 2m41s (38104 cached)
510
+ ```
511
+
512
+ Both figures count **worker round trips, not rows**. A function declared
513
+ `deterministic = true` lets SQLite reuse one answer for identical arguments
514
+ within a query, so repeated content never reaches the worker at all and both
515
+ numbers sit below the row count on a corpus with duplicates. The split covers
516
+ only what the worker itself reports serving from cache. A worker that sends no
517
+ `meta` gets the unsplit line above, not a `(0 cached)`.
518
+
501
519
  A query that calls no worker prints nothing, whatever the setting — the
502
520
  reporting only ever speaks when there is something to report.
503
521
 
@@ -161,6 +161,15 @@ request line in, one response line out, per call:
161
161
  JSON-text vectors) — or `{"err": "message"}`, which **fails the query**
162
162
  with that message. An `{"err": ...}` response leaves the healthy worker
163
163
  running; only transport failures (timeout, crash) recycle it.
164
+ - **Optional `"meta"`**, alongside `"ok"`: a second top-level object carrying
165
+ facts about how the answer was produced rather than what it is. One key is
166
+ read today — `{"ok": [...], "meta": {"cached": true}}` says the worker
167
+ answered from a cache of its own, which dirsql reports as the `(N cached)`
168
+ split on its [worker-call progress line](./cli.md#progress-reporting). The
169
+ field is **optional and advisory**: a worker that omits it is a worker that
170
+ reports no cache hits, keys dirsql does not recognize are ignored (they
171
+ always have been), and a `meta` of an unexpected shape is ignored too rather
172
+ than failing a query over a progress counter.
164
173
  - **stderr passes through** to `dirsql`'s stderr, so a worker's progress
165
174
  bars and download logs reach the terminal.
166
175