dirsql 0.4.87__tar.gz → 0.4.89__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.
- {dirsql-0.4.87 → dirsql-0.4.89}/Cargo.lock +2 -2
- {dirsql-0.4.87 → dirsql-0.4.89}/PKG-INFO +1 -1
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/Cargo.toml +1 -1
- dirsql-0.4.89/packages/python/changelog.d/2026-10-06-config-directory.md +3 -0
- dirsql-0.4.89/packages/python/changelog.d/2026-10-06-config-gitignore.md +3 -0
- dirsql-0.4.89/packages/python/e2e-attestations/claude-1258-config-directory.json +7 -0
- dirsql-0.4.89/packages/python/e2e-attestations/claude-1258-config-gitignore.json +7 -0
- dirsql-0.4.89/packages/python/migrations.d/2026-10-06-config-directory.md +39 -0
- dirsql-0.4.89/packages/python/migrations.d/2026-10-06-config-gitignore.md +45 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/Cargo.toml +1 -1
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/lib.rs +36 -1
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/matcher.rs +19 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/path_table.rs +50 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/scanner.rs +41 -3
- {dirsql-0.4.87 → dirsql-0.4.89}/Cargo.toml +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/README.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/dirsql/__init__.py +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/dirsql/_async.py +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/dirsql/_dirsql.pyi +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/dirsql/cli/__init__.py +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/dirsql/cli/discover_plugins/__init__.py +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/dirsql/cli/discover_plugins/discovered_fragments.py +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/dirsql/cli/discover_plugins/discovery_disabled.py +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/dirsql/cli/discover_plugins/fragment_path.py +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/dirsql/cli/discover_plugins/with_discovered_plugins.py +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/dirsql/cli/main.py +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/dirsql/cli/resolve_config_extensions.py +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/dirsql/plan_entry_path.py +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/dirsql/py.typed +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/dirsql/read_config.py +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/dirsql/resolve_configs_extension_specs.py +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/dirsql/resolve_extension.py +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/dirsql/resolve_package.py +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/.claude/CLAUDE.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/.vitepress/config.ts +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/.vitepress/theme/index.ts +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/.vitepress/theme/lang.ts +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/AGENTS.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/context/.gitattributes +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/context/recipes.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/context/troubleshooting.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/context/usage.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/explanation.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/getting-started.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/howto/agent-skill.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/howto/columns-from-paths.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/howto/define-tables.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/howto/embed.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/howto/extract-from-contents.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/howto/load-extension.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/howto/parse-files-into-columns.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/howto/persist.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/howto/query-json.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/howto/query-without-config.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/howto/react-to-changes.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/howto/search-by-meaning.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/howto/search-indexes.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/howto/skip-files.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/howto/write-a-plugin.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/index.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/package.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/plugins.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/pnpm-lock.yaml +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/pnpm-workspace.yaml +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/reference/cli.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/reference/columns.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/reference/config.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/reference/hooks.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/reference/http-api.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/reference/path-tables.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/docs/reference/sdk.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/CHANGELOG.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/MIGRATIONS.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/README.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-07-13-plugin-discovery.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-07-13-rename-extract-to-on-file.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-07-13-repeatable-config.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-07-20-drop-implicit-files-table.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-07-21-remove-glob-captures.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-07-24-hookless-table-config-error.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-07-24-remove-stat-fact-injection.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-07-29-restore-python-310.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-08-02-release-profile.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-08-02-scan-failures.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-08-03-discovery-ext-resolution.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-08-03-manylinux-dynamic-binary.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-08-03-python-no-ignore.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-08-04-cast-lints.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-08-04-cli-in-process.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-08-20-curtaincall-dev-dependency.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-08-20-declared-table-name.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-09-04-config-paths-from-argv-module.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-09-05-config-extension-loader-split.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-09-05-resolve-config-extensions-split.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-09-05-resolve-extension-split.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-09-09-launcher-config-path-scan.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-09-17-extension-resolution-via-core.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-09-18-export-scan-failure.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-09-18-flatten-row-event-in-core.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-09-18-programmatic-extension-plan.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-09-20-sigint-ends-a-run-in-progress.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-09-24-query-rows-in-projection-order.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-10-02-readme-docs-host.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-10-03-one-glob-rule-for-config-globs.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-10-03-path-table-directory-one-level.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-10-04-path-table-dotfiles-hidden.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-10-05-brace-groups-follow-bash.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-10-05-cli-context.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-10-05-gitignore-requires-repo.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-10-05-path-table-node-modules-named.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-10-05-path-table-symlinks.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-10-05-path-table-trailing-slash.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-10-05-unbalanced-brackets-literal.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-10-06-config-globs-anchor-at-the-config.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-10-06-one-glob-compiler.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-10-06-plugin-no-default-records.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-10-06-watch-broadcast.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-10-06-zero-match-config-table-warning.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/README.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/conftest.py +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/.claude/CLAUDE.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/.vitepress/config.ts +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/.vitepress/theme/index.ts +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/.vitepress/theme/lang.ts +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/AGENTS.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/context/.gitattributes +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/context/recipes.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/context/troubleshooting.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/context/usage.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/explanation.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/getting-started.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/howto/agent-skill.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/howto/columns-from-paths.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/howto/define-tables.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/howto/embed.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/howto/extract-from-contents.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/howto/load-extension.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/howto/parse-files-into-columns.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/howto/persist.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/howto/query-json.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/howto/query-without-config.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/howto/react-to-changes.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/howto/search-by-meaning.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/howto/search-indexes.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/howto/skip-files.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/howto/write-a-plugin.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/index.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/package.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/plugins.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/pnpm-lock.yaml +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/pnpm-workspace.yaml +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/reference/cli.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/reference/columns.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/reference/config.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/reference/hooks.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/reference/http-api.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/reference/path-tables.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/docs/reference/sdk.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/bot-1397-watch-broadcast.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/bot-1398-inotify-error.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/bot-1399-server-cors.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/bot-1401-watch-scope.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/bot-1407-child-place-depth.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/cc-keen-knuth-f11gyq.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1056-py-ofpf9.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1066-p1-resolve-extension.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1078-argv-config-paths-core.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1079-p2-resolve-config-extensions.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1080-share-vtab-scaffolding.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1081-indicatif-progress.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1096-watch-moved-dir.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1109-watch-moved-out.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1119-ext-plan.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1120-py-ext.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1122-ext-cleanup.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1130-codec-crates.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1131-flatten-row-event.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1139-sse-flatten.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1140-scan-failure-export.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1148-clippy-all-targets.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1164-sigint-fatal.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1170-projection-order.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1172-on-file-path.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1173-py-projection-order.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1184-win-rel-paths.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1185-win-abs-table-names.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1186-win-test-harness.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1196-join-index.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1199-glob-prefix.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1201-single-walk.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1204-embed-batch.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1207-win-argv-quote.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1208-win-nonverbatim-paths.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1215-on-file-batch.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1216-on-file-cleanup.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1223-config-glob-rule.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1223-dir-one-level.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1225-plugin-no-default.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1226-stale-docs.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1232-anchor-plumbing.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1232-config-anchor.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1232-multi-watch.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1232-zero-match.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1238-parallel-walk.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1241-content-prefetch.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1243-ingest-perf.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1249-dotfiles.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1256-symlinks.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1257-trailing-slash.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1258-one-pattern.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1262-brace-literal.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1264-context.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1267-posix-classes.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1268-unbalanced-brackets.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1269-utf8-chars.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1271-node-modules-named.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1272-ancestor-gitignore.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1273-walk-prune.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1285-ingest-fast.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1286-nested-repo.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1305-glob-speed.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1308-glob-speed.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1310-glob-speed.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1311-glob-speed.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1312-glob-speed.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1318-lazy-stat.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1320-walk-speed.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1322-walk-readdir.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1325-parallel-walk.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1326-stream-rows.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1330-python-dirsql-patch.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1330-python-extensions-patch.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1330-scanner-effects.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1330-scanner-gitignore.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1330-vtab-prefetch-flag.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1330-vtab-read.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-1351-dot-dirs.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-819-oneshot-timeout.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-827-unquote-doubled-quotes.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-epic-953-slice2-reedline.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-epic-953-slice3-format.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-epic-953-stacked-prs-x59wm3.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-github-issue-825-e4mhhp.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-issue-951-0eease.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-issue-962-0jjrfv.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-issue-986-red-test-e7sjrb.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-tackle-1034-cachesplit.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-tackle-1042-py12.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-tackle-956-xzen74.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-tackle-957-lrm0z6-worker-calls.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-tackle-957-lrm0z6.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/e2e-attestations/claude-tackle-975-n8mc2h.json +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/migrations.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/migrations.d/2026-07-13-rename-extract-to-on-file.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/migrations.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/migrations.d/2026-07-20-drop-implicit-files-table.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/migrations.d/2026-07-21-remove-glob-captures.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/migrations.d/2026-07-24-hookless-table-config-error.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/migrations.d/2026-07-24-remove-stat-fact-injection.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/migrations.d/2026-07-29-restore-python-310.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/migrations.d/2026-08-04-cli-in-process.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/migrations.d/2026-08-20-declared-table-name.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/migrations.d/2026-09-20-sigint-ends-a-run-in-progress.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/migrations.d/2026-09-24-query-rows-in-projection-order.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/migrations.d/2026-10-02-readme-docs-host.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/migrations.d/2026-10-03-one-glob-rule-for-config-globs.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/migrations.d/2026-10-03-path-table-directory-one-level.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/migrations.d/2026-10-04-path-table-dotfiles-hidden.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/migrations.d/2026-10-05-brace-groups-follow-bash.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/migrations.d/2026-10-05-cli-context.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/migrations.d/2026-10-05-gitignore-requires-repo.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/migrations.d/2026-10-05-path-table-node-modules-named.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/migrations.d/2026-10-05-path-table-symlinks.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/migrations.d/2026-10-05-path-table-trailing-slash.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/migrations.d/2026-10-05-unbalanced-brackets-literal.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/migrations.d/2026-10-06-config-globs-anchor-at-the-config.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/migrations.d/2026-10-06-one-glob-compiler.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/migrations.d/2026-10-06-plugin-no-default-records.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/migrations.d/2026-10-06-watch-broadcast.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/migrations.d/2026-10-06-zero-match-config-table-warning.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/migrations.d/README.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/src/lib.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/testing-conventions.toml +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/tests/__init__.py +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/tests/conftest.py +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/tests/e2e/__init__.py +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/__init__.py +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/dirsql.toml +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/tests/e2e/speed_of_light.py +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/tests/integration/__init__.py +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/tests/integration/binding/__init__.py +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/python/tests/integration/hermetic/__init__.py +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/CHANGELOG.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/MIGRATIONS.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/README.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/benches/db_bench.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/benches/differ_bench.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/benches/matcher_bench.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/benches/scanner_bench.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/docs/context/.gitattributes +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/docs/context/recipes.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/docs/context/troubleshooting.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/docs/context/usage.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/docs/explanation.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/docs/getting-started.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/docs/howto/agent-skill.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/docs/howto/columns-from-paths.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/docs/howto/define-tables.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/docs/howto/embed.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/docs/howto/extract-from-contents.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/docs/howto/load-extension.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/docs/howto/parse-files-into-columns.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/docs/howto/persist.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/docs/howto/query-json.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/docs/howto/query-without-config.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/docs/howto/react-to-changes.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/docs/howto/search-by-meaning.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/docs/howto/search-indexes.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/docs/howto/skip-files.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/docs/howto/write-a-plugin.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/docs/index.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/docs/plugins.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/docs/reference/cli.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/docs/reference/columns.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/docs/reference/config.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/docs/reference/hooks.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/docs/reference/http-api.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/docs/reference/path-tables.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/docs/reference/sdk.md +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/bin/dirsql.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/brace.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/cli/context.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/cli/execute.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/cli/init.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/cli/mod.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/cli/repl.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/cli/router.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/cli/run.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/cli/serialize.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/cli/server.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/cli/table.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/command.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/config.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/db.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/default_config.toml +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/differ.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/extension_resolution.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/functions.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/infer.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/launcher.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/listing.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/on_file.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/parsed_vtab.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/persist.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/posix_class.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/progress.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/row_event_flat.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/sql_literal.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/tree_walk.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/vtab.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/vtab_scaffold.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/packages/rust/src/watcher.rs +0 -0
- {dirsql-0.4.87 → dirsql-0.4.89}/pyproject.toml +0 -0
|
@@ -552,7 +552,7 @@ checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8"
|
|
|
552
552
|
|
|
553
553
|
[[package]]
|
|
554
554
|
name = "dirsql"
|
|
555
|
-
version = "0.4.
|
|
555
|
+
version = "0.4.89"
|
|
556
556
|
dependencies = [
|
|
557
557
|
"assert_cmd",
|
|
558
558
|
"axum",
|
|
@@ -603,7 +603,7 @@ dependencies = [
|
|
|
603
603
|
|
|
604
604
|
[[package]]
|
|
605
605
|
name = "dirsql-py-ext"
|
|
606
|
-
version = "0.4.
|
|
606
|
+
version = "0.4.89"
|
|
607
607
|
dependencies = [
|
|
608
608
|
"dirsql",
|
|
609
609
|
"pyo3",
|
|
@@ -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.
|
|
7
|
+
version = "0.4.89"
|
|
8
8
|
# abi3 note: the `abi3-py310` pyo3 feature (below) builds ONE stable-ABI
|
|
9
9
|
# `cp310-abi3` wheel per platform that loads on every CPython >= 3.10
|
|
10
10
|
# (matching `pyproject.toml`'s `requires-python = ">=3.10"`), instead of
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"command": "uv run python -m pytest tests/e2e/glob_speed_one_level_test.py tests/e2e/glob_speed_matchers_test.py tests/e2e/glob_speed_recursive_test.py tests/e2e/query_contract_test.py -x -q",
|
|
3
|
+
"ran_at": 1791331926,
|
|
4
|
+
"exit_code": 0,
|
|
5
|
+
"commit": "04430dd3eae48a6936b5ff45c9c51a38900fbacc",
|
|
6
|
+
"branch": "claude/1258-config-directory"
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"command": "uv run python -m pytest tests/e2e/glob_speed_gitignore_test.py tests/e2e/glob_speed_dotfiles_test.py tests/e2e/glob_speed_recursive_test.py tests/e2e/glob_speed_matchers_test.py tests/e2e/query_contract_test.py -x -q",
|
|
3
|
+
"ran_at": 1791329772,
|
|
4
|
+
"exit_code": 0,
|
|
5
|
+
"commit": "f828a8181c981ab9c5c775117cb60edf3ccd9dcc",
|
|
6
|
+
"branch": "claude/1258-config-gitignore"
|
|
7
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
### A config glob naming a directory lists its files
|
|
2
|
+
|
|
3
|
+
#### Summary
|
|
4
|
+
|
|
5
|
+
`glob = "docs"` used to match nothing, because no file is named `docs`. It now
|
|
6
|
+
lists the files directly inside `docs`, as `FROM './docs'` does. A config that
|
|
7
|
+
relied on the empty result gains rows.
|
|
8
|
+
|
|
9
|
+
#### Required changes
|
|
10
|
+
|
|
11
|
+
| Before | After |
|
|
12
|
+
| --- | --- |
|
|
13
|
+
| `glob = "docs"` (no rows) | `glob = "docs"` lists `docs/*`; write `docs/**` for every depth |
|
|
14
|
+
|
|
15
|
+
#### Deprecations removed
|
|
16
|
+
|
|
17
|
+
_None._
|
|
18
|
+
|
|
19
|
+
#### Behavior changes without code changes
|
|
20
|
+
|
|
21
|
+
- A glob with no wildcard that names a directory expands to `<dir>/*`.
|
|
22
|
+
- A glob with no wildcard that names a file still names only that file.
|
|
23
|
+
|
|
24
|
+
#### Verification
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
cd "$(mktemp -d)"
|
|
28
|
+
mkdir docs
|
|
29
|
+
echo '[{"p":"a"}]' > docs/a.json
|
|
30
|
+
cat > .dirsql.toml <<'TOML'
|
|
31
|
+
[[table]]
|
|
32
|
+
name = "t"
|
|
33
|
+
glob = "docs"
|
|
34
|
+
ddl = "CREATE TABLE t (p TEXT)"
|
|
35
|
+
on-file = "jq -sc add"
|
|
36
|
+
TOML
|
|
37
|
+
dirsql query "SELECT p FROM t" -c .dirsql.toml
|
|
38
|
+
# expected: [{"p":"a"}]
|
|
39
|
+
```
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
### Config tables respect .gitignore
|
|
2
|
+
|
|
3
|
+
#### Summary
|
|
4
|
+
|
|
5
|
+
A declared `[[table]]` used to read every file its glob matched, whatever
|
|
6
|
+
`.gitignore` said. It now skips gitignored files, as a path-table does. This
|
|
7
|
+
breaks a config that relied on indexing an ignored file; pass `--no-ignore`
|
|
8
|
+
(or `no_ignore` in the SDKs) to restore the old behavior.
|
|
9
|
+
|
|
10
|
+
#### Required changes
|
|
11
|
+
|
|
12
|
+
| Before | After |
|
|
13
|
+
| --- | --- |
|
|
14
|
+
| a table indexed gitignored files | pass `--no-ignore`, or stop ignoring the file |
|
|
15
|
+
|
|
16
|
+
#### Deprecations removed
|
|
17
|
+
|
|
18
|
+
_None._
|
|
19
|
+
|
|
20
|
+
#### Behavior changes without code changes
|
|
21
|
+
|
|
22
|
+
- Inside a git repo (a directory holding `.git`), files a `.gitignore` ignores
|
|
23
|
+
are not rows of a `[[table]]`, at startup or while watching.
|
|
24
|
+
- Outside a repo nothing changes.
|
|
25
|
+
|
|
26
|
+
#### Verification
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
cd "$(mktemp -d)"
|
|
30
|
+
git init -q
|
|
31
|
+
printf 'skip.json\n' > .gitignore
|
|
32
|
+
echo '[{"p":"keep"}]' > keep.json
|
|
33
|
+
echo '[{"p":"skip"}]' > skip.json
|
|
34
|
+
cat > .dirsql.toml <<'TOML'
|
|
35
|
+
[[table]]
|
|
36
|
+
name = "t"
|
|
37
|
+
glob = "*.json"
|
|
38
|
+
ddl = "CREATE TABLE t (p TEXT)"
|
|
39
|
+
on-file = "jq -sc add"
|
|
40
|
+
TOML
|
|
41
|
+
dirsql query "SELECT p FROM t" -c .dirsql.toml
|
|
42
|
+
# expected: [{"p":"keep"}]
|
|
43
|
+
dirsql query "SELECT p FROM t ORDER BY p" -c .dirsql.toml --no-ignore
|
|
44
|
+
# expected: [{"p":"keep"},{"p":"skip"}]
|
|
45
|
+
```
|
|
@@ -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.
|
|
9
|
+
version = "0.4.89"
|
|
10
10
|
edition.workspace = true
|
|
11
11
|
# Literal `license` (not `license.workspace = true`) because
|
|
12
12
|
# putitoutthere's preflight check reads `[package].license` directly
|
|
@@ -732,6 +732,14 @@ impl DirSQL {
|
|
|
732
732
|
if group.matcher.is_ignored(&rel_path_buf) {
|
|
733
733
|
continue;
|
|
734
734
|
}
|
|
735
|
+
if group.matcher.respects_gitignore()
|
|
736
|
+
&& scanner::is_gitignored_path(
|
|
737
|
+
&abs_path,
|
|
738
|
+
self.inner.fs.is_dir(&abs_path).unwrap_or(false),
|
|
739
|
+
)
|
|
740
|
+
{
|
|
741
|
+
continue;
|
|
742
|
+
}
|
|
735
743
|
|
|
736
744
|
// A directory that appears whole (`mkdir`, or a populated directory
|
|
737
745
|
// renamed into the tree) arrives as one event naming the directory and
|
|
@@ -1110,6 +1118,13 @@ impl DirSQL {
|
|
|
1110
1118
|
} = resolved;
|
|
1111
1119
|
|
|
1112
1120
|
let (groups, anchors, table_names) = compile_groups(&tables, &ignore, &root)?;
|
|
1121
|
+
let groups = groups
|
|
1122
|
+
.into_iter()
|
|
1123
|
+
.map(|group| AnchorGroup {
|
|
1124
|
+
matcher: group.matcher.with_gitignore(!no_ignore),
|
|
1125
|
+
..group
|
|
1126
|
+
})
|
|
1127
|
+
.collect::<Vec<_>>();
|
|
1113
1128
|
|
|
1114
1129
|
// Resolve the persistent context before scanning, so the scan can
|
|
1115
1130
|
// consult the cached file index.
|
|
@@ -1996,7 +2011,10 @@ fn compile_groups(
|
|
|
1996
2011
|
}
|
|
1997
2012
|
None => root.to_path_buf(),
|
|
1998
2013
|
};
|
|
1999
|
-
let mapping = (
|
|
2014
|
+
let mapping = (
|
|
2015
|
+
path_table::directory_as_glob(&table.glob, &anchor, &|p| p.is_dir()),
|
|
2016
|
+
table_name.clone(),
|
|
2017
|
+
);
|
|
2000
2018
|
match grouped
|
|
2001
2019
|
.iter_mut()
|
|
2002
2020
|
.find(|(a, i, _)| *a == anchor && *i == table.ignore)
|
|
@@ -2935,6 +2953,23 @@ mod internal_tests {
|
|
|
2935
2953
|
assert_eq!(found, vec!["a.txt"]);
|
|
2936
2954
|
}
|
|
2937
2955
|
|
|
2956
|
+
/// The startup walk honors `.gitignore` unless the build asked not to.
|
|
2957
|
+
#[test]
|
|
2958
|
+
fn prepare_hands_the_walk_a_matcher_that_honors_gitignore_unless_no_ignore() {
|
|
2959
|
+
let dir = TempDir::new().unwrap();
|
|
2960
|
+
for no_ignore in [false, true] {
|
|
2961
|
+
let honored = Cell::new(None);
|
|
2962
|
+
let mut resolved = resolved_over(dir.path(), vec![txt_table()], false);
|
|
2963
|
+
resolved.no_ignore = no_ignore;
|
|
2964
|
+
DirSQL::prepare_resolved_with(resolved, &|_, matcher, _| {
|
|
2965
|
+
honored.set(Some(matcher.respects_gitignore()));
|
|
2966
|
+
Vec::new()
|
|
2967
|
+
})
|
|
2968
|
+
.unwrap();
|
|
2969
|
+
assert_eq!(honored.get(), Some(!no_ignore));
|
|
2970
|
+
}
|
|
2971
|
+
}
|
|
2972
|
+
|
|
2938
2973
|
/// Skipping the walk skips only the walk: with persist on, the cache is
|
|
2939
2974
|
/// still opened and reconciled against the (empty) scan.
|
|
2940
2975
|
#[test]
|
|
@@ -97,6 +97,7 @@ pub struct TableMatcher {
|
|
|
97
97
|
entries: Vec<PatternEntry>,
|
|
98
98
|
ignore_set: Vec<Pattern>,
|
|
99
99
|
ignore_dir_set: Vec<Pattern>,
|
|
100
|
+
gitignore: bool,
|
|
100
101
|
}
|
|
101
102
|
|
|
102
103
|
/// Byte spans of the `{name}` placeholders in `pattern`, in order: `(start,
|
|
@@ -182,9 +183,20 @@ impl TableMatcher {
|
|
|
182
183
|
entries,
|
|
183
184
|
ignore_set,
|
|
184
185
|
ignore_dir_set,
|
|
186
|
+
gitignore: false,
|
|
185
187
|
})
|
|
186
188
|
}
|
|
187
189
|
|
|
190
|
+
/// Whether a scan under this matcher honors `.gitignore` files.
|
|
191
|
+
pub fn with_gitignore(mut self, gitignore: bool) -> Self {
|
|
192
|
+
self.gitignore = gitignore;
|
|
193
|
+
self
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
pub(crate) fn respects_gitignore(&self) -> bool {
|
|
197
|
+
self.gitignore
|
|
198
|
+
}
|
|
199
|
+
|
|
188
200
|
/// Returns one [`MatchResult`] per matching pattern, in declaration order.
|
|
189
201
|
/// A file matching N patterns yields N results (fan-out). Empty when
|
|
190
202
|
/// nothing matches.
|
|
@@ -230,6 +242,13 @@ mod tests {
|
|
|
230
242
|
assert_eq!(names(&matcher, "report.csv"), vec!["data"]);
|
|
231
243
|
}
|
|
232
244
|
|
|
245
|
+
#[test]
|
|
246
|
+
fn a_matcher_honors_gitignore_only_once_asked_to() {
|
|
247
|
+
let matcher = TableMatcher::new(&[], &[]).unwrap();
|
|
248
|
+
assert!(!matcher.respects_gitignore());
|
|
249
|
+
assert!(matcher.with_gitignore(true).respects_gitignore());
|
|
250
|
+
}
|
|
251
|
+
|
|
233
252
|
#[test]
|
|
234
253
|
fn match_all_returns_empty_for_no_match() {
|
|
235
254
|
let matcher = TableMatcher::new(&[("*.csv", "data")], &[]).unwrap();
|
|
@@ -149,6 +149,17 @@ fn resolve_as<S: Syntax>(
|
|
|
149
149
|
}
|
|
150
150
|
}
|
|
151
151
|
|
|
152
|
+
/// `glob` as a path-table reads the same string after `FROM './`: a trailing
|
|
153
|
+
/// separator or a wholly literal name that is a directory under `index_root`
|
|
154
|
+
/// lists the files directly inside it.
|
|
155
|
+
pub fn directory_as_glob(glob: &str, index_root: &Path, is_dir: &dyn Fn(&Path) -> bool) -> String {
|
|
156
|
+
let target = trailing_separator_as_star::<Utf8UnixEncoding>(glob);
|
|
157
|
+
if !target.is_empty() && !has_glob_metacharacter(&target) && is_dir(&index_root.join(&target)) {
|
|
158
|
+
return format!("{target}/{DIRECTORY_GLOB}");
|
|
159
|
+
}
|
|
160
|
+
target
|
|
161
|
+
}
|
|
162
|
+
|
|
152
163
|
/// Where a config `[[table]] glob` anchors, and the glob to match beneath it.
|
|
153
164
|
///
|
|
154
165
|
/// A glob with a path-table prefix (`/`, `../`, `~/`, a drive or UNC root)
|
|
@@ -360,6 +371,45 @@ mod tests {
|
|
|
360
371
|
}
|
|
361
372
|
}
|
|
362
373
|
|
|
374
|
+
fn directory_glob(glob: &str, is_dir: &dyn Fn(&Path) -> bool) -> String {
|
|
375
|
+
directory_as_glob(glob, Path::new(ROOT), is_dir)
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
#[test]
|
|
379
|
+
fn a_literal_directory_name_lists_one_level() {
|
|
380
|
+
assert_eq!(directory_glob("docs", &everything_is_a_dir), "docs/*");
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
#[test]
|
|
384
|
+
fn a_literal_directory_is_looked_up_under_the_index_root() {
|
|
385
|
+
let only_docs = |p: &Path| p == Path::new("/index/docs");
|
|
386
|
+
assert_eq!(directory_glob("docs", &only_docs), "docs/*");
|
|
387
|
+
assert_eq!(directory_glob("other", &only_docs), "other");
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
#[test]
|
|
391
|
+
fn a_literal_file_name_is_left_alone() {
|
|
392
|
+
assert_eq!(directory_glob("top.md", ¬hing_is_a_dir), "top.md");
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
#[test]
|
|
396
|
+
fn a_glob_is_left_alone_even_when_a_directory_has_its_name() {
|
|
397
|
+
assert_eq!(
|
|
398
|
+
directory_glob("docs/*.md", &everything_is_a_dir),
|
|
399
|
+
"docs/*.md"
|
|
400
|
+
);
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
#[test]
|
|
404
|
+
fn a_trailing_separator_lists_one_level() {
|
|
405
|
+
assert_eq!(directory_glob("docs/", ¬hing_is_a_dir), "docs/*");
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
#[test]
|
|
409
|
+
fn an_empty_glob_is_left_alone() {
|
|
410
|
+
assert_eq!(directory_glob("", &everything_is_a_dir), "");
|
|
411
|
+
}
|
|
412
|
+
|
|
363
413
|
#[test]
|
|
364
414
|
fn default_ignores_cover_vcs_and_dependency_directories() {
|
|
365
415
|
assert_eq!(DEFAULT_IGNORES, ["**/node_modules/**", "**/.git/**"]);
|
|
@@ -93,15 +93,23 @@ fn scan_below(
|
|
|
93
93
|
) -> Vec<(PathBuf, String)> {
|
|
94
94
|
let mut results = Vec::new();
|
|
95
95
|
let mut seen: u64 = 0;
|
|
96
|
+
let gitignore = matcher.respects_gitignore();
|
|
97
|
+
let repo = if gitignore {
|
|
98
|
+
enclosing_repo(start, &holds_git)
|
|
99
|
+
} else {
|
|
100
|
+
None
|
|
101
|
+
};
|
|
96
102
|
|
|
97
103
|
// Match against relative path so globs like "comments/**/*.jsonl" work
|
|
98
104
|
// regardless of the absolute root directory.
|
|
99
105
|
let walker = Walk {
|
|
100
106
|
ignore: matcher,
|
|
101
107
|
glob: None,
|
|
102
|
-
gitignore
|
|
103
|
-
in_repo:
|
|
104
|
-
frames: Vec::new
|
|
108
|
+
gitignore,
|
|
109
|
+
in_repo: repo.is_some(),
|
|
110
|
+
frames: repo.map_or_else(Vec::new, |top| {
|
|
111
|
+
gitignores_above(start, top, &load_gitignore)
|
|
112
|
+
}),
|
|
105
113
|
dirs: false,
|
|
106
114
|
};
|
|
107
115
|
walk(
|
|
@@ -741,6 +749,26 @@ fn load_gitignore(dir: &Path) -> Option<Gitignore> {
|
|
|
741
749
|
builder.build().ok()
|
|
742
750
|
}
|
|
743
751
|
|
|
752
|
+
/// Whether the `.gitignore` files of the repo enclosing `path` ignore it, or
|
|
753
|
+
/// a directory above it, as the walk would have: for a path a watcher reports
|
|
754
|
+
/// without having walked to it.
|
|
755
|
+
pub(crate) fn is_gitignored_path(path: &Path, is_dir: bool) -> bool {
|
|
756
|
+
let Some(top) = path
|
|
757
|
+
.parent()
|
|
758
|
+
.and_then(|dir| enclosing_repo(dir, &holds_git))
|
|
759
|
+
else {
|
|
760
|
+
return false;
|
|
761
|
+
};
|
|
762
|
+
for frame in gitignores_above(path, top, &load_gitignore).iter().rev() {
|
|
763
|
+
match frame.matched_path_or_any_parents(path, is_dir) {
|
|
764
|
+
Match::Ignore(_) => return true,
|
|
765
|
+
Match::Whitelist(_) => return false,
|
|
766
|
+
Match::None => {}
|
|
767
|
+
}
|
|
768
|
+
}
|
|
769
|
+
false
|
|
770
|
+
}
|
|
771
|
+
|
|
744
772
|
/// Whether the `.gitignore` files in force mark `path` ignored. Deeper files
|
|
745
773
|
/// take precedence (git's rule), and a whitelisting `!pattern` un-ignores.
|
|
746
774
|
fn is_gitignored(frames: &[Arc<Gitignore>], path: &Path, is_dir: bool) -> bool {
|
|
@@ -1664,4 +1692,14 @@ mod tests {
|
|
|
1664
1692
|
let frames = [frame("", &["!keep.log"]), frame("sub", &["*.log"])];
|
|
1665
1693
|
assert!(is_gitignored(&frames, Path::new("sub/keep.log"), false));
|
|
1666
1694
|
}
|
|
1695
|
+
|
|
1696
|
+
#[test]
|
|
1697
|
+
fn is_gitignored_path_ignores_a_path_the_repo_gitignore_matches() {
|
|
1698
|
+
let repo = tempfile::tempdir().unwrap();
|
|
1699
|
+
fs::create_dir(repo.path().join(".git")).unwrap();
|
|
1700
|
+
fs::write(repo.path().join(".gitignore"), "*.log\n").unwrap();
|
|
1701
|
+
|
|
1702
|
+
assert!(is_gitignored_path(&repo.path().join("debug.log"), false));
|
|
1703
|
+
assert!(!is_gitignored_path(&repo.path().join("app.js"), false));
|
|
1704
|
+
}
|
|
1667
1705
|
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-07-13-rename-extract-to-on-file.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-07-20-drop-implicit-files-table.md
RENAMED
|
File without changes
|
{dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-07-21-remove-glob-captures.md
RENAMED
|
File without changes
|
|
File without changes
|
{dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-07-24-remove-stat-fact-injection.md
RENAMED
|
File without changes
|
{dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-07-29-restore-python-310.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-08-03-discovery-ext-resolution.md
RENAMED
|
File without changes
|
{dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-08-03-manylinux-dynamic-binary.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-08-20-curtaincall-dev-dependency.md
RENAMED
|
File without changes
|
{dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-08-20-declared-table-name.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-09-05-resolve-extension-split.md
RENAMED
|
File without changes
|
{dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-09-09-launcher-config-path-scan.md
RENAMED
|
File without changes
|
|
File without changes
|
{dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-09-18-export-scan-failure.md
RENAMED
|
File without changes
|
{dirsql-0.4.87 → dirsql-0.4.89}/packages/python/changelog.d/2026-09-18-flatten-row-event-in-core.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|