dirsql 0.4.52__tar.gz → 0.4.54__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.52 → dirsql-0.4.54}/Cargo.lock +2 -2
- {dirsql-0.4.52 → dirsql-0.4.54}/PKG-INFO +1 -1
- {dirsql-0.4.52 → dirsql-0.4.54}/dirsql/cli/main.py +15 -21
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/Cargo.toml +1 -1
- dirsql-0.4.54/packages/python/changelog.d/2026-09-20-sigint-ends-a-run-in-progress.md +1 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/README.md +1 -1
- dirsql-0.4.54/packages/python/e2e-attestations/claude-1148-clippy-all-targets.json +7 -0
- dirsql-0.4.54/packages/python/e2e-attestations/claude-1164-sigint-fatal.json +7 -0
- dirsql-0.4.54/packages/python/migrations.d/2026-09-20-sigint-ends-a-run-in-progress.md +35 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/migrations.d/README.md +2 -2
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/Cargo.toml +1 -1
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/src/lib.rs +3 -5
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/src/vtab_scaffold.rs +1 -3
- {dirsql-0.4.52 → dirsql-0.4.54}/Cargo.toml +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/README.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/dirsql/__init__.py +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/dirsql/_async.py +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/dirsql/_dirsql.pyi +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/dirsql/cli/__init__.py +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/dirsql/cli/discover_plugins/__init__.py +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/dirsql/cli/discover_plugins/discovered_fragments.py +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/dirsql/cli/discover_plugins/discovery_disabled.py +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/dirsql/cli/discover_plugins/fragment_path.py +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/dirsql/cli/discover_plugins/user_passed_config.py +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/dirsql/cli/discover_plugins/with_discovered_plugins.py +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/dirsql/cli/resolve_config_extensions.py +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/dirsql/plan_entry_path.py +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/dirsql/py.typed +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/dirsql/read_config.py +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/dirsql/resolve_configs_extension_specs.py +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/dirsql/resolve_extension.py +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/dirsql/resolve_package.py +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/.claude/CLAUDE.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/.vitepress/config.ts +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/.vitepress/theme/index.ts +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/.vitepress/theme/lang.ts +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/AGENTS.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/explanation.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/getting-started.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/howto/columns-from-paths.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/howto/define-tables.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/howto/embed.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/howto/extract-from-contents.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/howto/load-extension.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/howto/parse-files-into-columns.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/howto/persist.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/howto/query-json.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/howto/query-without-config.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/howto/react-to-changes.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/howto/search-by-meaning.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/howto/search-indexes.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/howto/skip-files.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/howto/write-a-plugin.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/index.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/package.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/plugins.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/pnpm-lock.yaml +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/pnpm-workspace.yaml +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/reference/cli.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/reference/columns.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/reference/config.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/reference/hooks.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/reference/http-api.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/reference/path-tables.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/docs/reference/sdk.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/CHANGELOG.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/MIGRATIONS.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/README.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-07-13-plugin-discovery.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-07-13-rename-extract-to-on-file.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-07-13-repeatable-config.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-07-20-drop-implicit-files-table.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-07-21-remove-glob-captures.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-07-24-hookless-table-config-error.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-07-24-remove-stat-fact-injection.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-07-29-restore-python-310.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-08-02-release-profile.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-08-02-scan-failures.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-08-03-discovery-ext-resolution.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-08-03-manylinux-dynamic-binary.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-08-03-python-no-ignore.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-08-04-cast-lints.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-08-04-cli-in-process.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-08-20-curtaincall-dev-dependency.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-08-20-declared-table-name.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-09-04-config-paths-from-argv-module.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-09-05-config-extension-loader-split.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-09-05-resolve-config-extensions-split.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-09-05-resolve-extension-split.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-09-09-launcher-config-path-scan.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-09-17-extension-resolution-via-core.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-09-18-export-scan-failure.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-09-18-flatten-row-event-in-core.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-09-18-programmatic-extension-plan.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/conftest.py +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/.claude/CLAUDE.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/.vitepress/config.ts +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/.vitepress/theme/index.ts +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/.vitepress/theme/lang.ts +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/AGENTS.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/explanation.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/getting-started.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/howto/columns-from-paths.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/howto/define-tables.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/howto/embed.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/howto/extract-from-contents.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/howto/load-extension.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/howto/parse-files-into-columns.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/howto/persist.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/howto/query-json.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/howto/query-without-config.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/howto/react-to-changes.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/howto/search-by-meaning.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/howto/search-indexes.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/howto/skip-files.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/howto/write-a-plugin.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/index.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/package.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/plugins.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/pnpm-lock.yaml +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/pnpm-workspace.yaml +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/reference/cli.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/reference/columns.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/reference/config.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/reference/hooks.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/reference/http-api.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/reference/path-tables.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/docs/reference/sdk.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/cc-keen-knuth-f11gyq.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-1056-py-ofpf9.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-1066-p1-resolve-extension.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-1078-argv-config-paths-core.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-1079-p2-resolve-config-extensions.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-1080-share-vtab-scaffolding.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-1081-indicatif-progress.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-1096-watch-moved-dir.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-1109-watch-moved-out.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-1119-ext-plan.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-1120-py-ext.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-1122-ext-cleanup.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-1130-codec-crates.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-1131-flatten-row-event.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-1139-sse-flatten.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-1140-scan-failure-export.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-819-oneshot-timeout.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-827-unquote-doubled-quotes.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-epic-953-slice2-reedline.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-epic-953-slice3-format.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-epic-953-stacked-prs-x59wm3.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-github-issue-825-e4mhhp.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-issue-951-0eease.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-issue-962-0jjrfv.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-issue-986-red-test-e7sjrb.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-tackle-1034-cachesplit.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-tackle-1042-py12.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-tackle-956-xzen74.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-tackle-957-lrm0z6-worker-calls.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-tackle-957-lrm0z6.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-tackle-975-n8mc2h.json +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/migrations.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/migrations.d/2026-07-13-rename-extract-to-on-file.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/migrations.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/migrations.d/2026-07-20-drop-implicit-files-table.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/migrations.d/2026-07-21-remove-glob-captures.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/migrations.d/2026-07-24-hookless-table-config-error.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/migrations.d/2026-07-24-remove-stat-fact-injection.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/migrations.d/2026-07-29-restore-python-310.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/migrations.d/2026-08-04-cli-in-process.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/migrations.d/2026-08-20-declared-table-name.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/src/lib.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/testing-conventions.toml +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/tests/__init__.py +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/tests/conftest.py +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/tests/e2e/__init__.py +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/__init__.py +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/dirsql.toml +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/tests/integration/__init__.py +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/tests/integration/binding/__init__.py +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/python/tests/integration/hermetic/__init__.py +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/CHANGELOG.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/MIGRATIONS.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/README.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/benches/db_bench.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/benches/differ_bench.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/benches/matcher_bench.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/benches/scanner_bench.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/docs/explanation.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/docs/getting-started.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/docs/howto/columns-from-paths.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/docs/howto/define-tables.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/docs/howto/embed.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/docs/howto/extract-from-contents.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/docs/howto/load-extension.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/docs/howto/parse-files-into-columns.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/docs/howto/persist.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/docs/howto/query-json.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/docs/howto/query-without-config.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/docs/howto/react-to-changes.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/docs/howto/search-by-meaning.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/docs/howto/search-indexes.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/docs/howto/skip-files.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/docs/howto/write-a-plugin.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/docs/index.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/docs/plugins.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/docs/reference/cli.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/docs/reference/columns.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/docs/reference/config.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/docs/reference/hooks.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/docs/reference/http-api.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/docs/reference/path-tables.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/docs/reference/sdk.md +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/src/bin/dirsql.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/src/cli/execute.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/src/cli/init.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/src/cli/mod.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/src/cli/repl.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/src/cli/router.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/src/cli/run.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/src/cli/serialize.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/src/cli/server.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/src/cli/table.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/src/command.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/src/config.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/src/db.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/src/default_config.toml +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/src/differ.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/src/extension_resolution.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/src/functions.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/src/infer.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/src/launcher.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/src/matcher.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/src/parsed_cache.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/src/parsed_vtab.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/src/path_table.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/src/persist.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/src/progress.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/src/row_event_flat.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/src/scanner.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/src/sql_literal.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/src/vtab.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/packages/rust/src/watcher.rs +0 -0
- {dirsql-0.4.52 → dirsql-0.4.54}/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.54"
|
|
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.54"
|
|
603
603
|
dependencies = [
|
|
604
604
|
"dirsql",
|
|
605
605
|
"pyo3",
|
|
@@ -18,27 +18,21 @@ from .discover_plugins.with_discovered_plugins import with_discovered_plugins
|
|
|
18
18
|
from .resolve_config_extensions import with_resolved_extensions
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
def
|
|
22
|
-
"""
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
`run_cli` is only reached with this installed, and it returns promptly for
|
|
35
|
-
every non-server command.
|
|
21
|
+
def keep_sigint_fatal(handler=signal.signal):
|
|
22
|
+
"""Give SIGINT its default disposition for the core's run, returning the prior one.
|
|
23
|
+
|
|
24
|
+
No Python-level handler can end a run in progress: `run_cli` detaches the
|
|
25
|
+
GIL for its whole duration, so nothing reaches the eval loop until the
|
|
26
|
+
core has already finished — CPython's `default_int_handler` included. Only
|
|
27
|
+
a disposition the kernel acts on by itself works, which is `SIG_DFL`, and
|
|
28
|
+
it is what the standalone binary runs with.
|
|
29
|
+
|
|
30
|
+
`dirsql server` keeps its exit code: signal-hook (which tokio uses)
|
|
31
|
+
replaces the disposition when the server registers its handlers, and does
|
|
32
|
+
not re-raise `SIG_DFL` afterwards, so the core's graceful shutdown is the
|
|
33
|
+
only thing that acts and its 0 survives.
|
|
36
34
|
"""
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
def with_core_owned_signals(handler=signal.signal):
|
|
40
|
-
"""Install `_absorb_interrupt` for SIGINT and return the prior handler."""
|
|
41
|
-
return handler(signal.SIGINT, _absorb_interrupt)
|
|
35
|
+
return handler(signal.SIGINT, signal.SIG_DFL)
|
|
42
36
|
|
|
43
37
|
|
|
44
38
|
def main(argv: list[str] | None = None) -> int:
|
|
@@ -56,7 +50,7 @@ def main(argv: list[str] | None = None) -> int:
|
|
|
56
50
|
print(f"dirsql: {exc}", file=sys.stderr)
|
|
57
51
|
return 1
|
|
58
52
|
|
|
59
|
-
previous =
|
|
53
|
+
previous = keep_sigint_fatal()
|
|
60
54
|
try:
|
|
61
55
|
return run_in_process(argv=argv, module="dirsql._dirsql")
|
|
62
56
|
except Exception as exc:
|
|
@@ -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.54"
|
|
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 @@
|
|
|
1
|
+
**Fixed** Ctrl-C now ends a `dirsql` run that is still in progress. The launcher installed an empty SIGINT handler for the whole of the core's run, and because the core detaches the GIL for that call no Python handler can run until the work has already finished — so a signal sent during a long directory scan was swallowed and the process was SIGTERM-only. SIGINT is left at its default disposition instead, which the kernel acts on immediately, matching the standalone binary. `dirsql server`'s graceful shutdown still exits 0.
|
|
@@ -14,4 +14,4 @@ Each PR that touches this package's public-facing source adds one file here:
|
|
|
14
14
|
Fragments are **permanent and append-only** — nothing is ever assembled back
|
|
15
15
|
into a single `CHANGELOG.md`, and the release↔entry mapping comes from
|
|
16
16
|
`git log --tags`. This README is not a fragment and never satisfies the
|
|
17
|
-
changelog gate. See
|
|
17
|
+
changelog gate. See `agents/reference/changelog-migrations.md`.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
### SIGINT ends a run in progress through the Python launcher
|
|
2
|
+
|
|
3
|
+
**Summary**
|
|
4
|
+
|
|
5
|
+
The `dirsql` console script installed an empty SIGINT handler for the duration of the core's run. A signal arriving during a long directory scan was therefore discarded, and the process could only be ended with SIGTERM. SIGINT is now left at its default disposition for that window, so the kernel terminates the process immediately. No API changes; the observable difference is that a signal that used to do nothing now ends the process with the usual 128+SIGINT status.
|
|
6
|
+
|
|
7
|
+
**Required changes**
|
|
8
|
+
|
|
9
|
+
| Before | After |
|
|
10
|
+
| --- | --- |
|
|
11
|
+
| `kill -INT <pid>` during a query: ignored; the run continues to completion | `kill -INT <pid>` during a query: the process dies of SIGINT (shell reports `130`) |
|
|
12
|
+
| Ctrl-C while the REPL is executing a statement: ignored | Ctrl-C while the REPL is executing a statement: the session ends |
|
|
13
|
+
|
|
14
|
+
A script that sent SIGINT to a `dirsql` process and relied on it being ignored must stop sending it. A script that escalated to SIGTERM after an ignored SIGINT can drop the escalation.
|
|
15
|
+
|
|
16
|
+
`dirsql server` is unchanged: its graceful shutdown still exits `0` on SIGINT and SIGTERM. Ctrl-C at an idle REPL prompt is unchanged too — reedline reads it as a key event, not a signal.
|
|
17
|
+
|
|
18
|
+
**Deprecations removed**
|
|
19
|
+
|
|
20
|
+
_None._
|
|
21
|
+
|
|
22
|
+
**Behavior changes without code changes**
|
|
23
|
+
|
|
24
|
+
The exit status of an interrupted run changes from "no exit" to death by SIGINT. This aligns the Python launcher with the standalone `dirsql` binary, which has always behaved this way.
|
|
25
|
+
|
|
26
|
+
**Verification**
|
|
27
|
+
|
|
28
|
+
Against a directory large enough to take a few seconds to scan:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
dirsql "SELECT count(*) FROM './'" # press Ctrl-C while it runs
|
|
32
|
+
echo $?
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Expected: the process ends promptly and the shell reports `130`. Before this change it kept running and the SIGINT was discarded. Run it in the foreground: a non-interactive shell sets SIGINT to `SIG_IGN` for `&` background jobs, which hides the difference.
|
|
@@ -15,5 +15,5 @@ the API adds one file here:
|
|
|
15
15
|
`_None._` where a subsection does not apply.
|
|
16
16
|
|
|
17
17
|
Fragments are **permanent and append-only** — nothing is assembled back into a
|
|
18
|
-
single `MIGRATIONS.md`. This README is not a fragment. See
|
|
19
|
-
|
|
18
|
+
single `MIGRATIONS.md`. This README is not a fragment. See
|
|
19
|
+
`agents/reference/changelog-migrations.md`.
|
|
@@ -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.54"
|
|
10
10
|
edition.workspace = true
|
|
11
11
|
# Literal `license` (not `license.workspace = true`) because
|
|
12
12
|
# putitoutthere's preflight check reads `[package].license` directly
|
|
@@ -2259,7 +2259,7 @@ mod readonly_tests {
|
|
|
2259
2259
|
);
|
|
2260
2260
|
// `watch`, `config`, `matcher` wrap a typed StdError to preserve a
|
|
2261
2261
|
// `source()` chain.
|
|
2262
|
-
let io = || std::io::Error::
|
|
2262
|
+
let io = || std::io::Error::other("x");
|
|
2263
2263
|
let watch_err = DirSqlError::watch(io());
|
|
2264
2264
|
assert_eq!(watch_err.to_string(), "watcher error: x");
|
|
2265
2265
|
assert!(StdError::source(&watch_err).is_some());
|
|
@@ -4273,8 +4273,7 @@ mod internal_tests {
|
|
|
4273
4273
|
&mut sources,
|
|
4274
4274
|
&mut out,
|
|
4275
4275
|
)
|
|
4276
|
-
.
|
|
4277
|
-
.expect("duplicate function name must error");
|
|
4276
|
+
.expect_err("duplicate function name must error");
|
|
4278
4277
|
let msg = err.to_string();
|
|
4279
4278
|
assert!(msg.contains("'dup'"), "got: {msg}");
|
|
4280
4279
|
assert!(msg.contains("/a/frag.toml"), "got: {msg}");
|
|
@@ -4293,8 +4292,7 @@ mod internal_tests {
|
|
|
4293
4292
|
&mut sources,
|
|
4294
4293
|
&mut out,
|
|
4295
4294
|
)
|
|
4296
|
-
.
|
|
4297
|
-
.expect("intra-config duplicate must error");
|
|
4295
|
+
.expect_err("intra-config duplicate must error");
|
|
4298
4296
|
assert!(err.to_string().contains("'dup'"), "got: {err}");
|
|
4299
4297
|
}
|
|
4300
4298
|
|
|
@@ -289,9 +289,7 @@ mod tests {
|
|
|
289
289
|
|
|
290
290
|
#[test]
|
|
291
291
|
fn parse_gitignore_rejects_an_unknown_switch() {
|
|
292
|
-
let err = parse_gitignore("sometimes")
|
|
293
|
-
.err()
|
|
294
|
-
.expect("an unknown switch must be rejected");
|
|
292
|
+
let err = parse_gitignore("sometimes").expect_err("an unknown switch must be rejected");
|
|
295
293
|
assert!(matches!(err, Error::ModuleError(_)), "got {err:?}");
|
|
296
294
|
assert!(err.to_string().contains("no-gitignore"), "got: {err}");
|
|
297
295
|
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dirsql-0.4.52 → dirsql-0.4.54}/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.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-07-20-drop-implicit-files-table.md
RENAMED
|
File without changes
|
{dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-07-21-remove-glob-captures.md
RENAMED
|
File without changes
|
|
File without changes
|
{dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-07-24-remove-stat-fact-injection.md
RENAMED
|
File without changes
|
{dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-07-29-restore-python-310.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-08-03-discovery-ext-resolution.md
RENAMED
|
File without changes
|
{dirsql-0.4.52 → dirsql-0.4.54}/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.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-08-20-curtaincall-dev-dependency.md
RENAMED
|
File without changes
|
{dirsql-0.4.52 → dirsql-0.4.54}/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.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-09-05-resolve-extension-split.md
RENAMED
|
File without changes
|
{dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-09-09-launcher-config-path-scan.md
RENAMED
|
File without changes
|
|
File without changes
|
{dirsql-0.4.52 → dirsql-0.4.54}/packages/python/changelog.d/2026-09-18-export-scan-failure.md
RENAMED
|
File without changes
|
{dirsql-0.4.52 → dirsql-0.4.54}/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
|
{dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-1081-indicatif-progress.json
RENAMED
|
File without changes
|
{dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-1096-watch-moved-dir.json
RENAMED
|
File without changes
|
{dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-1109-watch-moved-out.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-1122-ext-cleanup.json
RENAMED
|
File without changes
|
{dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-1130-codec-crates.json
RENAMED
|
File without changes
|
{dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-1131-flatten-row-event.json
RENAMED
|
File without changes
|
{dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-1139-sse-flatten.json
RENAMED
|
File without changes
|
|
File without changes
|
{dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-819-oneshot-timeout.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-epic-953-slice3-format.json
RENAMED
|
File without changes
|
|
File without changes
|
{dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-github-issue-825-e4mhhp.json
RENAMED
|
File without changes
|
{dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-issue-951-0eease.json
RENAMED
|
File without changes
|
{dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-issue-962-0jjrfv.json
RENAMED
|
File without changes
|
|
File without changes
|
{dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-tackle-1034-cachesplit.json
RENAMED
|
File without changes
|
{dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-tackle-1042-py12.json
RENAMED
|
File without changes
|
{dirsql-0.4.52 → dirsql-0.4.54}/packages/python/e2e-attestations/claude-tackle-956-xzen74.json
RENAMED
|
File without changes
|
|
File without changes
|