dirsql 0.4.97__tar.gz → 0.4.99__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.97 → dirsql-0.4.99}/Cargo.lock +2 -2
- {dirsql-0.4.97 → dirsql-0.4.99}/PKG-INFO +1 -1
- {dirsql-0.4.97/packages/python → dirsql-0.4.99}/docs/reference/glob.md +24 -4
- {dirsql-0.4.97/packages/rust → dirsql-0.4.99}/docs/reference/path-tables.md +3 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/Cargo.toml +1 -1
- dirsql-0.4.99/packages/python/changelog.d/2026-10-07-literal-gitignore.md +3 -0
- dirsql-0.4.99/packages/python/changelog.d/2026-10-07-posix-classes-unicode.md +3 -0
- {dirsql-0.4.97 → dirsql-0.4.99/packages/python}/docs/reference/glob.md +24 -4
- {dirsql-0.4.97 → dirsql-0.4.99/packages/python}/docs/reference/path-tables.md +3 -0
- dirsql-0.4.99/packages/python/e2e-attestations/bot-1421-posix-unicode.json +7 -0
- dirsql-0.4.99/packages/python/e2e-attestations/bot-1422-literal-gitignore.json +7 -0
- dirsql-0.4.99/packages/python/e2e-attestations/bot-1437-test-cache-isolation.json +7 -0
- dirsql-0.4.99/packages/python/e2e-attestations/bot-fix-main-place-depth-20261007.json +7 -0
- dirsql-0.4.99/packages/python/migrations.d/2026-10-07-literal-gitignore.md +23 -0
- dirsql-0.4.99/packages/python/migrations.d/2026-10-07-posix-classes-unicode.md +23 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/Cargo.toml +1 -1
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/reference/glob.md +24 -4
- {dirsql-0.4.97/packages/python → dirsql-0.4.99/packages/rust}/docs/reference/path-tables.md +3 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/cli/run.rs +1 -1
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/lib.rs +3 -2
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/matcher.rs +68 -2
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/posix_class.rs +92 -31
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/scanner.rs +37 -2
- {dirsql-0.4.97 → dirsql-0.4.99}/Cargo.toml +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/README.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/__init__.py +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/_async.py +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/_dirsql.pyi +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/cli/__init__.py +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/cli/discover_plugins/__init__.py +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/cli/discover_plugins/discovered_fragments.py +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/cli/discover_plugins/discovery_disabled.py +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/cli/discover_plugins/fragment_path.py +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/cli/discover_plugins/with_discovered_plugins.py +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/cli/main.py +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/cli/resolve_config_extensions.py +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/plan_entry_path.py +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/py.typed +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/read_config.py +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/resolve_configs_extension_specs.py +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/resolve_extension.py +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/dirsql/resolve_package.py +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/.claude/CLAUDE.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/.vitepress/config.ts +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/.vitepress/theme/index.ts +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/.vitepress/theme/lang.ts +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/AGENTS.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/context/.gitattributes +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/context/recipes.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/context/troubleshooting.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/context/usage.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/explanation.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/getting-started.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/howto/agent-skill.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/howto/columns-from-paths.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/howto/define-tables.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/howto/embed.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/howto/extract-from-contents.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/howto/load-extension.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/howto/parse-files-into-columns.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/howto/persist.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/howto/query-json.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/howto/query-without-config.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/howto/react-to-changes.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/howto/search-by-meaning.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/howto/search-indexes.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/howto/skip-files.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/howto/write-a-plugin.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/index.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/package.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/plugins.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/pnpm-lock.yaml +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/pnpm-workspace.yaml +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/reference/cli.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/reference/columns.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/reference/config.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/reference/hooks.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/reference/http-api.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/docs/reference/sdk.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/CHANGELOG.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/MIGRATIONS.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/README.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-07-13-plugin-discovery.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-07-13-rename-extract-to-on-file.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-07-13-repeatable-config.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-07-20-drop-implicit-files-table.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-07-21-remove-glob-captures.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-07-24-hookless-table-config-error.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-07-24-remove-stat-fact-injection.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-07-29-restore-python-310.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-08-02-release-profile.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-08-02-scan-failures.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-08-03-discovery-ext-resolution.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-08-03-manylinux-dynamic-binary.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-08-03-python-no-ignore.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-08-04-cast-lints.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-08-04-cli-in-process.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-08-20-curtaincall-dev-dependency.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-08-20-declared-table-name.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-09-04-config-paths-from-argv-module.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-09-05-config-extension-loader-split.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-09-05-resolve-config-extensions-split.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-09-05-resolve-extension-split.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-09-09-launcher-config-path-scan.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-09-17-extension-resolution-via-core.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-09-18-export-scan-failure.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-09-18-flatten-row-event-in-core.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-09-18-programmatic-extension-plan.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-09-20-sigint-ends-a-run-in-progress.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-09-24-query-rows-in-projection-order.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-02-readme-docs-host.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-03-one-glob-rule-for-config-globs.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-03-path-table-directory-one-level.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-04-path-table-dotfiles-hidden.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-05-brace-groups-follow-bash.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-05-cli-context.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-05-gitignore-requires-repo.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-05-path-table-node-modules-named.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-05-path-table-symlinks.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-05-path-table-trailing-slash.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-05-unbalanced-brackets-literal.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-06-config-braces.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-06-config-directory.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-06-config-dotnames.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-06-config-gitignore.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-06-config-globs-anchor-at-the-config.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-06-config-links.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-06-one-glob-compiler.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-06-plugin-no-default-records.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-06-watch-broadcast.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-06-zero-match-config-table-warning.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-07-bracket-slash-literal.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-07-dotdot-and-double-slashes.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-07-fix-main-build.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-07-glob-walks-node-modules.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/2026-10-07-persist-cache-outside-root.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/changelog.d/README.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/conftest.py +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/.claude/CLAUDE.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/.vitepress/config.ts +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/.vitepress/theme/index.ts +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/.vitepress/theme/lang.ts +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/AGENTS.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/context/.gitattributes +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/context/recipes.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/context/troubleshooting.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/context/usage.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/explanation.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/getting-started.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/howto/agent-skill.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/howto/columns-from-paths.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/howto/define-tables.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/howto/embed.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/howto/extract-from-contents.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/howto/load-extension.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/howto/parse-files-into-columns.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/howto/persist.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/howto/query-json.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/howto/query-without-config.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/howto/react-to-changes.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/howto/search-by-meaning.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/howto/search-indexes.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/howto/skip-files.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/howto/write-a-plugin.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/index.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/package.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/plugins.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/pnpm-lock.yaml +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/pnpm-workspace.yaml +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/reference/cli.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/reference/columns.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/reference/config.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/reference/hooks.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/reference/http-api.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/docs/reference/sdk.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/bot-1334-listing-exemptions.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/bot-1397-watch-broadcast.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/bot-1398-inotify-error.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/bot-1399-server-cors.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/bot-1401-watch-scope.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/bot-1407-child-place-depth.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/bot-1414-stat-speed.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/bot-1415-server-speed.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/bot-1418-node-modules.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/bot-1419-dotdot-slashes.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/bot-1420-bracket-slash.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/bot-1431-persist-cache-dir.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/bot-1440-fix-main-build.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/cc-keen-knuth-f11gyq.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1056-py-ofpf9.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1066-p1-resolve-extension.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1078-argv-config-paths-core.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1079-p2-resolve-config-extensions.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1080-share-vtab-scaffolding.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1081-indicatif-progress.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1096-watch-moved-dir.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1109-watch-moved-out.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1119-ext-plan.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1120-py-ext.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1122-ext-cleanup.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1130-codec-crates.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1131-flatten-row-event.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1139-sse-flatten.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1140-scan-failure-export.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1148-clippy-all-targets.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1164-sigint-fatal.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1170-projection-order.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1172-on-file-path.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1173-py-projection-order.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1184-win-rel-paths.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1185-win-abs-table-names.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1186-win-test-harness.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1196-join-index.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1199-glob-prefix.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1201-single-walk.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1204-embed-batch.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1207-win-argv-quote.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1208-win-nonverbatim-paths.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1215-on-file-batch.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1216-on-file-cleanup.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1223-config-glob-rule.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1223-dir-one-level.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1225-plugin-no-default.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1226-stale-docs.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1232-anchor-plumbing.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1232-config-anchor.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1232-multi-watch.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1232-zero-match.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1238-parallel-walk.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1241-content-prefetch.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1243-ingest-perf.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1249-dotfiles.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1256-symlinks.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1257-trailing-slash.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1258-config-braces.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1258-config-directory.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1258-config-dotnames.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1258-config-gitignore.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1258-config-links.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1258-one-pattern.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1262-brace-literal.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1264-context.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1267-posix-classes.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1268-unbalanced-brackets.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1269-utf8-chars.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1271-node-modules-named.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1272-ancestor-gitignore.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1273-walk-prune.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1285-ingest-fast.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1286-nested-repo.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1305-glob-speed.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1308-glob-speed.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1310-glob-speed.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1311-glob-speed.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1312-glob-speed.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1318-lazy-stat.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1320-walk-speed.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1322-walk-readdir.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1325-parallel-walk.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1326-stream-rows.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1330-python-dirsql-patch.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1330-python-extensions-patch.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1330-scanner-effects.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1330-scanner-gitignore.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1330-vtab-prefetch-flag.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1330-vtab-read.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-1351-dot-dirs.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-819-oneshot-timeout.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-827-unquote-doubled-quotes.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-epic-953-slice2-reedline.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-epic-953-slice3-format.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-epic-953-stacked-prs-x59wm3.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-github-issue-825-e4mhhp.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-issue-951-0eease.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-issue-962-0jjrfv.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-issue-986-red-test-e7sjrb.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-tackle-1034-cachesplit.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-tackle-1042-py12.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-tackle-956-xzen74.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-tackle-957-lrm0z6-worker-calls.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-tackle-957-lrm0z6.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/e2e-attestations/claude-tackle-975-n8mc2h.json +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-07-13-rename-extract-to-on-file.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-07-20-drop-implicit-files-table.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-07-21-remove-glob-captures.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-07-24-hookless-table-config-error.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-07-24-remove-stat-fact-injection.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-07-29-restore-python-310.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-08-04-cli-in-process.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-08-20-declared-table-name.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-09-20-sigint-ends-a-run-in-progress.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-09-24-query-rows-in-projection-order.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-02-readme-docs-host.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-03-one-glob-rule-for-config-globs.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-03-path-table-directory-one-level.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-04-path-table-dotfiles-hidden.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-05-brace-groups-follow-bash.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-05-cli-context.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-05-gitignore-requires-repo.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-05-path-table-node-modules-named.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-05-path-table-symlinks.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-05-path-table-trailing-slash.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-05-unbalanced-brackets-literal.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-06-config-braces.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-06-config-directory.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-06-config-dotnames.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-06-config-gitignore.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-06-config-globs-anchor-at-the-config.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-06-config-links.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-06-one-glob-compiler.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-06-plugin-no-default-records.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-06-watch-broadcast.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-06-zero-match-config-table-warning.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-07-bracket-slash-literal.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-07-dotdot-and-double-slashes.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-07-fix-main-build.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-07-glob-walks-node-modules.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/2026-10-07-persist-cache-outside-root.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/migrations.d/README.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/src/lib.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/testing-conventions.toml +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/tests/__init__.py +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/tests/conftest.py +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/tests/e2e/__init__.py +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/__init__.py +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/dirsql.toml +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/tests/e2e/speed_of_light.py +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/tests/integration/__init__.py +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/tests/integration/binding/__init__.py +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/python/tests/integration/hermetic/__init__.py +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/CHANGELOG.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/MIGRATIONS.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/README.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/benches/db_bench.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/benches/differ_bench.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/benches/matcher_bench.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/benches/scanner_bench.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/context/.gitattributes +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/context/recipes.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/context/troubleshooting.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/context/usage.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/explanation.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/getting-started.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/howto/agent-skill.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/howto/columns-from-paths.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/howto/define-tables.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/howto/embed.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/howto/extract-from-contents.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/howto/load-extension.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/howto/parse-files-into-columns.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/howto/persist.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/howto/query-json.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/howto/query-without-config.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/howto/react-to-changes.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/howto/search-by-meaning.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/howto/search-indexes.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/howto/skip-files.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/howto/write-a-plugin.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/index.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/plugins.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/reference/cli.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/reference/columns.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/reference/config.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/reference/hooks.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/reference/http-api.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/docs/reference/sdk.md +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/bin/dirsql.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/brace.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/cli/context.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/cli/execute.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/cli/init.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/cli/mod.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/cli/repl.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/cli/router.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/cli/serialize.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/cli/server.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/cli/table.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/command.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/config.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/db.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/default_config.toml +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/differ.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/extension_resolution.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/functions.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/infer.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/launcher.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/listing.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/on_file.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/parsed_vtab.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/path_table.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/persist.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/progress.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/row_event_flat.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/sql_literal.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/tree_walk.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/vtab.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/vtab_scaffold.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/packages/rust/src/watcher.rs +0 -0
- {dirsql-0.4.97 → dirsql-0.4.99}/pyproject.toml +0 -0
|
@@ -573,7 +573,7 @@ dependencies = [
|
|
|
573
573
|
|
|
574
574
|
[[package]]
|
|
575
575
|
name = "dirsql"
|
|
576
|
-
version = "0.4.
|
|
576
|
+
version = "0.4.99"
|
|
577
577
|
dependencies = [
|
|
578
578
|
"assert_cmd",
|
|
579
579
|
"axum",
|
|
@@ -625,7 +625,7 @@ dependencies = [
|
|
|
625
625
|
|
|
626
626
|
[[package]]
|
|
627
627
|
name = "dirsql-py-ext"
|
|
628
|
-
version = "0.4.
|
|
628
|
+
version = "0.4.99"
|
|
629
629
|
dependencies = [
|
|
630
630
|
"dirsql",
|
|
631
631
|
"pyo3",
|
|
@@ -49,6 +49,13 @@ docs/nested/deep.md
|
|
|
49
49
|
docs/nested/.cache/x.md
|
|
50
50
|
node_modules/pkg/index.js
|
|
51
51
|
real/r.md
|
|
52
|
+
uni/1.md
|
|
53
|
+
uni/a.md
|
|
54
|
+
uni/é.md
|
|
55
|
+
uni/É.md
|
|
56
|
+
uni/中.md
|
|
57
|
+
uni/٣.md
|
|
58
|
+
uni/¡.md
|
|
52
59
|
linkdir -> real
|
|
53
60
|
link.md -> top.md
|
|
54
61
|
broken -> nowhere
|
|
@@ -69,13 +76,21 @@ A test runs every row against dirsql as a path-table and, with the leading
|
|
|
69
76
|
| Pattern | Rows | Divergence |
|
|
70
77
|
| --- | --- | --- |
|
|
71
78
|
| `./*.md` | `1.md`, `2.md`, `3.md`, `4.md`, `[a].md`, `[z.md`, `a.md`, `b.md`, `c.md`, `link.md`, `my file.md`, `top.md`, `{q}.md` | |
|
|
72
|
-
| `./**/*.md` | `1.md`, `2.md`, `3.md`, `4.md`, `[a].md`, `[z.md`, `a.md`, `b.md`, `c.md`, `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md`, `link.md`, `linkdir/r.md`, `my file.md`, `real/r.md`, `top.md`, `{q}.md` | |
|
|
73
|
-
| `./**` | `1.md`, `2.md`, `3.md`, `4.md`, `[a].md`, `[z.md`, `a.md`, `b.md`, `c.md`, `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md`, `link.md`, `my file.md`, `node_modules/pkg/index.js`, `real/r.md`, `top.md`, `x.txt`, `{q}.md` | |
|
|
79
|
+
| `./**/*.md` | `1.md`, `2.md`, `3.md`, `4.md`, `[a].md`, `[z.md`, `a.md`, `b.md`, `c.md`, `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md`, `link.md`, `linkdir/r.md`, `my file.md`, `real/r.md`, `top.md`, `uni/1.md`, `uni/a.md`, `uni/¡.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md`, `{q}.md` | |
|
|
80
|
+
| `./**` | `1.md`, `2.md`, `3.md`, `4.md`, `[a].md`, `[z.md`, `a.md`, `b.md`, `c.md`, `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md`, `link.md`, `my file.md`, `node_modules/pkg/index.js`, `real/r.md`, `top.md`, `uni/1.md`, `uni/a.md`, `uni/¡.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md`, `x.txt`, `{q}.md` | |
|
|
74
81
|
| `./?.md` | `1.md`, `2.md`, `3.md`, `4.md`, `a.md`, `b.md`, `c.md` | |
|
|
75
82
|
| `./[ab].md` | `a.md`, `b.md` | |
|
|
76
83
|
| `./[!a].md` | `1.md`, `2.md`, `3.md`, `4.md`, `b.md`, `c.md` | |
|
|
77
84
|
| `./\[a\].md` | `[a].md` | |
|
|
78
85
|
| `./[z.md` | `[z.md` | |
|
|
86
|
+
| `./uni/[[:alpha:]].md` | `uni/a.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md` | |
|
|
87
|
+
| `./uni/[[:alnum:]].md` | `uni/1.md`, `uni/a.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md` | |
|
|
88
|
+
| `./uni/[[:lower:]].md` | `uni/a.md`, `uni/é.md` | |
|
|
89
|
+
| `./uni/[[:upper:]].md` | `uni/É.md` | |
|
|
90
|
+
| `./uni/[[:digit:]].md` | `uni/1.md` | |
|
|
91
|
+
| `./uni/[[:punct:]].md` | `uni/¡.md` | |
|
|
92
|
+
| `./uni/[[:word:]].md` | `uni/1.md`, `uni/a.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md` | |
|
|
93
|
+
| `./uni/[![:alpha:]].md` | `uni/1.md`, `uni/¡.md` | |
|
|
79
94
|
| `./[d/x]ocs/api.md` | none | |
|
|
80
95
|
| `./docs[/]api.md` | none | |
|
|
81
96
|
| `./[!/]*/api.md` | none | |
|
|
@@ -106,9 +121,11 @@ A test runs every row against dirsql as a path-table and, with the leading
|
|
|
106
121
|
| `./docs/*/../api.md` | `docs/nested/../api.md` | |
|
|
107
122
|
| `./docs` | `docs/api.md`, `docs/guide.md` | directory-name |
|
|
108
123
|
| `./docs/` | `docs/api.md`, `docs/guide.md` | directory-name |
|
|
109
|
-
| `./*/` | `docs/api.md`, `docs/guide.md`, `linkdir/r.md`, `real/r.md` | directory-name |
|
|
124
|
+
| `./*/` | `docs/api.md`, `docs/guide.md`, `linkdir/r.md`, `real/r.md`, `uni/1.md`, `uni/a.md`, `uni/¡.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md` | directory-name |
|
|
110
125
|
| `./d*` | none | files-only |
|
|
111
126
|
| `./*.log` | none | gitignore |
|
|
127
|
+
| `./ignored.log` | `ignored.log` | |
|
|
128
|
+
| `./{ignored,x}.log` | `ignored.log` | |
|
|
112
129
|
| `./**/*.js` | `node_modules/pkg/index.js` | |
|
|
113
130
|
| `./node_modules/*/index.js` | `node_modules/pkg/index.js` | |
|
|
114
131
|
| `./docs/**/*.md` | `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md` | |
|
|
@@ -121,7 +138,7 @@ A test runs every row against dirsql as a path-table and, with the leading
|
|
|
121
138
|
|
|
122
139
|
| Tag | Rule | Why |
|
|
123
140
|
| --- | --- | --- |
|
|
124
|
-
| `gitignore` | Inside a git repo, `.gitignore` files hide
|
|
141
|
+
| `gitignore` | Inside a git repo, `.gitignore` files hide files and directories a wildcard matches, never one the pattern spells out. `--no-ignore` turns it off. | A query over a repo should not drown in build output. |
|
|
125
142
|
| `directory-name` | A pattern's last component that names a directory lists the files directly inside it, like `ls docs`. A trailing `/` is `*` appended. | A table is rows of files, and `ls` is the shell habit. |
|
|
126
143
|
| `files-only` | A pattern that matches a directory but no file returns nothing. | Every row is a file. |
|
|
127
144
|
| `absolute` | `/`, `~/` and `../` patterns report absolute `path` values, with `..` folded out textually. | The scanned root is derived from the pattern, so there is no relative base. |
|
|
@@ -144,6 +161,9 @@ stderr; the exit code is unchanged. Path-tables never warn.
|
|
|
144
161
|
`{a..c}` expand, as do zero-padded
|
|
145
162
|
`{01..10}` and stepped `{1..10..2}` ranges. Groups nest.
|
|
146
163
|
- `\[` is a literal bracket.
|
|
164
|
+
- POSIX classes (`[[:alpha:]]`) match Unicode characters, as bash does in a UTF-8
|
|
165
|
+
locale: `[[:alpha:]]` matches `é` and `中`. `[[:digit:]]`, `[[:xdigit:]]` and
|
|
166
|
+
`[[:ascii:]]` stay ASCII.
|
|
147
167
|
- A dot-named file or directory is listed only where a component spells the
|
|
148
168
|
dot at that depth: `./**/.*` finds `docs/.draft.md` but does not enter
|
|
149
169
|
`.config/`.
|
|
@@ -262,6 +262,9 @@ directory, deeper files override shallower ones, `!pattern` re-includes, and
|
|
|
262
262
|
an ignored directory is pruned rather than walked. In a typical repo this
|
|
263
263
|
excludes build output, virtualenvs, and caches with zero ceremony.
|
|
264
264
|
|
|
265
|
+
A `.gitignore` never hides a path the pattern spells out: `'./debug.log'` lists
|
|
266
|
+
that file even when `*.log` is ignored, while `'./*.log'` does not.
|
|
267
|
+
|
|
265
268
|
A `.gitignore` is in force only when a directory holding `.git` encloses it.
|
|
266
269
|
Outside a repo none applies, at the scan's start, above it or below it: a
|
|
267
270
|
`~/.claude` whose `.gitignore` is `*` still lists its files when `~/.claude`
|
|
@@ -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.99"
|
|
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
|
|
@@ -49,6 +49,13 @@ docs/nested/deep.md
|
|
|
49
49
|
docs/nested/.cache/x.md
|
|
50
50
|
node_modules/pkg/index.js
|
|
51
51
|
real/r.md
|
|
52
|
+
uni/1.md
|
|
53
|
+
uni/a.md
|
|
54
|
+
uni/é.md
|
|
55
|
+
uni/É.md
|
|
56
|
+
uni/中.md
|
|
57
|
+
uni/٣.md
|
|
58
|
+
uni/¡.md
|
|
52
59
|
linkdir -> real
|
|
53
60
|
link.md -> top.md
|
|
54
61
|
broken -> nowhere
|
|
@@ -69,13 +76,21 @@ A test runs every row against dirsql as a path-table and, with the leading
|
|
|
69
76
|
| Pattern | Rows | Divergence |
|
|
70
77
|
| --- | --- | --- |
|
|
71
78
|
| `./*.md` | `1.md`, `2.md`, `3.md`, `4.md`, `[a].md`, `[z.md`, `a.md`, `b.md`, `c.md`, `link.md`, `my file.md`, `top.md`, `{q}.md` | |
|
|
72
|
-
| `./**/*.md` | `1.md`, `2.md`, `3.md`, `4.md`, `[a].md`, `[z.md`, `a.md`, `b.md`, `c.md`, `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md`, `link.md`, `linkdir/r.md`, `my file.md`, `real/r.md`, `top.md`, `{q}.md` | |
|
|
73
|
-
| `./**` | `1.md`, `2.md`, `3.md`, `4.md`, `[a].md`, `[z.md`, `a.md`, `b.md`, `c.md`, `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md`, `link.md`, `my file.md`, `node_modules/pkg/index.js`, `real/r.md`, `top.md`, `x.txt`, `{q}.md` | |
|
|
79
|
+
| `./**/*.md` | `1.md`, `2.md`, `3.md`, `4.md`, `[a].md`, `[z.md`, `a.md`, `b.md`, `c.md`, `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md`, `link.md`, `linkdir/r.md`, `my file.md`, `real/r.md`, `top.md`, `uni/1.md`, `uni/a.md`, `uni/¡.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md`, `{q}.md` | |
|
|
80
|
+
| `./**` | `1.md`, `2.md`, `3.md`, `4.md`, `[a].md`, `[z.md`, `a.md`, `b.md`, `c.md`, `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md`, `link.md`, `my file.md`, `node_modules/pkg/index.js`, `real/r.md`, `top.md`, `uni/1.md`, `uni/a.md`, `uni/¡.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md`, `x.txt`, `{q}.md` | |
|
|
74
81
|
| `./?.md` | `1.md`, `2.md`, `3.md`, `4.md`, `a.md`, `b.md`, `c.md` | |
|
|
75
82
|
| `./[ab].md` | `a.md`, `b.md` | |
|
|
76
83
|
| `./[!a].md` | `1.md`, `2.md`, `3.md`, `4.md`, `b.md`, `c.md` | |
|
|
77
84
|
| `./\[a\].md` | `[a].md` | |
|
|
78
85
|
| `./[z.md` | `[z.md` | |
|
|
86
|
+
| `./uni/[[:alpha:]].md` | `uni/a.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md` | |
|
|
87
|
+
| `./uni/[[:alnum:]].md` | `uni/1.md`, `uni/a.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md` | |
|
|
88
|
+
| `./uni/[[:lower:]].md` | `uni/a.md`, `uni/é.md` | |
|
|
89
|
+
| `./uni/[[:upper:]].md` | `uni/É.md` | |
|
|
90
|
+
| `./uni/[[:digit:]].md` | `uni/1.md` | |
|
|
91
|
+
| `./uni/[[:punct:]].md` | `uni/¡.md` | |
|
|
92
|
+
| `./uni/[[:word:]].md` | `uni/1.md`, `uni/a.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md` | |
|
|
93
|
+
| `./uni/[![:alpha:]].md` | `uni/1.md`, `uni/¡.md` | |
|
|
79
94
|
| `./[d/x]ocs/api.md` | none | |
|
|
80
95
|
| `./docs[/]api.md` | none | |
|
|
81
96
|
| `./[!/]*/api.md` | none | |
|
|
@@ -106,9 +121,11 @@ A test runs every row against dirsql as a path-table and, with the leading
|
|
|
106
121
|
| `./docs/*/../api.md` | `docs/nested/../api.md` | |
|
|
107
122
|
| `./docs` | `docs/api.md`, `docs/guide.md` | directory-name |
|
|
108
123
|
| `./docs/` | `docs/api.md`, `docs/guide.md` | directory-name |
|
|
109
|
-
| `./*/` | `docs/api.md`, `docs/guide.md`, `linkdir/r.md`, `real/r.md` | directory-name |
|
|
124
|
+
| `./*/` | `docs/api.md`, `docs/guide.md`, `linkdir/r.md`, `real/r.md`, `uni/1.md`, `uni/a.md`, `uni/¡.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md` | directory-name |
|
|
110
125
|
| `./d*` | none | files-only |
|
|
111
126
|
| `./*.log` | none | gitignore |
|
|
127
|
+
| `./ignored.log` | `ignored.log` | |
|
|
128
|
+
| `./{ignored,x}.log` | `ignored.log` | |
|
|
112
129
|
| `./**/*.js` | `node_modules/pkg/index.js` | |
|
|
113
130
|
| `./node_modules/*/index.js` | `node_modules/pkg/index.js` | |
|
|
114
131
|
| `./docs/**/*.md` | `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md` | |
|
|
@@ -121,7 +138,7 @@ A test runs every row against dirsql as a path-table and, with the leading
|
|
|
121
138
|
|
|
122
139
|
| Tag | Rule | Why |
|
|
123
140
|
| --- | --- | --- |
|
|
124
|
-
| `gitignore` | Inside a git repo, `.gitignore` files hide
|
|
141
|
+
| `gitignore` | Inside a git repo, `.gitignore` files hide files and directories a wildcard matches, never one the pattern spells out. `--no-ignore` turns it off. | A query over a repo should not drown in build output. |
|
|
125
142
|
| `directory-name` | A pattern's last component that names a directory lists the files directly inside it, like `ls docs`. A trailing `/` is `*` appended. | A table is rows of files, and `ls` is the shell habit. |
|
|
126
143
|
| `files-only` | A pattern that matches a directory but no file returns nothing. | Every row is a file. |
|
|
127
144
|
| `absolute` | `/`, `~/` and `../` patterns report absolute `path` values, with `..` folded out textually. | The scanned root is derived from the pattern, so there is no relative base. |
|
|
@@ -144,6 +161,9 @@ stderr; the exit code is unchanged. Path-tables never warn.
|
|
|
144
161
|
`{a..c}` expand, as do zero-padded
|
|
145
162
|
`{01..10}` and stepped `{1..10..2}` ranges. Groups nest.
|
|
146
163
|
- `\[` is a literal bracket.
|
|
164
|
+
- POSIX classes (`[[:alpha:]]`) match Unicode characters, as bash does in a UTF-8
|
|
165
|
+
locale: `[[:alpha:]]` matches `é` and `中`. `[[:digit:]]`, `[[:xdigit:]]` and
|
|
166
|
+
`[[:ascii:]]` stay ASCII.
|
|
147
167
|
- A dot-named file or directory is listed only where a component spells the
|
|
148
168
|
dot at that depth: `./**/.*` finds `docs/.draft.md` but does not enter
|
|
149
169
|
`.config/`.
|
|
@@ -262,6 +262,9 @@ directory, deeper files override shallower ones, `!pattern` re-includes, and
|
|
|
262
262
|
an ignored directory is pruned rather than walked. In a typical repo this
|
|
263
263
|
excludes build output, virtualenvs, and caches with zero ceremony.
|
|
264
264
|
|
|
265
|
+
A `.gitignore` never hides a path the pattern spells out: `'./debug.log'` lists
|
|
266
|
+
that file even when `*.log` is ignored, while `'./*.log'` does not.
|
|
267
|
+
|
|
265
268
|
A `.gitignore` is in force only when a directory holding `.git` encloses it.
|
|
266
269
|
Outside a repo none applies, at the scan's start, above it or below it: a
|
|
267
270
|
`~/.claude` whose `.gitignore` is `*` still lists its files when `~/.claude`
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
### Named paths ignore .gitignore
|
|
2
|
+
|
|
3
|
+
#### Summary
|
|
4
|
+
|
|
5
|
+
A path the pattern spells out is listed even when a .gitignore ignores it.
|
|
6
|
+
|
|
7
|
+
#### Required changes
|
|
8
|
+
|
|
9
|
+
_None._
|
|
10
|
+
|
|
11
|
+
#### Deprecations removed
|
|
12
|
+
|
|
13
|
+
_None._
|
|
14
|
+
|
|
15
|
+
#### Behavior changes without code changes
|
|
16
|
+
|
|
17
|
+
- A pattern with no wildcard, such as ./debug.log, lists the file even when .gitignore ignores it; wildcard matches are still filtered.
|
|
18
|
+
|
|
19
|
+
#### Verification
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
dirsql query "SELECT path FROM './debug.log'"
|
|
23
|
+
```
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
### POSIX classes match Unicode characters
|
|
2
|
+
|
|
3
|
+
#### Summary
|
|
4
|
+
|
|
5
|
+
POSIX classes in globs match Unicode characters, as bash does in a UTF-8 locale.
|
|
6
|
+
|
|
7
|
+
#### Required changes
|
|
8
|
+
|
|
9
|
+
_None._
|
|
10
|
+
|
|
11
|
+
#### Deprecations removed
|
|
12
|
+
|
|
13
|
+
_None._
|
|
14
|
+
|
|
15
|
+
#### Behavior changes without code changes
|
|
16
|
+
|
|
17
|
+
- POSIX classes such as `[[:alpha:]]`, `[[:upper:]]` and `[[:punct:]]` match Unicode characters instead of ASCII only: `./[[:alpha:]].md` now matches `é.md`. `digit`, `xdigit` and `ascii` stay ASCII.
|
|
18
|
+
|
|
19
|
+
#### Verification
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
dirsql query "SELECT path FROM './[[:alpha:]].md'"
|
|
23
|
+
```
|
|
@@ -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.99"
|
|
10
10
|
edition.workspace = true
|
|
11
11
|
# Literal `license` (not `license.workspace = true`) because
|
|
12
12
|
# putitoutthere's preflight check reads `[package].license` directly
|
|
@@ -49,6 +49,13 @@ docs/nested/deep.md
|
|
|
49
49
|
docs/nested/.cache/x.md
|
|
50
50
|
node_modules/pkg/index.js
|
|
51
51
|
real/r.md
|
|
52
|
+
uni/1.md
|
|
53
|
+
uni/a.md
|
|
54
|
+
uni/é.md
|
|
55
|
+
uni/É.md
|
|
56
|
+
uni/中.md
|
|
57
|
+
uni/٣.md
|
|
58
|
+
uni/¡.md
|
|
52
59
|
linkdir -> real
|
|
53
60
|
link.md -> top.md
|
|
54
61
|
broken -> nowhere
|
|
@@ -69,13 +76,21 @@ A test runs every row against dirsql as a path-table and, with the leading
|
|
|
69
76
|
| Pattern | Rows | Divergence |
|
|
70
77
|
| --- | --- | --- |
|
|
71
78
|
| `./*.md` | `1.md`, `2.md`, `3.md`, `4.md`, `[a].md`, `[z.md`, `a.md`, `b.md`, `c.md`, `link.md`, `my file.md`, `top.md`, `{q}.md` | |
|
|
72
|
-
| `./**/*.md` | `1.md`, `2.md`, `3.md`, `4.md`, `[a].md`, `[z.md`, `a.md`, `b.md`, `c.md`, `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md`, `link.md`, `linkdir/r.md`, `my file.md`, `real/r.md`, `top.md`, `{q}.md` | |
|
|
73
|
-
| `./**` | `1.md`, `2.md`, `3.md`, `4.md`, `[a].md`, `[z.md`, `a.md`, `b.md`, `c.md`, `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md`, `link.md`, `my file.md`, `node_modules/pkg/index.js`, `real/r.md`, `top.md`, `x.txt`, `{q}.md` | |
|
|
79
|
+
| `./**/*.md` | `1.md`, `2.md`, `3.md`, `4.md`, `[a].md`, `[z.md`, `a.md`, `b.md`, `c.md`, `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md`, `link.md`, `linkdir/r.md`, `my file.md`, `real/r.md`, `top.md`, `uni/1.md`, `uni/a.md`, `uni/¡.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md`, `{q}.md` | |
|
|
80
|
+
| `./**` | `1.md`, `2.md`, `3.md`, `4.md`, `[a].md`, `[z.md`, `a.md`, `b.md`, `c.md`, `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md`, `link.md`, `my file.md`, `node_modules/pkg/index.js`, `real/r.md`, `top.md`, `uni/1.md`, `uni/a.md`, `uni/¡.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md`, `x.txt`, `{q}.md` | |
|
|
74
81
|
| `./?.md` | `1.md`, `2.md`, `3.md`, `4.md`, `a.md`, `b.md`, `c.md` | |
|
|
75
82
|
| `./[ab].md` | `a.md`, `b.md` | |
|
|
76
83
|
| `./[!a].md` | `1.md`, `2.md`, `3.md`, `4.md`, `b.md`, `c.md` | |
|
|
77
84
|
| `./\[a\].md` | `[a].md` | |
|
|
78
85
|
| `./[z.md` | `[z.md` | |
|
|
86
|
+
| `./uni/[[:alpha:]].md` | `uni/a.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md` | |
|
|
87
|
+
| `./uni/[[:alnum:]].md` | `uni/1.md`, `uni/a.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md` | |
|
|
88
|
+
| `./uni/[[:lower:]].md` | `uni/a.md`, `uni/é.md` | |
|
|
89
|
+
| `./uni/[[:upper:]].md` | `uni/É.md` | |
|
|
90
|
+
| `./uni/[[:digit:]].md` | `uni/1.md` | |
|
|
91
|
+
| `./uni/[[:punct:]].md` | `uni/¡.md` | |
|
|
92
|
+
| `./uni/[[:word:]].md` | `uni/1.md`, `uni/a.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md` | |
|
|
93
|
+
| `./uni/[![:alpha:]].md` | `uni/1.md`, `uni/¡.md` | |
|
|
79
94
|
| `./[d/x]ocs/api.md` | none | |
|
|
80
95
|
| `./docs[/]api.md` | none | |
|
|
81
96
|
| `./[!/]*/api.md` | none | |
|
|
@@ -106,9 +121,11 @@ A test runs every row against dirsql as a path-table and, with the leading
|
|
|
106
121
|
| `./docs/*/../api.md` | `docs/nested/../api.md` | |
|
|
107
122
|
| `./docs` | `docs/api.md`, `docs/guide.md` | directory-name |
|
|
108
123
|
| `./docs/` | `docs/api.md`, `docs/guide.md` | directory-name |
|
|
109
|
-
| `./*/` | `docs/api.md`, `docs/guide.md`, `linkdir/r.md`, `real/r.md` | directory-name |
|
|
124
|
+
| `./*/` | `docs/api.md`, `docs/guide.md`, `linkdir/r.md`, `real/r.md`, `uni/1.md`, `uni/a.md`, `uni/¡.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md` | directory-name |
|
|
110
125
|
| `./d*` | none | files-only |
|
|
111
126
|
| `./*.log` | none | gitignore |
|
|
127
|
+
| `./ignored.log` | `ignored.log` | |
|
|
128
|
+
| `./{ignored,x}.log` | `ignored.log` | |
|
|
112
129
|
| `./**/*.js` | `node_modules/pkg/index.js` | |
|
|
113
130
|
| `./node_modules/*/index.js` | `node_modules/pkg/index.js` | |
|
|
114
131
|
| `./docs/**/*.md` | `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md` | |
|
|
@@ -121,7 +138,7 @@ A test runs every row against dirsql as a path-table and, with the leading
|
|
|
121
138
|
|
|
122
139
|
| Tag | Rule | Why |
|
|
123
140
|
| --- | --- | --- |
|
|
124
|
-
| `gitignore` | Inside a git repo, `.gitignore` files hide
|
|
141
|
+
| `gitignore` | Inside a git repo, `.gitignore` files hide files and directories a wildcard matches, never one the pattern spells out. `--no-ignore` turns it off. | A query over a repo should not drown in build output. |
|
|
125
142
|
| `directory-name` | A pattern's last component that names a directory lists the files directly inside it, like `ls docs`. A trailing `/` is `*` appended. | A table is rows of files, and `ls` is the shell habit. |
|
|
126
143
|
| `files-only` | A pattern that matches a directory but no file returns nothing. | Every row is a file. |
|
|
127
144
|
| `absolute` | `/`, `~/` and `../` patterns report absolute `path` values, with `..` folded out textually. | The scanned root is derived from the pattern, so there is no relative base. |
|
|
@@ -144,6 +161,9 @@ stderr; the exit code is unchanged. Path-tables never warn.
|
|
|
144
161
|
`{a..c}` expand, as do zero-padded
|
|
145
162
|
`{01..10}` and stepped `{1..10..2}` ranges. Groups nest.
|
|
146
163
|
- `\[` is a literal bracket.
|
|
164
|
+
- POSIX classes (`[[:alpha:]]`) match Unicode characters, as bash does in a UTF-8
|
|
165
|
+
locale: `[[:alpha:]]` matches `é` and `中`. `[[:digit:]]`, `[[:xdigit:]]` and
|
|
166
|
+
`[[:ascii:]]` stay ASCII.
|
|
147
167
|
- A dot-named file or directory is listed only where a component spells the
|
|
148
168
|
dot at that depth: `./**/.*` finds `docs/.draft.md` but does not enter
|
|
149
169
|
`.config/`.
|
|
@@ -262,6 +262,9 @@ directory, deeper files override shallower ones, `!pattern` re-includes, and
|
|
|
262
262
|
an ignored directory is pruned rather than walked. In a typical repo this
|
|
263
263
|
excludes build output, virtualenvs, and caches with zero ceremony.
|
|
264
264
|
|
|
265
|
+
A `.gitignore` never hides a path the pattern spells out: `'./debug.log'` lists
|
|
266
|
+
that file even when `*.log` is ignored, while `'./*.log'` does not.
|
|
267
|
+
|
|
265
268
|
A `.gitignore` is in force only when a directory holding `.git` encloses it.
|
|
266
269
|
Outside a repo none applies, at the scan's start, above it or below it: a
|
|
267
270
|
`~/.claude` whose `.gitignore` is `*` still lists its files when `~/.claude`
|
|
@@ -990,7 +990,7 @@ mod tests {
|
|
|
990
990
|
#[test]
|
|
991
991
|
fn persist_flag_bare_enables_default_location() {
|
|
992
992
|
// Bare `--persist` (no value) → `Some(None)`: persist at the default
|
|
993
|
-
//
|
|
993
|
+
// platform cache dir, no override path.
|
|
994
994
|
let cli = Cli::parse_from(["dirsql", "--persist"]);
|
|
995
995
|
assert_eq!(cli.common.persist, Some(None));
|
|
996
996
|
}
|
|
@@ -2861,7 +2861,7 @@ mod internal_tests {
|
|
|
2861
2861
|
extensions: Vec::new(),
|
|
2862
2862
|
functions: Vec::new(),
|
|
2863
2863
|
persist,
|
|
2864
|
-
persist_path:
|
|
2864
|
+
persist_path: persist.then(|| root.join("cache.db")),
|
|
2865
2865
|
poll_interval: DEFAULT_POLL_INTERVAL,
|
|
2866
2866
|
hint_legacy_files_table: false,
|
|
2867
2867
|
path_table_parser: None,
|
|
@@ -4323,7 +4323,8 @@ mod internal_tests {
|
|
|
4323
4323
|
"*.txt",
|
|
4324
4324
|
|_| vec![],
|
|
4325
4325
|
)];
|
|
4326
|
-
let ctx =
|
|
4326
|
+
let ctx =
|
|
4327
|
+
prepare_persist(dir.path(), &tables, &[], Some(&dir.path().join("cache.db"))).unwrap();
|
|
4327
4328
|
assert!(ctx.cached.is_empty());
|
|
4328
4329
|
assert!(!ctx.expected_meta.is_empty());
|
|
4329
4330
|
assert!(
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
use crate::posix_class::expand_posix_classes;
|
|
1
|
+
use crate::posix_class::{class_regex, expand_posix_classes};
|
|
2
2
|
use crate::scanner::{PathGlob, compile_glob, compile_globs};
|
|
3
3
|
use globset::GlobBuilder;
|
|
4
4
|
use regex::{Regex, RegexBuilder};
|
|
@@ -63,7 +63,10 @@ fn unicode_regex(byte_regex: &str) -> String {
|
|
|
63
63
|
[] => break,
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
|
-
String::from_utf8_lossy(&out)
|
|
66
|
+
String::from_utf8_lossy(&out)
|
|
67
|
+
.chars()
|
|
68
|
+
.map(|c| class_regex(c).unwrap_or_else(|| c.to_string()))
|
|
69
|
+
.collect()
|
|
67
70
|
}
|
|
68
71
|
|
|
69
72
|
fn hex_byte(digits: [u8; 2]) -> u8 {
|
|
@@ -459,4 +462,67 @@ mod tests {
|
|
|
459
462
|
assert_eq!(names(&matcher, "notes/7.md"), vec!["n"]);
|
|
460
463
|
assert!(matcher.match_all(Path::new("notes/x.md")).is_empty());
|
|
461
464
|
}
|
|
465
|
+
|
|
466
|
+
#[test]
|
|
467
|
+
fn a_posix_class_matches_non_ascii_characters() {
|
|
468
|
+
let matcher = TableMatcher::new(
|
|
469
|
+
&[
|
|
470
|
+
("a/[[:alpha:]].md", "alpha"),
|
|
471
|
+
("l/[[:lower:]].md", "lower"),
|
|
472
|
+
("u/[[:upper:]].md", "upper"),
|
|
473
|
+
("p/[[:punct:]].md", "punct"),
|
|
474
|
+
],
|
|
475
|
+
&[],
|
|
476
|
+
)
|
|
477
|
+
.unwrap();
|
|
478
|
+
assert_eq!(names(&matcher, "a/\u{e9}.md"), vec!["alpha"]);
|
|
479
|
+
assert_eq!(names(&matcher, "a/\u{4e2d}.md"), vec!["alpha"]);
|
|
480
|
+
assert_eq!(names(&matcher, "l/\u{e9}.md"), vec!["lower"]);
|
|
481
|
+
assert_eq!(names(&matcher, "u/\u{c9}.md"), vec!["upper"]);
|
|
482
|
+
assert_eq!(names(&matcher, "p/\u{a1}.md"), vec!["punct"]);
|
|
483
|
+
assert!(matcher.match_all(Path::new("l/\u{c9}.md")).is_empty());
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
#[test]
|
|
487
|
+
fn every_posix_class_follows_unicode() {
|
|
488
|
+
let cases = [
|
|
489
|
+
("alnum", "\u{e9}", "\u{b2}"),
|
|
490
|
+
("alpha", "\u{663}", "1"),
|
|
491
|
+
("blank", "\u{3000}", "\u{a0}"),
|
|
492
|
+
("cntrl", "\u{85}", "\u{ad}"),
|
|
493
|
+
("graph", "\u{a0}", "\u{3000}"),
|
|
494
|
+
("lower", "\u{1c5}", "\u{c9}"),
|
|
495
|
+
("print", "\u{3000}", "\u{85}"),
|
|
496
|
+
("punct", "\u{301}", "\u{e9}"),
|
|
497
|
+
("space", "\u{2003}", "\u{a0}"),
|
|
498
|
+
("upper", "\u{1c5}", "\u{e9}"),
|
|
499
|
+
("word", "\u{4e2d}", "\u{b2}"),
|
|
500
|
+
("digit", "7", "\u{663}"),
|
|
501
|
+
("xdigit", "f", "\u{ff46}"),
|
|
502
|
+
("ascii", "a", "\u{e9}"),
|
|
503
|
+
];
|
|
504
|
+
for (class, member, outsider) in cases {
|
|
505
|
+
let matcher =
|
|
506
|
+
TableMatcher::new(&[(format!("[[:{class}:]]").as_str(), "c")], &[]).unwrap();
|
|
507
|
+
assert_eq!(names(&matcher, member), vec!["c"], "{class} {member}");
|
|
508
|
+
assert!(
|
|
509
|
+
matcher.match_all(Path::new(outsider)).is_empty(),
|
|
510
|
+
"{class} {outsider}"
|
|
511
|
+
);
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
#[test]
|
|
516
|
+
fn a_posix_class_never_matches_the_separator() {
|
|
517
|
+
let matcher = TableMatcher::new(&[("a[[:punct:]]b", "c")], &[]).unwrap();
|
|
518
|
+
assert_eq!(names(&matcher, "a.b"), vec!["c"]);
|
|
519
|
+
assert!(matcher.match_all(Path::new("a/b")).is_empty());
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
#[test]
|
|
523
|
+
fn a_negated_posix_class_matches_the_other_unicode_characters() {
|
|
524
|
+
let matcher = TableMatcher::new(&[("[![:alpha:]].md", "c")], &[]).unwrap();
|
|
525
|
+
assert_eq!(names(&matcher, "\u{a1}.md"), vec!["c"]);
|
|
526
|
+
assert!(matcher.match_all(Path::new("\u{e9}.md")).is_empty());
|
|
527
|
+
}
|
|
462
528
|
}
|