dirsql 0.4.98__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.98 → dirsql-0.4.100}/Cargo.lock +2 -2
- {dirsql-0.4.98 → dirsql-0.4.100}/PKG-INFO +1 -1
- {dirsql-0.4.98/packages/rust → dirsql-0.4.100}/docs/context/usage.md +1 -1
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/howto/query-without-config.md +1 -1
- {dirsql-0.4.98/packages/rust → dirsql-0.4.100}/docs/reference/columns.md +1 -1
- {dirsql-0.4.98/packages/rust → dirsql-0.4.100}/docs/reference/glob.md +47 -9
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/reference/path-tables.md +9 -10
- {dirsql-0.4.98 → 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.100/packages/python/changelog.d/2026-10-07-literal-gitignore.md +3 -0
- dirsql-0.4.100/packages/python/changelog.d/2026-10-07-posix-classes-unicode.md +3 -0
- {dirsql-0.4.98 → dirsql-0.4.100/packages/python}/docs/context/usage.md +1 -1
- {dirsql-0.4.98/packages/rust → dirsql-0.4.100/packages/python}/docs/howto/query-without-config.md +1 -1
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/reference/columns.md +1 -1
- {dirsql-0.4.98 → dirsql-0.4.100/packages/python}/docs/reference/glob.md +47 -9
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/reference/path-tables.md +9 -10
- dirsql-0.4.100/packages/python/e2e-attestations/bot-1421-posix-unicode.json +7 -0
- dirsql-0.4.100/packages/python/e2e-attestations/bot-1422-literal-gitignore.json +7 -0
- 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.100/packages/python/migrations.d/2026-10-07-literal-gitignore.md +23 -0
- dirsql-0.4.100/packages/python/migrations.d/2026-10-07-posix-classes-unicode.md +23 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/Cargo.toml +1 -1
- {dirsql-0.4.98/packages/python → dirsql-0.4.100/packages/rust}/docs/context/usage.md +1 -1
- {dirsql-0.4.98/packages/python → dirsql-0.4.100/packages/rust}/docs/howto/query-without-config.md +1 -1
- {dirsql-0.4.98 → dirsql-0.4.100/packages/rust}/docs/reference/columns.md +1 -1
- {dirsql-0.4.98/packages/python → dirsql-0.4.100/packages/rust}/docs/reference/glob.md +47 -9
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/docs/reference/path-tables.md +9 -10
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/db.rs +29 -5
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/matcher.rs +68 -2
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/parsed_vtab.rs +5 -2
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/path_table.rs +41 -15
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/posix_class.rs +92 -31
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/scanner.rs +116 -4
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/vtab.rs +11 -2
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/vtab_scaffold.rs +13 -0
- dirsql-0.4.98/packages/python/changelog.d/2026-10-07-fix-main-build.md +0 -3
- dirsql-0.4.98/packages/python/migrations.d/2026-10-07-fix-main-build.md +0 -23
- {dirsql-0.4.98 → dirsql-0.4.100}/Cargo.toml +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/README.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/dirsql/__init__.py +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/dirsql/_async.py +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/dirsql/_dirsql.pyi +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/dirsql/cli/__init__.py +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/dirsql/cli/discover_plugins/__init__.py +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/dirsql/cli/discover_plugins/discovered_fragments.py +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/dirsql/cli/discover_plugins/discovery_disabled.py +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/dirsql/cli/discover_plugins/fragment_path.py +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/dirsql/cli/discover_plugins/with_discovered_plugins.py +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/dirsql/cli/main.py +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/dirsql/cli/resolve_config_extensions.py +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/dirsql/plan_entry_path.py +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/dirsql/py.typed +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/dirsql/read_config.py +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/dirsql/resolve_configs_extension_specs.py +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/dirsql/resolve_extension.py +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/dirsql/resolve_package.py +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/.claude/CLAUDE.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/.vitepress/config.ts +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/.vitepress/theme/index.ts +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/.vitepress/theme/lang.ts +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/AGENTS.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/context/.gitattributes +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/context/recipes.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/context/troubleshooting.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/explanation.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/getting-started.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/howto/agent-skill.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/howto/columns-from-paths.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/howto/define-tables.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/howto/embed.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/howto/extract-from-contents.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/howto/load-extension.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/howto/parse-files-into-columns.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/howto/persist.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/howto/query-json.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/howto/react-to-changes.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/howto/search-by-meaning.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/howto/search-indexes.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/howto/skip-files.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/howto/write-a-plugin.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/index.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/package.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/plugins.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/pnpm-lock.yaml +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/pnpm-workspace.yaml +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/reference/cli.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/reference/config.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/reference/hooks.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/reference/http-api.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/docs/reference/sdk.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/CHANGELOG.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/MIGRATIONS.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/README.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-07-13-plugin-discovery.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-07-13-rename-extract-to-on-file.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-07-13-repeatable-config.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-07-20-drop-implicit-files-table.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-07-21-remove-glob-captures.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-07-24-hookless-table-config-error.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-07-24-remove-stat-fact-injection.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-07-29-restore-python-310.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-08-02-release-profile.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-08-02-scan-failures.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-08-03-discovery-ext-resolution.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-08-03-manylinux-dynamic-binary.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-08-03-python-no-ignore.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-08-04-cast-lints.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-08-04-cli-in-process.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-08-20-curtaincall-dev-dependency.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-08-20-declared-table-name.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-09-04-config-paths-from-argv-module.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-09-05-config-extension-loader-split.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-09-05-resolve-config-extensions-split.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-09-05-resolve-extension-split.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-09-09-launcher-config-path-scan.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-09-17-extension-resolution-via-core.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-09-18-export-scan-failure.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-09-18-flatten-row-event-in-core.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-09-18-programmatic-extension-plan.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-09-20-sigint-ends-a-run-in-progress.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-09-24-query-rows-in-projection-order.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-02-readme-docs-host.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-03-one-glob-rule-for-config-globs.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-03-path-table-directory-one-level.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-04-path-table-dotfiles-hidden.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-05-brace-groups-follow-bash.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-05-cli-context.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-05-gitignore-requires-repo.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-05-path-table-node-modules-named.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-05-path-table-symlinks.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-05-path-table-trailing-slash.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-05-unbalanced-brackets-literal.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-06-config-braces.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-06-config-directory.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-06-config-dotnames.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-06-config-gitignore.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-06-config-globs-anchor-at-the-config.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-06-config-links.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-06-one-glob-compiler.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-06-plugin-no-default-records.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-06-watch-broadcast.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-06-zero-match-config-table-warning.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-07-bracket-slash-literal.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-07-dotdot-and-double-slashes.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-07-glob-walks-node-modules.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/2026-10-07-persist-cache-outside-root.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/changelog.d/README.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/conftest.py +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/.claude/CLAUDE.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/.vitepress/config.ts +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/.vitepress/theme/index.ts +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/.vitepress/theme/lang.ts +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/AGENTS.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/context/.gitattributes +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/context/recipes.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/context/troubleshooting.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/explanation.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/getting-started.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/howto/agent-skill.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/howto/columns-from-paths.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/howto/define-tables.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/howto/embed.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/howto/extract-from-contents.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/howto/load-extension.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/howto/parse-files-into-columns.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/howto/persist.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/howto/query-json.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/howto/react-to-changes.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/howto/search-by-meaning.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/howto/search-indexes.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/howto/skip-files.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/howto/write-a-plugin.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/index.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/package.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/plugins.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/pnpm-lock.yaml +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/pnpm-workspace.yaml +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/reference/cli.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/reference/config.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/reference/hooks.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/reference/http-api.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/docs/reference/sdk.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/bot-1334-listing-exemptions.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/bot-1397-watch-broadcast.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/bot-1398-inotify-error.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/bot-1399-server-cors.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/bot-1401-watch-scope.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/bot-1407-child-place-depth.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/bot-1414-stat-speed.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/bot-1415-server-speed.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/bot-1418-node-modules.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/bot-1419-dotdot-slashes.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/bot-1420-bracket-slash.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/bot-1431-persist-cache-dir.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/bot-1437-test-cache-isolation.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/bot-1440-fix-main-build.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/bot-fix-main-place-depth-20261007.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/cc-keen-knuth-f11gyq.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1056-py-ofpf9.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1066-p1-resolve-extension.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1078-argv-config-paths-core.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1079-p2-resolve-config-extensions.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1080-share-vtab-scaffolding.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1081-indicatif-progress.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1096-watch-moved-dir.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1109-watch-moved-out.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1119-ext-plan.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1120-py-ext.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1122-ext-cleanup.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1130-codec-crates.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1131-flatten-row-event.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1139-sse-flatten.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1140-scan-failure-export.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1148-clippy-all-targets.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1164-sigint-fatal.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1170-projection-order.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1172-on-file-path.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1173-py-projection-order.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1184-win-rel-paths.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1185-win-abs-table-names.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1186-win-test-harness.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1196-join-index.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1199-glob-prefix.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1201-single-walk.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1204-embed-batch.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1207-win-argv-quote.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1208-win-nonverbatim-paths.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1215-on-file-batch.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1216-on-file-cleanup.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1223-config-glob-rule.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1223-dir-one-level.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1225-plugin-no-default.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1226-stale-docs.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1232-anchor-plumbing.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1232-config-anchor.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1232-multi-watch.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1232-zero-match.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1238-parallel-walk.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1241-content-prefetch.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1243-ingest-perf.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1249-dotfiles.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1256-symlinks.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1257-trailing-slash.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1258-config-braces.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1258-config-directory.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1258-config-dotnames.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1258-config-gitignore.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1258-config-links.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1258-one-pattern.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1262-brace-literal.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1264-context.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1267-posix-classes.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1268-unbalanced-brackets.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1269-utf8-chars.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1271-node-modules-named.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1272-ancestor-gitignore.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1273-walk-prune.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1285-ingest-fast.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1286-nested-repo.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1305-glob-speed.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1308-glob-speed.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1310-glob-speed.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1311-glob-speed.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1312-glob-speed.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1318-lazy-stat.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1320-walk-speed.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1322-walk-readdir.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1325-parallel-walk.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1326-stream-rows.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1330-python-dirsql-patch.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1330-python-extensions-patch.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1330-scanner-effects.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1330-scanner-gitignore.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1330-vtab-prefetch-flag.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1330-vtab-read.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-1351-dot-dirs.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-819-oneshot-timeout.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-827-unquote-doubled-quotes.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-epic-953-slice2-reedline.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-epic-953-slice3-format.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-epic-953-stacked-prs-x59wm3.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-github-issue-825-e4mhhp.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-issue-951-0eease.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-issue-962-0jjrfv.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-issue-986-red-test-e7sjrb.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-tackle-1034-cachesplit.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-tackle-1042-py12.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-tackle-956-xzen74.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-tackle-957-lrm0z6-worker-calls.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-tackle-957-lrm0z6.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/e2e-attestations/claude-tackle-975-n8mc2h.json +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-07-13-rename-extract-to-on-file.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-07-20-drop-implicit-files-table.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-07-21-remove-glob-captures.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-07-24-hookless-table-config-error.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-07-24-remove-stat-fact-injection.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-07-29-restore-python-310.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-08-04-cli-in-process.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-08-20-declared-table-name.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-09-20-sigint-ends-a-run-in-progress.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-09-24-query-rows-in-projection-order.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-02-readme-docs-host.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-03-one-glob-rule-for-config-globs.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-03-path-table-directory-one-level.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-04-path-table-dotfiles-hidden.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-05-brace-groups-follow-bash.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-05-cli-context.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-05-gitignore-requires-repo.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-05-path-table-node-modules-named.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-05-path-table-symlinks.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-05-path-table-trailing-slash.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-05-unbalanced-brackets-literal.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-06-config-braces.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-06-config-directory.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-06-config-dotnames.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-06-config-gitignore.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-06-config-globs-anchor-at-the-config.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-06-config-links.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-06-one-glob-compiler.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-06-plugin-no-default-records.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-06-watch-broadcast.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-06-zero-match-config-table-warning.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-07-bracket-slash-literal.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-07-dotdot-and-double-slashes.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-07-glob-walks-node-modules.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/2026-10-07-persist-cache-outside-root.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/migrations.d/README.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/src/lib.rs +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/testing-conventions.toml +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/tests/__init__.py +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/tests/conftest.py +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/tests/e2e/__init__.py +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/__init__.py +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/dirsql.toml +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/tests/e2e/speed_of_light.py +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/tests/integration/__init__.py +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/tests/integration/binding/__init__.py +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/python/tests/integration/hermetic/__init__.py +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/CHANGELOG.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/MIGRATIONS.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/README.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/benches/db_bench.rs +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/benches/differ_bench.rs +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/benches/matcher_bench.rs +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/benches/scanner_bench.rs +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/docs/context/.gitattributes +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/docs/context/recipes.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/docs/context/troubleshooting.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/docs/explanation.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/docs/getting-started.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/docs/howto/agent-skill.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/docs/howto/columns-from-paths.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/docs/howto/define-tables.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/docs/howto/embed.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/docs/howto/extract-from-contents.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/docs/howto/load-extension.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/docs/howto/parse-files-into-columns.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/docs/howto/persist.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/docs/howto/query-json.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/docs/howto/react-to-changes.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/docs/howto/search-by-meaning.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/docs/howto/search-indexes.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/docs/howto/skip-files.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/docs/howto/write-a-plugin.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/docs/index.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/docs/plugins.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/docs/reference/cli.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/docs/reference/config.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/docs/reference/hooks.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/docs/reference/http-api.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/docs/reference/sdk.md +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/bin/dirsql.rs +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/brace.rs +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/cli/context.rs +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/cli/execute.rs +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/cli/init.rs +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/cli/mod.rs +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/cli/repl.rs +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/cli/router.rs +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/cli/run.rs +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/cli/serialize.rs +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/cli/server.rs +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/cli/table.rs +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/command.rs +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/config.rs +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/default_config.toml +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/differ.rs +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/extension_resolution.rs +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/functions.rs +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/infer.rs +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/launcher.rs +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/lib.rs +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/listing.rs +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/on_file.rs +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/persist.rs +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/progress.rs +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/row_event_flat.rs +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/sql_literal.rs +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/tree_walk.rs +0 -0
- {dirsql-0.4.98 → dirsql-0.4.100}/packages/rust/src/watcher.rs +0 -0
- {dirsql-0.4.98 → 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,7 +48,16 @@ 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
|
|
54
|
+
uni/1.md
|
|
55
|
+
uni/a.md
|
|
56
|
+
uni/é.md
|
|
57
|
+
uni/É.md
|
|
58
|
+
uni/中.md
|
|
59
|
+
uni/٣.md
|
|
60
|
+
uni/¡.md
|
|
52
61
|
linkdir -> real
|
|
53
62
|
link.md -> top.md
|
|
54
63
|
broken -> nowhere
|
|
@@ -69,13 +78,21 @@ A test runs every row against dirsql as a path-table and, with the leading
|
|
|
69
78
|
| Pattern | Rows | Divergence |
|
|
70
79
|
| --- | --- | --- |
|
|
71
80
|
| `./*.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` | |
|
|
81
|
+
| `./**/*.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` | |
|
|
82
|
+
| `./**` | `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
83
|
| `./?.md` | `1.md`, `2.md`, `3.md`, `4.md`, `a.md`, `b.md`, `c.md` | |
|
|
75
84
|
| `./[ab].md` | `a.md`, `b.md` | |
|
|
76
85
|
| `./[!a].md` | `1.md`, `2.md`, `3.md`, `4.md`, `b.md`, `c.md` | |
|
|
77
86
|
| `./\[a\].md` | `[a].md` | |
|
|
78
87
|
| `./[z.md` | `[z.md` | |
|
|
88
|
+
| `./uni/[[:alpha:]].md` | `uni/a.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md` | |
|
|
89
|
+
| `./uni/[[:alnum:]].md` | `uni/1.md`, `uni/a.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md` | |
|
|
90
|
+
| `./uni/[[:lower:]].md` | `uni/a.md`, `uni/é.md` | |
|
|
91
|
+
| `./uni/[[:upper:]].md` | `uni/É.md` | |
|
|
92
|
+
| `./uni/[[:digit:]].md` | `uni/1.md` | |
|
|
93
|
+
| `./uni/[[:punct:]].md` | `uni/¡.md` | |
|
|
94
|
+
| `./uni/[[:word:]].md` | `uni/1.md`, `uni/a.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md` | |
|
|
95
|
+
| `./uni/[![:alpha:]].md` | `uni/1.md`, `uni/¡.md` | |
|
|
79
96
|
| `./[d/x]ocs/api.md` | none | |
|
|
80
97
|
| `./docs[/]api.md` | none | |
|
|
81
98
|
| `./[!/]*/api.md` | none | |
|
|
@@ -106,28 +123,46 @@ A test runs every row against dirsql as a path-table and, with the leading
|
|
|
106
123
|
| `./docs/*/../api.md` | `docs/nested/../api.md` | |
|
|
107
124
|
| `./docs` | `docs/api.md`, `docs/guide.md` | directory-name |
|
|
108
125
|
| `./docs/` | `docs/api.md`, `docs/guide.md` | directory-name |
|
|
109
|
-
| `./*/` | `docs/api.md`, `docs/guide.md`, `linkdir/r.md`, `real/r.md` | directory-name |
|
|
126
|
+
| `./*/` | `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
127
|
| `./d*` | none | files-only |
|
|
111
128
|
| `./*.log` | none | gitignore |
|
|
129
|
+
| `./ignored.log` | `ignored.log` | |
|
|
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` | |
|
|
112
137
|
| `./**/*.js` | `node_modules/pkg/index.js` | |
|
|
113
138
|
| `./node_modules/*/index.js` | `node_modules/pkg/index.js` | |
|
|
114
139
|
| `./docs/**/*.md` | `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md` | |
|
|
115
140
|
| `./docs/*.md` | `docs/api.md`, `docs/guide.md` | |
|
|
116
|
-
| `$ROOT/docs/*.md` | `$ROOT/docs/api.md`, `$ROOT/docs/guide.md` |
|
|
117
|
-
| `~/docs/*.md` | `$ROOT/docs/api.md`, `$ROOT/docs/guide.md` |
|
|
118
|
-
| `../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 |
|
|
119
147
|
|
|
120
148
|
## Divergences from bash
|
|
121
149
|
|
|
122
150
|
| Tag | Rule | Why |
|
|
123
151
|
| --- | --- | --- |
|
|
124
|
-
| `gitignore` | Inside a git repo, `.gitignore` files hide
|
|
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. |
|
|
125
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. |
|
|
126
154
|
| `files-only` | A pattern that matches a directory but no file returns nothing. | Every row is a file. |
|
|
127
|
-
| `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. |
|
|
128
155
|
|
|
129
156
|
`.git` needs no rule of its own: the dotfile rule hides it.
|
|
130
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
|
+
|
|
131
166
|
## Where the glob is anchored
|
|
132
167
|
|
|
133
168
|
A path-table pattern is relative to the index root and starts with `./`. A config `[[table]] glob`
|
|
@@ -144,6 +179,9 @@ stderr; the exit code is unchanged. Path-tables never warn.
|
|
|
144
179
|
`{a..c}` expand, as do zero-padded
|
|
145
180
|
`{01..10}` and stepped `{1..10..2}` ranges. Groups nest.
|
|
146
181
|
- `\[` is a literal bracket.
|
|
182
|
+
- POSIX classes (`[[:alpha:]]`) match Unicode characters, as bash does in a UTF-8
|
|
183
|
+
locale: `[[:alpha:]]` matches `é` and `中`. `[[:digit:]]`, `[[:xdigit:]]` and
|
|
184
|
+
`[[:ascii:]]` stay ASCII.
|
|
147
185
|
- A dot-named file or directory is listed only where a component spells the
|
|
148
186
|
dot at that depth: `./**/.*` finds `docs/.draft.md` but does not enter
|
|
149
187
|
`.config/`.
|
|
@@ -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 |
|
|
@@ -262,6 +258,9 @@ directory, deeper files override shallower ones, `!pattern` re-includes, and
|
|
|
262
258
|
an ignored directory is pruned rather than walked. In a typical repo this
|
|
263
259
|
excludes build output, virtualenvs, and caches with zero ceremony.
|
|
264
260
|
|
|
261
|
+
A `.gitignore` never hides a path the pattern spells out: `'./debug.log'` lists
|
|
262
|
+
that file even when `*.log` is ignored, while `'./*.log'` does not.
|
|
263
|
+
|
|
265
264
|
A `.gitignore` is in force only when a directory holding `.git` encloses it.
|
|
266
265
|
Outside a repo none applies, at the scan's start, above it or below it: a
|
|
267
266
|
`~/.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.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.98/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,7 +48,16 @@ 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
|
|
54
|
+
uni/1.md
|
|
55
|
+
uni/a.md
|
|
56
|
+
uni/é.md
|
|
57
|
+
uni/É.md
|
|
58
|
+
uni/中.md
|
|
59
|
+
uni/٣.md
|
|
60
|
+
uni/¡.md
|
|
52
61
|
linkdir -> real
|
|
53
62
|
link.md -> top.md
|
|
54
63
|
broken -> nowhere
|
|
@@ -69,13 +78,21 @@ A test runs every row against dirsql as a path-table and, with the leading
|
|
|
69
78
|
| Pattern | Rows | Divergence |
|
|
70
79
|
| --- | --- | --- |
|
|
71
80
|
| `./*.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` | |
|
|
81
|
+
| `./**/*.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` | |
|
|
82
|
+
| `./**` | `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
83
|
| `./?.md` | `1.md`, `2.md`, `3.md`, `4.md`, `a.md`, `b.md`, `c.md` | |
|
|
75
84
|
| `./[ab].md` | `a.md`, `b.md` | |
|
|
76
85
|
| `./[!a].md` | `1.md`, `2.md`, `3.md`, `4.md`, `b.md`, `c.md` | |
|
|
77
86
|
| `./\[a\].md` | `[a].md` | |
|
|
78
87
|
| `./[z.md` | `[z.md` | |
|
|
88
|
+
| `./uni/[[:alpha:]].md` | `uni/a.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md` | |
|
|
89
|
+
| `./uni/[[:alnum:]].md` | `uni/1.md`, `uni/a.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md` | |
|
|
90
|
+
| `./uni/[[:lower:]].md` | `uni/a.md`, `uni/é.md` | |
|
|
91
|
+
| `./uni/[[:upper:]].md` | `uni/É.md` | |
|
|
92
|
+
| `./uni/[[:digit:]].md` | `uni/1.md` | |
|
|
93
|
+
| `./uni/[[:punct:]].md` | `uni/¡.md` | |
|
|
94
|
+
| `./uni/[[:word:]].md` | `uni/1.md`, `uni/a.md`, `uni/É.md`, `uni/é.md`, `uni/٣.md`, `uni/中.md` | |
|
|
95
|
+
| `./uni/[![:alpha:]].md` | `uni/1.md`, `uni/¡.md` | |
|
|
79
96
|
| `./[d/x]ocs/api.md` | none | |
|
|
80
97
|
| `./docs[/]api.md` | none | |
|
|
81
98
|
| `./[!/]*/api.md` | none | |
|
|
@@ -106,28 +123,46 @@ A test runs every row against dirsql as a path-table and, with the leading
|
|
|
106
123
|
| `./docs/*/../api.md` | `docs/nested/../api.md` | |
|
|
107
124
|
| `./docs` | `docs/api.md`, `docs/guide.md` | directory-name |
|
|
108
125
|
| `./docs/` | `docs/api.md`, `docs/guide.md` | directory-name |
|
|
109
|
-
| `./*/` | `docs/api.md`, `docs/guide.md`, `linkdir/r.md`, `real/r.md` | directory-name |
|
|
126
|
+
| `./*/` | `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
127
|
| `./d*` | none | files-only |
|
|
111
128
|
| `./*.log` | none | gitignore |
|
|
129
|
+
| `./ignored.log` | `ignored.log` | |
|
|
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` | |
|
|
112
137
|
| `./**/*.js` | `node_modules/pkg/index.js` | |
|
|
113
138
|
| `./node_modules/*/index.js` | `node_modules/pkg/index.js` | |
|
|
114
139
|
| `./docs/**/*.md` | `docs/api.md`, `docs/guide.md`, `docs/nested/deep.md` | |
|
|
115
140
|
| `./docs/*.md` | `docs/api.md`, `docs/guide.md` | |
|
|
116
|
-
| `$ROOT/docs/*.md` | `$ROOT/docs/api.md`, `$ROOT/docs/guide.md` |
|
|
117
|
-
| `~/docs/*.md` | `$ROOT/docs/api.md`, `$ROOT/docs/guide.md` |
|
|
118
|
-
| `../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 |
|
|
119
147
|
|
|
120
148
|
## Divergences from bash
|
|
121
149
|
|
|
122
150
|
| Tag | Rule | Why |
|
|
123
151
|
| --- | --- | --- |
|
|
124
|
-
| `gitignore` | Inside a git repo, `.gitignore` files hide
|
|
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. |
|
|
125
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. |
|
|
126
154
|
| `files-only` | A pattern that matches a directory but no file returns nothing. | Every row is a file. |
|
|
127
|
-
| `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. |
|
|
128
155
|
|
|
129
156
|
`.git` needs no rule of its own: the dotfile rule hides it.
|
|
130
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
|
+
|
|
131
166
|
## Where the glob is anchored
|
|
132
167
|
|
|
133
168
|
A path-table pattern is relative to the index root and starts with `./`. A config `[[table]] glob`
|
|
@@ -144,6 +179,9 @@ stderr; the exit code is unchanged. Path-tables never warn.
|
|
|
144
179
|
`{a..c}` expand, as do zero-padded
|
|
145
180
|
`{01..10}` and stepped `{1..10..2}` ranges. Groups nest.
|
|
146
181
|
- `\[` is a literal bracket.
|
|
182
|
+
- POSIX classes (`[[:alpha:]]`) match Unicode characters, as bash does in a UTF-8
|
|
183
|
+
locale: `[[:alpha:]]` matches `é` and `中`. `[[:digit:]]`, `[[:xdigit:]]` and
|
|
184
|
+
`[[:ascii:]]` stay ASCII.
|
|
147
185
|
- A dot-named file or directory is listed only where a component spells the
|
|
148
186
|
dot at that depth: `./**/.*` finds `docs/.draft.md` but does not enter
|
|
149
187
|
`.config/`.
|
|
@@ -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 |
|
|
@@ -262,6 +258,9 @@ directory, deeper files override shallower ones, `!pattern` re-includes, and
|
|
|
262
258
|
an ignored directory is pruned rather than walked. In a typical repo this
|
|
263
259
|
excludes build output, virtualenvs, and caches with zero ceremony.
|
|
264
260
|
|
|
261
|
+
A `.gitignore` never hides a path the pattern spells out: `'./debug.log'` lists
|
|
262
|
+
that file even when `*.log` is ignored, while `'./*.log'` does not.
|
|
263
|
+
|
|
265
264
|
A `.gitignore` is in force only when a directory holding `.git` encloses it.
|
|
266
265
|
Outside a repo none applies, at the scan's start, above it or below it: a
|
|
267
266
|
`~/.claude` whose `.gitignore` is `*` still lists its files when `~/.claude`
|
|
@@ -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
|
+
```
|
|
@@ -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.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.98/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. |
|