dirsql 0.4.12__tar.gz → 0.4.14__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.12 → dirsql-0.4.14}/Cargo.lock +1 -1
- {dirsql-0.4.12 → dirsql-0.4.14}/Cargo.toml +0 -15
- {dirsql-0.4.12 → dirsql-0.4.14}/PKG-INFO +1 -1
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/Cargo.toml +15 -10
- dirsql-0.4.14/packages/python/changelog.d/2026-08-04-cast-lints.md +1 -0
- dirsql-0.4.14/packages/python/e2e-attestations/chore-766-narrow-pedantic.json +7 -0
- dirsql-0.4.14/packages/python/e2e-attestations/claude-772-extension-without-config.json +7 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/Cargo.toml +13 -5
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/benches/db_bench.rs +6 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/benches/differ_bench.rs +6 -0
- dirsql-0.4.14/packages/rust/changelog.d/2026-08-04-cast-lints.md +1 -0
- dirsql-0.4.14/packages/rust/changelog.d/2026-08-04-configless-extension.md +1 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/src/bin/dirsql.rs +34 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/src/config.rs +3 -1
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/src/db.rs +7 -2
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/src/lib.rs +2 -2
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/src/persist.rs +5 -1
- dirsql-0.4.12/packages/python/e2e-attestations/claude-763-forbid-unsafe.json +0 -7
- dirsql-0.4.12/packages/python/e2e-attestations/feat-745-python-no-ignore.json +0 -7
- dirsql-0.4.12/packages/python/e2e-attestations/fix-754-discovery-ext-resolution.json +0 -7
- {dirsql-0.4.12 → dirsql-0.4.14}/README.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/dirsql/__init__.py +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/dirsql/_async.py +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/dirsql/_dirsql.pyi +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/dirsql/cli/__init__.py +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/dirsql/cli/binary_path.py +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/dirsql/cli/discover_plugins/__init__.py +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/dirsql/cli/discover_plugins/discovered_fragments.py +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/dirsql/cli/discover_plugins/discovery_disabled.py +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/dirsql/cli/discover_plugins/fragment_path.py +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/dirsql/cli/discover_plugins/user_passed_config.py +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/dirsql/cli/discover_plugins/with_discovered_plugins.py +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/dirsql/cli/is_windows.py +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/dirsql/cli/main.py +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/dirsql/cli/resolve_config_extensions.py +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/dirsql/py.typed +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/dirsql/resolve_config_extensions.py +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/dirsql/resolve_extension.py +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/docs/.claude/CLAUDE.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/docs/.vitepress/config.ts +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/docs/.vitepress/theme/index.ts +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/docs/.vitepress/theme/lang.ts +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/docs/AGENTS.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/docs/explanation.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/docs/getting-started.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/docs/howto/columns-from-paths.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/docs/howto/define-tables.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/docs/howto/embed.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/docs/howto/extract-from-contents.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/docs/howto/load-extension.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/docs/howto/parse-files-into-columns.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/docs/howto/persist.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/docs/howto/query-without-config.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/docs/howto/react-to-changes.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/docs/howto/search-by-meaning.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/docs/howto/skip-files.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/docs/howto/write-a-plugin.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/docs/index.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/docs/migrations.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/docs/package.json +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/docs/plugins.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/docs/pnpm-lock.yaml +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/docs/pnpm-workspace.yaml +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/docs/reference/cli.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/docs/reference/columns.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/docs/reference/config.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/docs/reference/hooks.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/docs/reference/http-api.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/docs/reference/path-tables.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/docs/reference/sdk.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/CHANGELOG.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/MIGRATIONS.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/README.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/changelog.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/changelog.d/2026-07-13-plugin-discovery.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/changelog.d/2026-07-13-rename-extract-to-on-file.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/changelog.d/2026-07-13-repeatable-config.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/changelog.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/changelog.d/2026-07-20-drop-implicit-files-table.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/changelog.d/2026-07-21-remove-glob-captures.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/changelog.d/2026-07-24-hookless-table-config-error.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/changelog.d/2026-07-24-remove-stat-fact-injection.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/changelog.d/2026-07-29-restore-python-310.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/changelog.d/2026-08-02-release-profile.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/changelog.d/2026-08-02-scan-failures.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/changelog.d/2026-08-03-discovery-ext-resolution.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/changelog.d/2026-08-03-manylinux-dynamic-binary.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/changelog.d/2026-08-03-python-no-ignore.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/changelog.d/README.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/conftest.py +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/docs/.claude/CLAUDE.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/docs/.vitepress/config.ts +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/docs/.vitepress/theme/index.ts +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/docs/.vitepress/theme/lang.ts +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/docs/AGENTS.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/docs/explanation.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/docs/getting-started.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/docs/howto/columns-from-paths.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/docs/howto/define-tables.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/docs/howto/embed.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/docs/howto/extract-from-contents.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/docs/howto/load-extension.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/docs/howto/parse-files-into-columns.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/docs/howto/persist.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/docs/howto/query-without-config.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/docs/howto/react-to-changes.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/docs/howto/search-by-meaning.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/docs/howto/skip-files.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/docs/howto/write-a-plugin.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/docs/index.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/docs/migrations.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/docs/package.json +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/docs/plugins.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/docs/pnpm-lock.yaml +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/docs/pnpm-workspace.yaml +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/docs/reference/cli.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/docs/reference/columns.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/docs/reference/config.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/docs/reference/hooks.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/docs/reference/http-api.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/docs/reference/path-tables.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/docs/reference/sdk.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/migrations.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/migrations.d/2026-07-13-rename-extract-to-on-file.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/migrations.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/migrations.d/2026-07-20-drop-implicit-files-table.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/migrations.d/2026-07-21-remove-glob-captures.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/migrations.d/2026-07-24-hookless-table-config-error.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/migrations.d/2026-07-24-remove-stat-fact-injection.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/migrations.d/2026-07-29-restore-python-310.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/migrations.d/README.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/src/lib.rs +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/tests/__init__.py +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/tests/conftest.py +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/tests/e2e/__init__.py +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/__init__.py +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/dirsql.toml +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/tests/integration/__init__.py +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/tests/integration/binding/__init__.py +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/python/tests/integration/hermetic/__init__.py +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/CHANGELOG.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/MIGRATIONS.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/README.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/benches/matcher_bench.rs +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/benches/scanner_bench.rs +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/changelog.d/2026-07-13-batch-ingest-transaction.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/changelog.d/2026-07-13-chained-pre-post-query-hooks.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/changelog.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/changelog.d/2026-07-13-fan-out-file-table-matching.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/changelog.d/2026-07-13-persist-wal.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/changelog.d/2026-07-13-rename-extract-to-on-file.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/changelog.d/2026-07-13-repeatable-builder-config.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/changelog.d/2026-07-13-repeatable-cli-config.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/changelog.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/changelog.d/2026-07-13-subcommand-local-config-flags.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/changelog.d/2026-07-19-path-table-query-fallback.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/changelog.d/2026-07-19-path-table-vtab.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/changelog.d/2026-07-20-drop-implicit-files-table.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/changelog.d/2026-07-20-path-table-glob-semantics.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/changelog.d/2026-07-20-schema-inference.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/changelog.d/2026-07-21-on-file-flag.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/changelog.d/2026-07-21-remove-glob-captures.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/changelog.d/2026-07-23-init-escalation-example.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/changelog.d/2026-07-23-query-default-cli.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/changelog.d/2026-07-24-hookless-table-config-error.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/changelog.d/2026-07-24-remove-stat-fact-injection.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/changelog.d/2026-07-29-on-file-failures-accumulate.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/changelog.d/2026-08-02-drop-regex.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/changelog.d/2026-08-02-per-file-scan-failures.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/changelog.d/2026-08-02-release-profile.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/changelog.d/2026-08-03-gitignore-by-default.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/changelog.d/2026-08-03-nested-default-ignores.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/changelog.d/README.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/docs/explanation.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/docs/getting-started.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/docs/howto/columns-from-paths.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/docs/howto/define-tables.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/docs/howto/embed.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/docs/howto/extract-from-contents.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/docs/howto/load-extension.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/docs/howto/parse-files-into-columns.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/docs/howto/persist.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/docs/howto/query-without-config.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/docs/howto/react-to-changes.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/docs/howto/search-by-meaning.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/docs/howto/skip-files.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/docs/howto/write-a-plugin.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/docs/index.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/docs/migrations.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/docs/plugins.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/docs/reference/cli.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/docs/reference/columns.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/docs/reference/config.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/docs/reference/hooks.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/docs/reference/http-api.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/docs/reference/path-tables.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/docs/reference/sdk.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/migrations.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/migrations.d/2026-07-13-fan-out-file-table-matching.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/migrations.d/2026-07-13-persist-wal.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/migrations.d/2026-07-13-rename-extract-to-on-file.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/migrations.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/migrations.d/2026-07-13-subcommand-local-config-flags.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/migrations.d/2026-07-20-drop-implicit-files-table.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/migrations.d/2026-07-20-path-table-glob-semantics.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/migrations.d/2026-07-21-remove-glob-captures.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/migrations.d/2026-07-23-init-escalation-example.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/migrations.d/2026-07-23-query-default-cli.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/migrations.d/2026-07-24-hookless-table-config-error.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/migrations.d/2026-07-24-remove-stat-fact-injection.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/migrations.d/2026-08-02-per-file-scan-failures.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/migrations.d/2026-08-03-gitignore-by-default.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/migrations.d/2026-08-03-nested-default-ignores.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/migrations.d/README.md +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/src/cli/execute.rs +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/src/cli/init.rs +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/src/cli/mod.rs +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/src/cli/router.rs +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/src/cli/serialize.rs +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/src/cli/server.rs +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/src/command.rs +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/src/default_config.toml +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/src/differ.rs +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/src/infer.rs +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/src/matcher.rs +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/src/parsed_vtab.rs +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/src/path_table.rs +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/src/scanner.rs +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/src/vtab.rs +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/packages/rust/src/watcher.rs +0 -0
- {dirsql-0.4.12 → dirsql-0.4.14}/pyproject.toml +0 -0
|
@@ -33,18 +33,3 @@ futures-channel = "0.3"
|
|
|
33
33
|
strip = "symbols"
|
|
34
34
|
lto = "fat"
|
|
35
35
|
codegen-units = 1
|
|
36
|
-
|
|
37
|
-
[workspace.lints.rust]
|
|
38
|
-
unsafe_code = "forbid"
|
|
39
|
-
rust_2018_idioms = { level = "warn", priority = -1 }
|
|
40
|
-
|
|
41
|
-
[workspace.lints.clippy]
|
|
42
|
-
# Broad groups kept at `warn` so CI can catch regressions without
|
|
43
|
-
# becoming hostile to contributors; upgrade to `deny` in CI if desired.
|
|
44
|
-
all = { level = "warn", priority = -1 }
|
|
45
|
-
pedantic = { level = "warn", priority = -1 }
|
|
46
|
-
# Opinionated opt-outs from pedantic: too noisy vs. useful here.
|
|
47
|
-
module_name_repetitions = "allow"
|
|
48
|
-
missing_errors_doc = "allow"
|
|
49
|
-
missing_panics_doc = "allow"
|
|
50
|
-
must_use_candidate = "allow"
|
|
@@ -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.14"
|
|
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
|
|
@@ -25,17 +25,22 @@ crate-type = ["cdylib", "rlib"]
|
|
|
25
25
|
dirsql.workspace = true
|
|
26
26
|
pyo3 = { version = "0.28", features = ["extension-module", "generate-import-lib", "abi3-py310"], optional = true }
|
|
27
27
|
|
|
28
|
-
# Opted in per-crate rather than via `[lints] workspace = true`: the workspace
|
|
29
|
-
# block also carries `clippy::pedantic`, which currently reports 475 warnings
|
|
30
|
-
# across the three crates and would fail `clippy -D warnings` immediately
|
|
31
|
-
# (#763).
|
|
32
|
-
#
|
|
33
|
-
# `deny`, not the workspace's aspirational `forbid`: pyo3's proc macros emit `#[allow(unsafe_code)]`, which `forbid`
|
|
34
|
-
# rejects outright (E0453).
|
|
35
|
-
# `deny` still blocks new hand-written `unsafe` unless a site opts in
|
|
36
|
-
# explicitly, which is the guarantee we want.
|
|
37
28
|
[lints.rust]
|
|
29
|
+
# `deny`, not `forbid`: pyo3's proc macros emit `#[allow(unsafe_code)]`, which
|
|
30
|
+
# `forbid` rejects outright (E0453). `deny` still blocks new hand-written
|
|
31
|
+
# `unsafe` unless a site opts in explicitly, which is the guarantee we want.
|
|
38
32
|
unsafe_code = "deny"
|
|
33
|
+
rust_2018_idioms = { level = "warn", priority = -1 }
|
|
34
|
+
|
|
35
|
+
# The narrow slice of clippy::pedantic worth enforcing (#763); mirrors the
|
|
36
|
+
# core crate's block. No sites in this crate today -- the value is catching
|
|
37
|
+
# future lossy casts at the binding boundary.
|
|
38
|
+
[lints.clippy]
|
|
39
|
+
cast_lossless = "warn"
|
|
40
|
+
cast_possible_truncation = "warn"
|
|
41
|
+
cast_possible_wrap = "warn"
|
|
42
|
+
cast_precision_loss = "warn"
|
|
43
|
+
cast_sign_loss = "warn"
|
|
39
44
|
|
|
40
45
|
[features]
|
|
41
46
|
default = []
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
**Changed** — the pyo3 binding crate now enforces the clippy cast lints (`cast_lossless`, `cast_possible_truncation`, `cast_possible_wrap`, `cast_precision_loss`, `cast_sign_loss`) via `[lints.clippy]`, so a future lossy numeric cast at the binding boundary fails the build. No code changes were needed; no observable behavior change.
|
|
@@ -74,11 +74,6 @@ toml = "0.8"
|
|
|
74
74
|
wait-timeout = "0.2"
|
|
75
75
|
walkdir = "2"
|
|
76
76
|
|
|
77
|
-
# Opted in per-crate rather than via `[lints] workspace = true`: the workspace
|
|
78
|
-
# block also carries `clippy::pedantic`, which currently reports 475 warnings
|
|
79
|
-
# across the three crates and would fail `clippy -D warnings` immediately
|
|
80
|
-
# (#763). This is the lint whose absence actually mattered -- it forbids
|
|
81
|
-
# nothing until a crate opts in.
|
|
82
77
|
[lints.rust]
|
|
83
78
|
# `deny`, not `forbid`: rusqlite's API imposes five unavoidable `unsafe`
|
|
84
79
|
# sites (the `load_extension` guard and four `unsafe impl VTab`/`VTabCursor`).
|
|
@@ -87,6 +82,19 @@ walkdir = "2"
|
|
|
87
82
|
# with `#[expect(unsafe_code, reason = ...)]`, which is the guarantee we
|
|
88
83
|
# actually want (#763).
|
|
89
84
|
unsafe_code = "deny"
|
|
85
|
+
rust_2018_idioms = { level = "warn", priority = -1 }
|
|
86
|
+
|
|
87
|
+
# The narrow slice of clippy::pedantic worth enforcing (#763): dirsql marshals
|
|
88
|
+
# sizes, timestamps, and row indexes between usize/u64 and SQLite's i64, where
|
|
89
|
+
# a silent lossy cast corrupts data. The rest of pedantic is style noise here
|
|
90
|
+
# and stays off. Intentional lossy/bit-preserving casts opt out per-site with
|
|
91
|
+
# `#[expect(clippy::cast_..., reason = ...)]`.
|
|
92
|
+
[lints.clippy]
|
|
93
|
+
cast_lossless = "warn"
|
|
94
|
+
cast_possible_truncation = "warn"
|
|
95
|
+
cast_possible_wrap = "warn"
|
|
96
|
+
cast_precision_loss = "warn"
|
|
97
|
+
cast_sign_loss = "warn"
|
|
90
98
|
|
|
91
99
|
[[bin]]
|
|
92
100
|
name = "dirsql"
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
#![expect(
|
|
2
|
+
clippy::cast_possible_wrap,
|
|
3
|
+
clippy::cast_precision_loss,
|
|
4
|
+
reason = "bench fixture indices are small; the casts are exact"
|
|
5
|
+
)]
|
|
6
|
+
|
|
1
7
|
use criterion::{BenchmarkId, Criterion, criterion_group, criterion_main};
|
|
2
8
|
use dirsql::db::{Db, Value};
|
|
3
9
|
use std::collections::HashMap;
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
#![expect(
|
|
2
|
+
clippy::cast_possible_wrap,
|
|
3
|
+
clippy::cast_precision_loss,
|
|
4
|
+
reason = "bench fixture indices are small; the casts are exact"
|
|
5
|
+
)]
|
|
6
|
+
|
|
1
7
|
use criterion::{BenchmarkId, Criterion, criterion_group, criterion_main};
|
|
2
8
|
use dirsql::db::Value;
|
|
3
9
|
use dirsql::differ::diff;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
**Changed** — lossy numeric casts are now compile errors: the crate enforces the clippy cast lints (`cast_lossless`, `cast_possible_truncation`, `cast_possible_wrap`, `cast_precision_loss`, `cast_sign_loss`) via `[lints.clippy]`. Existing size/timestamp/row-index conversions were rewritten as checked `try_from` conversions (no observable behavior change); the intentional inode/device bit-pattern casts are documented with `#[expect]`. The never-enforced `clippy::pedantic` block was removed from `[workspace.lints]`.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
**Fixed** — `--extension` is now honored when no `-c`/`--config` is given. The configless path (no config, no `--include-default`) short-circuited before extensions were applied, so `dirsql query "SELECT vec_version()" --extension <path>::<entry>` reported `no such function: vec_version` as though the flag had not been passed — and, worse, `--extension /nonexistent.so` exited **0**, silently succeeding on a load that never happened. Both now behave: the extension loads and a bad path fails with `failed to build the index: failed to load extension '<path>'` and exit 1, matching the with-config path. This mattered because loading an extension to query a path-table (`SELECT * FROM './'`) needs no config at all, and because the npm/pip launchers pass resolved `--extension` flags — a launcher-resolved extension was dropped whenever the user had no config. #772.
|
|
@@ -581,6 +581,15 @@ fn load_configless_state(cfg: &ConfigArgs, path_table_parser: Option<String>) ->
|
|
|
581
581
|
};
|
|
582
582
|
|
|
583
583
|
let mut builder = cfg.apply_index_flags(DirSQL::builder().root(root));
|
|
584
|
+
// `--extension` applies here too (#772). Without this the flag was
|
|
585
|
+
// silently ignored whenever no `-c` was given: `dirsql query "SELECT
|
|
586
|
+
// vec_version()" --extension <path>` reported `no such function` rather
|
|
587
|
+
// than loading anything, and `--extension /nonexistent.so` exited 0. A
|
|
588
|
+
// path-table query over an extension-provided function is a legitimate
|
|
589
|
+
// configless use, and a bad path must still fail loudly.
|
|
590
|
+
if !cfg.extension.is_empty() {
|
|
591
|
+
builder = builder.extensions(parse_extension_specs(&cfg.extension));
|
|
592
|
+
}
|
|
584
593
|
if let Some(command) = path_table_parser {
|
|
585
594
|
builder = builder.path_table_parser(command);
|
|
586
595
|
}
|
|
@@ -932,6 +941,31 @@ mod tests {
|
|
|
932
941
|
);
|
|
933
942
|
}
|
|
934
943
|
|
|
944
|
+
#[test]
|
|
945
|
+
fn configless_state_still_carries_extension_specs() {
|
|
946
|
+
// `--extension` with no `-c` took the configless path, which never
|
|
947
|
+
// applied the specs: the flag was silently ignored and a bad path
|
|
948
|
+
// exited 0 (#772). Parsing is the seam a unit test can reach; the
|
|
949
|
+
// load itself needs a real SQLite handle and is covered at the
|
|
950
|
+
// integration tier.
|
|
951
|
+
let cfg = ConfigArgs {
|
|
952
|
+
config: Vec::new(),
|
|
953
|
+
include_default: false,
|
|
954
|
+
extension: vec!["/ext/vec0.so::sqlite3_vec_init".to_string()],
|
|
955
|
+
persist: None,
|
|
956
|
+
no_ignore: false,
|
|
957
|
+
};
|
|
958
|
+
assert!(cfg.config.is_empty(), "this is the configless shape");
|
|
959
|
+
assert!(
|
|
960
|
+
!cfg.extension.is_empty(),
|
|
961
|
+
"and it still carries an extension"
|
|
962
|
+
);
|
|
963
|
+
let specs = parse_extension_specs(&cfg.extension);
|
|
964
|
+
assert_eq!(specs.len(), 1);
|
|
965
|
+
assert_eq!(specs[0].path, PathBuf::from("/ext/vec0.so"));
|
|
966
|
+
assert_eq!(specs[0].entrypoint.as_deref(), Some("sqlite3_vec_init"));
|
|
967
|
+
}
|
|
968
|
+
|
|
935
969
|
#[test]
|
|
936
970
|
fn parse_extension_specs_handles_bare_path_and_entrypoint() {
|
|
937
971
|
let specs = vec![
|
|
@@ -358,7 +358,9 @@ pub fn load_config_str(content: &str) -> Result<Config> {
|
|
|
358
358
|
fn parse_timeout_secs(field: &'static str, raw: Option<i64>) -> Result<Option<Duration>> {
|
|
359
359
|
match raw {
|
|
360
360
|
Some(secs) if secs <= 0 => Err(ConfigError::InvalidTimeout { field, value: secs }),
|
|
361
|
-
Some(secs) => Ok(Some(Duration::from_secs(
|
|
361
|
+
Some(secs) => Ok(Some(Duration::from_secs(
|
|
362
|
+
u64::try_from(secs).expect("non-positive values rejected above"),
|
|
363
|
+
))),
|
|
362
364
|
None => Ok(None),
|
|
363
365
|
}
|
|
364
366
|
}
|
|
@@ -465,7 +465,12 @@ impl Db {
|
|
|
465
465
|
conn.execute(
|
|
466
466
|
"INSERT INTO _dirsql_internal_rows (table_name, file_path, row_index, rowid_ref) \
|
|
467
467
|
VALUES (?1, ?2, ?3, ?4)",
|
|
468
|
-
rusqlite::params![
|
|
468
|
+
rusqlite::params![
|
|
469
|
+
table,
|
|
470
|
+
file_path,
|
|
471
|
+
i64::try_from(row_index).expect("row index fits in i64"),
|
|
472
|
+
rowid
|
|
473
|
+
],
|
|
469
474
|
)?;
|
|
470
475
|
Ok(())
|
|
471
476
|
}
|
|
@@ -1054,7 +1059,7 @@ mod tests {
|
|
|
1054
1059
|
for (i, action) in ["created", "resolved", "reopened"].iter().enumerate() {
|
|
1055
1060
|
let row = HashMap::from([
|
|
1056
1061
|
("action".into(), Value::Text(action.to_string())),
|
|
1057
|
-
("ts".into(), Value::Integer(i
|
|
1062
|
+
("ts".into(), Value::Integer(i64::try_from(i).unwrap())),
|
|
1058
1063
|
]);
|
|
1059
1064
|
db.insert_row("events", &row, "thread.jsonl", i).unwrap();
|
|
1060
1065
|
}
|
|
@@ -1692,10 +1692,10 @@ pub(crate) fn compute_stat_virtuals(rel_path: &str, abs_path: &Path) -> Row {
|
|
|
1692
1692
|
let to_secs = |t: std::io::Result<std::time::SystemTime>| {
|
|
1693
1693
|
t.ok()
|
|
1694
1694
|
.and_then(|st| st.duration_since(std::time::UNIX_EPOCH).ok())
|
|
1695
|
-
.
|
|
1695
|
+
.and_then(|d| i64::try_from(d.as_secs()).ok())
|
|
1696
1696
|
};
|
|
1697
1697
|
(
|
|
1698
|
-
|
|
1698
|
+
i64::try_from(metadata.len()).ok(),
|
|
1699
1699
|
to_secs(metadata.modified()),
|
|
1700
1700
|
to_secs(metadata.created()),
|
|
1701
1701
|
)
|
|
@@ -60,7 +60,7 @@ impl FileStat {
|
|
|
60
60
|
let ctime_ns = system_time_to_ns(meta.created().ok());
|
|
61
61
|
let (inode, dev) = inode_dev(meta);
|
|
62
62
|
Self {
|
|
63
|
-
size: meta.len()
|
|
63
|
+
size: i64::try_from(meta.len()).expect("file size fits in i64"),
|
|
64
64
|
mtime_ns,
|
|
65
65
|
ctime_ns,
|
|
66
66
|
inode,
|
|
@@ -70,6 +70,10 @@ impl FileStat {
|
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
#[cfg(unix)]
|
|
73
|
+
#[expect(
|
|
74
|
+
clippy::cast_possible_wrap,
|
|
75
|
+
reason = "inode/device numbers are opaque bit patterns; wrapping reinterpretation is intended"
|
|
76
|
+
)]
|
|
73
77
|
fn inode_dev(meta: &fs::Metadata) -> (i64, i64) {
|
|
74
78
|
use std::os::unix::fs::MetadataExt;
|
|
75
79
|
(meta.ino() as i64, meta.dev() as i64)
|
|
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.12 → dirsql-0.4.14}/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.12 → dirsql-0.4.14}/packages/python/changelog.d/2026-07-20-drop-implicit-files-table.md
RENAMED
|
File without changes
|
{dirsql-0.4.12 → dirsql-0.4.14}/packages/python/changelog.d/2026-07-21-remove-glob-captures.md
RENAMED
|
File without changes
|
|
File without changes
|
{dirsql-0.4.12 → dirsql-0.4.14}/packages/python/changelog.d/2026-07-24-remove-stat-fact-injection.md
RENAMED
|
File without changes
|
{dirsql-0.4.12 → dirsql-0.4.14}/packages/python/changelog.d/2026-07-29-restore-python-310.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dirsql-0.4.12 → dirsql-0.4.14}/packages/python/changelog.d/2026-08-03-discovery-ext-resolution.md
RENAMED
|
File without changes
|
{dirsql-0.4.12 → dirsql-0.4.14}/packages/python/changelog.d/2026-08-03-manylinux-dynamic-binary.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
|
{dirsql-0.4.12 → dirsql-0.4.14}/packages/python/migrations.d/2026-07-13-rename-extract-to-on-file.md
RENAMED
|
File without changes
|
|
File without changes
|
{dirsql-0.4.12 → dirsql-0.4.14}/packages/python/migrations.d/2026-07-20-drop-implicit-files-table.md
RENAMED
|
File without changes
|
{dirsql-0.4.12 → dirsql-0.4.14}/packages/python/migrations.d/2026-07-21-remove-glob-captures.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dirsql-0.4.12 → dirsql-0.4.14}/packages/python/migrations.d/2026-07-29-restore-python-310.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dirsql-0.4.12 → dirsql-0.4.14}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/__init__.py
RENAMED
|
File without changes
|