dirsql 0.4.102__tar.gz → 0.4.104__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 (418) hide show
  1. {dirsql-0.4.102 → dirsql-0.4.104}/Cargo.lock +2 -2
  2. {dirsql-0.4.102 → dirsql-0.4.104}/PKG-INFO +1 -1
  3. {dirsql-0.4.102/packages/rust → dirsql-0.4.104}/docs/reference/hooks.md +1 -1
  4. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/Cargo.toml +1 -1
  5. dirsql-0.4.104/packages/python/changelog.d/2026-10-07-spread-few-large-files.md +1 -0
  6. dirsql-0.4.104/packages/python/changelog.d/2026-10-08-small-walks-stay-on-one-thread.md +1 -0
  7. {dirsql-0.4.102 → dirsql-0.4.104/packages/python}/docs/reference/hooks.md +1 -1
  8. dirsql-0.4.104/packages/python/e2e-attestations/bot-1426-walk-spawn-threshold-1008.json +7 -0
  9. dirsql-0.4.104/packages/python/e2e-attestations/bot-1454-split-few-files.json +7 -0
  10. dirsql-0.4.104/packages/python/migrations.d/2026-10-07-spread-few-large-files.md +39 -0
  11. dirsql-0.4.104/packages/python/migrations.d/2026-10-08-small-walks-stay-on-one-thread.md +21 -0
  12. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/Cargo.toml +1 -1
  13. {dirsql-0.4.102/packages/python → dirsql-0.4.104/packages/rust}/docs/reference/hooks.md +1 -1
  14. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/on_file.rs +127 -4
  15. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/tree_walk.rs +13 -3
  16. {dirsql-0.4.102 → dirsql-0.4.104}/Cargo.toml +0 -0
  17. {dirsql-0.4.102 → dirsql-0.4.104}/README.md +0 -0
  18. {dirsql-0.4.102 → dirsql-0.4.104}/dirsql/__init__.py +0 -0
  19. {dirsql-0.4.102 → dirsql-0.4.104}/dirsql/_async.py +0 -0
  20. {dirsql-0.4.102 → dirsql-0.4.104}/dirsql/_dirsql.pyi +0 -0
  21. {dirsql-0.4.102 → dirsql-0.4.104}/dirsql/cli/__init__.py +0 -0
  22. {dirsql-0.4.102 → dirsql-0.4.104}/dirsql/cli/discover_plugins/__init__.py +0 -0
  23. {dirsql-0.4.102 → dirsql-0.4.104}/dirsql/cli/discover_plugins/discovered_fragments.py +0 -0
  24. {dirsql-0.4.102 → dirsql-0.4.104}/dirsql/cli/discover_plugins/discovery_disabled.py +0 -0
  25. {dirsql-0.4.102 → dirsql-0.4.104}/dirsql/cli/discover_plugins/fragment_path.py +0 -0
  26. {dirsql-0.4.102 → dirsql-0.4.104}/dirsql/cli/discover_plugins/with_discovered_plugins.py +0 -0
  27. {dirsql-0.4.102 → dirsql-0.4.104}/dirsql/cli/main.py +0 -0
  28. {dirsql-0.4.102 → dirsql-0.4.104}/dirsql/cli/resolve_config_extensions.py +0 -0
  29. {dirsql-0.4.102 → dirsql-0.4.104}/dirsql/plan_entry_path.py +0 -0
  30. {dirsql-0.4.102 → dirsql-0.4.104}/dirsql/py.typed +0 -0
  31. {dirsql-0.4.102 → dirsql-0.4.104}/dirsql/read_config.py +0 -0
  32. {dirsql-0.4.102 → dirsql-0.4.104}/dirsql/resolve_configs_extension_specs.py +0 -0
  33. {dirsql-0.4.102 → dirsql-0.4.104}/dirsql/resolve_extension.py +0 -0
  34. {dirsql-0.4.102 → dirsql-0.4.104}/dirsql/resolve_package.py +0 -0
  35. {dirsql-0.4.102 → dirsql-0.4.104}/docs/.claude/CLAUDE.md +0 -0
  36. {dirsql-0.4.102 → dirsql-0.4.104}/docs/.vitepress/config.ts +0 -0
  37. {dirsql-0.4.102 → dirsql-0.4.104}/docs/.vitepress/theme/index.ts +0 -0
  38. {dirsql-0.4.102 → dirsql-0.4.104}/docs/.vitepress/theme/lang.ts +0 -0
  39. {dirsql-0.4.102 → dirsql-0.4.104}/docs/AGENTS.md +0 -0
  40. {dirsql-0.4.102 → dirsql-0.4.104}/docs/context/.gitattributes +0 -0
  41. {dirsql-0.4.102 → dirsql-0.4.104}/docs/context/recipes.md +0 -0
  42. {dirsql-0.4.102 → dirsql-0.4.104}/docs/context/troubleshooting.md +0 -0
  43. {dirsql-0.4.102 → dirsql-0.4.104}/docs/context/usage.md +0 -0
  44. {dirsql-0.4.102 → dirsql-0.4.104}/docs/explanation.md +0 -0
  45. {dirsql-0.4.102 → dirsql-0.4.104}/docs/getting-started.md +0 -0
  46. {dirsql-0.4.102 → dirsql-0.4.104}/docs/howto/agent-skill.md +0 -0
  47. {dirsql-0.4.102 → dirsql-0.4.104}/docs/howto/columns-from-paths.md +0 -0
  48. {dirsql-0.4.102 → dirsql-0.4.104}/docs/howto/define-tables.md +0 -0
  49. {dirsql-0.4.102 → dirsql-0.4.104}/docs/howto/embed.md +0 -0
  50. {dirsql-0.4.102 → dirsql-0.4.104}/docs/howto/extract-from-contents.md +0 -0
  51. {dirsql-0.4.102 → dirsql-0.4.104}/docs/howto/load-extension.md +0 -0
  52. {dirsql-0.4.102 → dirsql-0.4.104}/docs/howto/parse-files-into-columns.md +0 -0
  53. {dirsql-0.4.102 → dirsql-0.4.104}/docs/howto/persist.md +0 -0
  54. {dirsql-0.4.102 → dirsql-0.4.104}/docs/howto/query-json.md +0 -0
  55. {dirsql-0.4.102 → dirsql-0.4.104}/docs/howto/query-without-config.md +0 -0
  56. {dirsql-0.4.102 → dirsql-0.4.104}/docs/howto/react-to-changes.md +0 -0
  57. {dirsql-0.4.102 → dirsql-0.4.104}/docs/howto/search-by-meaning.md +0 -0
  58. {dirsql-0.4.102 → dirsql-0.4.104}/docs/howto/search-indexes.md +0 -0
  59. {dirsql-0.4.102 → dirsql-0.4.104}/docs/howto/skip-files.md +0 -0
  60. {dirsql-0.4.102 → dirsql-0.4.104}/docs/howto/write-a-plugin.md +0 -0
  61. {dirsql-0.4.102 → dirsql-0.4.104}/docs/index.md +0 -0
  62. {dirsql-0.4.102 → dirsql-0.4.104}/docs/package.json +0 -0
  63. {dirsql-0.4.102 → dirsql-0.4.104}/docs/plugins.md +0 -0
  64. {dirsql-0.4.102 → dirsql-0.4.104}/docs/pnpm-lock.yaml +0 -0
  65. {dirsql-0.4.102 → dirsql-0.4.104}/docs/pnpm-workspace.yaml +0 -0
  66. {dirsql-0.4.102 → dirsql-0.4.104}/docs/reference/cli.md +0 -0
  67. {dirsql-0.4.102 → dirsql-0.4.104}/docs/reference/columns.md +0 -0
  68. {dirsql-0.4.102 → dirsql-0.4.104}/docs/reference/config.md +0 -0
  69. {dirsql-0.4.102 → dirsql-0.4.104}/docs/reference/glob.md +0 -0
  70. {dirsql-0.4.102 → dirsql-0.4.104}/docs/reference/http-api.md +0 -0
  71. {dirsql-0.4.102 → dirsql-0.4.104}/docs/reference/path-tables.md +0 -0
  72. {dirsql-0.4.102 → dirsql-0.4.104}/docs/reference/sdk.md +0 -0
  73. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/CHANGELOG.md +0 -0
  74. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/MIGRATIONS.md +0 -0
  75. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/README.md +0 -0
  76. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
  77. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-07-13-plugin-discovery.md +0 -0
  78. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-07-13-rename-extract-to-on-file.md +0 -0
  79. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-07-13-repeatable-config.md +0 -0
  80. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
  81. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-07-20-drop-implicit-files-table.md +0 -0
  82. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-07-21-remove-glob-captures.md +0 -0
  83. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-07-24-hookless-table-config-error.md +0 -0
  84. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-07-24-remove-stat-fact-injection.md +0 -0
  85. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-07-29-restore-python-310.md +0 -0
  86. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-08-02-release-profile.md +0 -0
  87. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-08-02-scan-failures.md +0 -0
  88. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-08-03-discovery-ext-resolution.md +0 -0
  89. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-08-03-manylinux-dynamic-binary.md +0 -0
  90. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-08-03-python-no-ignore.md +0 -0
  91. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-08-04-cast-lints.md +0 -0
  92. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-08-04-cli-in-process.md +0 -0
  93. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-08-20-curtaincall-dev-dependency.md +0 -0
  94. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-08-20-declared-table-name.md +0 -0
  95. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-09-04-config-paths-from-argv-module.md +0 -0
  96. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-09-05-config-extension-loader-split.md +0 -0
  97. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-09-05-resolve-config-extensions-split.md +0 -0
  98. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-09-05-resolve-extension-split.md +0 -0
  99. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-09-09-launcher-config-path-scan.md +0 -0
  100. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-09-17-extension-resolution-via-core.md +0 -0
  101. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-09-18-export-scan-failure.md +0 -0
  102. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-09-18-flatten-row-event-in-core.md +0 -0
  103. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-09-18-programmatic-extension-plan.md +0 -0
  104. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-09-20-sigint-ends-a-run-in-progress.md +0 -0
  105. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-09-24-query-rows-in-projection-order.md +0 -0
  106. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-10-02-readme-docs-host.md +0 -0
  107. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-10-03-one-glob-rule-for-config-globs.md +0 -0
  108. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-10-03-path-table-directory-one-level.md +0 -0
  109. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-10-04-path-table-dotfiles-hidden.md +0 -0
  110. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-10-05-brace-groups-follow-bash.md +0 -0
  111. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-10-05-cli-context.md +0 -0
  112. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-10-05-gitignore-requires-repo.md +0 -0
  113. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-10-05-path-table-node-modules-named.md +0 -0
  114. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-10-05-path-table-symlinks.md +0 -0
  115. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-10-05-path-table-trailing-slash.md +0 -0
  116. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-10-05-unbalanced-brackets-literal.md +0 -0
  117. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-10-06-config-braces.md +0 -0
  118. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-10-06-config-directory.md +0 -0
  119. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-10-06-config-dotnames.md +0 -0
  120. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-10-06-config-gitignore.md +0 -0
  121. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-10-06-config-globs-anchor-at-the-config.md +0 -0
  122. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-10-06-config-links.md +0 -0
  123. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-10-06-one-glob-compiler.md +0 -0
  124. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-10-06-plugin-no-default-records.md +0 -0
  125. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-10-06-watch-broadcast.md +0 -0
  126. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-10-06-zero-match-config-table-warning.md +0 -0
  127. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-10-07-bracket-slash-literal.md +0 -0
  128. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-10-07-dotdot-and-double-slashes.md +0 -0
  129. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-10-07-dotdot-as-written.md +0 -0
  130. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-10-07-glob-walks-node-modules.md +0 -0
  131. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-10-07-literal-gitignore.md +0 -0
  132. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-10-07-on-file-ndjson.md +0 -0
  133. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-10-07-parallel-hooks.md +0 -0
  134. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-10-07-persist-cache-outside-root.md +0 -0
  135. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/2026-10-07-posix-classes-unicode.md +0 -0
  136. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/changelog.d/README.md +0 -0
  137. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/conftest.py +0 -0
  138. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/.claude/CLAUDE.md +0 -0
  139. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/.vitepress/config.ts +0 -0
  140. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/.vitepress/theme/index.ts +0 -0
  141. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/.vitepress/theme/lang.ts +0 -0
  142. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/AGENTS.md +0 -0
  143. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/context/.gitattributes +0 -0
  144. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/context/recipes.md +0 -0
  145. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/context/troubleshooting.md +0 -0
  146. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/context/usage.md +0 -0
  147. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/explanation.md +0 -0
  148. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/getting-started.md +0 -0
  149. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/howto/agent-skill.md +0 -0
  150. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/howto/columns-from-paths.md +0 -0
  151. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/howto/define-tables.md +0 -0
  152. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/howto/embed.md +0 -0
  153. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/howto/extract-from-contents.md +0 -0
  154. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/howto/load-extension.md +0 -0
  155. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/howto/parse-files-into-columns.md +0 -0
  156. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/howto/persist.md +0 -0
  157. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/howto/query-json.md +0 -0
  158. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/howto/query-without-config.md +0 -0
  159. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/howto/react-to-changes.md +0 -0
  160. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/howto/search-by-meaning.md +0 -0
  161. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/howto/search-indexes.md +0 -0
  162. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/howto/skip-files.md +0 -0
  163. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/howto/write-a-plugin.md +0 -0
  164. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/index.md +0 -0
  165. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/package.json +0 -0
  166. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/plugins.md +0 -0
  167. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/pnpm-lock.yaml +0 -0
  168. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/pnpm-workspace.yaml +0 -0
  169. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/reference/cli.md +0 -0
  170. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/reference/columns.md +0 -0
  171. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/reference/config.md +0 -0
  172. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/reference/glob.md +0 -0
  173. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/reference/http-api.md +0 -0
  174. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/reference/path-tables.md +0 -0
  175. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/docs/reference/sdk.md +0 -0
  176. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/bot-1334-listing-exemptions.json +0 -0
  177. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/bot-1397-watch-broadcast.json +0 -0
  178. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/bot-1398-inotify-error.json +0 -0
  179. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/bot-1399-server-cors.json +0 -0
  180. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/bot-1401-watch-scope.json +0 -0
  181. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/bot-1407-child-place-depth.json +0 -0
  182. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/bot-1414-stat-speed.json +0 -0
  183. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/bot-1415-server-speed.json +0 -0
  184. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/bot-1418-node-modules.json +0 -0
  185. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/bot-1419-dotdot-slashes.json +0 -0
  186. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/bot-1420-bracket-slash.json +0 -0
  187. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/bot-1421-posix-unicode.json +0 -0
  188. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/bot-1422-literal-gitignore.json +0 -0
  189. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/bot-1428-ndjson-hooks.json +0 -0
  190. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/bot-1429-parallel-hooks.json +0 -0
  191. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/bot-1430-dotdot-as-written.json +0 -0
  192. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/bot-1431-persist-cache-dir.json +0 -0
  193. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/bot-1437-test-cache-isolation.json +0 -0
  194. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/bot-1440-fix-main-build.json +0 -0
  195. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/bot-1448-wildcard-ignored-prefix.json +0 -0
  196. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/bot-1451-named-dir-never-hidden.json +0 -0
  197. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/bot-fix-main-place-depth-20261007.json +0 -0
  198. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/cc-keen-knuth-f11gyq.json +0 -0
  199. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1056-py-ofpf9.json +0 -0
  200. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1066-p1-resolve-extension.json +0 -0
  201. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1078-argv-config-paths-core.json +0 -0
  202. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1079-p2-resolve-config-extensions.json +0 -0
  203. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1080-share-vtab-scaffolding.json +0 -0
  204. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1081-indicatif-progress.json +0 -0
  205. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1096-watch-moved-dir.json +0 -0
  206. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1109-watch-moved-out.json +0 -0
  207. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1119-ext-plan.json +0 -0
  208. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1120-py-ext.json +0 -0
  209. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1122-ext-cleanup.json +0 -0
  210. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1130-codec-crates.json +0 -0
  211. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1131-flatten-row-event.json +0 -0
  212. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1139-sse-flatten.json +0 -0
  213. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1140-scan-failure-export.json +0 -0
  214. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1148-clippy-all-targets.json +0 -0
  215. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1164-sigint-fatal.json +0 -0
  216. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1170-projection-order.json +0 -0
  217. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1172-on-file-path.json +0 -0
  218. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1173-py-projection-order.json +0 -0
  219. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1184-win-rel-paths.json +0 -0
  220. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1185-win-abs-table-names.json +0 -0
  221. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1186-win-test-harness.json +0 -0
  222. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1196-join-index.json +0 -0
  223. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1199-glob-prefix.json +0 -0
  224. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1201-single-walk.json +0 -0
  225. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1204-embed-batch.json +0 -0
  226. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1207-win-argv-quote.json +0 -0
  227. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1208-win-nonverbatim-paths.json +0 -0
  228. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1215-on-file-batch.json +0 -0
  229. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1216-on-file-cleanup.json +0 -0
  230. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1223-config-glob-rule.json +0 -0
  231. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1223-dir-one-level.json +0 -0
  232. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1225-plugin-no-default.json +0 -0
  233. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1226-stale-docs.json +0 -0
  234. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1232-anchor-plumbing.json +0 -0
  235. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1232-config-anchor.json +0 -0
  236. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1232-multi-watch.json +0 -0
  237. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1232-zero-match.json +0 -0
  238. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1238-parallel-walk.json +0 -0
  239. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1241-content-prefetch.json +0 -0
  240. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1243-ingest-perf.json +0 -0
  241. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1249-dotfiles.json +0 -0
  242. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1256-symlinks.json +0 -0
  243. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1257-trailing-slash.json +0 -0
  244. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1258-config-braces.json +0 -0
  245. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1258-config-directory.json +0 -0
  246. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1258-config-dotnames.json +0 -0
  247. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1258-config-gitignore.json +0 -0
  248. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1258-config-links.json +0 -0
  249. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1258-one-pattern.json +0 -0
  250. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1262-brace-literal.json +0 -0
  251. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1264-context.json +0 -0
  252. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1267-posix-classes.json +0 -0
  253. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1268-unbalanced-brackets.json +0 -0
  254. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1269-utf8-chars.json +0 -0
  255. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1271-node-modules-named.json +0 -0
  256. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1272-ancestor-gitignore.json +0 -0
  257. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1273-walk-prune.json +0 -0
  258. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1285-ingest-fast.json +0 -0
  259. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1286-nested-repo.json +0 -0
  260. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1305-glob-speed.json +0 -0
  261. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1308-glob-speed.json +0 -0
  262. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1310-glob-speed.json +0 -0
  263. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1311-glob-speed.json +0 -0
  264. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1312-glob-speed.json +0 -0
  265. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1318-lazy-stat.json +0 -0
  266. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1320-walk-speed.json +0 -0
  267. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1322-walk-readdir.json +0 -0
  268. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1325-parallel-walk.json +0 -0
  269. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1326-stream-rows.json +0 -0
  270. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1330-python-dirsql-patch.json +0 -0
  271. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1330-python-extensions-patch.json +0 -0
  272. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1330-scanner-effects.json +0 -0
  273. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1330-scanner-gitignore.json +0 -0
  274. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1330-vtab-prefetch-flag.json +0 -0
  275. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1330-vtab-read.json +0 -0
  276. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-1351-dot-dirs.json +0 -0
  277. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-819-oneshot-timeout.json +0 -0
  278. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-827-unquote-doubled-quotes.json +0 -0
  279. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-epic-953-slice2-reedline.json +0 -0
  280. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-epic-953-slice3-format.json +0 -0
  281. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-epic-953-stacked-prs-x59wm3.json +0 -0
  282. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-github-issue-825-e4mhhp.json +0 -0
  283. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-issue-951-0eease.json +0 -0
  284. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-issue-962-0jjrfv.json +0 -0
  285. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-issue-986-red-test-e7sjrb.json +0 -0
  286. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-tackle-1034-cachesplit.json +0 -0
  287. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-tackle-1042-py12.json +0 -0
  288. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-tackle-956-xzen74.json +0 -0
  289. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-tackle-957-lrm0z6-worker-calls.json +0 -0
  290. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-tackle-957-lrm0z6.json +0 -0
  291. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/e2e-attestations/claude-tackle-975-n8mc2h.json +0 -0
  292. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
  293. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-07-13-rename-extract-to-on-file.md +0 -0
  294. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
  295. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-07-20-drop-implicit-files-table.md +0 -0
  296. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-07-21-remove-glob-captures.md +0 -0
  297. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-07-24-hookless-table-config-error.md +0 -0
  298. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-07-24-remove-stat-fact-injection.md +0 -0
  299. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-07-29-restore-python-310.md +0 -0
  300. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-08-04-cli-in-process.md +0 -0
  301. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-08-20-declared-table-name.md +0 -0
  302. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-09-20-sigint-ends-a-run-in-progress.md +0 -0
  303. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-09-24-query-rows-in-projection-order.md +0 -0
  304. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-10-02-readme-docs-host.md +0 -0
  305. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-10-03-one-glob-rule-for-config-globs.md +0 -0
  306. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-10-03-path-table-directory-one-level.md +0 -0
  307. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-10-04-path-table-dotfiles-hidden.md +0 -0
  308. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-10-05-brace-groups-follow-bash.md +0 -0
  309. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-10-05-cli-context.md +0 -0
  310. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-10-05-gitignore-requires-repo.md +0 -0
  311. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-10-05-path-table-node-modules-named.md +0 -0
  312. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-10-05-path-table-symlinks.md +0 -0
  313. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-10-05-path-table-trailing-slash.md +0 -0
  314. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-10-05-unbalanced-brackets-literal.md +0 -0
  315. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-10-06-config-braces.md +0 -0
  316. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-10-06-config-directory.md +0 -0
  317. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-10-06-config-dotnames.md +0 -0
  318. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-10-06-config-gitignore.md +0 -0
  319. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-10-06-config-globs-anchor-at-the-config.md +0 -0
  320. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-10-06-config-links.md +0 -0
  321. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-10-06-one-glob-compiler.md +0 -0
  322. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-10-06-plugin-no-default-records.md +0 -0
  323. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-10-06-watch-broadcast.md +0 -0
  324. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-10-06-zero-match-config-table-warning.md +0 -0
  325. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-10-07-bracket-slash-literal.md +0 -0
  326. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-10-07-dotdot-and-double-slashes.md +0 -0
  327. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-10-07-dotdot-as-written.md +0 -0
  328. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-10-07-glob-walks-node-modules.md +0 -0
  329. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-10-07-literal-gitignore.md +0 -0
  330. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-10-07-on-file-ndjson.md +0 -0
  331. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-10-07-parallel-hooks.md +0 -0
  332. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-10-07-persist-cache-outside-root.md +0 -0
  333. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/2026-10-07-posix-classes-unicode.md +0 -0
  334. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/migrations.d/README.md +0 -0
  335. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/src/lib.rs +0 -0
  336. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/testing-conventions.toml +0 -0
  337. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/tests/__init__.py +0 -0
  338. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/tests/conftest.py +0 -0
  339. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/tests/e2e/__init__.py +0 -0
  340. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/__init__.py +0 -0
  341. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/dirsql.toml +0 -0
  342. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/tests/e2e/speed_of_light.py +0 -0
  343. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/tests/integration/__init__.py +0 -0
  344. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/tests/integration/binding/__init__.py +0 -0
  345. {dirsql-0.4.102 → dirsql-0.4.104}/packages/python/tests/integration/hermetic/__init__.py +0 -0
  346. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/CHANGELOG.md +0 -0
  347. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/MIGRATIONS.md +0 -0
  348. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/README.md +0 -0
  349. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/benches/db_bench.rs +0 -0
  350. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/benches/differ_bench.rs +0 -0
  351. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/benches/matcher_bench.rs +0 -0
  352. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/benches/scanner_bench.rs +0 -0
  353. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/docs/context/.gitattributes +0 -0
  354. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/docs/context/recipes.md +0 -0
  355. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/docs/context/troubleshooting.md +0 -0
  356. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/docs/context/usage.md +0 -0
  357. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/docs/explanation.md +0 -0
  358. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/docs/getting-started.md +0 -0
  359. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/docs/howto/agent-skill.md +0 -0
  360. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/docs/howto/columns-from-paths.md +0 -0
  361. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/docs/howto/define-tables.md +0 -0
  362. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/docs/howto/embed.md +0 -0
  363. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/docs/howto/extract-from-contents.md +0 -0
  364. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/docs/howto/load-extension.md +0 -0
  365. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/docs/howto/parse-files-into-columns.md +0 -0
  366. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/docs/howto/persist.md +0 -0
  367. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/docs/howto/query-json.md +0 -0
  368. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/docs/howto/query-without-config.md +0 -0
  369. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/docs/howto/react-to-changes.md +0 -0
  370. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/docs/howto/search-by-meaning.md +0 -0
  371. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/docs/howto/search-indexes.md +0 -0
  372. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/docs/howto/skip-files.md +0 -0
  373. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/docs/howto/write-a-plugin.md +0 -0
  374. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/docs/index.md +0 -0
  375. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/docs/plugins.md +0 -0
  376. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/docs/reference/cli.md +0 -0
  377. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/docs/reference/columns.md +0 -0
  378. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/docs/reference/config.md +0 -0
  379. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/docs/reference/glob.md +0 -0
  380. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/docs/reference/http-api.md +0 -0
  381. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/docs/reference/path-tables.md +0 -0
  382. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/docs/reference/sdk.md +0 -0
  383. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/bin/dirsql.rs +0 -0
  384. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/brace.rs +0 -0
  385. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/cli/context.rs +0 -0
  386. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/cli/execute.rs +0 -0
  387. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/cli/init.rs +0 -0
  388. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/cli/mod.rs +0 -0
  389. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/cli/repl.rs +0 -0
  390. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/cli/router.rs +0 -0
  391. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/cli/run.rs +0 -0
  392. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/cli/serialize.rs +0 -0
  393. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/cli/server.rs +0 -0
  394. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/cli/table.rs +0 -0
  395. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/command.rs +0 -0
  396. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/config.rs +0 -0
  397. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/db.rs +0 -0
  398. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/default_config.toml +0 -0
  399. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/differ.rs +0 -0
  400. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/extension_resolution.rs +0 -0
  401. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/functions.rs +0 -0
  402. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/infer.rs +0 -0
  403. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/launcher.rs +0 -0
  404. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/lib.rs +0 -0
  405. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/listing.rs +0 -0
  406. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/matcher.rs +0 -0
  407. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/parsed_vtab.rs +0 -0
  408. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/path_table.rs +0 -0
  409. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/persist.rs +0 -0
  410. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/posix_class.rs +0 -0
  411. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/progress.rs +0 -0
  412. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/row_event_flat.rs +0 -0
  413. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/scanner.rs +0 -0
  414. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/sql_literal.rs +0 -0
  415. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/vtab.rs +0 -0
  416. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/vtab_scaffold.rs +0 -0
  417. {dirsql-0.4.102 → dirsql-0.4.104}/packages/rust/src/watcher.rs +0 -0
  418. {dirsql-0.4.102 → dirsql-0.4.104}/pyproject.toml +0 -0
