sqlty 0.5.1__tar.gz → 0.6.0__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.
- {sqlty-0.5.1 → sqlty-0.6.0}/PKG-INFO +7 -2
- {sqlty-0.5.1 → sqlty-0.6.0}/README.md +6 -1
- {sqlty-0.5.1 → sqlty-0.6.0}/pyproject.toml +3 -3
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/Cargo.lock +422 -19
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/Cargo.toml +5 -2
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-ext/Cargo.toml +4 -1
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-ext/src/config.rs +7 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-ext/src/lib.rs +1175 -45
- sqlty-0.6.0/rust/crates/sqlty-ext/src/outline.rs +1038 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-ext/src/server.rs +8 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-lsp/src/lib.rs +14 -2
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-lsp/src/tests.rs +32 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-lsp/src/worker.rs +8 -7
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-python/Cargo.toml +5 -0
- sqlty-0.6.0/rust/crates/sqlty-python/src/calls.rs +739 -0
- sqlty-0.6.0/rust/crates/sqlty-python/src/check.rs +1407 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-python/src/checker.rs +2 -2
- sqlty-0.6.0/rust/crates/sqlty-python/src/compose.rs +1092 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-python/src/config.rs +52 -1
- sqlty-0.6.0/rust/crates/sqlty-python/src/drivers.rs +654 -0
- sqlty-0.6.0/rust/crates/sqlty-python/src/helpers.rs +245 -0
- sqlty-0.6.0/rust/crates/sqlty-python/src/index.rs +702 -0
- sqlty-0.6.0/rust/crates/sqlty-python/src/json_types.rs +340 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-python/src/lib.rs +24 -0
- sqlty-0.6.0/rust/crates/sqlty-python/src/module.rs +354 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-python/src/params.rs +101 -17
- sqlty-0.6.0/rust/crates/sqlty-python/src/parse.rs +377 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-python/src/rewriter.rs +23 -3
- sqlty-0.6.0/rust/crates/sqlty-python/src/rows/json_shape.rs +440 -0
- sqlty-0.6.0/rust/crates/sqlty-python/src/rows/mod.rs +1042 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-python/src/rules.rs +8 -1
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-python/src/scan.rs +19 -1
- sqlty-0.6.0/rust/crates/sqlty-python/src/scopes.rs +462 -0
- sqlty-0.6.0/rust/crates/sqlty-python/src/suppress.rs +139 -0
- sqlty-0.6.0/rust/crates/sqlty-python/src/templates.rs +156 -0
- sqlty-0.6.0/rust/crates/sqlty-python/src/types/compat.rs +204 -0
- sqlty-0.6.0/rust/crates/sqlty-python/src/types/extract.rs +1186 -0
- sqlty-0.6.0/rust/crates/sqlty-python/src/types/generic.rs +177 -0
- sqlty-0.6.0/rust/crates/sqlty-python/src/types/info.rs +198 -0
- sqlty-0.6.0/rust/crates/sqlty-python/src/types/mod.rs +23 -0
- sqlty-0.6.0/rust/crates/sqlty-python/src/types/pydantic.rs +245 -0
- sqlty-0.6.0/rust/crates/sqlty-python/src/types/resolve.rs +330 -0
- sqlty-0.6.0/rust/crates/sqlty-python/src/types/stdlib.rs +78 -0
- sqlty-0.6.0/rust/crates/sqlty-python/src/types/stdlib_table.rs +2679 -0
- sqlty-0.6.0/rust/crates/sqlty-python/src/types/symbols.rs +526 -0
- sqlty-0.6.0/rust/crates/sqlty-python/src/types/ty.rs +584 -0
- sqlty-0.6.0/rust/crates/sqlty-python/src/unparse.rs +1114 -0
- sqlty-0.6.0/rust/crates/sqlty-python/src/variants.rs +1715 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/sqlite/bitwise.inference.toml +1 -1
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/api.rs +8 -12
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/databases.rs +1 -1
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/dialect.rs +20 -4
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/dml.rs +7 -5
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/entities.rs +12 -5
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/expr.rs +25 -5
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/fanout.rs +48 -13
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/functions.rs +18 -30
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/hover.rs +1 -1
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/input.rs +5 -88
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/json.rs +4 -10
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/memo.rs +1 -1
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/mod.rs +4 -30
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/narrowing.rs +72 -18
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/nullability.rs +105 -47
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/operators.rs +0 -2
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/params.rs +19 -13
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/preprocess.rs +53 -7
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/resolve.rs +83 -15
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/respell.rs +17 -88
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/scope.rs +27 -54
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__functions__tests__aggregates_in_postgres.snap +1 -1
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__query__tests__projection_forms.snap +0 -1
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/sql_type.rs +11 -7
- sqlty-0.6.0/rust/crates/sqlty-sql/src/analyzer/tables.rs +244 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/test_support.rs +2 -3
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/tests.rs +14 -51
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/catalog/alter.rs +1 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/catalog/loader.rs +1 -1
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/catalog/read.rs +14 -6
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/ddl.rs +0 -25
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/diagnostics.rs +33 -14
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/lib.rs +1 -1
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/placeholders.rs +18 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/values.rs +4 -2
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/tests/timing.rs +1 -1
- {sqlty-0.5.1 → sqlty-0.6.0}/skills/sqlty-ci/SKILL.md +1 -1
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/__init__.py +11 -3
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/_breaking.py +76 -7
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/_check.py +309 -27
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/_cli.py +123 -62
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/_config.py +68 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/_core.pyi +180 -2
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/_drivers.py +67 -9
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/_helpers.py +265 -30
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/_json_types.py +1 -4
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/_lint.py +15 -1
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/_lsp_breaking.py +1 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/_lsp_bridge.py +28 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/_psycopg.py +3 -2
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/_source.py +200 -2
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/_type_extractor/_stdlib.py +2 -2
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/_type_extractor/ast_fields.py +17 -4
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/_type_extractor/extract.py +28 -2
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/_type_extractor/info.py +4 -1
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/_type_extractor/symbols.py +1 -1
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/_variants.py +69 -4
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/core.py +200 -52
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/column-count-mismatch.md +21 -0
- sqlty-0.6.0/src/sqlty/rules/duplicate-alias.md +52 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/dynamic-query.md +19 -0
- sqlty-0.6.0/src/sqlty/rules/extra-param.md +53 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/fanout-aggregate.md +3 -1
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/param-count-mismatch.md +2 -1
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/params-type-mismatch.md +1 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/LICENSE +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-ext/build.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-format/Cargo.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-format/src/lib.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-lsp/Cargo.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-lsp/src/actions.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-lsp/src/completion.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-lsp/src/highlight.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-lsp/src/hover.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-lsp/src/text.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-lsp/src/uri.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-python/clippy.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-python/src/edit.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-python/src/fixer.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-python/src/locate.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-python/src/options.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-python/src/queries.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-python/src/template.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-python/src/tokens.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/Cargo.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/build.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/clippy.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/README.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/common/aggregates.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/common/arithmetic.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/common/comparison.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/common/concat.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/common/conditional.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/common/datetime.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/common/json.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/common/math.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/common/strings.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/common/window.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/compile.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/dialects.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/mysql/aggregates.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/mysql/arithmetic.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/mysql/bits.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/mysql/comparison.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/mysql/concat.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/mysql/conditional.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/mysql/datetime.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/mysql/encryption.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/mysql/json.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/mysql/math.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/mysql/misc.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/mysql/spatial.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/mysql/strings.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/mysql/system.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/admin.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/aggregates.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/arithmetic.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/arrays.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/binary.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/comparison.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/concat.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/conditional.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/datetime.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/enums.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/events.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/extensions.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/formatting.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/geometry.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/json.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/math.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/merge.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/network.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/ranges.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/rows.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/sequences.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/series.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/strings.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/system.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/textsearch.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/uuid.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/xml.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/sqlite/aggregates.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/sqlite/arithmetic.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/sqlite/datetime.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/sqlite/fts.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/sqlite/json.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/sqlite/math.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/sqlite/scalar.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/sqlite/strings.inference.toml +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/complete.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/explain.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/grouping.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/hashing.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/inference.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/literals.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/merged_star.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/names.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/pg_record_functions.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/planner_hints.sql +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/query.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/references.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/registry.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__dml__tests__returning_columns_in_queries.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__expr__tests__arrays_and_subscripts.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__expr__tests__case_expressions.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__expr__tests__casts.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__expr__tests__casts_without_a_schema_do_not_complain.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__expr__tests__composite_fields_and_json_access.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__expr__tests__literals_and_unary_operators.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__expr__tests__misc_expressions.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__expr__tests__mysql_and_sqlite_expressions.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__functions__tests__function_availability_differs_by_dialect.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__functions__tests__return_types_follow_the_argument.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__functions__tests__unknown_functions_are_untyped_and_explained.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__literals__tests__value_sets_flow_through_expressions.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__names__tests__column_names_follow_postgres_figure_colname.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__operators__tests__arithmetic_promotes_numbers_and_types_date_math.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__operators__tests__binary_operators_in_queries.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__operators__tests__common_type_follows_postgres_union_rules.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__operators__tests__division_differs_between_postgres_and_mysql.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__query__tests__column_names_come_from_the_first_branch.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__query__tests__ctes.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__query__tests__dialects_name_and_type_the_same_query_differently.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__query__tests__recursive_ctes_settle_nullability.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__query__tests__set_operations_combine_nullability.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__query__tests__set_operations_unify_types.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__query__tests__statements_that_are_not_queries_have_no_columns.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__query__tests__unsupported_query_forms_are_explained.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__query__tests__values_lists.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__resolve__tests__ambiguous_names_are_reported_once_per_query.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__resolve__tests__cte_columns_are_resolved_like_tables.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__resolve__tests__names_are_not_judged_without_a_schema.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__resolve__tests__nullability_comes_from_the_declaration.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__resolve__tests__quoted_names_keep_their_case_in_postgres_only.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__resolve__tests__star_over_unreadable_sources_names_the_reason.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__resolve__tests__system_columns_exist_without_being_declared.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__resolve__tests__unknown_names_say_what_is_missing.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__resolve__tests__unqualified_names_resolve_to_the_first_source_that_has_them.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__scope__tests__correlated_subqueries_see_the_outer_scope.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__scope__tests__derived_tables_ctes_and_views.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__scope__tests__nullability_follows_the_join_kind.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__scope__tests__opaque_sources_explain_themselves.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__scope__tests__star_expansion_over_joins.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__scope__tests__table_names_fold_by_dialect.snap +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/star_expand.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/suggest.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/table_functions.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/text_names.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/tokens.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/typed.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/catalog/builtin_catalog.sql +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/catalog/columns.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/catalog/index.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/catalog/joins.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/catalog/mod.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/catalog/names.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/catalog/pg_catalog_views.sql +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/catalog/resolve.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/highlight.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/json.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/rust/crates/sqlty-sql/tests/inference_compiler.rs +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/skills/sqlty/SKILL.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/skills/sqlty-adopt/SKILL.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/skills/sqlty-breaking/SKILL.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/skills/sqlty-check/SKILL.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/skills/sqlty-rewrite/SKILL.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/skills/sqlty-server/SKILL.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/__main__.py +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/_decode.py +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/_gitignore.py +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/_json_shape.py +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/_params.py +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/_queries.py +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/_sarif.py +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/_snapshot.py +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/_type_extractor/__init__.py +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/_type_extractor/compat.py +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/_type_extractor/generic.py +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/_type_extractor/pydantic_types.py +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/_type_extractor/stdlib.py +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/_type_extractor/subtype.py +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/drivers/psycopg.py +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/lexer.py +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/magic.py +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/py.typed +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/ambiguous-column.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/chasm-join.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/column-name-mismatch.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/column-type-mismatch.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/entity-mismatch.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/fstring-skipped.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/inline-sql-comment.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/insert-missing-column.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/insert-value-count.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/json-shape-mismatch.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/literal-mismatch.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/mysql-sql-marker.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/narrow-type.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/nullable-mismatch.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/param-type-mismatch.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/redundant-literal.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/redundant-optional.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/select-star-no-schema.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/select-star.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/sqruff.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/stale-rewrite.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/stale-type.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/tstring-skipped.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/typeddict-inheritance.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/typeddict-key-mismatch.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/unchecked-query.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/ungrouped-column.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/unknown-column.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/unknown-database.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/unknown-function.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/unknown-table.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/unknown-type.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/unparsed-query.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/unproven-join.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/unsupported-syntax.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/untyped-query.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty/rules/unused-ignore.md +0 -0
- {sqlty-0.5.1 → sqlty-0.6.0}/src/sqlty_magic.pth +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sqlty
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.6.0
|
|
4
4
|
Classifier: Development Status :: 4 - Beta
|
|
5
5
|
Classifier: Environment :: Console
|
|
6
6
|
Classifier: Intended Audience :: Developers
|
|
@@ -57,7 +57,8 @@ migration that changes a column is caught in review, not in production.
|
|
|
57
57
|
(<a href="https://github.com/jirikuncar/sqlty/blob/main/docs/assets/demo.tape">view source</a>)
|
|
58
58
|
</p>
|
|
59
59
|
|
|
60
|
-
**Documentation: [sqlty.kuncar.dev](https://sqlty.kuncar.dev/)**
|
|
60
|
+
**Documentation: [sqlty.kuncar.dev](https://sqlty.kuncar.dev/)** ·
|
|
61
|
+
**Try it in your browser: [Playground](https://sqlty.kuncar.dev/playground/)**
|
|
61
62
|
|
|
62
63
|
**Fits if** you write SQL as string literals on Python 3.14+, against
|
|
63
64
|
PostgreSQL, SQLite or MySQL, with a schema dump or SQL migrations in the
|
|
@@ -92,6 +93,8 @@ query = "--sql\nSELECT id, name, email FROM users"
|
|
|
92
93
|
# rewritten: query = SQL[tuple[int, str, str]]("--sql\nSELECT id, name, email FROM users")
|
|
93
94
|
```
|
|
94
95
|
|
|
96
|
+
[Open in playground](https://sqlty.kuncar.dev/playground/#eJw9jcsKwjAURH_lkpWFdiN0o7iI5arFPiRGsZBNSWMN9GGbdiHiv9tQdDGbM8OcNzHt2EtFVkC6UfUv2IAgnme6SojmjBEGHHThQpPXygVV57qCHUtjGI3qjSCiIS4QIx9TZU8ChpQjcLqNcN7AQhcQJhz3yODEwpiyDI6YzZ_A8cYhSadcouhnuFIWHChbLH3f-ZfO2qoKnVdKDtb1bM1Q9spYLNvmrktLyecL_GI_Gw)
|
|
97
|
+
|
|
95
98
|
`SQL[T]` is a `str` subclass, so the query still runs anywhere a string does,
|
|
96
99
|
and mypy, pyright and ty see `T`. Without a schema, casts such as `id::INTEGER`
|
|
97
100
|
type the columns; a query with neither stays as it is. With a space instead of
|
|
@@ -121,6 +124,8 @@ from sqlty import SQL
|
|
|
121
124
|
query = SQL[tuple[int, str]]("--sql\nSELECT id, email FROM users")
|
|
122
125
|
```
|
|
123
126
|
|
|
127
|
+
[Open in playground](https://sqlty.kuncar.dev/playground/#eJw1jUsOgjAURbfy0pEksAGNAyRPYwQ_pQMJdWCgYBNooS0DYty7NMbh_Z37JlZPphJkDaQxugc7dm4G2Q_aOMhvKVdcjZMwM2y9LN00dKKUyoVgnXk8VpxE0TLiXOWYYsJA1iGI_ik72NNLBpMVxnIScEVCILZ6LZl_SyjGDIHFuxR_JVjJGo5nhgekcKXHLKYFnLD44xjeWbDxlFo-O1E5jxm0da0R1tuVVo1svUs-X3IeRJA)
|
|
128
|
+
|
|
124
129
|
`sqlty check --fix .` updates the type, and your type checker finds every
|
|
125
130
|
caller that now needs a `None` check. `narrow-type` is an error, so CI fails on
|
|
126
131
|
it; an annotation that is only wider than the rows, such as `str | None` for a
|
|
@@ -23,7 +23,8 @@ migration that changes a column is caught in review, not in production.
|
|
|
23
23
|
(<a href="https://github.com/jirikuncar/sqlty/blob/main/docs/assets/demo.tape">view source</a>)
|
|
24
24
|
</p>
|
|
25
25
|
|
|
26
|
-
**Documentation: [sqlty.kuncar.dev](https://sqlty.kuncar.dev/)**
|
|
26
|
+
**Documentation: [sqlty.kuncar.dev](https://sqlty.kuncar.dev/)** ·
|
|
27
|
+
**Try it in your browser: [Playground](https://sqlty.kuncar.dev/playground/)**
|
|
27
28
|
|
|
28
29
|
**Fits if** you write SQL as string literals on Python 3.14+, against
|
|
29
30
|
PostgreSQL, SQLite or MySQL, with a schema dump or SQL migrations in the
|
|
@@ -58,6 +59,8 @@ query = "--sql\nSELECT id, name, email FROM users"
|
|
|
58
59
|
# rewritten: query = SQL[tuple[int, str, str]]("--sql\nSELECT id, name, email FROM users")
|
|
59
60
|
```
|
|
60
61
|
|
|
62
|
+
[Open in playground](https://sqlty.kuncar.dev/playground/#eJw9jcsKwjAURH_lkpWFdiN0o7iI5arFPiRGsZBNSWMN9GGbdiHiv9tQdDGbM8OcNzHt2EtFVkC6UfUv2IAgnme6SojmjBEGHHThQpPXygVV57qCHUtjGI3qjSCiIS4QIx9TZU8ChpQjcLqNcN7AQhcQJhz3yODEwpiyDI6YzZ_A8cYhSadcouhnuFIWHChbLH3f-ZfO2qoKnVdKDtb1bM1Q9spYLNvmrktLyecL_GI_Gw)
|
|
63
|
+
|
|
61
64
|
`SQL[T]` is a `str` subclass, so the query still runs anywhere a string does,
|
|
62
65
|
and mypy, pyright and ty see `T`. Without a schema, casts such as `id::INTEGER`
|
|
63
66
|
type the columns; a query with neither stays as it is. With a space instead of
|
|
@@ -87,6 +90,8 @@ from sqlty import SQL
|
|
|
87
90
|
query = SQL[tuple[int, str]]("--sql\nSELECT id, email FROM users")
|
|
88
91
|
```
|
|
89
92
|
|
|
93
|
+
[Open in playground](https://sqlty.kuncar.dev/playground/#eJw1jUsOgjAURbfy0pEksAGNAyRPYwQ_pQMJdWCgYBNooS0DYty7NMbh_Z37JlZPphJkDaQxugc7dm4G2Q_aOMhvKVdcjZMwM2y9LN00dKKUyoVgnXk8VpxE0TLiXOWYYsJA1iGI_ik72NNLBpMVxnIScEVCILZ6LZl_SyjGDIHFuxR_JVjJGo5nhgekcKXHLKYFnLD44xjeWbDxlFo-O1E5jxm0da0R1tuVVo1svUs-X3IeRJA)
|
|
94
|
+
|
|
90
95
|
`sqlty check --fix .` updates the type, and your type checker finds every
|
|
91
96
|
caller that now needs a `None` check. `narrow-type` is an error, so CI fails on
|
|
92
97
|
it; an annotation that is only wider than the rows, such as `str | None` for a
|
|
@@ -64,7 +64,7 @@ sqlty = "sqlty.lexer:SQLTyLexer"
|
|
|
64
64
|
psycopg = ["psycopg>=3.2.12"]
|
|
65
65
|
|
|
66
66
|
[build-system]
|
|
67
|
-
requires = ["maturin>=1.
|
|
67
|
+
requires = ["maturin>=1.15,<2.0"]
|
|
68
68
|
build-backend = "maturin"
|
|
69
69
|
|
|
70
70
|
[tool.maturin]
|
|
@@ -82,7 +82,7 @@ include = ["src/sqlty_magic.pth", { path = "skills/**/*", format = "sdist" }]
|
|
|
82
82
|
[dependency-groups]
|
|
83
83
|
dev = [
|
|
84
84
|
"inline-snapshot>=0.15.0",
|
|
85
|
-
"maturin>=1.
|
|
85
|
+
"maturin>=1.15,<2.0",
|
|
86
86
|
"mypy>=2.4.0",
|
|
87
87
|
"prek>=0.5.4",
|
|
88
88
|
"pyright>=1.1.414",
|
|
@@ -130,7 +130,7 @@ markers = [
|
|
|
130
130
|
concurrency = ["multiprocessing"]
|
|
131
131
|
parallel = true
|
|
132
132
|
sigterm = true
|
|
133
|
-
patch = ["subprocess"]
|
|
133
|
+
patch = ["subprocess", "_exit"]
|
|
134
134
|
omit = ["tests/*", "examples/*"]
|
|
135
135
|
|
|
136
136
|
[tool.coverage.paths]
|