dirsql 0.4.89__tar.gz → 0.4.90__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.89 → dirsql-0.4.90}/Cargo.lock +2 -2
- {dirsql-0.4.89 → dirsql-0.4.90}/PKG-INFO +1 -1
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/Cargo.toml +1 -1
- dirsql-0.4.90/packages/python/changelog.d/2026-10-06-config-braces.md +3 -0
- dirsql-0.4.90/packages/python/e2e-attestations/claude-1258-config-braces.json +7 -0
- dirsql-0.4.90/packages/python/migrations.d/2026-10-06-config-braces.md +40 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/Cargo.toml +1 -1
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/lib.rs +0 -80
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/matcher.rs +4 -178
- {dirsql-0.4.89 → dirsql-0.4.90}/Cargo.toml +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/README.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/dirsql/__init__.py +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/dirsql/_async.py +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/dirsql/_dirsql.pyi +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/dirsql/cli/__init__.py +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/dirsql/cli/discover_plugins/__init__.py +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/dirsql/cli/discover_plugins/discovered_fragments.py +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/dirsql/cli/discover_plugins/discovery_disabled.py +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/dirsql/cli/discover_plugins/fragment_path.py +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/dirsql/cli/discover_plugins/with_discovered_plugins.py +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/dirsql/cli/main.py +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/dirsql/cli/resolve_config_extensions.py +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/dirsql/plan_entry_path.py +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/dirsql/py.typed +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/dirsql/read_config.py +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/dirsql/resolve_configs_extension_specs.py +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/dirsql/resolve_extension.py +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/dirsql/resolve_package.py +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/.claude/CLAUDE.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/.vitepress/config.ts +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/.vitepress/theme/index.ts +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/.vitepress/theme/lang.ts +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/AGENTS.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/context/.gitattributes +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/context/recipes.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/context/troubleshooting.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/context/usage.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/explanation.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/getting-started.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/howto/agent-skill.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/howto/columns-from-paths.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/howto/define-tables.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/howto/embed.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/howto/extract-from-contents.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/howto/load-extension.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/howto/parse-files-into-columns.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/howto/persist.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/howto/query-json.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/howto/query-without-config.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/howto/react-to-changes.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/howto/search-by-meaning.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/howto/search-indexes.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/howto/skip-files.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/howto/write-a-plugin.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/index.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/package.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/plugins.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/pnpm-lock.yaml +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/pnpm-workspace.yaml +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/reference/cli.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/reference/columns.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/reference/config.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/reference/hooks.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/reference/http-api.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/reference/path-tables.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/docs/reference/sdk.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/CHANGELOG.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/MIGRATIONS.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/README.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-07-13-plugin-discovery.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-07-13-rename-extract-to-on-file.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-07-13-repeatable-config.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-07-20-drop-implicit-files-table.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-07-21-remove-glob-captures.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-07-24-hookless-table-config-error.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-07-24-remove-stat-fact-injection.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-07-29-restore-python-310.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-08-02-release-profile.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-08-02-scan-failures.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-08-03-discovery-ext-resolution.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-08-03-manylinux-dynamic-binary.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-08-03-python-no-ignore.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-08-04-cast-lints.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-08-04-cli-in-process.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-08-20-curtaincall-dev-dependency.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-08-20-declared-table-name.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-09-04-config-paths-from-argv-module.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-09-05-config-extension-loader-split.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-09-05-resolve-config-extensions-split.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-09-05-resolve-extension-split.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-09-09-launcher-config-path-scan.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-09-17-extension-resolution-via-core.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-09-18-export-scan-failure.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-09-18-flatten-row-event-in-core.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-09-18-programmatic-extension-plan.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-09-20-sigint-ends-a-run-in-progress.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-09-24-query-rows-in-projection-order.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-10-02-readme-docs-host.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-10-03-one-glob-rule-for-config-globs.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-10-03-path-table-directory-one-level.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-10-04-path-table-dotfiles-hidden.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-10-05-brace-groups-follow-bash.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-10-05-cli-context.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-10-05-gitignore-requires-repo.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-10-05-path-table-node-modules-named.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-10-05-path-table-symlinks.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-10-05-path-table-trailing-slash.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-10-05-unbalanced-brackets-literal.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-10-06-config-directory.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-10-06-config-gitignore.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-10-06-config-globs-anchor-at-the-config.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-10-06-one-glob-compiler.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-10-06-plugin-no-default-records.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-10-06-watch-broadcast.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-10-06-zero-match-config-table-warning.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/README.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/conftest.py +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/.claude/CLAUDE.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/.vitepress/config.ts +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/.vitepress/theme/index.ts +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/.vitepress/theme/lang.ts +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/AGENTS.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/context/.gitattributes +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/context/recipes.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/context/troubleshooting.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/context/usage.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/explanation.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/getting-started.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/howto/agent-skill.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/howto/columns-from-paths.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/howto/define-tables.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/howto/embed.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/howto/extract-from-contents.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/howto/load-extension.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/howto/parse-files-into-columns.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/howto/persist.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/howto/query-json.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/howto/query-without-config.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/howto/react-to-changes.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/howto/search-by-meaning.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/howto/search-indexes.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/howto/skip-files.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/howto/write-a-plugin.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/index.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/package.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/plugins.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/pnpm-lock.yaml +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/pnpm-workspace.yaml +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/reference/cli.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/reference/columns.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/reference/config.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/reference/hooks.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/reference/http-api.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/reference/path-tables.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/docs/reference/sdk.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/bot-1397-watch-broadcast.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/bot-1398-inotify-error.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/bot-1399-server-cors.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/bot-1401-watch-scope.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/bot-1407-child-place-depth.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/cc-keen-knuth-f11gyq.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1056-py-ofpf9.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1066-p1-resolve-extension.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1078-argv-config-paths-core.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1079-p2-resolve-config-extensions.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1080-share-vtab-scaffolding.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1081-indicatif-progress.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1096-watch-moved-dir.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1109-watch-moved-out.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1119-ext-plan.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1120-py-ext.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1122-ext-cleanup.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1130-codec-crates.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1131-flatten-row-event.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1139-sse-flatten.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1140-scan-failure-export.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1148-clippy-all-targets.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1164-sigint-fatal.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1170-projection-order.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1172-on-file-path.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1173-py-projection-order.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1184-win-rel-paths.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1185-win-abs-table-names.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1186-win-test-harness.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1196-join-index.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1199-glob-prefix.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1201-single-walk.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1204-embed-batch.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1207-win-argv-quote.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1208-win-nonverbatim-paths.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1215-on-file-batch.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1216-on-file-cleanup.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1223-config-glob-rule.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1223-dir-one-level.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1225-plugin-no-default.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1226-stale-docs.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1232-anchor-plumbing.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1232-config-anchor.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1232-multi-watch.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1232-zero-match.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1238-parallel-walk.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1241-content-prefetch.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1243-ingest-perf.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1249-dotfiles.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1256-symlinks.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1257-trailing-slash.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1258-config-directory.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1258-config-gitignore.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1258-one-pattern.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1262-brace-literal.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1264-context.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1267-posix-classes.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1268-unbalanced-brackets.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1269-utf8-chars.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1271-node-modules-named.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1272-ancestor-gitignore.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1273-walk-prune.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1285-ingest-fast.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1286-nested-repo.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1305-glob-speed.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1308-glob-speed.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1310-glob-speed.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1311-glob-speed.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1312-glob-speed.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1318-lazy-stat.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1320-walk-speed.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1322-walk-readdir.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1325-parallel-walk.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1326-stream-rows.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1330-python-dirsql-patch.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1330-python-extensions-patch.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1330-scanner-effects.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1330-scanner-gitignore.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1330-vtab-prefetch-flag.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1330-vtab-read.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-1351-dot-dirs.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-819-oneshot-timeout.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-827-unquote-doubled-quotes.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-epic-953-slice2-reedline.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-epic-953-slice3-format.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-epic-953-stacked-prs-x59wm3.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-github-issue-825-e4mhhp.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-issue-951-0eease.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-issue-962-0jjrfv.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-issue-986-red-test-e7sjrb.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-tackle-1034-cachesplit.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-tackle-1042-py12.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-tackle-956-xzen74.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-tackle-957-lrm0z6-worker-calls.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-tackle-957-lrm0z6.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/e2e-attestations/claude-tackle-975-n8mc2h.json +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/migrations.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/migrations.d/2026-07-13-rename-extract-to-on-file.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/migrations.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/migrations.d/2026-07-20-drop-implicit-files-table.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/migrations.d/2026-07-21-remove-glob-captures.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/migrations.d/2026-07-24-hookless-table-config-error.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/migrations.d/2026-07-24-remove-stat-fact-injection.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/migrations.d/2026-07-29-restore-python-310.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/migrations.d/2026-08-04-cli-in-process.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/migrations.d/2026-08-20-declared-table-name.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/migrations.d/2026-09-20-sigint-ends-a-run-in-progress.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/migrations.d/2026-09-24-query-rows-in-projection-order.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/migrations.d/2026-10-02-readme-docs-host.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/migrations.d/2026-10-03-one-glob-rule-for-config-globs.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/migrations.d/2026-10-03-path-table-directory-one-level.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/migrations.d/2026-10-04-path-table-dotfiles-hidden.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/migrations.d/2026-10-05-brace-groups-follow-bash.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/migrations.d/2026-10-05-cli-context.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/migrations.d/2026-10-05-gitignore-requires-repo.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/migrations.d/2026-10-05-path-table-node-modules-named.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/migrations.d/2026-10-05-path-table-symlinks.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/migrations.d/2026-10-05-path-table-trailing-slash.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/migrations.d/2026-10-05-unbalanced-brackets-literal.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/migrations.d/2026-10-06-config-directory.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/migrations.d/2026-10-06-config-gitignore.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/migrations.d/2026-10-06-config-globs-anchor-at-the-config.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/migrations.d/2026-10-06-one-glob-compiler.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/migrations.d/2026-10-06-plugin-no-default-records.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/migrations.d/2026-10-06-watch-broadcast.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/migrations.d/2026-10-06-zero-match-config-table-warning.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/migrations.d/README.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/src/lib.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/testing-conventions.toml +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/tests/__init__.py +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/tests/conftest.py +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/tests/e2e/__init__.py +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/__init__.py +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/dirsql.toml +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/tests/e2e/speed_of_light.py +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/tests/integration/__init__.py +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/tests/integration/binding/__init__.py +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/python/tests/integration/hermetic/__init__.py +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/CHANGELOG.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/MIGRATIONS.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/README.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/benches/db_bench.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/benches/differ_bench.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/benches/matcher_bench.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/benches/scanner_bench.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/docs/context/.gitattributes +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/docs/context/recipes.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/docs/context/troubleshooting.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/docs/context/usage.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/docs/explanation.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/docs/getting-started.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/docs/howto/agent-skill.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/docs/howto/columns-from-paths.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/docs/howto/define-tables.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/docs/howto/embed.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/docs/howto/extract-from-contents.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/docs/howto/load-extension.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/docs/howto/parse-files-into-columns.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/docs/howto/persist.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/docs/howto/query-json.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/docs/howto/query-without-config.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/docs/howto/react-to-changes.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/docs/howto/search-by-meaning.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/docs/howto/search-indexes.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/docs/howto/skip-files.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/docs/howto/write-a-plugin.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/docs/index.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/docs/plugins.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/docs/reference/cli.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/docs/reference/columns.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/docs/reference/config.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/docs/reference/hooks.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/docs/reference/http-api.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/docs/reference/path-tables.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/docs/reference/sdk.md +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/bin/dirsql.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/brace.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/cli/context.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/cli/execute.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/cli/init.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/cli/mod.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/cli/repl.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/cli/router.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/cli/run.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/cli/serialize.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/cli/server.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/cli/table.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/command.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/config.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/db.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/default_config.toml +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/differ.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/extension_resolution.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/functions.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/infer.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/launcher.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/listing.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/on_file.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/parsed_vtab.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/path_table.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/persist.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/posix_class.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/progress.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/row_event_flat.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/scanner.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/sql_literal.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/tree_walk.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/vtab.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/vtab_scaffold.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/packages/rust/src/watcher.rs +0 -0
- {dirsql-0.4.89 → dirsql-0.4.90}/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.90"
|
|
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.90"
|
|
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.90"
|
|
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_matchers_test.py tests/e2e/glob_speed_one_level_test.py tests/e2e/query_contract_test.py -x -q",
|
|
3
|
+
"ran_at": 1791333540,
|
|
4
|
+
"exit_code": 0,
|
|
5
|
+
"commit": "37586d9320ebca5d4be159cfe3a523ebcf017884",
|
|
6
|
+
"branch": "claude/1258-config-braces"
|
|
7
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
### A braced name in a config glob is a literal
|
|
2
|
+
|
|
3
|
+
#### Summary
|
|
4
|
+
|
|
5
|
+
`glob = "data/{id}/metadata.json"` used to treat `{id}` as `*`. It now matches
|
|
6
|
+
a directory literally named `{id}`. `{a,b}` alternation is unchanged. A column
|
|
7
|
+
named like a `{name}` no longer errors at load.
|
|
8
|
+
|
|
9
|
+
#### Required changes
|
|
10
|
+
|
|
11
|
+
| Before | After |
|
|
12
|
+
| --- | --- |
|
|
13
|
+
| `glob = "data/{id}/metadata.json"` | `glob = "data/*/metadata.json"` |
|
|
14
|
+
|
|
15
|
+
#### Deprecations removed
|
|
16
|
+
|
|
17
|
+
- The `CaptureColumnCollision` error: a `{name}` is no longer a capture, so
|
|
18
|
+
nothing can collide.
|
|
19
|
+
|
|
20
|
+
#### Behavior changes without code changes
|
|
21
|
+
|
|
22
|
+
- A config that kept `{name}` in a glob stops matching files and loads no rows.
|
|
23
|
+
|
|
24
|
+
#### Verification
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
cd "$(mktemp -d)"
|
|
28
|
+
mkdir -p 'data/{id}' data/x
|
|
29
|
+
echo '[{"p":"lit"}]' > 'data/{id}/m.json'
|
|
30
|
+
echo '[{"p":"other"}]' > data/x/m.json
|
|
31
|
+
cat > .dirsql.toml <<'TOML'
|
|
32
|
+
[[table]]
|
|
33
|
+
name = "t"
|
|
34
|
+
glob = "data/{id}/m.json"
|
|
35
|
+
ddl = "CREATE TABLE t (p TEXT)"
|
|
36
|
+
on-file = "jq -sc add"
|
|
37
|
+
TOML
|
|
38
|
+
dirsql query "SELECT p FROM t" -c .dirsql.toml
|
|
39
|
+
# expected: [{"p":"lit"}]
|
|
40
|
+
```
|
|
@@ -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.90"
|
|
10
10
|
edition.workspace = true
|
|
11
11
|
# Literal `license` (not `license.workspace = true`) because
|
|
12
12
|
# putitoutthere's preflight check reads `[package].license` directly
|
|
@@ -199,14 +199,6 @@ pub enum DirSqlError {
|
|
|
199
199
|
source: Option<BoxError>,
|
|
200
200
|
},
|
|
201
201
|
|
|
202
|
-
#[error(
|
|
203
|
-
"glob capture `{{{placeholder}}}` collides with declared column `{column}`: \
|
|
204
|
-
captures no longer populate columns, so `{column}` would always be NULL. \
|
|
205
|
-
Remove `{column}` from the table's DDL, or emit its value from the on-file \
|
|
206
|
-
hook by splitting the path yourself."
|
|
207
|
-
)]
|
|
208
|
-
CaptureColumnCollision { placeholder: String, column: String },
|
|
209
|
-
|
|
210
202
|
#[error(
|
|
211
203
|
"query() only accepts read-only statements; SQLite classified this statement as a write"
|
|
212
204
|
)]
|
|
@@ -1323,18 +1315,6 @@ impl DirSQL {
|
|
|
1323
1315
|
eprintln!("{warning}");
|
|
1324
1316
|
}
|
|
1325
1317
|
}
|
|
1326
|
-
// Reject a `{name}` glob placeholder whose name is also a declared
|
|
1327
|
-
// column: captures no longer populate columns, so it would read
|
|
1328
|
-
// NULL forever. The table exists here either way (freshly created
|
|
1329
|
-
// or restored from cache), so its columns are knowable, and this
|
|
1330
|
-
// runs before any file is ingested — a load-time failure.
|
|
1331
|
-
let declared_columns = db.get_table_columns(&table_name).map_err(map_db_error)?;
|
|
1332
|
-
if let Some(name) = find_capture_column_collision(&table.glob, &declared_columns) {
|
|
1333
|
-
return Err(DirSqlError::CaptureColumnCollision {
|
|
1334
|
-
placeholder: name.clone(),
|
|
1335
|
-
column: name,
|
|
1336
|
-
});
|
|
1337
|
-
}
|
|
1338
1318
|
on_file_map.insert(table_name.clone(), table.hook);
|
|
1339
1319
|
strict_map.insert(table_name.clone(), table.strict);
|
|
1340
1320
|
ddl_map.insert(table_name, table.ddl);
|
|
@@ -2519,18 +2499,6 @@ pub(crate) fn json_to_value(value: &serde_json::Value) -> Value {
|
|
|
2519
2499
|
}
|
|
2520
2500
|
}
|
|
2521
2501
|
|
|
2522
|
-
/// Returns the first `{name}` placeholder in `glob` whose name is also one of
|
|
2523
|
-
/// `declared_columns`. `None` when the glob has no placeholders or none of
|
|
2524
|
-
/// them names a declared column. Pure: the sole input is the glob string and
|
|
2525
|
-
/// the column list, so it is exhaustively unit-testable.
|
|
2526
|
-
fn find_capture_column_collision(glob: &str, declared_columns: &[String]) -> Option<String> {
|
|
2527
|
-
let declared: std::collections::HashSet<&str> =
|
|
2528
|
-
declared_columns.iter().map(String::as_str).collect();
|
|
2529
|
-
crate::matcher::placeholder_names(glob)
|
|
2530
|
-
.into_iter()
|
|
2531
|
-
.find(|name| declared.contains(name.as_str()))
|
|
2532
|
-
}
|
|
2533
|
-
|
|
2534
2502
|
/// Async wrapper around [`DirSQL`] whose constructor returns immediately while
|
|
2535
2503
|
/// the initial scan runs on a background thread.
|
|
2536
2504
|
///
|
|
@@ -4506,54 +4474,6 @@ mod internal_tests {
|
|
|
4506
4474
|
assert_eq!(deleted, vec![("gone.txt".to_string(), "t".to_string())]);
|
|
4507
4475
|
}
|
|
4508
4476
|
|
|
4509
|
-
#[test]
|
|
4510
|
-
fn find_capture_column_collision_flags_a_placeholder_naming_a_column() {
|
|
4511
|
-
let declared = vec!["thread_id".to_string(), "basename".to_string()];
|
|
4512
|
-
assert_eq!(
|
|
4513
|
-
find_capture_column_collision("_comments/{thread_id}/*.txt", &declared),
|
|
4514
|
-
Some("thread_id".to_string())
|
|
4515
|
-
);
|
|
4516
|
-
}
|
|
4517
|
-
|
|
4518
|
-
#[test]
|
|
4519
|
-
fn find_capture_column_collision_ignores_a_placeholder_with_no_column() {
|
|
4520
|
-
let declared = vec!["path".to_string(), "basename".to_string()];
|
|
4521
|
-
assert_eq!(
|
|
4522
|
-
find_capture_column_collision("_comments/{thread_id}/*.txt", &declared),
|
|
4523
|
-
None
|
|
4524
|
-
);
|
|
4525
|
-
}
|
|
4526
|
-
|
|
4527
|
-
#[test]
|
|
4528
|
-
fn find_capture_column_collision_none_without_placeholders() {
|
|
4529
|
-
let declared = vec!["thread_id".to_string()];
|
|
4530
|
-
assert_eq!(
|
|
4531
|
-
find_capture_column_collision("_comments/*/*.txt", &declared),
|
|
4532
|
-
None
|
|
4533
|
-
);
|
|
4534
|
-
}
|
|
4535
|
-
|
|
4536
|
-
#[test]
|
|
4537
|
-
fn find_capture_column_collision_returns_first_colliding_placeholder() {
|
|
4538
|
-
let declared = vec!["repo".to_string(), "org".to_string()];
|
|
4539
|
-
assert_eq!(
|
|
4540
|
-
find_capture_column_collision("{org}/{repo}/data.json", &declared),
|
|
4541
|
-
Some("org".to_string())
|
|
4542
|
-
);
|
|
4543
|
-
}
|
|
4544
|
-
|
|
4545
|
-
#[test]
|
|
4546
|
-
fn capture_column_collision_error_names_placeholder_and_fix() {
|
|
4547
|
-
let err = DirSqlError::CaptureColumnCollision {
|
|
4548
|
-
placeholder: "thread_id".to_string(),
|
|
4549
|
-
column: "thread_id".to_string(),
|
|
4550
|
-
};
|
|
4551
|
-
let msg = err.to_string();
|
|
4552
|
-
assert!(msg.contains("thread_id"));
|
|
4553
|
-
assert!(msg.contains("collides"));
|
|
4554
|
-
assert!(msg.contains("on-file"));
|
|
4555
|
-
}
|
|
4556
|
-
|
|
4557
4477
|
/// A `name` the batch never created: the error has to say what it *did*
|
|
4558
4478
|
/// create, or a typo gives the reader nothing to compare against.
|
|
4559
4479
|
#[test]
|
|
@@ -79,8 +79,6 @@ pub struct MatchResult {
|
|
|
79
79
|
pub table_name: String,
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
-
/// A compiled glob pattern. `{name}` placeholders are rewritten to `*` before
|
|
83
|
-
/// compilation, so they are pure match wildcards.
|
|
84
82
|
#[derive(Clone)]
|
|
85
83
|
struct PatternEntry {
|
|
86
84
|
pattern: PathGlob,
|
|
@@ -100,72 +98,13 @@ pub struct TableMatcher {
|
|
|
100
98
|
gitignore: bool,
|
|
101
99
|
}
|
|
102
100
|
|
|
103
|
-
/// Byte spans of the `{name}` placeholders in `pattern`, in order: `(start,
|
|
104
|
-
/// end, name)` with `end` past the closing brace.
|
|
105
|
-
///
|
|
106
|
-
/// The grammar is exactly `{` `[a-zA-Z_][a-zA-Z0-9_]*` `}`. Anything else --
|
|
107
|
-
/// `{}`, `{1a}`, `{a-b}`, an unclosed `{` -- is not a placeholder and is left
|
|
108
|
-
/// alone, matching the leftmost-first, non-overlapping scan the equivalent
|
|
109
|
-
/// regex performed.
|
|
110
|
-
fn placeholder_spans(pattern: &str) -> Vec<(usize, usize, String)> {
|
|
111
|
-
let bytes = pattern.as_bytes();
|
|
112
|
-
let mut spans = Vec::new();
|
|
113
|
-
let mut i = 0;
|
|
114
|
-
while i < bytes.len() {
|
|
115
|
-
if bytes[i] == b'{' {
|
|
116
|
-
let mut j = i + 1;
|
|
117
|
-
if j < bytes.len() && (bytes[j].is_ascii_alphabetic() || bytes[j] == b'_') {
|
|
118
|
-
j += 1;
|
|
119
|
-
while j < bytes.len() && (bytes[j].is_ascii_alphanumeric() || bytes[j] == b'_') {
|
|
120
|
-
j += 1;
|
|
121
|
-
}
|
|
122
|
-
if j < bytes.len() && bytes[j] == b'}' {
|
|
123
|
-
// Every byte in `i..=j` is ASCII, so these are char boundaries.
|
|
124
|
-
spans.push((i, j + 1, pattern[i + 1..j].to_string()));
|
|
125
|
-
i = j + 1;
|
|
126
|
-
continue;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
i += 1;
|
|
131
|
-
}
|
|
132
|
-
spans
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
/// Names of the `{name}` placeholders in `pattern`, in order of appearance.
|
|
136
|
-
pub fn placeholder_names(pattern: &str) -> Vec<String> {
|
|
137
|
-
placeholder_spans(pattern)
|
|
138
|
-
.into_iter()
|
|
139
|
-
.map(|(_, _, name)| name)
|
|
140
|
-
.collect()
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
/// Rewrite `{name}` placeholders in a glob to `*`, so they match a single path
|
|
144
|
-
/// segment without producing any captured value.
|
|
145
|
-
fn glob_with_placeholders_as_star(pattern: &str) -> String {
|
|
146
|
-
let spans = placeholder_spans(pattern);
|
|
147
|
-
if spans.is_empty() {
|
|
148
|
-
return pattern.to_string();
|
|
149
|
-
}
|
|
150
|
-
let mut out = String::with_capacity(pattern.len());
|
|
151
|
-
let mut last = 0;
|
|
152
|
-
for (start, end, _) in spans {
|
|
153
|
-
out.push_str(&pattern[last..start]);
|
|
154
|
-
out.push('*');
|
|
155
|
-
last = end;
|
|
156
|
-
}
|
|
157
|
-
out.push_str(&pattern[last..]);
|
|
158
|
-
out
|
|
159
|
-
}
|
|
160
|
-
|
|
161
101
|
impl TableMatcher {
|
|
162
102
|
/// Build a new matcher from (glob_pattern, table_name) pairs and ignore patterns.
|
|
163
|
-
/// Glob patterns may contain `{name}` placeholders, which match like `*`.
|
|
164
103
|
pub fn new(mappings: &[(&str, &str)], ignore_patterns: &[&str]) -> Result<Self, GlobError> {
|
|
165
104
|
let mut entries = Vec::new();
|
|
166
105
|
for (pattern, table_name) in mappings {
|
|
167
106
|
entries.push(PatternEntry {
|
|
168
|
-
pattern: compile_glob(
|
|
107
|
+
pattern: compile_glob(pattern)?,
|
|
169
108
|
table_name: table_name.to_string(),
|
|
170
109
|
});
|
|
171
110
|
}
|
|
@@ -273,20 +212,6 @@ mod tests {
|
|
|
273
212
|
);
|
|
274
213
|
}
|
|
275
214
|
|
|
276
|
-
#[test]
|
|
277
|
-
fn placeholder_glob_matches_like_a_star() {
|
|
278
|
-
// A `{name}` placeholder and a `*` compile to the same matcher: both
|
|
279
|
-
// globs match exactly the same file.
|
|
280
|
-
let placeholder = TableMatcher::new(&[("data/{id}/metadata.json", "a")], &[]).unwrap();
|
|
281
|
-
let star = TableMatcher::new(&[("data/*/metadata.json", "a")], &[]).unwrap();
|
|
282
|
-
let path = Path::new("data/x/metadata.json");
|
|
283
|
-
assert_eq!(names(&placeholder, "data/x/metadata.json"), vec!["a"]);
|
|
284
|
-
assert_eq!(
|
|
285
|
-
placeholder.match_all(path).is_empty(),
|
|
286
|
-
star.match_all(path).is_empty(),
|
|
287
|
-
);
|
|
288
|
-
}
|
|
289
|
-
|
|
290
215
|
#[test]
|
|
291
216
|
fn match_all_with_nested_path() {
|
|
292
217
|
let matcher = TableMatcher::new(&[("**/*.jsonl", "events")], &[]).unwrap();
|
|
@@ -368,105 +293,6 @@ mod tests {
|
|
|
368
293
|
assert_eq!(names(&matcher, "logs/deep/nested/b.txt"), vec!["t"]);
|
|
369
294
|
}
|
|
370
295
|
|
|
371
|
-
#[test]
|
|
372
|
-
fn placeholder_matches_the_filled_segment() {
|
|
373
|
-
let matcher =
|
|
374
|
-
TableMatcher::new(&[("comments/{thread_id}/index.jsonl", "comments")], &[]).unwrap();
|
|
375
|
-
assert_eq!(
|
|
376
|
-
names(&matcher, "comments/abc123/index.jsonl"),
|
|
377
|
-
vec!["comments"]
|
|
378
|
-
);
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
#[test]
|
|
382
|
-
fn multiple_placeholders_match() {
|
|
383
|
-
let matcher = TableMatcher::new(&[("{org}/{repo}/data.json", "repos")], &[]).unwrap();
|
|
384
|
-
assert_eq!(names(&matcher, "acme/widgets/data.json"), vec!["repos"]);
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
#[test]
|
|
388
|
-
fn placeholder_no_match_returns_empty() {
|
|
389
|
-
let matcher =
|
|
390
|
-
TableMatcher::new(&[("comments/{thread_id}/index.jsonl", "comments")], &[]).unwrap();
|
|
391
|
-
assert!(matcher.match_all(Path::new("other/file.txt")).is_empty());
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
#[test]
|
|
395
|
-
fn placeholder_with_double_star_matches() {
|
|
396
|
-
let matcher = TableMatcher::new(&[("**/{category}/items.json", "items")], &[]).unwrap();
|
|
397
|
-
assert_eq!(
|
|
398
|
-
names(&matcher, "shop/electronics/items.json"),
|
|
399
|
-
vec!["items"]
|
|
400
|
-
);
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
#[test]
|
|
404
|
-
fn placeholder_with_question_mark_matches() {
|
|
405
|
-
let matcher = TableMatcher::new(&[("{name}?.txt", "files")], &[]).unwrap();
|
|
406
|
-
assert_eq!(names(&matcher, "ab.txt"), vec!["files"]);
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
#[test]
|
|
410
|
-
fn placeholder_names_lists_names_in_order() {
|
|
411
|
-
assert_eq!(
|
|
412
|
-
placeholder_names("{org}/{repo}/data.json"),
|
|
413
|
-
vec!["org".to_string(), "repo".to_string()]
|
|
414
|
-
);
|
|
415
|
-
}
|
|
416
|
-
|
|
417
|
-
#[test]
|
|
418
|
-
fn placeholder_names_empty_when_none() {
|
|
419
|
-
assert!(placeholder_names("data/*/metadata.json").is_empty());
|
|
420
|
-
}
|
|
421
|
-
|
|
422
|
-
#[test]
|
|
423
|
-
fn placeholder_names_rejects_everything_outside_the_grammar() {
|
|
424
|
-
// The grammar is exactly `{` `[a-zA-Z_][a-zA-Z0-9_]*` `}`. Each of these
|
|
425
|
-
// fails it at a different point -- empty name, a leading digit, a
|
|
426
|
-
// disallowed interior byte, and a brace that runs off the end of the
|
|
427
|
-
// pattern -- and all are left alone rather than read as a placeholder.
|
|
428
|
-
for pattern in ["{}", "{1a}", "{a-b}", "{a b}", "{", "a{", "{a", "{_"] {
|
|
429
|
-
assert!(
|
|
430
|
-
placeholder_names(pattern).is_empty(),
|
|
431
|
-
"`{pattern}` is outside the grammar, so it is not a placeholder"
|
|
432
|
-
);
|
|
433
|
-
assert_eq!(
|
|
434
|
-
glob_with_placeholders_as_star(pattern),
|
|
435
|
-
pattern,
|
|
436
|
-
"`{pattern}` is not a placeholder, so the glob is unrewritten"
|
|
437
|
-
);
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
|
|
441
|
-
#[test]
|
|
442
|
-
fn placeholder_names_accepts_the_whole_grammar() {
|
|
443
|
-
// A name starts with a letter or `_` and continues with those plus
|
|
444
|
-
// digits.
|
|
445
|
-
assert_eq!(placeholder_names("{a}"), vec!["a".to_string()]);
|
|
446
|
-
assert_eq!(placeholder_names("{_}"), vec!["_".to_string()]);
|
|
447
|
-
assert_eq!(placeholder_names("{_a1}"), vec!["_a1".to_string()]);
|
|
448
|
-
assert_eq!(placeholder_names("{A_1z}"), vec!["A_1z".to_string()]);
|
|
449
|
-
}
|
|
450
|
-
|
|
451
|
-
#[test]
|
|
452
|
-
fn the_scan_resumes_at_the_byte_after_a_closing_brace() {
|
|
453
|
-
// Leftmost-first and non-overlapping: back-to-back placeholders both
|
|
454
|
-
// register, and every byte outside a span survives the rewrite.
|
|
455
|
-
assert_eq!(
|
|
456
|
-
placeholder_names("{a}{b}"),
|
|
457
|
-
vec!["a".to_string(), "b".to_string()]
|
|
458
|
-
);
|
|
459
|
-
assert_eq!(glob_with_placeholders_as_star("x{a}y{b}z"), "x*y*z");
|
|
460
|
-
}
|
|
461
|
-
|
|
462
|
-
#[test]
|
|
463
|
-
fn an_unclosed_brace_leaves_a_later_placeholder_intact() {
|
|
464
|
-
// The `{` at 0 fails the grammar, so the scan advances one byte at a
|
|
465
|
-
// time and still finds the real placeholder behind it.
|
|
466
|
-
assert_eq!(placeholder_names("{a{b}"), vec!["b".to_string()]);
|
|
467
|
-
assert_eq!(glob_with_placeholders_as_star("{a{b}"), "{a*");
|
|
468
|
-
}
|
|
469
|
-
|
|
470
296
|
/// Two files at depth 0, two under `folder/`, two under `folder/sub/`, one
|
|
471
297
|
/// under a sibling directory.
|
|
472
298
|
const FIXTURE: [&str; 7] = [
|
|
@@ -602,12 +428,12 @@ mod tests {
|
|
|
602
428
|
}
|
|
603
429
|
|
|
604
430
|
#[test]
|
|
605
|
-
fn
|
|
431
|
+
fn a_braced_name_matches_only_itself() {
|
|
606
432
|
let matcher = TableMatcher::new(&[("data/{id}/metadata.json", "a")], &[]).unwrap();
|
|
607
|
-
assert_eq!(names(&matcher, "data/
|
|
433
|
+
assert_eq!(names(&matcher, "data/{id}/metadata.json"), vec!["a"]);
|
|
608
434
|
assert!(
|
|
609
435
|
matcher
|
|
610
|
-
.match_all(Path::new("data/x/
|
|
436
|
+
.match_all(Path::new("data/x/metadata.json"))
|
|
611
437
|
.is_empty()
|
|
612
438
|
);
|
|
613
439
|
}
|
|
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.89 → dirsql-0.4.90}/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.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-07-20-drop-implicit-files-table.md
RENAMED
|
File without changes
|
{dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-07-21-remove-glob-captures.md
RENAMED
|
File without changes
|
|
File without changes
|
{dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-07-24-remove-stat-fact-injection.md
RENAMED
|
File without changes
|
{dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-07-29-restore-python-310.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-08-03-discovery-ext-resolution.md
RENAMED
|
File without changes
|
{dirsql-0.4.89 → dirsql-0.4.90}/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.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-08-20-curtaincall-dev-dependency.md
RENAMED
|
File without changes
|
{dirsql-0.4.89 → dirsql-0.4.90}/packages/python/changelog.d/2026-08-20-declared-table-name.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|