@@ -573,7 +573,7 @@ dependencies = [
573
573
 
574
574
  [[package]]
575
575
  name = "dirsql"
576
- version = "0.4.102"
576
+ version = "0.4.104"
577
577
  dependencies = [
578
578
  "assert_cmd",
579
579
  "axum",
@@ -625,7 +625,7 @@ dependencies = [
625
625
 
626
626
  [[package]]
627
627
  name = "dirsql-py-ext"
628
- version = "0.4.102"
628
+ version = "0.4.104"
629
629
  dependencies = [
630
630
  "dirsql",
631
631
  "pyo3",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dirsql
3
- Version: 0.4.102
3
+ Version: 0.4.104
4
4
  Requires-Dist: bin-shim>=0.1
5
5
  Summary: Ephemeral SQL index over a local directory
6
6
  Keywords: sql,filesystem,directory,sqlite,index
@@ -163,7 +163,7 @@ table's paths outgrow that cap, dirsql splits them into the fewest
163
163
  consecutive runs that fit, runs the command once per run, and concatenates
164
164
  the rows it prints. Runs execute concurrently, one per CPU at most, like
165
165
  `xargs -P`, so rows keep their order within a run but not across runs; SQL
166
- never promised row order, so `ORDER BY` what you need. The command cannot tell: each run is an
166
+ never promised row order, so `ORDER BY` what you need. A table whose paths fit one run is also split, by file size, into up to one run per CPU once it holds at least 4 MiB of file data per run, so a few large files do not serialize behind one process. The command cannot tell: each run is an
167
167
  ordinary invocation with a subset of the paths. A command must therefore not
168
168
  assume one invocation sees every path — a count, a cross-file join, or a
169
169
  dedupe over `sys.argv[1:]` is per run, not per table. Do that work in SQL.
@@ -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.102"
7
+ version = "0.4.104"
8
8
  # abi3 note: the `abi3-py310` pyo3 feature (below) builds ONE stable-ABI
9
9
  # `cp310-abi3` wheel per platform that loads on every CPython >= 3.10
10
10
  # (matching `pyproject.toml`'s `requires-python = ">=3.10"`), instead of
@@ -0,0 +1 @@
1
+ **Changed** An `on-file` table with a few large files now runs its command over up to one run per CPU, split by file size at 4 MiB of data per run, instead of one run over all of them. Small tables still use one run.
@@ -0,0 +1 @@
1
+ **Changed** Scans and watcher refreshes of trees under about a hundred directories no longer spawn worker threads, so they finish faster; larger trees still walk on every core.
@@ -163,7 +163,7 @@ table's paths outgrow that cap, dirsql splits them into the fewest
163
163
  consecutive runs that fit, runs the command once per run, and concatenates
164
164
  the rows it prints. Runs execute concurrently, one per CPU at most, like
165
165
  `xargs -P`, so rows keep their order within a run but not across runs; SQL
166
- never promised row order, so `ORDER BY` what you need. The command cannot tell: each run is an
166
+ never promised row order, so `ORDER BY` what you need. A table whose paths fit one run is also split, by file size, into up to one run per CPU once it holds at least 4 MiB of file data per run, so a few large files do not serialize behind one process. The command cannot tell: each run is an
167
167
  ordinary invocation with a subset of the paths. A command must therefore not
168
168
  assume one invocation sees every path — a count, a cross-file join, or a
169
169
  dedupe over `sys.argv[1:]` is per run, not per table. Do that work in SQL.
@@ -0,0 +1,7 @@
1
+ {
2
+ "command": "uv run python -m pytest tests/e2e/glob_speed_depth_bound_test.py tests/e2e/glob_speed_dotfiles_test.py tests/e2e/glob_speed_gitignore_test.py tests/e2e/glob_speed_matchers_test.py tests/e2e/glob_speed_node_modules_test.py tests/e2e/glob_speed_one_level_test.py tests/e2e/glob_speed_recursive_test.py tests/e2e/glob_speed_symlink_test.py tests/e2e/stat_speed_test.py tests/e2e/use_case_dossier_test.py -q",
3
+ "ran_at": 1791462453,
4
+ "exit_code": 0,
5
+ "commit": "ed0fc583ad7e8f6151b4c22c81ee3660bdaa7696",
6
+ "branch": "bot/1426-walk-spawn-threshold-1008"
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "command": "uv run python -m pytest tests/e2e/declared_table_name_test.py tests/e2e/fanout_test.py tests/e2e/extension_package_test.py tests/e2e/frontmatter_parse_speed_test.py tests/e2e/jsonl_parse_speed_test.py tests/e2e/plugin_extension_discovery_test.py tests/e2e/on_file_query_test.py tests/e2e/sigint_interrupt_test.py tests/e2e/use_case_notebook_test.py tests/e2e/server_speed_test.py tests/e2e/query_contract_test.py tests/e2e/plugin_discovery_test.py tests/e2e/use_case_transcripts_test.py -q",
3
+ "ran_at": 1791411055,
4
+ "exit_code": 0,
5
+ "commit": "7a93d0b97fe085a269b90d2b75c2a0aa22511c18",
6
+ "branch": "bot/1454-split-few-files"
7
+ }
@@ -0,0 +1,39 @@
1
+ ### `on-file` splits large tables by file size
2
+
3
+ #### Summary
4
+
5
+ A table whose paths fit one argument list is now also split into several
6
+ concurrent runs when its files hold at least 4 MiB in total per run, up
7
+ to one run per CPU. Small tables are unchanged.
8
+
9
+ #### Required changes
10
+
11
+ _None._
12
+
13
+ #### Deprecations removed
14
+
15
+ _None._
16
+
17
+ #### Behavior changes without code changes
18
+
19
+ - A hook may now see a subset of the table's paths even when the table is
20
+ small in path count. A hook must already not assume it sees every path;
21
+ do cross-file work in SQL.
22
+ - Rows from different runs have no defined order; add an `ORDER BY`.
23
+
24
+ #### Verification
25
+
26
+ ```bash
27
+ cd "$(mktemp -d)"
28
+ for i in 1 2 3 4; do head -c 5000000 /dev/zero | tr '\0' x > "f$i.txt"; done
29
+ printf 'echo "{\\"n\\":$#}"\n' > count.sh
30
+ cat > .dirsql.toml <<'TOML'
31
+ [[table]]
32
+ name = "t"
33
+ ddl = "CREATE TABLE t (n INTEGER)"
34
+ glob = "*.txt"
35
+ on-file = "sh count.sh"
36
+ TOML
37
+ dirsql query "SELECT count(*) AS runs, sum(n) AS paths FROM t" -c .dirsql.toml
38
+ # expected: paths is 4; runs is the smaller of 4 and the CPU count
39
+ ```
@@ -0,0 +1,21 @@
1
+ ### Small trees are walked on one thread
2
+
3
+ #### Summary
4
+
5
+ Directory walks of small trees (under about 128 directories) stay on the calling thread instead of spawning one worker per core. Results and ordering are unchanged; nothing breaks.
6
+
7
+ #### Required changes
8
+
9
+ _None._
10
+
11
+ #### Deprecations removed
12
+
13
+ _None._
14
+
15
+ #### Behavior changes without code changes
16
+
17
+ _None._
18
+
19
+ #### Verification
20
+
21
+ Run `dirsql --help`; the CLI starts as before.
@@ -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.102"
9
+ version = "0.4.104"
10
10
  edition.workspace = true
11
11
  # Literal `license` (not `license.workspace = true`) because
12
12
  # putitoutthere's preflight check reads `[package].license` directly
@@ -163,7 +163,7 @@ table's paths outgrow that cap, dirsql splits them into the fewest
163
163
  consecutive runs that fit, runs the command once per run, and concatenates
164
164
  the rows it prints. Runs execute concurrently, one per CPU at most, like
165
165
  `xargs -P`, so rows keep their order within a run but not across runs; SQL
166
- never promised row order, so `ORDER BY` what you need. The command cannot tell: each run is an
166
+ never promised row order, so `ORDER BY` what you need. A table whose paths fit one run is also split, by file size, into up to one run per CPU once it holds at least 4 MiB of file data per run, so a few large files do not serialize behind one process. The command cannot tell: each run is an
167
167
  ordinary invocation with a subset of the paths. A command must therefore not
168
168
  assume one invocation sees every path — a count, a cross-file join, or a
169
169
  dedupe over `sys.argv[1:]` is per run, not per table. Do that work in SQL.
@@ -73,10 +73,12 @@ pub(crate) fn run_streaming(
73
73
  .iter()
74
74
  .map(|path| command::non_verbatim(&path.to_string_lossy()))
75
75
  .collect();
76
- let runs = chunks(&args, ARG_BUDGET.saturating_sub(argv_bytes(&argv)));
77
- let workers = std::thread::available_parallelism()
78
- .map_or(1, std::num::NonZero::get)
79
- .min(runs.len());
76
+ let cpus = std::thread::available_parallelism().map_or(1, std::num::NonZero::get);
77
+ let mut runs = chunks(&args, ARG_BUDGET.saturating_sub(argv_bytes(&argv)));
78
+ if runs.len() == 1 {
79
+ runs = spread(&args, &file_sizes(paths), cpus);
80
+ }
81
+ let workers = cpus.min(runs.len());
80
82
 
81
83
  let next = AtomicUsize::new(0);
82
84
  let aborted = AtomicBool::new(false);
@@ -202,6 +204,45 @@ fn chunks(args: &[String], budget: usize) -> Vec<&[String]> {
202
204
  out
203
205
  }
204
206
 
207
+ /// Bytes of file data worth a process of its own: below this, spawning
208
+ /// another invocation costs more than it saves.
209
+ const MIN_RUN_BYTES: u64 = 4 * 1024 * 1024;
210
+
211
+ /// Each path's size in bytes; a path that cannot be read counts as empty.
212
+ fn file_sizes(paths: &[PathBuf]) -> Vec<u64> {
213
+ paths
214
+ .iter()
215
+ .map(|path| std::fs::metadata(path).map_or(0, |meta| meta.len()))
216
+ .collect()
217
+ }
218
+
219
+ /// Split `args` into at most `parts` consecutive runs holding about equal
220
+ /// bytes of file data, preserving order, and never more runs than
221
+ /// [`MIN_RUN_BYTES`] of data justify. `sizes` runs parallel to `args`.
222
+ fn spread<'a>(args: &'a [String], sizes: &[u64], parts: usize) -> Vec<&'a [String]> {
223
+ let total: u64 = sizes.iter().sum();
224
+ let parts = parts
225
+ .min(args.len())
226
+ .min(usize::try_from(total / MIN_RUN_BYTES).unwrap_or(usize::MAX));
227
+ if parts <= 1 {
228
+ return vec![args];
229
+ }
230
+ let mut out = Vec::new();
231
+ let mut start = 0;
232
+ let mut seen = 0u64;
233
+ for (i, size) in sizes.iter().enumerate() {
234
+ seen += size;
235
+ let cut = u64::try_from(out.len() + 1).unwrap_or(u64::MAX);
236
+ let last = i + 1 == args.len();
237
+ if !last && out.len() + 1 < parts && seen * parts as u64 >= total * cut {
238
+ out.push(&args[start..=i]);
239
+ start = i + 1;
240
+ }
241
+ }
242
+ out.push(&args[start..]);
243
+ out
244
+ }
245
+
205
246
  #[cfg(test)]
206
247
  mod tests {
207
248
  use super::*;
@@ -344,6 +385,88 @@ mod tests {
344
385
  assert_eq!(total, 6000);
345
386
  }
346
387
 
388
+ fn files_of(dir: &Path, count: usize, bytes: usize) -> Vec<PathBuf> {
389
+ (0..count)
390
+ .map(|i| {
391
+ let path = dir.join(format!("f{i}.jsonl"));
392
+ std::fs::write(&path, vec![b'x'; bytes]).unwrap();
393
+ path
394
+ })
395
+ .collect()
396
+ }
397
+
398
+ fn invocations_over(paths: &[PathBuf]) -> usize {
399
+ run(
400
+ r#"sh -c 'echo "{\"n\":$#}"' sh"#,
401
+ Path::new("."),
402
+ Path::new("."),
403
+ paths,
404
+ )
405
+ .unwrap()
406
+ .len()
407
+ }
408
+
409
+ #[test]
410
+ fn spread_cuts_equal_bytes_in_order() {
411
+ let args = args(&["a", "b", "c", "d"]);
412
+ let mib = 1024 * 1024;
413
+ let runs = spread(&args, &[8 * mib, 8 * mib, 8 * mib, 8 * mib], 2);
414
+ assert_eq!(lens(&runs), [2, 2]);
415
+ assert_eq!(runs[1], ["c", "d"]);
416
+ }
417
+
418
+ #[test]
419
+ fn spread_never_makes_more_runs_than_the_data_justifies() {
420
+ let args = args(&["a", "b", "c", "d"]);
421
+ let mib = 1024 * 1024;
422
+ assert_eq!(lens(&spread(&args, &[5 * mib; 4], 16)), [1, 1, 1, 1]);
423
+ assert_eq!(lens(&spread(&args, &[mib; 4], 16)), [4]);
424
+ }
425
+
426
+ #[test]
427
+ fn spread_isolates_a_dominant_file() {
428
+ let args = args(&["a", "b", "c"]);
429
+ let mib = 1024 * 1024;
430
+ assert_eq!(lens(&spread(&args, &[100 * mib, mib, mib], 2)), [1, 2]);
431
+ }
432
+
433
+ #[test]
434
+ fn spread_cuts_at_each_even_share_of_the_bytes() {
435
+ let args = args(&["a", "b", "c", "d", "e"]);
436
+ let mib = 1024 * 1024;
437
+ let sizes = [5 * mib, 0, 5 * mib, 5 * mib, 0];
438
+ assert_eq!(lens(&spread(&args, &sizes, 3)), [1, 2, 2]);
439
+ }
440
+
441
+ #[test]
442
+ fn spread_never_ends_with_an_empty_run() {
443
+ let args = args(&["a", "b", "c"]);
444
+ let mib = 1024 * 1024;
445
+ let sizes = [20 * mib, 0, 20 * mib];
446
+ assert_eq!(lens(&spread(&args, &sizes, 3)), [1, 2]);
447
+ }
448
+
449
+ #[test]
450
+ fn spread_gives_unreadable_files_no_weight() {
451
+ let args = args(&["a", "b"]);
452
+ assert_eq!(lens(&spread(&args, &[0, 0], 4)), [2]);
453
+ }
454
+
455
+ #[test]
456
+ fn run_spreads_a_few_large_files_across_the_available_workers() {
457
+ let dir = tempfile::tempdir().unwrap();
458
+ let paths = files_of(dir.path(), 4, 4 * 1024 * 1024);
459
+ let runs = invocations_over(&paths);
460
+ assert!((2..=4).contains(&runs), "got {runs} invocations");
461
+ }
462
+
463
+ #[test]
464
+ fn run_keeps_a_few_small_files_in_one_invocation() {
465
+ let dir = tempfile::tempdir().unwrap();
466
+ let paths = files_of(dir.path(), 4, 100);
467
+ assert_eq!(invocations_over(&paths), 1);
468
+ }
469
+
347
470
  #[test]
348
471
  fn run_names_the_line_of_bad_output_after_earlier_blocks() {
349
472
  let err = run(
@@ -16,7 +16,7 @@ pub(crate) enum Step<D, L> {
16
16
 
17
17
  /// Once a walk has found this many directories it shares them across the
18
18
  /// cores; below it, spawning workers costs more than the exploring.
19
- const PARALLEL_DIRS: usize = 16;
19
+ const PARALLEL_DIRS: usize = 128;
20
20
 
21
21
  enum Item<L> {
22
22
  Dir(usize),
@@ -211,7 +211,7 @@ mod tests {
211
211
 
212
212
  #[test]
213
213
  fn sibling_directories_are_explored_on_more_than_one_thread() {
214
- assert!(threads_exploring(4, 3) > 1);
214
+ assert!(threads_exploring(4, 4) > 1);
215
215
  }
216
216
 
217
217
  fn threads_exploring(fanout: usize, depth: usize) -> usize {
@@ -231,9 +231,19 @@ mod tests {
231
231
  assert_eq!(threads_exploring(3, 1), 1);
232
232
  }
233
233
 
234
+ #[test]
235
+ fn a_walk_of_a_few_dozen_directories_stays_on_the_calling_thread() {
236
+ assert_eq!(threads_exploring(4, 2), 1);
237
+ }
238
+
239
+ #[test]
240
+ fn a_walk_of_under_a_hundred_directories_stays_on_the_calling_thread() {
241
+ assert_eq!(threads_exploring(4, 3), 1);
242
+ }
243
+
234
244
  #[test]
235
245
  fn a_walk_spawns_its_workers_once() {
236
246
  let cores = thread::available_parallelism().map_or(1, usize::from);
237
- assert!(threads_exploring(4, 3) <= cores);
247
+ assert!(threads_exploring(4, 4) <= cores);
238
248
  }
239
249
  }
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