sqlty 0.4.0__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.
Files changed (332) hide show
  1. {sqlty-0.4.0 → sqlty-0.6.0}/PKG-INFO +24 -18
  2. {sqlty-0.4.0 → sqlty-0.6.0}/README.md +18 -13
  3. {sqlty-0.4.0 → sqlty-0.6.0}/pyproject.toml +26 -8
  4. {sqlty-0.4.0 → sqlty-0.6.0}/rust/Cargo.lock +422 -19
  5. {sqlty-0.4.0 → sqlty-0.6.0}/rust/Cargo.toml +6 -3
  6. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-ext/Cargo.toml +4 -1
  7. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-ext/src/config.rs +7 -0
  8. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-ext/src/lib.rs +1221 -46
  9. sqlty-0.6.0/rust/crates/sqlty-ext/src/outline.rs +1038 -0
  10. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-ext/src/server.rs +8 -0
  11. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-format/Cargo.toml +2 -0
  12. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-format/src/lib.rs +3 -3
  13. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-lsp/src/actions.rs +1 -1
  14. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-lsp/src/lib.rs +14 -2
  15. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-lsp/src/tests.rs +33 -1
  16. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-lsp/src/worker.rs +8 -7
  17. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-python/Cargo.toml +5 -0
  18. sqlty-0.6.0/rust/crates/sqlty-python/src/calls.rs +739 -0
  19. sqlty-0.6.0/rust/crates/sqlty-python/src/check.rs +1407 -0
  20. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-python/src/checker.rs +27 -18
  21. sqlty-0.6.0/rust/crates/sqlty-python/src/compose.rs +1092 -0
  22. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-python/src/config.rs +150 -1
  23. sqlty-0.6.0/rust/crates/sqlty-python/src/drivers.rs +654 -0
  24. sqlty-0.6.0/rust/crates/sqlty-python/src/helpers.rs +245 -0
  25. sqlty-0.6.0/rust/crates/sqlty-python/src/index.rs +702 -0
  26. sqlty-0.6.0/rust/crates/sqlty-python/src/json_types.rs +340 -0
  27. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-python/src/lib.rs +24 -0
  28. sqlty-0.6.0/rust/crates/sqlty-python/src/module.rs +354 -0
  29. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-python/src/params.rs +101 -17
  30. sqlty-0.6.0/rust/crates/sqlty-python/src/parse.rs +377 -0
  31. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-python/src/queries.rs +19 -4
  32. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-python/src/rewriter.rs +41 -10
  33. sqlty-0.6.0/rust/crates/sqlty-python/src/rows/json_shape.rs +440 -0
  34. sqlty-0.6.0/rust/crates/sqlty-python/src/rows/mod.rs +1042 -0
  35. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-python/src/rules.rs +13 -1
  36. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-python/src/scan.rs +19 -1
  37. sqlty-0.6.0/rust/crates/sqlty-python/src/scopes.rs +462 -0
  38. sqlty-0.6.0/rust/crates/sqlty-python/src/suppress.rs +139 -0
  39. sqlty-0.6.0/rust/crates/sqlty-python/src/templates.rs +156 -0
  40. sqlty-0.6.0/rust/crates/sqlty-python/src/types/compat.rs +204 -0
  41. sqlty-0.6.0/rust/crates/sqlty-python/src/types/extract.rs +1186 -0
  42. sqlty-0.6.0/rust/crates/sqlty-python/src/types/generic.rs +177 -0
  43. sqlty-0.6.0/rust/crates/sqlty-python/src/types/info.rs +198 -0
  44. sqlty-0.6.0/rust/crates/sqlty-python/src/types/mod.rs +23 -0
  45. sqlty-0.6.0/rust/crates/sqlty-python/src/types/pydantic.rs +245 -0
  46. sqlty-0.6.0/rust/crates/sqlty-python/src/types/resolve.rs +330 -0
  47. sqlty-0.6.0/rust/crates/sqlty-python/src/types/stdlib.rs +78 -0
  48. sqlty-0.6.0/rust/crates/sqlty-python/src/types/stdlib_table.rs +2679 -0
  49. sqlty-0.6.0/rust/crates/sqlty-python/src/types/symbols.rs +526 -0
  50. sqlty-0.6.0/rust/crates/sqlty-python/src/types/ty.rs +584 -0
  51. sqlty-0.6.0/rust/crates/sqlty-python/src/unparse.rs +1114 -0
  52. sqlty-0.6.0/rust/crates/sqlty-python/src/variants.rs +1715 -0
  53. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/sqlite/bitwise.inference.toml +1 -1
  54. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/api.rs +9 -12
  55. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/complete.rs +41 -8
  56. sqlty-0.6.0/rust/crates/sqlty-sql/src/analyzer/databases.rs +195 -0
  57. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/dialect.rs +20 -4
  58. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/dml.rs +7 -5
  59. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/entities.rs +12 -5
  60. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/explain.rs +1 -0
  61. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/expr.rs +25 -5
  62. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/fanout.rs +48 -13
  63. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/functions.rs +18 -30
  64. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/hover.rs +2 -1
  65. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/input.rs +5 -88
  66. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/json.rs +4 -10
  67. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/memo.rs +1 -1
  68. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/mod.rs +8 -30
  69. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/narrowing.rs +72 -18
  70. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/nullability.rs +105 -47
  71. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/operators.rs +0 -2
  72. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/params.rs +20 -13
  73. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/preprocess.rs +53 -7
  74. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/resolve.rs +83 -15
  75. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/respell.rs +17 -88
  76. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/scope.rs +27 -54
  77. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__functions__tests__aggregates_in_postgres.snap +1 -1
  78. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__query__tests__projection_forms.snap +0 -1
  79. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/sql_type.rs +11 -7
  80. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/star_expand.rs +1 -0
  81. sqlty-0.6.0/rust/crates/sqlty-sql/src/analyzer/tables.rs +244 -0
  82. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/test_support.rs +2 -3
  83. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/tests.rs +14 -51
  84. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/catalog/alter.rs +1 -0
  85. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/catalog/loader.rs +1 -1
  86. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/catalog/mod.rs +2 -0
  87. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/catalog/read.rs +14 -6
  88. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/catalog/resolve.rs +1 -0
  89. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/ddl.rs +0 -25
  90. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/diagnostics.rs +33 -14
  91. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/lib.rs +1 -1
  92. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/placeholders.rs +18 -0
  93. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/values.rs +4 -2
  94. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/tests/timing.rs +1 -1
  95. {sqlty-0.4.0 → sqlty-0.6.0}/skills/sqlty/SKILL.md +8 -8
  96. {sqlty-0.4.0 → sqlty-0.6.0}/skills/sqlty-adopt/SKILL.md +12 -7
  97. {sqlty-0.4.0 → sqlty-0.6.0}/skills/sqlty-breaking/SKILL.md +2 -2
  98. {sqlty-0.4.0 → sqlty-0.6.0}/skills/sqlty-check/SKILL.md +52 -9
  99. {sqlty-0.4.0 → sqlty-0.6.0}/skills/sqlty-ci/SKILL.md +4 -4
  100. {sqlty-0.4.0 → sqlty-0.6.0}/skills/sqlty-rewrite/SKILL.md +4 -4
  101. {sqlty-0.4.0 → sqlty-0.6.0}/skills/sqlty-server/SKILL.md +4 -4
  102. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/__init__.py +11 -3
  103. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/_breaking.py +76 -7
  104. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/_check.py +317 -27
  105. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/_cli.py +237 -90
  106. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/_config.py +109 -9
  107. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/_core.pyi +189 -3
  108. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/_drivers.py +210 -49
  109. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/_helpers.py +300 -40
  110. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/_json_types.py +1 -4
  111. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/_lint.py +24 -3
  112. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/_lsp_breaking.py +1 -0
  113. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/_lsp_bridge.py +28 -0
  114. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/_psycopg.py +3 -2
  115. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/_source.py +205 -5
  116. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/_type_extractor/_stdlib.py +2 -2
  117. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/_type_extractor/ast_fields.py +17 -4
  118. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/_type_extractor/extract.py +28 -2
  119. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/_type_extractor/info.py +4 -1
  120. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/_type_extractor/symbols.py +1 -1
  121. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/_variants.py +69 -4
  122. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/core.py +224 -56
  123. sqlty-0.6.0/src/sqlty/lexer.py +74 -0
  124. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/column-count-mismatch.md +21 -0
  125. sqlty-0.6.0/src/sqlty/rules/duplicate-alias.md +52 -0
  126. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/dynamic-query.md +19 -0
  127. sqlty-0.6.0/src/sqlty/rules/extra-param.md +53 -0
  128. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/fanout-aggregate.md +3 -1
  129. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/param-count-mismatch.md +9 -5
  130. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/param-type-mismatch.md +9 -6
  131. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/params-type-mismatch.md +1 -0
  132. sqlty-0.6.0/src/sqlty/rules/unknown-database.md +30 -0
  133. {sqlty-0.4.0 → sqlty-0.6.0}/LICENSE +0 -0
  134. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-ext/build.rs +0 -0
  135. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-lsp/Cargo.toml +0 -0
  136. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-lsp/src/completion.rs +0 -0
  137. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-lsp/src/highlight.rs +0 -0
  138. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-lsp/src/hover.rs +0 -0
  139. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-lsp/src/text.rs +0 -0
  140. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-lsp/src/uri.rs +0 -0
  141. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-python/clippy.toml +0 -0
  142. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-python/src/edit.rs +0 -0
  143. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-python/src/fixer.rs +0 -0
  144. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-python/src/locate.rs +0 -0
  145. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-python/src/options.rs +0 -0
  146. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-python/src/template.rs +0 -0
  147. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-python/src/tokens.rs +0 -0
  148. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/Cargo.toml +0 -0
  149. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/build.rs +0 -0
  150. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/clippy.toml +0 -0
  151. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/README.md +0 -0
  152. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/common/aggregates.inference.toml +0 -0
  153. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/common/arithmetic.inference.toml +0 -0
  154. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/common/comparison.inference.toml +0 -0
  155. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/common/concat.inference.toml +0 -0
  156. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/common/conditional.inference.toml +0 -0
  157. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/common/datetime.inference.toml +0 -0
  158. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/common/json.inference.toml +0 -0
  159. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/common/math.inference.toml +0 -0
  160. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/common/strings.inference.toml +0 -0
  161. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/common/window.inference.toml +0 -0
  162. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/compile.rs +0 -0
  163. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/dialects.toml +0 -0
  164. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/mysql/aggregates.inference.toml +0 -0
  165. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/mysql/arithmetic.inference.toml +0 -0
  166. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/mysql/bits.inference.toml +0 -0
  167. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/mysql/comparison.inference.toml +0 -0
  168. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/mysql/concat.inference.toml +0 -0
  169. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/mysql/conditional.inference.toml +0 -0
  170. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/mysql/datetime.inference.toml +0 -0
  171. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/mysql/encryption.inference.toml +0 -0
  172. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/mysql/json.inference.toml +0 -0
  173. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/mysql/math.inference.toml +0 -0
  174. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/mysql/misc.inference.toml +0 -0
  175. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/mysql/spatial.inference.toml +0 -0
  176. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/mysql/strings.inference.toml +0 -0
  177. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/mysql/system.inference.toml +0 -0
  178. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/admin.inference.toml +0 -0
  179. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/aggregates.inference.toml +0 -0
  180. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/arithmetic.inference.toml +0 -0
  181. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/arrays.inference.toml +0 -0
  182. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/binary.inference.toml +0 -0
  183. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/comparison.inference.toml +0 -0
  184. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/concat.inference.toml +0 -0
  185. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/conditional.inference.toml +0 -0
  186. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/datetime.inference.toml +0 -0
  187. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/enums.inference.toml +0 -0
  188. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/events.inference.toml +0 -0
  189. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/extensions.inference.toml +0 -0
  190. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/formatting.inference.toml +0 -0
  191. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/geometry.inference.toml +0 -0
  192. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/json.inference.toml +0 -0
  193. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/math.inference.toml +0 -0
  194. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/merge.inference.toml +0 -0
  195. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/network.inference.toml +0 -0
  196. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/ranges.inference.toml +0 -0
  197. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/rows.inference.toml +0 -0
  198. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/sequences.inference.toml +0 -0
  199. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/series.inference.toml +0 -0
  200. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/strings.inference.toml +0 -0
  201. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/system.inference.toml +0 -0
  202. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/textsearch.inference.toml +0 -0
  203. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/uuid.inference.toml +0 -0
  204. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/postgres/xml.inference.toml +0 -0
  205. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/sqlite/aggregates.inference.toml +0 -0
  206. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/sqlite/arithmetic.inference.toml +0 -0
  207. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/sqlite/datetime.inference.toml +0 -0
  208. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/sqlite/fts.inference.toml +0 -0
  209. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/sqlite/json.inference.toml +0 -0
  210. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/sqlite/math.inference.toml +0 -0
  211. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/sqlite/scalar.inference.toml +0 -0
  212. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/rules/sqlite/strings.inference.toml +0 -0
  213. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/grouping.rs +0 -0
  214. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/hashing.rs +0 -0
  215. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/inference.rs +0 -0
  216. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/literals.rs +0 -0
  217. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/merged_star.rs +0 -0
  218. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/names.rs +0 -0
  219. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/pg_record_functions.rs +0 -0
  220. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/planner_hints.sql +0 -0
  221. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/query.rs +0 -0
  222. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/references.rs +0 -0
  223. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/registry.rs +0 -0
  224. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__dml__tests__returning_columns_in_queries.snap +0 -0
  225. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__expr__tests__arrays_and_subscripts.snap +0 -0
  226. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__expr__tests__case_expressions.snap +0 -0
  227. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__expr__tests__casts.snap +0 -0
  228. {sqlty-0.4.0 → 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
  229. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__expr__tests__composite_fields_and_json_access.snap +0 -0
  230. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__expr__tests__literals_and_unary_operators.snap +0 -0
  231. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__expr__tests__misc_expressions.snap +0 -0
  232. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__expr__tests__mysql_and_sqlite_expressions.snap +0 -0
  233. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__functions__tests__function_availability_differs_by_dialect.snap +0 -0
  234. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__functions__tests__return_types_follow_the_argument.snap +0 -0
  235. {sqlty-0.4.0 → 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
  236. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__literals__tests__value_sets_flow_through_expressions.snap +0 -0
  237. {sqlty-0.4.0 → 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
  238. {sqlty-0.4.0 → 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
  239. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__operators__tests__binary_operators_in_queries.snap +0 -0
  240. {sqlty-0.4.0 → 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
  241. {sqlty-0.4.0 → 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
  242. {sqlty-0.4.0 → 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
  243. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__query__tests__ctes.snap +0 -0
  244. {sqlty-0.4.0 → 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
  245. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__query__tests__recursive_ctes_settle_nullability.snap +0 -0
  246. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__query__tests__set_operations_combine_nullability.snap +0 -0
  247. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__query__tests__set_operations_unify_types.snap +0 -0
  248. {sqlty-0.4.0 → 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
  249. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__query__tests__unsupported_query_forms_are_explained.snap +0 -0
  250. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__query__tests__values_lists.snap +0 -0
  251. {sqlty-0.4.0 → 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
  252. {sqlty-0.4.0 → 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
  253. {sqlty-0.4.0 → 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
  254. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__resolve__tests__nullability_comes_from_the_declaration.snap +0 -0
  255. {sqlty-0.4.0 → 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
  256. {sqlty-0.4.0 → 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
  257. {sqlty-0.4.0 → 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
  258. {sqlty-0.4.0 → 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
  259. {sqlty-0.4.0 → 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
  260. {sqlty-0.4.0 → 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
  261. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__scope__tests__derived_tables_ctes_and_views.snap +0 -0
  262. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__scope__tests__nullability_follows_the_join_kind.snap +0 -0
  263. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__scope__tests__opaque_sources_explain_themselves.snap +0 -0
  264. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__scope__tests__star_expansion_over_joins.snap +0 -0
  265. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__scope__tests__table_names_fold_by_dialect.snap +0 -0
  266. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/suggest.rs +0 -0
  267. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/table_functions.rs +0 -0
  268. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/text_names.rs +0 -0
  269. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/tokens.rs +0 -0
  270. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/analyzer/typed.rs +0 -0
  271. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/catalog/builtin_catalog.sql +0 -0
  272. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/catalog/columns.rs +0 -0
  273. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/catalog/index.rs +0 -0
  274. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/catalog/joins.rs +0 -0
  275. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/catalog/names.rs +0 -0
  276. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/catalog/pg_catalog_views.sql +0 -0
  277. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/highlight.rs +0 -0
  278. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/src/json.rs +0 -0
  279. {sqlty-0.4.0 → sqlty-0.6.0}/rust/crates/sqlty-sql/tests/inference_compiler.rs +0 -0
  280. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/__main__.py +0 -0
  281. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/_decode.py +0 -0
  282. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/_gitignore.py +0 -0
  283. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/_json_shape.py +0 -0
  284. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/_params.py +0 -0
  285. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/_queries.py +0 -0
  286. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/_sarif.py +0 -0
  287. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/_snapshot.py +0 -0
  288. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/_type_extractor/__init__.py +0 -0
  289. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/_type_extractor/compat.py +0 -0
  290. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/_type_extractor/generic.py +0 -0
  291. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/_type_extractor/pydantic_types.py +0 -0
  292. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/_type_extractor/stdlib.py +0 -0
  293. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/_type_extractor/subtype.py +0 -0
  294. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/drivers/psycopg.py +0 -0
  295. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/magic.py +0 -0
  296. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/py.typed +0 -0
  297. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/ambiguous-column.md +0 -0
  298. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/chasm-join.md +0 -0
  299. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/column-name-mismatch.md +0 -0
  300. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/column-type-mismatch.md +0 -0
  301. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/entity-mismatch.md +0 -0
  302. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/fstring-skipped.md +0 -0
  303. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/inline-sql-comment.md +0 -0
  304. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/insert-missing-column.md +0 -0
  305. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/insert-value-count.md +0 -0
  306. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/json-shape-mismatch.md +0 -0
  307. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/literal-mismatch.md +0 -0
  308. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/mysql-sql-marker.md +0 -0
  309. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/narrow-type.md +0 -0
  310. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/nullable-mismatch.md +0 -0
  311. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/redundant-literal.md +0 -0
  312. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/redundant-optional.md +0 -0
  313. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/select-star-no-schema.md +0 -0
  314. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/select-star.md +0 -0
  315. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/sqruff.md +0 -0
  316. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/stale-rewrite.md +0 -0
  317. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/stale-type.md +0 -0
  318. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/tstring-skipped.md +0 -0
  319. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/typeddict-inheritance.md +0 -0
  320. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/typeddict-key-mismatch.md +0 -0
  321. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/unchecked-query.md +0 -0
  322. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/ungrouped-column.md +0 -0
  323. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/unknown-column.md +0 -0
  324. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/unknown-function.md +0 -0
  325. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/unknown-table.md +0 -0
  326. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/unknown-type.md +0 -0
  327. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/unparsed-query.md +0 -0
  328. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/unproven-join.md +0 -0
  329. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/unsupported-syntax.md +0 -0
  330. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/untyped-query.md +0 -0
  331. {sqlty-0.4.0 → sqlty-0.6.0}/src/sqlty/rules/unused-ignore.md +0 -0
  332. {sqlty-0.4.0 → 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.4.0
3
+ Version: 0.6.0
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Environment :: Console
6
6
  Classifier: Intended Audience :: Developers
@@ -12,6 +12,7 @@ Classifier: Programming Language :: Rust
12
12
  Classifier: Programming Language :: SQL
13
13
  Classifier: Topic :: Software Development :: Code Generators
14
14
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
15
+ Classifier: Topic :: Software Development :: Quality Assurance
15
16
  Classifier: Topic :: Database
16
17
  Classifier: Typing :: Typed
17
18
  Requires-Dist: pathspec>=0.12.1
@@ -19,15 +20,15 @@ Requires-Dist: typing-extensions>=4.15.0 ; python_full_version < '3.15'
19
20
  Requires-Dist: psycopg>=3.2.12 ; extra == 'psycopg'
20
21
  Provides-Extra: psycopg
21
22
  License-File: LICENSE
22
- Summary: Type-safe SQL queries for Python
23
- Keywords: sql,type-hints,mypy,type-safety,static-analysis,code-generation
23
+ Summary: Type-safe raw SQL for Python: row and parameter types inferred from your SQL and schema, no ORM or database needed
24
+ Keywords: sql,raw-sql,type-safety,type-checking,type-hints,static-analysis,linter,mypy,pyright,ty,postgresql,sqlite,mysql,psycopg,migrations,code-generation,orm-alternative
24
25
  Author-email: Jiri Kuncar <jiri.kuncar@gmail.com>
25
26
  License-Expression: MIT
26
27
  Requires-Python: >=3.14
27
28
  Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
28
29
  Project-URL: Changelog, https://github.com/jirikuncar/sqlty/releases
29
- Project-URL: Documentation, https://jirikuncar.github.io/sqlty/
30
- Project-URL: Homepage, https://github.com/jirikuncar/sqlty
30
+ Project-URL: Documentation, https://sqlty.kuncar.dev/
31
+ Project-URL: Homepage, https://sqlty.kuncar.dev/
31
32
  Project-URL: Issues, https://github.com/jirikuncar/sqlty/issues
32
33
  Project-URL: Repository, https://github.com/jirikuncar/sqlty
33
34
 
@@ -56,13 +57,14 @@ migration that changes a column is caught in review, not in production.
56
57
  (<a href="https://github.com/jirikuncar/sqlty/blob/main/docs/assets/demo.tape">view source</a>)
57
58
  </p>
58
59
 
59
- **Documentation: [jirikuncar.github.io/sqlty](https://jirikuncar.github.io/sqlty/)**
60
+ **Documentation: [sqlty.kuncar.dev](https://sqlty.kuncar.dev/)** ·
61
+ **Try it in your browser: [Playground](https://sqlty.kuncar.dev/playground/)**
60
62
 
61
63
  **Fits if** you write SQL as string literals on Python 3.14+, against
62
64
  PostgreSQL, SQLite or MySQL, with a schema dump or SQL migrations in the
63
65
  repository. Rows are typed end to end with psycopg 3; with other drivers sqlty
64
66
  checks the query and its parameters, and you annotate what the cursor returns
65
- ([Drivers](https://jirikuncar.github.io/sqlty/guide/drivers-and-orms/)).
67
+ ([Drivers](https://sqlty.kuncar.dev/guide/drivers-and-orms/)).
66
68
 
67
69
  > **Beta.** APIs and configuration may change before 1.0. Feedback welcome in
68
70
  > [GitHub Issues](https://github.com/jirikuncar/sqlty/issues).
@@ -91,6 +93,8 @@ query = "--sql\nSELECT id, name, email FROM users"
91
93
  # rewritten: query = SQL[tuple[int, str, str]]("--sql\nSELECT id, name, email FROM users")
92
94
  ```
93
95
 
96
+ [Open in playground](https://sqlty.kuncar.dev/playground/#eJw9jcsKwjAURH_lkpWFdiN0o7iI5arFPiRGsZBNSWMN9GGbdiHiv9tQdDGbM8OcNzHt2EtFVkC6UfUv2IAgnme6SojmjBEGHHThQpPXygVV57qCHUtjGI3qjSCiIS4QIx9TZU8ChpQjcLqNcN7AQhcQJhz3yODEwpiyDI6YzZ_A8cYhSadcouhnuFIWHChbLH3f-ZfO2qoKnVdKDtb1bM1Q9spYLNvmrktLyecL_GI_Gw)
97
+
94
98
  `SQL[T]` is a `str` subclass, so the query still runs anywhere a string does,
95
99
  and mypy, pyright and ty see `T`. Without a schema, casts such as `id::INTEGER`
96
100
  type the columns; a query with neither stays as it is. With a space instead of
@@ -120,14 +124,16 @@ from sqlty import SQL
120
124
  query = SQL[tuple[int, str]]("--sql\nSELECT id, email FROM users")
121
125
  ```
122
126
 
127
+ [Open in playground](https://sqlty.kuncar.dev/playground/#eJw1jUsOgjAURbfy0pEksAGNAyRPYwQ_pQMJdWCgYBNooS0DYty7NMbh_Z37JlZPphJkDaQxugc7dm4G2Q_aOMhvKVdcjZMwM2y9LN00dKKUyoVgnXk8VpxE0TLiXOWYYsJA1iGI_ik72NNLBpMVxnIScEVCILZ6LZl_SyjGDIHFuxR_JVjJGo5nhgekcKXHLKYFnLD44xjeWbDxlFo-O1E5jxm0da0R1tuVVo1svUs-X3IeRJA)
128
+
123
129
  `sqlty check --fix .` updates the type, and your type checker finds every
124
130
  caller that now needs a `None` check. `narrow-type` is an error, so CI fails on
125
131
  it; an annotation that is only wider than the rows, such as `str | None` for a
126
132
  column made `NOT NULL`, is a `stale-type` warning
127
- ([CI](https://jirikuncar.github.io/sqlty/recipes/ci/)). For rolling deploys,
133
+ ([CI](https://sqlty.kuncar.dev/recipes/ci/)). For rolling deploys,
128
134
  `sqlty breaking --against origin/main` exits 1 when old code breaks on the new
129
135
  schema or new code on the old one
130
- ([Breaking schema changes](https://jirikuncar.github.io/sqlty/guide/breaking-changes/)).
136
+ ([Breaking schema changes](https://sqlty.kuncar.dev/guide/breaking-changes/)).
131
137
 
132
138
  ### A row type that doesn't match its query
133
139
 
@@ -144,7 +150,7 @@ query = SQL[User]("--sql\nSELECT id::INTEGER, name::TEXT FROM users")
144
150
  ```
145
151
 
146
152
  `TypedDict`, `NamedTuple`, dataclasses and Pydantic models are all checked
147
- ([Row types](https://jirikuncar.github.io/sqlty/guide/row-types/)).
153
+ ([Row types](https://sqlty.kuncar.dev/guide/row-types/)).
148
154
 
149
155
  ### Wrong parameters, misspelled columns
150
156
 
@@ -176,11 +182,11 @@ conn.execute(SQL[tuple[str | None]]("--sql\nSELECT email FROM users WHERE id = ?
176
182
  conn.execute("--sql\nSELECT emial FROM users")
177
183
  ```
178
184
 
179
- `?`, `$1`, `%s` and `:name` placeholders are checked on sqlite3, psycopg and
180
- asyncpg calls ([Parameters](https://jirikuncar.github.io/sqlty/guide/parameters/)).
185
+ `?`, `$1`, `%s` and `:name` placeholders are checked on sqlite3, aiosqlite,
186
+ psycopg and asyncpg calls ([Parameters](https://sqlty.kuncar.dev/guide/parameters/)).
181
187
  These are the mistakes coding agents make: every problem is one
182
188
  `file:line: [rule] message` line and a non-zero exit code they can act on, and
183
- the [sqlty skills](https://jirikuncar.github.io/sqlty/recipes/agents/) teach
189
+ the [sqlty skills](https://sqlty.kuncar.dev/recipes/agents/) teach
184
190
  them the conventions. In Claude Code, `/plugin install sqlty --marketplace jirikuncar/sqlty`
185
191
  installs them.
186
192
 
@@ -196,13 +202,13 @@ sqlty strip . # undo: back to plain strings
196
202
 
197
203
  `rewrite` and `strip` only touch the wrapper, never the SQL, so you can adopt
198
204
  sqlty one module at a time and back out. New project:
199
- [Quickstart](https://jirikuncar.github.io/sqlty/quickstart/). Existing codebase:
200
- [Migration](https://jirikuncar.github.io/sqlty/recipes/migration/), starting
205
+ [Quickstart](https://sqlty.kuncar.dev/quickstart/). Existing codebase:
206
+ [Migration](https://sqlty.kuncar.dev/recipes/migration/), starting
201
207
  with `pg_dump --schema-only app > schema.sql`. In the editor:
202
- [VS Code](https://jirikuncar.github.io/sqlty/recipes/vscode/).
208
+ [VS Code](https://sqlty.kuncar.dev/recipes/vscode/).
203
209
 
204
210
  Not a fit for ORMs, SQL built at runtime, or runtime validation;
205
- [Why SQLTy?](https://jirikuncar.github.io/sqlty/motivation/) compares it with
211
+ [Why SQLTy?](https://sqlty.kuncar.dev/motivation/) compares it with
206
212
  sqlc, sqlx, PgTyped and others.
207
213
 
208
214
  ## About
@@ -213,6 +219,6 @@ developed with AI coding agents, mainly Claude Code; every change is reviewed by
213
219
  a maintainer (see the
214
220
  [AI-assisted contributions](https://github.com/jirikuncar/sqlty/blob/main/CONTRIBUTING.md#ai-assisted-contributions)
215
221
  policy). [Contributing](https://github.com/jirikuncar/sqlty/blob/main/CONTRIBUTING.md) ·
216
- [Credits](https://jirikuncar.github.io/sqlty/credits/) ·
222
+ [Credits](https://sqlty.kuncar.dev/credits/) ·
217
223
  MIT [License](https://github.com/jirikuncar/sqlty/blob/main/LICENSE).
218
224
 
@@ -23,13 +23,14 @@ 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: [jirikuncar.github.io/sqlty](https://jirikuncar.github.io/sqlty/)**
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
30
31
  repository. Rows are typed end to end with psycopg 3; with other drivers sqlty
31
32
  checks the query and its parameters, and you annotate what the cursor returns
32
- ([Drivers](https://jirikuncar.github.io/sqlty/guide/drivers-and-orms/)).
33
+ ([Drivers](https://sqlty.kuncar.dev/guide/drivers-and-orms/)).
33
34
 
34
35
  > **Beta.** APIs and configuration may change before 1.0. Feedback welcome in
35
36
  > [GitHub Issues](https://github.com/jirikuncar/sqlty/issues).
@@ -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,14 +90,16 @@ 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
93
98
  column made `NOT NULL`, is a `stale-type` warning
94
- ([CI](https://jirikuncar.github.io/sqlty/recipes/ci/)). For rolling deploys,
99
+ ([CI](https://sqlty.kuncar.dev/recipes/ci/)). For rolling deploys,
95
100
  `sqlty breaking --against origin/main` exits 1 when old code breaks on the new
96
101
  schema or new code on the old one
97
- ([Breaking schema changes](https://jirikuncar.github.io/sqlty/guide/breaking-changes/)).
102
+ ([Breaking schema changes](https://sqlty.kuncar.dev/guide/breaking-changes/)).
98
103
 
99
104
  ### A row type that doesn't match its query
100
105
 
@@ -111,7 +116,7 @@ query = SQL[User]("--sql\nSELECT id::INTEGER, name::TEXT FROM users")
111
116
  ```
112
117
 
113
118
  `TypedDict`, `NamedTuple`, dataclasses and Pydantic models are all checked
114
- ([Row types](https://jirikuncar.github.io/sqlty/guide/row-types/)).
119
+ ([Row types](https://sqlty.kuncar.dev/guide/row-types/)).
115
120
 
116
121
  ### Wrong parameters, misspelled columns
117
122
 
@@ -143,11 +148,11 @@ conn.execute(SQL[tuple[str | None]]("--sql\nSELECT email FROM users WHERE id = ?
143
148
  conn.execute("--sql\nSELECT emial FROM users")
144
149
  ```
145
150
 
146
- `?`, `$1`, `%s` and `:name` placeholders are checked on sqlite3, psycopg and
147
- asyncpg calls ([Parameters](https://jirikuncar.github.io/sqlty/guide/parameters/)).
151
+ `?`, `$1`, `%s` and `:name` placeholders are checked on sqlite3, aiosqlite,
152
+ psycopg and asyncpg calls ([Parameters](https://sqlty.kuncar.dev/guide/parameters/)).
148
153
  These are the mistakes coding agents make: every problem is one
149
154
  `file:line: [rule] message` line and a non-zero exit code they can act on, and
150
- the [sqlty skills](https://jirikuncar.github.io/sqlty/recipes/agents/) teach
155
+ the [sqlty skills](https://sqlty.kuncar.dev/recipes/agents/) teach
151
156
  them the conventions. In Claude Code, `/plugin install sqlty --marketplace jirikuncar/sqlty`
152
157
  installs them.
153
158
 
@@ -163,13 +168,13 @@ sqlty strip . # undo: back to plain strings
163
168
 
164
169
  `rewrite` and `strip` only touch the wrapper, never the SQL, so you can adopt
165
170
  sqlty one module at a time and back out. New project:
166
- [Quickstart](https://jirikuncar.github.io/sqlty/quickstart/). Existing codebase:
167
- [Migration](https://jirikuncar.github.io/sqlty/recipes/migration/), starting
171
+ [Quickstart](https://sqlty.kuncar.dev/quickstart/). Existing codebase:
172
+ [Migration](https://sqlty.kuncar.dev/recipes/migration/), starting
168
173
  with `pg_dump --schema-only app > schema.sql`. In the editor:
169
- [VS Code](https://jirikuncar.github.io/sqlty/recipes/vscode/).
174
+ [VS Code](https://sqlty.kuncar.dev/recipes/vscode/).
170
175
 
171
176
  Not a fit for ORMs, SQL built at runtime, or runtime validation;
172
- [Why SQLTy?](https://jirikuncar.github.io/sqlty/motivation/) compares it with
177
+ [Why SQLTy?](https://sqlty.kuncar.dev/motivation/) compares it with
173
178
  sqlc, sqlx, PgTyped and others.
174
179
 
175
180
  ## About
@@ -180,5 +185,5 @@ developed with AI coding agents, mainly Claude Code; every change is reviewed by
180
185
  a maintainer (see the
181
186
  [AI-assisted contributions](https://github.com/jirikuncar/sqlty/blob/main/CONTRIBUTING.md#ai-assisted-contributions)
182
187
  policy). [Contributing](https://github.com/jirikuncar/sqlty/blob/main/CONTRIBUTING.md) ·
183
- [Credits](https://jirikuncar.github.io/sqlty/credits/) ·
188
+ [Credits](https://sqlty.kuncar.dev/credits/) ·
184
189
  MIT [License](https://github.com/jirikuncar/sqlty/blob/main/LICENSE).
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  name = "sqlty"
3
3
  dynamic = ["version"]
4
- description = "Type-safe SQL queries for Python"
4
+ description = "Type-safe raw SQL for Python: row and parameter types inferred from your SQL and schema, no ORM or database needed"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.14"
7
7
  license = "MIT"
@@ -9,11 +9,22 @@ license-files = ["LICENSE"]
9
9
  authors = [{ name = "Jiri Kuncar", email = "jiri.kuncar@gmail.com" }]
10
10
  keywords = [
11
11
  "sql",
12
- "type-hints",
13
- "mypy",
12
+ "raw-sql",
14
13
  "type-safety",
14
+ "type-checking",
15
+ "type-hints",
15
16
  "static-analysis",
17
+ "linter",
18
+ "mypy",
19
+ "pyright",
20
+ "ty",
21
+ "postgresql",
22
+ "sqlite",
23
+ "mysql",
24
+ "psycopg",
25
+ "migrations",
16
26
  "code-generation",
27
+ "orm-alternative",
17
28
  ]
18
29
  classifiers = [
19
30
  "Development Status :: 4 - Beta",
@@ -27,6 +38,7 @@ classifiers = [
27
38
  "Programming Language :: SQL",
28
39
  "Topic :: Software Development :: Code Generators",
29
40
  "Topic :: Software Development :: Libraries :: Python Modules",
41
+ "Topic :: Software Development :: Quality Assurance",
30
42
  "Topic :: Database",
31
43
  "Typing :: Typed",
32
44
  ]
@@ -36,8 +48,8 @@ dependencies = [
36
48
  ]
37
49
 
38
50
  [project.urls]
39
- Homepage = "https://github.com/jirikuncar/sqlty"
40
- Documentation = "https://jirikuncar.github.io/sqlty/"
51
+ Homepage = "https://sqlty.kuncar.dev/"
52
+ Documentation = "https://sqlty.kuncar.dev/"
41
53
  Repository = "https://github.com/jirikuncar/sqlty"
42
54
  Changelog = "https://github.com/jirikuncar/sqlty/releases"
43
55
  Issues = "https://github.com/jirikuncar/sqlty/issues"
@@ -45,11 +57,14 @@ Issues = "https://github.com/jirikuncar/sqlty/issues"
45
57
  [project.scripts]
46
58
  sqlty = "sqlty._cli:main"
47
59
 
60
+ [project.entry-points."pygments.lexers"]
61
+ sqlty = "sqlty.lexer:SQLTyLexer"
62
+
48
63
  [project.optional-dependencies]
49
64
  psycopg = ["psycopg>=3.2.12"]
50
65
 
51
66
  [build-system]
52
- requires = ["maturin>=1.12.1,<2.0"]
67
+ requires = ["maturin>=1.15,<2.0"]
53
68
  build-backend = "maturin"
54
69
 
55
70
  [tool.maturin]
@@ -67,7 +82,7 @@ include = ["src/sqlty_magic.pth", { path = "skills/**/*", format = "sdist" }]
67
82
  [dependency-groups]
68
83
  dev = [
69
84
  "inline-snapshot>=0.15.0",
70
- "maturin>=1.12.1,<2.0",
85
+ "maturin>=1.15,<2.0",
71
86
  "mypy>=2.4.0",
72
87
  "prek>=0.5.4",
73
88
  "pyright>=1.1.414",
@@ -83,11 +98,14 @@ dev = [
83
98
  "pydantic[email]>=2.14.1",
84
99
  "jsonschema>=4.26.0",
85
100
  "pytest-xdist>=3.8.0",
101
+ "types-pygments>=2.19",
86
102
  ]
87
103
  cli = ["rich>=15.0.0"]
88
104
  # Only the DuckDB type tests need it, and it has no wheel for every Python.
89
105
  duckdb = ["duckdb>=1.4.0"]
90
106
  psycopg = ["psycopg>=3.2.12"]
107
+ # The aiosqlite calls sqlty checks, run against aiosqlite (tests/test_aiosqlite.py).
108
+ aiosqlite = ["aiosqlite>=0.22.1"]
91
109
  fuzz = [
92
110
  "hypothesis>=6.140",
93
111
  ]
@@ -112,7 +130,7 @@ markers = [
112
130
  concurrency = ["multiprocessing"]
113
131
  parallel = true
114
132
  sigterm = true
115
- patch = ["subprocess"]
133
+ patch = ["subprocess", "_exit"]
116
134
  omit = ["tests/*", "examples/*"]
117
135
 
118
136
  [tool.coverage.paths]