dirsql 0.4.99__tar.gz → 0.4.100__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.99 → dirsql-0.4.100}/Cargo.lock +2 -2
- {dirsql-0.4.99 → dirsql-0.4.100}/PKG-INFO +1 -1
- {dirsql-0.4.99/packages/rust → dirsql-0.4.100}/docs/context/usage.md +1 -1
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/howto/query-without-config.md +1 -1
- {dirsql-0.4.99/packages/rust → dirsql-0.4.100}/docs/reference/columns.md +1 -1
- {dirsql-0.4.99/packages/rust → dirsql-0.4.100}/docs/reference/glob.md +23 -5
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/reference/path-tables.md +6 -10
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/Cargo.toml +1 -1
- dirsql-0.4.100/packages/python/changelog.d/2026-10-07-dotdot-as-written.md +3 -0
- {dirsql-0.4.99 → dirsql-0.4.100/packages/python}/docs/context/usage.md +1 -1
- {dirsql-0.4.99/packages/rust → dirsql-0.4.100/packages/python}/docs/howto/query-without-config.md +1 -1
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/reference/columns.md +1 -1
- {dirsql-0.4.99 → dirsql-0.4.100/packages/python}/docs/reference/glob.md +23 -5
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/reference/path-tables.md +6 -10
- dirsql-0.4.100/packages/python/e2e-attestations/bot-1430-dotdot-as-written.json +7 -0
- dirsql-0.4.100/packages/python/e2e-attestations/bot-1448-wildcard-ignored-prefix.json +7 -0
- dirsql-0.4.100/packages/python/migrations.d/2026-10-07-dotdot-as-written.md +23 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/Cargo.toml +1 -1
- {dirsql-0.4.99/packages/python → dirsql-0.4.100/packages/rust}/docs/context/usage.md +1 -1
- {dirsql-0.4.99/packages/python → dirsql-0.4.100/packages/rust}/docs/howto/query-without-config.md +1 -1
- {dirsql-0.4.99 → dirsql-0.4.100/packages/rust}/docs/reference/columns.md +1 -1
- {dirsql-0.4.99/packages/python → dirsql-0.4.100/packages/rust}/docs/reference/glob.md +23 -5
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/docs/reference/path-tables.md +6 -10
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/db.rs +29 -5
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/parsed_vtab.rs +5 -2
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/path_table.rs +41 -15
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/scanner.rs +79 -2
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/vtab.rs +11 -2
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/vtab_scaffold.rs +13 -0
- dirsql-0.4.99/packages/python/changelog.d/2026-10-07-fix-main-build.md +0 -3
- dirsql-0.4.99/packages/python/migrations.d/2026-10-07-fix-main-build.md +0 -23
- {dirsql-0.4.99 → dirsql-0.4.100}/Cargo.toml +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/README.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/dirsql/__init__.py +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/dirsql/_async.py +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/dirsql/_dirsql.pyi +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/dirsql/cli/__init__.py +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/dirsql/cli/discover_plugins/__init__.py +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/dirsql/cli/discover_plugins/discovered_fragments.py +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/dirsql/cli/discover_plugins/discovery_disabled.py +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/dirsql/cli/discover_plugins/fragment_path.py +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/dirsql/cli/discover_plugins/with_discovered_plugins.py +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/dirsql/cli/main.py +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/dirsql/cli/resolve_config_extensions.py +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/dirsql/plan_entry_path.py +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/dirsql/py.typed +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/dirsql/read_config.py +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/dirsql/resolve_configs_extension_specs.py +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/dirsql/resolve_extension.py +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/dirsql/resolve_package.py +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/.claude/CLAUDE.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/.vitepress/config.ts +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/.vitepress/theme/index.ts +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/.vitepress/theme/lang.ts +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/AGENTS.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/context/.gitattributes +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/context/recipes.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/context/troubleshooting.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/explanation.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/getting-started.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/howto/agent-skill.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/howto/columns-from-paths.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/howto/define-tables.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/howto/embed.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/howto/extract-from-contents.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/howto/load-extension.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/howto/parse-files-into-columns.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/howto/persist.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/howto/query-json.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/howto/react-to-changes.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/howto/search-by-meaning.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/howto/search-indexes.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/howto/skip-files.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/howto/write-a-plugin.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/index.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/package.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/plugins.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/pnpm-lock.yaml +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/pnpm-workspace.yaml +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/reference/cli.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/reference/config.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/reference/hooks.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/reference/http-api.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/docs/reference/sdk.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/CHANGELOG.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/MIGRATIONS.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/README.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-07-13-plugin-discovery.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-07-13-rename-extract-to-on-file.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-07-13-repeatable-config.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-07-20-drop-implicit-files-table.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-07-21-remove-glob-captures.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-07-24-hookless-table-config-error.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-07-24-remove-stat-fact-injection.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-07-29-restore-python-310.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-08-02-release-profile.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-08-02-scan-failures.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-08-03-discovery-ext-resolution.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-08-03-manylinux-dynamic-binary.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-08-03-python-no-ignore.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-08-04-cast-lints.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-08-04-cli-in-process.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-08-20-curtaincall-dev-dependency.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-08-20-declared-table-name.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-09-04-config-paths-from-argv-module.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-09-05-config-extension-loader-split.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-09-05-resolve-config-extensions-split.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-09-05-resolve-extension-split.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-09-09-launcher-config-path-scan.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-09-17-extension-resolution-via-core.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-09-18-export-scan-failure.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-09-18-flatten-row-event-in-core.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-09-18-programmatic-extension-plan.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-09-20-sigint-ends-a-run-in-progress.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-09-24-query-rows-in-projection-order.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-02-readme-docs-host.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-03-one-glob-rule-for-config-globs.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-03-path-table-directory-one-level.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-04-path-table-dotfiles-hidden.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-05-brace-groups-follow-bash.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-05-cli-context.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-05-gitignore-requires-repo.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-05-path-table-node-modules-named.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-05-path-table-symlinks.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-05-path-table-trailing-slash.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-05-unbalanced-brackets-literal.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-06-config-braces.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-06-config-directory.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-06-config-dotnames.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-06-config-gitignore.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-06-config-globs-anchor-at-the-config.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-06-config-links.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-06-one-glob-compiler.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-06-plugin-no-default-records.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-06-watch-broadcast.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-06-zero-match-config-table-warning.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-07-bracket-slash-literal.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-07-dotdot-and-double-slashes.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-07-glob-walks-node-modules.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-07-literal-gitignore.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-07-persist-cache-outside-root.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-07-posix-classes-unicode.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/changelog.d/README.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/conftest.py +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/.claude/CLAUDE.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/.vitepress/config.ts +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/.vitepress/theme/index.ts +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/.vitepress/theme/lang.ts +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/AGENTS.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/context/.gitattributes +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/context/recipes.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/context/troubleshooting.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/explanation.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/getting-started.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/howto/agent-skill.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/howto/columns-from-paths.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/howto/define-tables.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/howto/embed.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/howto/extract-from-contents.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/howto/load-extension.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/howto/parse-files-into-columns.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/howto/persist.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/howto/query-json.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/howto/react-to-changes.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/howto/search-by-meaning.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/howto/search-indexes.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/howto/skip-files.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/howto/write-a-plugin.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/index.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/package.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/plugins.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/pnpm-lock.yaml +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/pnpm-workspace.yaml +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/reference/cli.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/reference/config.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/reference/hooks.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/reference/http-api.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/docs/reference/sdk.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/bot-1334-listing-exemptions.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/bot-1397-watch-broadcast.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/bot-1398-inotify-error.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/bot-1399-server-cors.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/bot-1401-watch-scope.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/bot-1407-child-place-depth.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/bot-1414-stat-speed.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/bot-1415-server-speed.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/bot-1418-node-modules.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/bot-1419-dotdot-slashes.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/bot-1420-bracket-slash.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/bot-1421-posix-unicode.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/bot-1422-literal-gitignore.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/bot-1431-persist-cache-dir.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/bot-1437-test-cache-isolation.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/bot-1440-fix-main-build.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/bot-fix-main-place-depth-20261007.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/cc-keen-knuth-f11gyq.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1056-py-ofpf9.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1066-p1-resolve-extension.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1078-argv-config-paths-core.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1079-p2-resolve-config-extensions.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1080-share-vtab-scaffolding.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1081-indicatif-progress.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1096-watch-moved-dir.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1109-watch-moved-out.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1119-ext-plan.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1120-py-ext.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1122-ext-cleanup.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1130-codec-crates.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1131-flatten-row-event.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1139-sse-flatten.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1140-scan-failure-export.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1148-clippy-all-targets.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1164-sigint-fatal.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1170-projection-order.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1172-on-file-path.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1173-py-projection-order.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1184-win-rel-paths.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1185-win-abs-table-names.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1186-win-test-harness.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1196-join-index.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1199-glob-prefix.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1201-single-walk.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1204-embed-batch.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1207-win-argv-quote.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1208-win-nonverbatim-paths.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1215-on-file-batch.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1216-on-file-cleanup.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1223-config-glob-rule.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1223-dir-one-level.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1225-plugin-no-default.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1226-stale-docs.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1232-anchor-plumbing.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1232-config-anchor.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1232-multi-watch.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1232-zero-match.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1238-parallel-walk.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1241-content-prefetch.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1243-ingest-perf.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1249-dotfiles.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1256-symlinks.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1257-trailing-slash.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1258-config-braces.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1258-config-directory.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1258-config-dotnames.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1258-config-gitignore.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1258-config-links.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1258-one-pattern.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1262-brace-literal.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1264-context.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1267-posix-classes.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1268-unbalanced-brackets.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1269-utf8-chars.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1271-node-modules-named.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1272-ancestor-gitignore.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1273-walk-prune.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1285-ingest-fast.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1286-nested-repo.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1305-glob-speed.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1308-glob-speed.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1310-glob-speed.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1311-glob-speed.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1312-glob-speed.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1318-lazy-stat.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1320-walk-speed.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1322-walk-readdir.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1325-parallel-walk.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1326-stream-rows.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1330-python-dirsql-patch.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1330-python-extensions-patch.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1330-scanner-effects.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1330-scanner-gitignore.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1330-vtab-prefetch-flag.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1330-vtab-read.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1351-dot-dirs.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-819-oneshot-timeout.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-827-unquote-doubled-quotes.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-epic-953-slice2-reedline.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-epic-953-slice3-format.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-epic-953-stacked-prs-x59wm3.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-github-issue-825-e4mhhp.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-issue-951-0eease.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-issue-962-0jjrfv.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-issue-986-red-test-e7sjrb.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-tackle-1034-cachesplit.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-tackle-1042-py12.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-tackle-956-xzen74.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-tackle-957-lrm0z6-worker-calls.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-tackle-957-lrm0z6.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-tackle-975-n8mc2h.json +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-07-13-rename-extract-to-on-file.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-07-20-drop-implicit-files-table.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-07-21-remove-glob-captures.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-07-24-hookless-table-config-error.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-07-24-remove-stat-fact-injection.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-07-29-restore-python-310.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-08-04-cli-in-process.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-08-20-declared-table-name.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-09-20-sigint-ends-a-run-in-progress.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-09-24-query-rows-in-projection-order.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-02-readme-docs-host.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-03-one-glob-rule-for-config-globs.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-03-path-table-directory-one-level.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-04-path-table-dotfiles-hidden.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-05-brace-groups-follow-bash.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-05-cli-context.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-05-gitignore-requires-repo.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-05-path-table-node-modules-named.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-05-path-table-symlinks.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-05-path-table-trailing-slash.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-05-unbalanced-brackets-literal.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-06-config-braces.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-06-config-directory.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-06-config-dotnames.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-06-config-gitignore.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-06-config-globs-anchor-at-the-config.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-06-config-links.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-06-one-glob-compiler.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-06-plugin-no-default-records.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-06-watch-broadcast.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-06-zero-match-config-table-warning.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-07-bracket-slash-literal.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-07-dotdot-and-double-slashes.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-07-glob-walks-node-modules.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-07-literal-gitignore.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-07-persist-cache-outside-root.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-07-posix-classes-unicode.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/migrations.d/README.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/src/lib.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/testing-conventions.toml +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/tests/__init__.py +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/tests/conftest.py +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/tests/e2e/__init__.py +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/__init__.py +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/dirsql.toml +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/tests/e2e/speed_of_light.py +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/tests/integration/__init__.py +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/tests/integration/binding/__init__.py +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/python/tests/integration/hermetic/__init__.py +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/CHANGELOG.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/MIGRATIONS.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/README.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/benches/db_bench.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/benches/differ_bench.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/benches/matcher_bench.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/benches/scanner_bench.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/docs/context/.gitattributes +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/docs/context/recipes.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/docs/context/troubleshooting.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/docs/explanation.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/docs/getting-started.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/docs/howto/agent-skill.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/docs/howto/columns-from-paths.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/docs/howto/define-tables.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/docs/howto/embed.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/docs/howto/extract-from-contents.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/docs/howto/load-extension.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/docs/howto/parse-files-into-columns.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/docs/howto/persist.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/docs/howto/query-json.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/docs/howto/react-to-changes.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/docs/howto/search-by-meaning.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/docs/howto/search-indexes.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/docs/howto/skip-files.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/docs/howto/write-a-plugin.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/docs/index.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/docs/plugins.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/docs/reference/cli.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/docs/reference/config.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/docs/reference/hooks.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/docs/reference/http-api.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/docs/reference/sdk.md +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/bin/dirsql.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/brace.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/cli/context.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/cli/execute.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/cli/init.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/cli/mod.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/cli/repl.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/cli/router.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/cli/run.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/cli/serialize.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/cli/server.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/cli/table.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/command.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/config.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/default_config.toml +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/differ.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/extension_resolution.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/functions.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/infer.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/launcher.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/lib.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/listing.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/matcher.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/on_file.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/persist.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/posix_class.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/progress.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/row_event_flat.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/sql_literal.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/tree_walk.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/packages/rust/src/watcher.rs +0 -0
- {dirsql-0.4.99 → dirsql-0.4.100}/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.100"
|
|
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.100"
|
|
629
629
|
dependencies = [
|
|
630
630
|
"dirsql",
|
|
631
631
|
"pyo3",
|
|
@@ -22,7 +22,7 @@ A quoted path stands in for a table name. Paths are relative to the directory yo
|
|
|
22
22
|
| `'./**/*.md'` | markdown at any depth |
|
|
23
23
|
| `'./notes/today.md'` | that one file |
|
|
24
24
|
|
|
25
|
-
`*` matches within one directory level and `**` matches any depth. A directory name lists one level, like `ls docs`, so write `'./**'` to scan the whole tree. Rows are files only, never directories. `'/var/log/*.log'`, `'../notes'` and `'~/notes/*.md'` also resolve;
|
|
25
|
+
`*` matches within one directory level and `**` matches any depth. A directory name lists one level, like `ls docs`, so write `'./**'` to scan the whole tree. Rows are files only, never directories. `'/var/log/*.log'`, `'../notes'` and `'~/notes/*.md'` also resolve; `path` is reported as written, so `'../notes'` gives `../notes/x.md` and the others give absolute paths.
|
|
26
26
|
|
|
27
27
|
Two mistakes fail every time:
|
|
28
28
|
|
|
@@ -65,7 +65,7 @@ why indexes belong to only one of them, are in
|
|
|
65
65
|
`config` nor `tables` and call `query("SELECT * FROM './'")`
|
|
66
66
|
([SDK reference](../reference/sdk.md)).
|
|
67
67
|
- Paths outside the root resolve too — `'/var/log/*.log'`, `'../notes'`,
|
|
68
|
-
`'~/notes/*.md'` — reporting
|
|
68
|
+
`'~/notes/*.md'` — reporting paths as you wrote them
|
|
69
69
|
([path-tables reference](../reference/path-tables.md#paths-outside-the-index-root)).
|
|
70
70
|
- `.git/` is skipped by default, and a git repo's `.gitignore` hides what it
|
|
71
71
|
lists, so a bare `'./**'` does not drown in machinery
|
|
@@ -31,7 +31,7 @@ lazily-read hidden [`content`](./path-tables.md#columns) column.
|
|
|
31
31
|
|
|
32
32
|
| Column | Type | Value |
|
|
33
33
|
|---|---|---|
|
|
34
|
-
| `path` | TEXT | The file's path relative to the scan root (e.g. `posts/hello.md`); absolute for a
|
|
34
|
+
| `path` | TEXT | The file's path relative to the scan root (e.g. `posts/hello.md`); as written for a `../` path-table, absolute for a `/` or `~/` one. |
|
|
35
35
|
| `basename` | TEXT | The filename, including extension (`hello.md`). |
|
|
36
36
|
| `dir` | TEXT | The parent directory relative to the root (`posts`); the empty string for files directly under the root. |
|
|
37
37
|
| `ext` | TEXT | The file extension without the leading dot (`md`). Original case is preserved — `Photo.JPG` yields `JPG`; use `LOWER(ext)` for case-insensitive matching. `NULL` when the file has no extension. |
|
|
@@ -19,7 +19,7 @@ divergence is a written decision.
|
|
|
19
19
|
## The fixture
|
|
20
20
|
|
|
21
21
|
Every example below runs against this tree. A name ending in `/` is an empty
|
|
22
|
-
directory, `a -> b` is a symlink, and `.gitignore` holds `*.log
|
|
22
|
+
directory, `a -> b` is a symlink, and `.gitignore` holds `*.log` and `dist/`.
|
|
23
23
|
|
|
24
24
|
<!-- conformance-tree -->
|
|
25
25
|
```text
|
|
@@ -48,6 +48,8 @@ docs/.draft.md
|
|
|
48
48
|
docs/nested/deep.md
|
|
49
49
|
docs/nested/.cache/x.md
|
|
50
50
|
node_modules/pkg/index.js
|
|
51
|
+
dist/bundle.js
|
|
52
|
+
dist/sub/o.js
|
|
51
53
|
real/r.md
|
|
52
54
|
uni/1.md
|
|
53
55
|
uni/a.md
|
|
@@ -126,13 +128,22 @@ A test runs every row against dirsql as a path-table and, with the leading
|
|
|
126
128
|
| `./*.log` | none | gitignore |
|
|
127
129
|
| `./ignored.log` | `ignored.log` | |
|
|
128
130
|
| `./{ignored,x}.log` | `ignored.log` | |
|
|
131
|
+
| `./dist/*.js` | none | gitignore |
|
|
132
|
+
| `./dist/**/*.js` | none | gitignore |
|
|
133
|
+
| `./dist/sub/*.js` | none | gitignore |
|
|
134
|
+
| `./d*/*.js` | none | gitignore |
|
|
135
|
+
| `./dist/bundle.js` | `dist/bundle.js` | |
|
|
136
|
+
| `./dist/sub/o.js` | `dist/sub/o.js` | |
|
|
129
137
|
| `./**/*.js` | `node_modules/pkg/index.js` | |
|
|
130
138
|
| `./node_modules/*/index.js` | `node_modules/pkg/index.js` | |
|
|
131
139
|
| `./docs/**/*.md` | `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md` | |
|
|
132
140
|
| `./docs/*.md` | `docs/api.md`, `docs/guide.md` | |
|
|
133
|
-
| `$ROOT/docs/*.md` | `$ROOT/docs/api.md`, `$ROOT/docs/guide.md` |
|
|
134
|
-
| `~/docs/*.md` | `$ROOT/docs/api.md`, `$ROOT/docs/guide.md` |
|
|
135
|
-
| `../proj/docs/*.md` |
|
|
141
|
+
| `$ROOT/docs/*.md` | `$ROOT/docs/api.md`, `$ROOT/docs/guide.md` | |
|
|
142
|
+
| `~/docs/*.md` | `$ROOT/docs/api.md`, `$ROOT/docs/guide.md` | |
|
|
143
|
+
| `../proj/docs/*.md` | `../proj/docs/api.md`, `../proj/docs/guide.md` | |
|
|
144
|
+
| `../*/top.md` | `../proj/top.md` | |
|
|
145
|
+
| `../proj/**/deep.md` | `../proj/docs/nested/deep.md` | |
|
|
146
|
+
| `../proj/docs` | `../proj/docs/api.md`, `../proj/docs/guide.md` | directory-name |
|
|
136
147
|
|
|
137
148
|
## Divergences from bash
|
|
138
149
|
|
|
@@ -141,10 +152,17 @@ A test runs every row against dirsql as a path-table and, with the leading
|
|
|
141
152
|
| `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. |
|
|
142
153
|
| `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. |
|
|
143
154
|
| `files-only` | A pattern that matches a directory but no file returns nothing. | Every row is a file. |
|
|
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. |
|
|
145
155
|
|
|
146
156
|
`.git` needs no rule of its own: the dotfile rule hides it.
|
|
147
157
|
|
|
158
|
+
## Syntax, not behavior
|
|
159
|
+
|
|
160
|
+
A path-table starts with `./`, `/`, `~/` or `../`. That is how `FROM` tells a
|
|
161
|
+
path from a table name, so `FROM './**/*.md'` is a glob and `FROM docs` is a
|
|
162
|
+
table. A config `glob` has no such need and is written without the `./`.
|
|
163
|
+
Bash accepts a bare `**/*.md`; dirsql does not in a path-table. This is syntax,
|
|
164
|
+
not a divergence: past the prefix, the glob behaves as bash does.
|
|
165
|
+
|
|
148
166
|
## Where the glob is anchored
|
|
149
167
|
|
|
150
168
|
A path-table pattern is relative to the index root and starts with `./`. A config `[[table]] glob`
|
|
@@ -109,19 +109,15 @@ Three other prefixes resolve, with their usual shell meanings:
|
|
|
109
109
|
| You write | dirsql scans |
|
|
110
110
|
| --- | --- |
|
|
111
111
|
| `'/var/log/*.log'` | an absolute path |
|
|
112
|
-
| `'../notes'` | relative to the index root's parent |
|
|
112
|
+
| `'../notes'` | relative to the index root's parent, as written |
|
|
113
113
|
| `'~/notes/*.md'` | relative to your home directory |
|
|
114
114
|
|
|
115
115
|
A directory named this way is one level too; `'../notes/**'` descends. The
|
|
116
116
|
trailing-`/` rule holds here as well: `'~/*/'` is `'~/*/*'`.
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
relative to the index root, matching every other dirsql table; a `/`, `../` or
|
|
122
|
-
`~/` path-table has no meaningful relative base — the root it scans is derived
|
|
123
|
-
from the pattern, not named by you — so it reports the full path instead. The
|
|
124
|
-
value you get back is one you can paste into another command:
|
|
117
|
+
**A `../` path-table reports `path` as written**, relative to the directory
|
|
118
|
+
dirsql runs in, as bash prints it: `'../notes/*.md'` gives `../notes/a.md`. A
|
|
119
|
+
`/` or `~/` path-table is absolute already, so it reports the full path. Either
|
|
120
|
+
value is one you can paste into another command:
|
|
125
121
|
|
|
126
122
|
```sql
|
|
127
123
|
SELECT path FROM '/var/log/*.log';
|
|
@@ -144,7 +140,7 @@ table:
|
|
|
144
140
|
|
|
145
141
|
| Column | Type | Meaning |
|
|
146
142
|
| --- | --- | --- |
|
|
147
|
-
| `path` | TEXT | path relative to the index root (absolute for
|
|
143
|
+
| `path` | TEXT | path relative to the index root (as written for `../` tables, absolute for `/` and `~/` tables) |
|
|
148
144
|
| `basename` | TEXT | filename with extension |
|
|
149
145
|
| `dir` | TEXT | parent directory, relative to the index root |
|
|
150
146
|
| `ext` | TEXT | extension without the dot |
|
|
@@ -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.100"
|
|
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
|
|
@@ -22,7 +22,7 @@ A quoted path stands in for a table name. Paths are relative to the directory yo
|
|
|
22
22
|
| `'./**/*.md'` | markdown at any depth |
|
|
23
23
|
| `'./notes/today.md'` | that one file |
|
|
24
24
|
|
|
25
|
-
`*` matches within one directory level and `**` matches any depth. A directory name lists one level, like `ls docs`, so write `'./**'` to scan the whole tree. Rows are files only, never directories. `'/var/log/*.log'`, `'../notes'` and `'~/notes/*.md'` also resolve;
|
|
25
|
+
`*` matches within one directory level and `**` matches any depth. A directory name lists one level, like `ls docs`, so write `'./**'` to scan the whole tree. Rows are files only, never directories. `'/var/log/*.log'`, `'../notes'` and `'~/notes/*.md'` also resolve; `path` is reported as written, so `'../notes'` gives `../notes/x.md` and the others give absolute paths.
|
|
26
26
|
|
|
27
27
|
Two mistakes fail every time:
|
|
28
28
|
|
{dirsql-0.4.99/packages/rust → dirsql-0.4.100/packages/python}/docs/howto/query-without-config.md
RENAMED
|
@@ -65,7 +65,7 @@ why indexes belong to only one of them, are in
|
|
|
65
65
|
`config` nor `tables` and call `query("SELECT * FROM './'")`
|
|
66
66
|
([SDK reference](../reference/sdk.md)).
|
|
67
67
|
- Paths outside the root resolve too — `'/var/log/*.log'`, `'../notes'`,
|
|
68
|
-
`'~/notes/*.md'` — reporting
|
|
68
|
+
`'~/notes/*.md'` — reporting paths as you wrote them
|
|
69
69
|
([path-tables reference](../reference/path-tables.md#paths-outside-the-index-root)).
|
|
70
70
|
- `.git/` is skipped by default, and a git repo's `.gitignore` hides what it
|
|
71
71
|
lists, so a bare `'./**'` does not drown in machinery
|
|
@@ -31,7 +31,7 @@ lazily-read hidden [`content`](./path-tables.md#columns) column.
|
|
|
31
31
|
|
|
32
32
|
| Column | Type | Value |
|
|
33
33
|
|---|---|---|
|
|
34
|
-
| `path` | TEXT | The file's path relative to the scan root (e.g. `posts/hello.md`); absolute for a
|
|
34
|
+
| `path` | TEXT | The file's path relative to the scan root (e.g. `posts/hello.md`); as written for a `../` path-table, absolute for a `/` or `~/` one. |
|
|
35
35
|
| `basename` | TEXT | The filename, including extension (`hello.md`). |
|
|
36
36
|
| `dir` | TEXT | The parent directory relative to the root (`posts`); the empty string for files directly under the root. |
|
|
37
37
|
| `ext` | TEXT | The file extension without the leading dot (`md`). Original case is preserved — `Photo.JPG` yields `JPG`; use `LOWER(ext)` for case-insensitive matching. `NULL` when the file has no extension. |
|
|
@@ -19,7 +19,7 @@ divergence is a written decision.
|
|
|
19
19
|
## The fixture
|
|
20
20
|
|
|
21
21
|
Every example below runs against this tree. A name ending in `/` is an empty
|
|
22
|
-
directory, `a -> b` is a symlink, and `.gitignore` holds `*.log
|
|
22
|
+
directory, `a -> b` is a symlink, and `.gitignore` holds `*.log` and `dist/`.
|
|
23
23
|
|
|
24
24
|
<!-- conformance-tree -->
|
|
25
25
|
```text
|
|
@@ -48,6 +48,8 @@ docs/.draft.md
|
|
|
48
48
|
docs/nested/deep.md
|
|
49
49
|
docs/nested/.cache/x.md
|
|
50
50
|
node_modules/pkg/index.js
|
|
51
|
+
dist/bundle.js
|
|
52
|
+
dist/sub/o.js
|
|
51
53
|
real/r.md
|
|
52
54
|
uni/1.md
|
|
53
55
|
uni/a.md
|
|
@@ -126,13 +128,22 @@ A test runs every row against dirsql as a path-table and, with the leading
|
|
|
126
128
|
| `./*.log` | none | gitignore |
|
|
127
129
|
| `./ignored.log` | `ignored.log` | |
|
|
128
130
|
| `./{ignored,x}.log` | `ignored.log` | |
|
|
131
|
+
| `./dist/*.js` | none | gitignore |
|
|
132
|
+
| `./dist/**/*.js` | none | gitignore |
|
|
133
|
+
| `./dist/sub/*.js` | none | gitignore |
|
|
134
|
+
| `./d*/*.js` | none | gitignore |
|
|
135
|
+
| `./dist/bundle.js` | `dist/bundle.js` | |
|
|
136
|
+
| `./dist/sub/o.js` | `dist/sub/o.js` | |
|
|
129
137
|
| `./**/*.js` | `node_modules/pkg/index.js` | |
|
|
130
138
|
| `./node_modules/*/index.js` | `node_modules/pkg/index.js` | |
|
|
131
139
|
| `./docs/**/*.md` | `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md` | |
|
|
132
140
|
| `./docs/*.md` | `docs/api.md`, `docs/guide.md` | |
|
|
133
|
-
| `$ROOT/docs/*.md` | `$ROOT/docs/api.md`, `$ROOT/docs/guide.md` |
|
|
134
|
-
| `~/docs/*.md` | `$ROOT/docs/api.md`, `$ROOT/docs/guide.md` |
|
|
135
|
-
| `../proj/docs/*.md` |
|
|
141
|
+
| `$ROOT/docs/*.md` | `$ROOT/docs/api.md`, `$ROOT/docs/guide.md` | |
|
|
142
|
+
| `~/docs/*.md` | `$ROOT/docs/api.md`, `$ROOT/docs/guide.md` | |
|
|
143
|
+
| `../proj/docs/*.md` | `../proj/docs/api.md`, `../proj/docs/guide.md` | |
|
|
144
|
+
| `../*/top.md` | `../proj/top.md` | |
|
|
145
|
+
| `../proj/**/deep.md` | `../proj/docs/nested/deep.md` | |
|
|
146
|
+
| `../proj/docs` | `../proj/docs/api.md`, `../proj/docs/guide.md` | directory-name |
|
|
136
147
|
|
|
137
148
|
## Divergences from bash
|
|
138
149
|
|
|
@@ -141,10 +152,17 @@ A test runs every row against dirsql as a path-table and, with the leading
|
|
|
141
152
|
| `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. |
|
|
142
153
|
| `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. |
|
|
143
154
|
| `files-only` | A pattern that matches a directory but no file returns nothing. | Every row is a file. |
|
|
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. |
|
|
145
155
|
|
|
146
156
|
`.git` needs no rule of its own: the dotfile rule hides it.
|
|
147
157
|
|
|
158
|
+
## Syntax, not behavior
|
|
159
|
+
|
|
160
|
+
A path-table starts with `./`, `/`, `~/` or `../`. That is how `FROM` tells a
|
|
161
|
+
path from a table name, so `FROM './**/*.md'` is a glob and `FROM docs` is a
|
|
162
|
+
table. A config `glob` has no such need and is written without the `./`.
|
|
163
|
+
Bash accepts a bare `**/*.md`; dirsql does not in a path-table. This is syntax,
|
|
164
|
+
not a divergence: past the prefix, the glob behaves as bash does.
|
|
165
|
+
|
|
148
166
|
## Where the glob is anchored
|
|
149
167
|
|
|
150
168
|
A path-table pattern is relative to the index root and starts with `./`. A config `[[table]] glob`
|
|
@@ -109,19 +109,15 @@ Three other prefixes resolve, with their usual shell meanings:
|
|
|
109
109
|
| You write | dirsql scans |
|
|
110
110
|
| --- | --- |
|
|
111
111
|
| `'/var/log/*.log'` | an absolute path |
|
|
112
|
-
| `'../notes'` | relative to the index root's parent |
|
|
112
|
+
| `'../notes'` | relative to the index root's parent, as written |
|
|
113
113
|
| `'~/notes/*.md'` | relative to your home directory |
|
|
114
114
|
|
|
115
115
|
A directory named this way is one level too; `'../notes/**'` descends. The
|
|
116
116
|
trailing-`/` rule holds here as well: `'~/*/'` is `'~/*/*'`.
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
relative to the index root, matching every other dirsql table; a `/`, `../` or
|
|
122
|
-
`~/` path-table has no meaningful relative base — the root it scans is derived
|
|
123
|
-
from the pattern, not named by you — so it reports the full path instead. The
|
|
124
|
-
value you get back is one you can paste into another command:
|
|
117
|
+
**A `../` path-table reports `path` as written**, relative to the directory
|
|
118
|
+
dirsql runs in, as bash prints it: `'../notes/*.md'` gives `../notes/a.md`. A
|
|
119
|
+
`/` or `~/` path-table is absolute already, so it reports the full path. Either
|
|
120
|
+
value is one you can paste into another command:
|
|
125
121
|
|
|
126
122
|
```sql
|
|
127
123
|
SELECT path FROM '/var/log/*.log';
|
|
@@ -144,7 +140,7 @@ table:
|
|
|
144
140
|
|
|
145
141
|
| Column | Type | Meaning |
|
|
146
142
|
| --- | --- | --- |
|
|
147
|
-
| `path` | TEXT | path relative to the index root (absolute for
|
|
143
|
+
| `path` | TEXT | path relative to the index root (as written for `../` tables, absolute for `/` and `~/` tables) |
|
|
148
144
|
| `basename` | TEXT | filename with extension |
|
|
149
145
|
| `dir` | TEXT | parent directory, relative to the index root |
|
|
150
146
|
| `ext` | TEXT | extension without the dot |
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"command": "uv run python -m pytest tests/e2e/glob_speed_gitignore_test.py tests/e2e/glob_speed_one_level_test.py tests/e2e/glob_speed_recursive_test.py tests/e2e/query_contract_test.py tests/e2e/fanout_test.py -x -q",
|
|
3
|
+
"ran_at": 1791403526,
|
|
4
|
+
"exit_code": 0,
|
|
5
|
+
"commit": "08b154a76016e8369151b2269aa01a9331d41ed7",
|
|
6
|
+
"branch": "bot/1448-wildcard-ignored-prefix"
|
|
7
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
### ../ paths as written
|
|
2
|
+
|
|
3
|
+
#### Summary
|
|
4
|
+
|
|
5
|
+
A ../ path-table reports paths as written.
|
|
6
|
+
|
|
7
|
+
#### Required changes
|
|
8
|
+
|
|
9
|
+
_None._
|
|
10
|
+
|
|
11
|
+
#### Deprecations removed
|
|
12
|
+
|
|
13
|
+
_None._
|
|
14
|
+
|
|
15
|
+
#### Behavior changes without code changes
|
|
16
|
+
|
|
17
|
+
- A ../ path-table such as '../notes/*.md' now reports ../notes/a.md, relative to the directory dirsql runs in, instead of an absolute path. / and ~/ tables are unchanged.
|
|
18
|
+
|
|
19
|
+
#### Verification
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
dirsql query "SELECT path FROM '../notes/*.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.100"
|
|
10
10
|
edition.workspace = true
|
|
11
11
|
# Literal `license` (not `license.workspace = true`) because
|
|
12
12
|
# putitoutthere's preflight check reads `[package].license` directly
|
|
@@ -22,7 +22,7 @@ A quoted path stands in for a table name. Paths are relative to the directory yo
|
|
|
22
22
|
| `'./**/*.md'` | markdown at any depth |
|
|
23
23
|
| `'./notes/today.md'` | that one file |
|
|
24
24
|
|
|
25
|
-
`*` matches within one directory level and `**` matches any depth. A directory name lists one level, like `ls docs`, so write `'./**'` to scan the whole tree. Rows are files only, never directories. `'/var/log/*.log'`, `'../notes'` and `'~/notes/*.md'` also resolve;
|
|
25
|
+
`*` matches within one directory level and `**` matches any depth. A directory name lists one level, like `ls docs`, so write `'./**'` to scan the whole tree. Rows are files only, never directories. `'/var/log/*.log'`, `'../notes'` and `'~/notes/*.md'` also resolve; `path` is reported as written, so `'../notes'` gives `../notes/x.md` and the others give absolute paths.
|
|
26
26
|
|
|
27
27
|
Two mistakes fail every time:
|
|
28
28
|
|
{dirsql-0.4.99/packages/python → dirsql-0.4.100/packages/rust}/docs/howto/query-without-config.md
RENAMED
|
@@ -65,7 +65,7 @@ why indexes belong to only one of them, are in
|
|
|
65
65
|
`config` nor `tables` and call `query("SELECT * FROM './'")`
|
|
66
66
|
([SDK reference](../reference/sdk.md)).
|
|
67
67
|
- Paths outside the root resolve too — `'/var/log/*.log'`, `'../notes'`,
|
|
68
|
-
`'~/notes/*.md'` — reporting
|
|
68
|
+
`'~/notes/*.md'` — reporting paths as you wrote them
|
|
69
69
|
([path-tables reference](../reference/path-tables.md#paths-outside-the-index-root)).
|
|
70
70
|
- `.git/` is skipped by default, and a git repo's `.gitignore` hides what it
|
|
71
71
|
lists, so a bare `'./**'` does not drown in machinery
|
|
@@ -31,7 +31,7 @@ lazily-read hidden [`content`](./path-tables.md#columns) column.
|
|
|
31
31
|
|
|
32
32
|
| Column | Type | Value |
|
|
33
33
|
|---|---|---|
|
|
34
|
-
| `path` | TEXT | The file's path relative to the scan root (e.g. `posts/hello.md`); absolute for a
|
|
34
|
+
| `path` | TEXT | The file's path relative to the scan root (e.g. `posts/hello.md`); as written for a `../` path-table, absolute for a `/` or `~/` one. |
|
|
35
35
|
| `basename` | TEXT | The filename, including extension (`hello.md`). |
|
|
36
36
|
| `dir` | TEXT | The parent directory relative to the root (`posts`); the empty string for files directly under the root. |
|
|
37
37
|
| `ext` | TEXT | The file extension without the leading dot (`md`). Original case is preserved — `Photo.JPG` yields `JPG`; use `LOWER(ext)` for case-insensitive matching. `NULL` when the file has no extension. |
|
|
@@ -19,7 +19,7 @@ divergence is a written decision.
|
|
|
19
19
|
## The fixture
|
|
20
20
|
|
|
21
21
|
Every example below runs against this tree. A name ending in `/` is an empty
|
|
22
|
-
directory, `a -> b` is a symlink, and `.gitignore` holds `*.log
|
|
22
|
+
directory, `a -> b` is a symlink, and `.gitignore` holds `*.log` and `dist/`.
|
|
23
23
|
|
|
24
24
|
<!-- conformance-tree -->
|
|
25
25
|
```text
|
|
@@ -48,6 +48,8 @@ docs/.draft.md
|
|
|
48
48
|
docs/nested/deep.md
|
|
49
49
|
docs/nested/.cache/x.md
|
|
50
50
|
node_modules/pkg/index.js
|
|
51
|
+
dist/bundle.js
|
|
52
|
+
dist/sub/o.js
|
|
51
53
|
real/r.md
|
|
52
54
|
uni/1.md
|
|
53
55
|
uni/a.md
|
|
@@ -126,13 +128,22 @@ A test runs every row against dirsql as a path-table and, with the leading
|
|
|
126
128
|
| `./*.log` | none | gitignore |
|
|
127
129
|
| `./ignored.log` | `ignored.log` | |
|
|
128
130
|
| `./{ignored,x}.log` | `ignored.log` | |
|
|
131
|
+
| `./dist/*.js` | none | gitignore |
|
|
132
|
+
| `./dist/**/*.js` | none | gitignore |
|
|
133
|
+
| `./dist/sub/*.js` | none | gitignore |
|
|
134
|
+
| `./d*/*.js` | none | gitignore |
|
|
135
|
+
| `./dist/bundle.js` | `dist/bundle.js` | |
|
|
136
|
+
| `./dist/sub/o.js` | `dist/sub/o.js` | |
|
|
129
137
|
| `./**/*.js` | `node_modules/pkg/index.js` | |
|
|
130
138
|
| `./node_modules/*/index.js` | `node_modules/pkg/index.js` | |
|
|
131
139
|
| `./docs/**/*.md` | `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md` | |
|
|
132
140
|
| `./docs/*.md` | `docs/api.md`, `docs/guide.md` | |
|
|
133
|
-
| `$ROOT/docs/*.md` | `$ROOT/docs/api.md`, `$ROOT/docs/guide.md` |
|
|
134
|
-
| `~/docs/*.md` | `$ROOT/docs/api.md`, `$ROOT/docs/guide.md` |
|
|
135
|
-
| `../proj/docs/*.md` |
|
|
141
|
+
| `$ROOT/docs/*.md` | `$ROOT/docs/api.md`, `$ROOT/docs/guide.md` | |
|
|
142
|
+
| `~/docs/*.md` | `$ROOT/docs/api.md`, `$ROOT/docs/guide.md` | |
|
|
143
|
+
| `../proj/docs/*.md` | `../proj/docs/api.md`, `../proj/docs/guide.md` | |
|
|
144
|
+
| `../*/top.md` | `../proj/top.md` | |
|
|
145
|
+
| `../proj/**/deep.md` | `../proj/docs/nested/deep.md` | |
|
|
146
|
+
| `../proj/docs` | `../proj/docs/api.md`, `../proj/docs/guide.md` | directory-name |
|
|
136
147
|
|
|
137
148
|
## Divergences from bash
|
|
138
149
|
|
|
@@ -141,10 +152,17 @@ A test runs every row against dirsql as a path-table and, with the leading
|
|
|
141
152
|
| `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. |
|
|
142
153
|
| `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. |
|
|
143
154
|
| `files-only` | A pattern that matches a directory but no file returns nothing. | Every row is a file. |
|
|
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. |
|
|
145
155
|
|
|
146
156
|
`.git` needs no rule of its own: the dotfile rule hides it.
|
|
147
157
|
|
|
158
|
+
## Syntax, not behavior
|
|
159
|
+
|
|
160
|
+
A path-table starts with `./`, `/`, `~/` or `../`. That is how `FROM` tells a
|
|
161
|
+
path from a table name, so `FROM './**/*.md'` is a glob and `FROM docs` is a
|
|
162
|
+
table. A config `glob` has no such need and is written without the `./`.
|
|
163
|
+
Bash accepts a bare `**/*.md`; dirsql does not in a path-table. This is syntax,
|
|
164
|
+
not a divergence: past the prefix, the glob behaves as bash does.
|
|
165
|
+
|
|
148
166
|
## Where the glob is anchored
|
|
149
167
|
|
|
150
168
|
A path-table pattern is relative to the index root and starts with `./`. A config `[[table]] glob`
|
|
@@ -109,19 +109,15 @@ Three other prefixes resolve, with their usual shell meanings:
|
|
|
109
109
|
| You write | dirsql scans |
|
|
110
110
|
| --- | --- |
|
|
111
111
|
| `'/var/log/*.log'` | an absolute path |
|
|
112
|
-
| `'../notes'` | relative to the index root's parent |
|
|
112
|
+
| `'../notes'` | relative to the index root's parent, as written |
|
|
113
113
|
| `'~/notes/*.md'` | relative to your home directory |
|
|
114
114
|
|
|
115
115
|
A directory named this way is one level too; `'../notes/**'` descends. The
|
|
116
116
|
trailing-`/` rule holds here as well: `'~/*/'` is `'~/*/*'`.
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
relative to the index root, matching every other dirsql table; a `/`, `../` or
|
|
122
|
-
`~/` path-table has no meaningful relative base — the root it scans is derived
|
|
123
|
-
from the pattern, not named by you — so it reports the full path instead. The
|
|
124
|
-
value you get back is one you can paste into another command:
|
|
117
|
+
**A `../` path-table reports `path` as written**, relative to the directory
|
|
118
|
+
dirsql runs in, as bash prints it: `'../notes/*.md'` gives `../notes/a.md`. A
|
|
119
|
+
`/` or `~/` path-table is absolute already, so it reports the full path. Either
|
|
120
|
+
value is one you can paste into another command:
|
|
125
121
|
|
|
126
122
|
```sql
|
|
127
123
|
SELECT path FROM '/var/log/*.log';
|
|
@@ -144,7 +140,7 @@ table:
|
|
|
144
140
|
|
|
145
141
|
| Column | Type | Meaning |
|
|
146
142
|
| --- | --- | --- |
|
|
147
|
-
| `path` | TEXT | path relative to the index root (absolute for
|
|
143
|
+
| `path` | TEXT | path relative to the index root (as written for `../` tables, absolute for `/` and `~/` tables) |
|
|
148
144
|
| `basename` | TEXT | filename with extension |
|
|
149
145
|
| `dir` | TEXT | parent directory, relative to the index root |
|
|
150
146
|
| `ext` | TEXT | extension without the dot |
|
|
@@ -173,10 +173,12 @@ fn path_table_ddl(
|
|
|
173
173
|
],
|
|
174
174
|
),
|
|
175
175
|
};
|
|
176
|
-
args.push(quote_literal(if gitignore {
|
|
177
|
-
scanner::GITIGNORE_ARG
|
|
178
|
-
} else {
|
|
176
|
+
args.push(quote_literal(if !gitignore {
|
|
179
177
|
scanner::NO_GITIGNORE_ARG
|
|
178
|
+
} else if !table.path_prefix.is_empty() && path_table::wildcard_below_prefix(name) {
|
|
179
|
+
scanner::GITIGNORE_ROOT_ARG
|
|
180
|
+
} else {
|
|
181
|
+
scanner::GITIGNORE_ARG
|
|
180
182
|
}));
|
|
181
183
|
if parser.is_some() {
|
|
182
184
|
args.push(quote_literal(&index_root.to_string_lossy()));
|
|
@@ -3228,7 +3230,7 @@ mod tests {
|
|
|
3228
3230
|
None,
|
|
3229
3231
|
Path::new("/root"),
|
|
3230
3232
|
)
|
|
3231
|
-
.contains("'/var/log', '*.log', '/var/log', 'gitignore')"),
|
|
3233
|
+
.contains("'/var/log', '*.log', '/var/log', 'gitignore-root')"),
|
|
3232
3234
|
"got: {}",
|
|
3233
3235
|
path_table_ddl(
|
|
3234
3236
|
"/var/log/*.log",
|
|
@@ -3241,6 +3243,28 @@ mod tests {
|
|
|
3241
3243
|
);
|
|
3242
3244
|
}
|
|
3243
3245
|
|
|
3246
|
+
#[test]
|
|
3247
|
+
fn path_table_ddl_checks_the_root_of_a_wildcard_under_a_literal_prefix() {
|
|
3248
|
+
let table = PathTable {
|
|
3249
|
+
root: PathBuf::from("/root/dist"),
|
|
3250
|
+
glob: "*.js".to_string(),
|
|
3251
|
+
path_prefix: "dist".to_string(),
|
|
3252
|
+
};
|
|
3253
|
+
let ddl = path_table_ddl("./dist/*.js", &table, &[], true, None, Path::new("/root"));
|
|
3254
|
+
assert!(ddl.ends_with("'dist', 'gitignore-root')"), "got: {ddl}");
|
|
3255
|
+
}
|
|
3256
|
+
|
|
3257
|
+
#[test]
|
|
3258
|
+
fn path_table_ddl_spares_the_root_of_a_literally_named_directory() {
|
|
3259
|
+
let table = PathTable {
|
|
3260
|
+
root: PathBuf::from("/root/dist"),
|
|
3261
|
+
glob: "*".to_string(),
|
|
3262
|
+
path_prefix: "dist".to_string(),
|
|
3263
|
+
};
|
|
3264
|
+
let ddl = path_table_ddl("./dist", &table, &[], true, None, Path::new("/root"));
|
|
3265
|
+
assert!(ddl.ends_with("'dist', 'gitignore')"), "got: {ddl}");
|
|
3266
|
+
}
|
|
3267
|
+
|
|
3244
3268
|
#[test]
|
|
3245
3269
|
fn path_table_ddl_carries_the_no_gitignore_switch() {
|
|
3246
3270
|
let ddl = path_table_ddl(
|
|
@@ -3307,7 +3331,7 @@ mod tests {
|
|
|
3307
3331
|
);
|
|
3308
3332
|
assert!(
|
|
3309
3333
|
ddl.ends_with(
|
|
3310
|
-
"USING dirsql_parsed('/var/log', '*.log', 'parse.py', 'gitignore', \
|
|
3334
|
+
"USING dirsql_parsed('/var/log', '*.log', 'parse.py', 'gitignore-root', \
|
|
3311
3335
|
'/index', 'node_modules/**')"
|
|
3312
3336
|
),
|
|
3313
3337
|
"the parser form drops the path prefix, names the index root and keeps \
|
|
@@ -28,7 +28,7 @@ use crate::Value;
|
|
|
28
28
|
use crate::infer::{JsonRow, cell, declared_schema, infer_schema};
|
|
29
29
|
use crate::matcher::TableMatcher;
|
|
30
30
|
use crate::on_file;
|
|
31
|
-
use crate::scanner::{PathGlob,
|
|
31
|
+
use crate::scanner::{PathGlob, scan_glob_checking_root};
|
|
32
32
|
use crate::vtab_scaffold::{self, StatementScope, TableSource};
|
|
33
33
|
|
|
34
34
|
/// SQL module name a parsed path-table is created with.
|
|
@@ -51,6 +51,7 @@ struct ModuleArgs {
|
|
|
51
51
|
glob: PathGlob,
|
|
52
52
|
command: String,
|
|
53
53
|
gitignore: bool,
|
|
54
|
+
check_root: bool,
|
|
54
55
|
index_root: PathBuf,
|
|
55
56
|
ignore: TableMatcher,
|
|
56
57
|
}
|
|
@@ -77,6 +78,7 @@ fn parse_module_args(args: &[&[u8]]) -> Result<ModuleArgs> {
|
|
|
77
78
|
glob: vtab_scaffold::compile_glob(pattern)?,
|
|
78
79
|
command: command.clone(),
|
|
79
80
|
gitignore: vtab_scaffold::parse_gitignore(gitignore)?,
|
|
81
|
+
check_root: vtab_scaffold::checks_root(gitignore),
|
|
80
82
|
index_root: PathBuf::from(index_root),
|
|
81
83
|
ignore: vtab_scaffold::compile_ignore(ignore)?,
|
|
82
84
|
})
|
|
@@ -145,6 +147,7 @@ impl TableSource for ParsedTable {
|
|
|
145
147
|
glob,
|
|
146
148
|
command,
|
|
147
149
|
gitignore,
|
|
150
|
+
check_root,
|
|
148
151
|
index_root,
|
|
149
152
|
ignore,
|
|
150
153
|
} = parse_module_args(args)?;
|
|
@@ -152,7 +155,7 @@ impl TableSource for ParsedTable {
|
|
|
152
155
|
// A parsed path-table honors the same skip rules a stat path-table does
|
|
153
156
|
// (node_modules/.git, gitignore, plus any configured ignore), so a
|
|
154
157
|
// parsed `SELECT * FROM './'` doesn't drown in dependency trees.
|
|
155
|
-
let rel_paths =
|
|
158
|
+
let rel_paths = scan_glob_checking_root(&root, &glob, &ignore, gitignore, check_root);
|
|
156
159
|
let run = |rel: &[PathBuf]| run_parser(&command, &index_root, &root, rel);
|
|
157
160
|
let rows = collect_rows(&rel_paths, &run)?;
|
|
158
161
|
|