dirsql 0.4.50__tar.gz → 0.4.51__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.50 → dirsql-0.4.51}/Cargo.lock +2 -2
- {dirsql-0.4.50 → dirsql-0.4.51}/PKG-INFO +1 -1
- {dirsql-0.4.50 → dirsql-0.4.51}/dirsql/__init__.py +2 -2
- {dirsql-0.4.50 → dirsql-0.4.51}/dirsql/_dirsql.pyi +12 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/Cargo.toml +1 -1
- dirsql-0.4.51/packages/python/changelog.d/2026-09-18-export-scan-failure.md +7 -0
- dirsql-0.4.51/packages/python/e2e-attestations/claude-1139-sse-flatten.json +7 -0
- dirsql-0.4.51/packages/python/e2e-attestations/claude-1140-scan-failure-export.json +7 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/Cargo.toml +1 -1
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/src/cli/serialize.rs +36 -46
- {dirsql-0.4.50 → dirsql-0.4.51}/Cargo.toml +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/README.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/dirsql/_async.py +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/dirsql/cli/__init__.py +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/dirsql/cli/discover_plugins/__init__.py +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/dirsql/cli/discover_plugins/discovered_fragments.py +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/dirsql/cli/discover_plugins/discovery_disabled.py +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/dirsql/cli/discover_plugins/fragment_path.py +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/dirsql/cli/discover_plugins/user_passed_config.py +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/dirsql/cli/discover_plugins/with_discovered_plugins.py +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/dirsql/cli/main.py +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/dirsql/cli/resolve_config_extensions.py +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/dirsql/plan_entry_path.py +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/dirsql/py.typed +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/dirsql/read_config.py +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/dirsql/resolve_configs_extension_specs.py +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/dirsql/resolve_extension.py +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/dirsql/resolve_package.py +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/.claude/CLAUDE.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/.vitepress/config.ts +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/.vitepress/theme/index.ts +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/.vitepress/theme/lang.ts +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/AGENTS.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/explanation.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/getting-started.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/howto/columns-from-paths.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/howto/define-tables.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/howto/embed.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/howto/extract-from-contents.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/howto/load-extension.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/howto/parse-files-into-columns.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/howto/persist.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/howto/query-json.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/howto/query-without-config.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/howto/react-to-changes.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/howto/search-by-meaning.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/howto/search-indexes.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/howto/skip-files.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/howto/write-a-plugin.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/index.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/package.json +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/plugins.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/pnpm-lock.yaml +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/pnpm-workspace.yaml +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/reference/cli.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/reference/columns.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/reference/config.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/reference/hooks.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/reference/http-api.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/reference/path-tables.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/docs/reference/sdk.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/CHANGELOG.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/MIGRATIONS.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/README.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-07-13-plugin-discovery.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-07-13-rename-extract-to-on-file.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-07-13-repeatable-config.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-07-20-drop-implicit-files-table.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-07-21-remove-glob-captures.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-07-24-hookless-table-config-error.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-07-24-remove-stat-fact-injection.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-07-29-restore-python-310.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-08-02-release-profile.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-08-02-scan-failures.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-08-03-discovery-ext-resolution.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-08-03-manylinux-dynamic-binary.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-08-03-python-no-ignore.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-08-04-cast-lints.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-08-04-cli-in-process.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-08-20-curtaincall-dev-dependency.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-08-20-declared-table-name.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-09-04-config-paths-from-argv-module.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-09-05-config-extension-loader-split.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-09-05-resolve-config-extensions-split.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-09-05-resolve-extension-split.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-09-09-launcher-config-path-scan.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-09-17-extension-resolution-via-core.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-09-18-flatten-row-event-in-core.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-09-18-programmatic-extension-plan.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/README.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/conftest.py +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/.claude/CLAUDE.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/.vitepress/config.ts +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/.vitepress/theme/index.ts +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/.vitepress/theme/lang.ts +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/AGENTS.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/explanation.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/getting-started.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/howto/columns-from-paths.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/howto/define-tables.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/howto/embed.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/howto/extract-from-contents.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/howto/load-extension.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/howto/parse-files-into-columns.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/howto/persist.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/howto/query-json.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/howto/query-without-config.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/howto/react-to-changes.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/howto/search-by-meaning.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/howto/search-indexes.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/howto/skip-files.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/howto/write-a-plugin.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/index.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/package.json +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/plugins.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/pnpm-lock.yaml +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/pnpm-workspace.yaml +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/reference/cli.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/reference/columns.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/reference/config.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/reference/hooks.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/reference/http-api.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/reference/path-tables.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/docs/reference/sdk.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/cc-keen-knuth-f11gyq.json +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-1056-py-ofpf9.json +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-1066-p1-resolve-extension.json +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-1078-argv-config-paths-core.json +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-1079-p2-resolve-config-extensions.json +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-1080-share-vtab-scaffolding.json +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-1081-indicatif-progress.json +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-1096-watch-moved-dir.json +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-1109-watch-moved-out.json +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-1119-ext-plan.json +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-1120-py-ext.json +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-1122-ext-cleanup.json +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-1130-codec-crates.json +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-1131-flatten-row-event.json +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-819-oneshot-timeout.json +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-827-unquote-doubled-quotes.json +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-epic-953-slice2-reedline.json +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-epic-953-slice3-format.json +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-epic-953-stacked-prs-x59wm3.json +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-github-issue-825-e4mhhp.json +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-issue-951-0eease.json +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-issue-962-0jjrfv.json +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-issue-986-red-test-e7sjrb.json +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-tackle-1034-cachesplit.json +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-tackle-1042-py12.json +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-tackle-956-xzen74.json +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-tackle-957-lrm0z6-worker-calls.json +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-tackle-957-lrm0z6.json +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-tackle-975-n8mc2h.json +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/migrations.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/migrations.d/2026-07-13-rename-extract-to-on-file.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/migrations.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/migrations.d/2026-07-20-drop-implicit-files-table.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/migrations.d/2026-07-21-remove-glob-captures.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/migrations.d/2026-07-24-hookless-table-config-error.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/migrations.d/2026-07-24-remove-stat-fact-injection.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/migrations.d/2026-07-29-restore-python-310.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/migrations.d/2026-08-04-cli-in-process.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/migrations.d/2026-08-20-declared-table-name.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/migrations.d/README.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/src/lib.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/testing-conventions.toml +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/tests/__init__.py +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/tests/conftest.py +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/tests/e2e/__init__.py +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/__init__.py +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/dirsql.toml +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/tests/integration/__init__.py +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/tests/integration/binding/__init__.py +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/python/tests/integration/hermetic/__init__.py +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/CHANGELOG.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/MIGRATIONS.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/README.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/benches/db_bench.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/benches/differ_bench.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/benches/matcher_bench.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/benches/scanner_bench.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/docs/explanation.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/docs/getting-started.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/docs/howto/columns-from-paths.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/docs/howto/define-tables.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/docs/howto/embed.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/docs/howto/extract-from-contents.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/docs/howto/load-extension.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/docs/howto/parse-files-into-columns.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/docs/howto/persist.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/docs/howto/query-json.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/docs/howto/query-without-config.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/docs/howto/react-to-changes.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/docs/howto/search-by-meaning.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/docs/howto/search-indexes.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/docs/howto/skip-files.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/docs/howto/write-a-plugin.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/docs/index.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/docs/plugins.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/docs/reference/cli.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/docs/reference/columns.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/docs/reference/config.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/docs/reference/hooks.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/docs/reference/http-api.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/docs/reference/path-tables.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/docs/reference/sdk.md +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/src/bin/dirsql.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/src/cli/execute.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/src/cli/init.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/src/cli/mod.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/src/cli/repl.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/src/cli/router.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/src/cli/run.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/src/cli/server.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/src/cli/table.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/src/command.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/src/config.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/src/db.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/src/default_config.toml +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/src/differ.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/src/extension_resolution.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/src/functions.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/src/infer.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/src/launcher.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/src/lib.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/src/matcher.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/src/parsed_cache.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/src/parsed_vtab.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/src/path_table.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/src/persist.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/src/progress.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/src/row_event_flat.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/src/scanner.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/src/sql_literal.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/src/vtab.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/src/vtab_scaffold.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/packages/rust/src/watcher.rs +0 -0
- {dirsql-0.4.50 → dirsql-0.4.51}/pyproject.toml +0 -0
|
@@ -552,7 +552,7 @@ checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8"
|
|
|
552
552
|
|
|
553
553
|
[[package]]
|
|
554
554
|
name = "dirsql"
|
|
555
|
-
version = "0.4.
|
|
555
|
+
version = "0.4.51"
|
|
556
556
|
dependencies = [
|
|
557
557
|
"assert_cmd",
|
|
558
558
|
"axum",
|
|
@@ -599,7 +599,7 @@ dependencies = [
|
|
|
599
599
|
|
|
600
600
|
[[package]]
|
|
601
601
|
name = "dirsql-py-ext"
|
|
602
|
-
version = "0.4.
|
|
602
|
+
version = "0.4.51"
|
|
603
603
|
dependencies = [
|
|
604
604
|
"dirsql",
|
|
605
605
|
"pyo3",
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Also available for Rust (crates.io: ``dirsql``) and TypeScript (npm: ``dirsql``).
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
|
-
from dirsql._dirsql import Table, RowEvent, __version__
|
|
6
|
+
from dirsql._dirsql import Table, RowEvent, ScanFailure, __version__
|
|
7
7
|
from dirsql._async import DirSQL
|
|
8
8
|
|
|
9
|
-
__all__ = ["DirSQL", "Table", "RowEvent", "__version__"]
|
|
9
|
+
__all__ = ["DirSQL", "Table", "RowEvent", "ScanFailure", "__version__"]
|
|
@@ -33,6 +33,7 @@ class Table:
|
|
|
33
33
|
name: str
|
|
34
34
|
ddl: str
|
|
35
35
|
glob: str
|
|
36
|
+
on_file: Callable[[str], list[Row]]
|
|
36
37
|
strict: bool
|
|
37
38
|
|
|
38
39
|
def __init__(
|
|
@@ -58,6 +59,15 @@ class RowEvent:
|
|
|
58
59
|
@override
|
|
59
60
|
def __repr__(self) -> str: ...
|
|
60
61
|
|
|
62
|
+
class ScanFailure:
|
|
63
|
+
"""One file the initial scan could not index, with the hook's own error."""
|
|
64
|
+
|
|
65
|
+
path: str
|
|
66
|
+
message: str
|
|
67
|
+
|
|
68
|
+
@override
|
|
69
|
+
def __repr__(self) -> str: ...
|
|
70
|
+
|
|
61
71
|
class DirSQL:
|
|
62
72
|
"""Synchronous binding class. ``dirsql._async.DirSQL`` wraps it."""
|
|
63
73
|
|
|
@@ -75,6 +85,7 @@ class DirSQL:
|
|
|
75
85
|
suppress_config_extensions: bool = False,
|
|
76
86
|
) -> None: ...
|
|
77
87
|
def query(self, sql: str) -> list[Row]: ...
|
|
88
|
+
def scan_failures(self) -> list[ScanFailure]: ...
|
|
78
89
|
def _start_watcher(self) -> None: ...
|
|
79
90
|
def _poll_events(self, timeout_ms: int) -> list[RowEvent]: ...
|
|
80
91
|
|
|
@@ -92,6 +103,7 @@ class ExtensionPlanEntry:
|
|
|
92
103
|
@override
|
|
93
104
|
def __repr__(self) -> str: ...
|
|
94
105
|
|
|
106
|
+
def run_cli(argv: list[str]) -> int: ...
|
|
95
107
|
def config_paths_from_argv(argv: list[str]) -> list[str]: ...
|
|
96
108
|
def plan_config_extensions(
|
|
97
109
|
configs: list[tuple[str, str | None]],
|
|
@@ -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.51"
|
|
8
8
|
# abi3 note: the `abi3-py310` pyo3 feature (below) builds ONE stable-ABI
|
|
9
9
|
# `cp310-abi3` wheel per platform that loads on every CPython >= 3.10
|
|
10
10
|
# (matching `pyproject.toml`'s `requires-python = ">=3.10"`), instead of
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
**Added**
|
|
2
|
+
|
|
3
|
+
`ScanFailure` is now importable from the package root (`from dirsql import
|
|
4
|
+
ScanFailure`), so the objects `await db.scan_failures()` returns can be
|
|
5
|
+
annotated without reaching into `dirsql._dirsql`. The bundled type stub now
|
|
6
|
+
also declares `ScanFailure`, `DirSQL.scan_failures`, `run_cli`, and
|
|
7
|
+
`Table.on_file`, which it had been missing. No runtime behavior changes.
|
|
@@ -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.51"
|
|
10
10
|
edition.workspace = true
|
|
11
11
|
# Literal `license` (not `license.workspace = true`) because
|
|
12
12
|
# putitoutthere's preflight check reads `[package].license` directly
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
//! `Row` / `RowEvent` → JSON serialization for the HTTP API.
|
|
2
2
|
|
|
3
|
-
use serde_json::{Map, Value
|
|
3
|
+
use serde_json::{Map, Value};
|
|
4
4
|
|
|
5
5
|
use crate::Row;
|
|
6
6
|
use crate::db::Value as CellValue;
|
|
7
7
|
use crate::differ::RowEvent;
|
|
8
|
+
use crate::row_event_flat::flatten_row_event;
|
|
8
9
|
|
|
9
10
|
pub(super) fn rows_to_json(rows: &[Row]) -> Vec<Value> {
|
|
10
11
|
rows.iter().map(row_to_json).collect()
|
|
@@ -35,52 +36,27 @@ pub(super) fn event_to_json(event: &RowEvent) -> String {
|
|
|
35
36
|
}
|
|
36
37
|
|
|
37
38
|
fn event_to_value(event: &RowEvent) -> Value {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
"
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
"table": table,
|
|
58
|
-
"file_path": file_path,
|
|
59
|
-
"row": row_to_json(new_row),
|
|
60
|
-
"old_row": row_to_json(old_row),
|
|
61
|
-
}),
|
|
62
|
-
RowEvent::Delete {
|
|
63
|
-
table,
|
|
64
|
-
row,
|
|
65
|
-
file_path,
|
|
66
|
-
} => json!({
|
|
67
|
-
"action": "delete",
|
|
68
|
-
"table": table,
|
|
69
|
-
"file_path": file_path,
|
|
70
|
-
"row": row_to_json(row),
|
|
71
|
-
"old_row": Value::Null,
|
|
72
|
-
}),
|
|
73
|
-
RowEvent::Error {
|
|
74
|
-
table,
|
|
75
|
-
file_path,
|
|
76
|
-
error,
|
|
77
|
-
} => json!({
|
|
78
|
-
"action": "error",
|
|
79
|
-
"table": table,
|
|
80
|
-
"file_path": file_path.to_string_lossy(),
|
|
81
|
-
"error": error,
|
|
82
|
-
}),
|
|
39
|
+
let flat = flatten_row_event(event);
|
|
40
|
+
let mut map = Map::new();
|
|
41
|
+
map.insert("action".into(), Value::from(flat.action));
|
|
42
|
+
map.insert(
|
|
43
|
+
"table".into(),
|
|
44
|
+
flat.table.map_or(Value::Null, Value::String),
|
|
45
|
+
);
|
|
46
|
+
map.insert("file_path".into(), Value::String(flat.file_path));
|
|
47
|
+
match flat.error {
|
|
48
|
+
Some(error) => {
|
|
49
|
+
map.insert("error".into(), Value::String(error));
|
|
50
|
+
}
|
|
51
|
+
None => {
|
|
52
|
+
map.insert("row".into(), flat.row.map_or(Value::Null, row_to_json));
|
|
53
|
+
map.insert(
|
|
54
|
+
"old_row".into(),
|
|
55
|
+
flat.old_row.map_or(Value::Null, row_to_json),
|
|
56
|
+
);
|
|
57
|
+
}
|
|
83
58
|
}
|
|
59
|
+
Value::Object(map)
|
|
84
60
|
}
|
|
85
61
|
|
|
86
62
|
#[cfg(test)]
|
|
@@ -116,6 +92,7 @@ mod tests {
|
|
|
116
92
|
Some("posts/a.json"),
|
|
117
93
|
);
|
|
118
94
|
assert!(parsed.get("old_row").unwrap().is_null());
|
|
95
|
+
assert!(parsed.get("error").is_none());
|
|
119
96
|
assert_eq!(event_to_json(&event), parsed.to_string());
|
|
120
97
|
}
|
|
121
98
|
|
|
@@ -157,6 +134,19 @@ mod tests {
|
|
|
157
134
|
);
|
|
158
135
|
}
|
|
159
136
|
|
|
137
|
+
#[test]
|
|
138
|
+
fn error_event_omits_the_row_keys() {
|
|
139
|
+
let event = RowEvent::Error {
|
|
140
|
+
table: None,
|
|
141
|
+
file_path: PathBuf::from("bad.json"),
|
|
142
|
+
error: "parse failed".into(),
|
|
143
|
+
};
|
|
144
|
+
let parsed = event_to_value(&event);
|
|
145
|
+
assert!(parsed.get("table").unwrap().is_null());
|
|
146
|
+
assert!(parsed.get("row").is_none());
|
|
147
|
+
assert!(parsed.get("old_row").is_none());
|
|
148
|
+
}
|
|
149
|
+
|
|
160
150
|
#[test]
|
|
161
151
|
fn delete_event_emits_expected_shape() {
|
|
162
152
|
let mut row: Row = HashMap::new();
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-07-13-rename-extract-to-on-file.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-07-20-drop-implicit-files-table.md
RENAMED
|
File without changes
|
{dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-07-21-remove-glob-captures.md
RENAMED
|
File without changes
|
|
File without changes
|
{dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-07-24-remove-stat-fact-injection.md
RENAMED
|
File without changes
|
{dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-07-29-restore-python-310.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-08-03-discovery-ext-resolution.md
RENAMED
|
File without changes
|
{dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-08-03-manylinux-dynamic-binary.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-08-20-curtaincall-dev-dependency.md
RENAMED
|
File without changes
|
{dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-08-20-declared-table-name.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-09-05-resolve-extension-split.md
RENAMED
|
File without changes
|
{dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-09-09-launcher-config-path-scan.md
RENAMED
|
File without changes
|
|
File without changes
|
{dirsql-0.4.50 → dirsql-0.4.51}/packages/python/changelog.d/2026-09-18-flatten-row-event-in-core.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-1081-indicatif-progress.json
RENAMED
|
File without changes
|
{dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-1096-watch-moved-dir.json
RENAMED
|
File without changes
|
{dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-1109-watch-moved-out.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-1122-ext-cleanup.json
RENAMED
|
File without changes
|
{dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-1130-codec-crates.json
RENAMED
|
File without changes
|
{dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-1131-flatten-row-event.json
RENAMED
|
File without changes
|
{dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-819-oneshot-timeout.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-epic-953-slice3-format.json
RENAMED
|
File without changes
|
|
File without changes
|
{dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-github-issue-825-e4mhhp.json
RENAMED
|
File without changes
|
{dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-issue-951-0eease.json
RENAMED
|
File without changes
|
{dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-issue-962-0jjrfv.json
RENAMED
|
File without changes
|
|
File without changes
|
{dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-tackle-1034-cachesplit.json
RENAMED
|
File without changes
|
{dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-tackle-1042-py12.json
RENAMED
|
File without changes
|
{dirsql-0.4.50 → dirsql-0.4.51}/packages/python/e2e-attestations/claude-tackle-956-xzen74.json
RENAMED
|
File without changes
|
|
File without changes
|