sqlty 0.2.2__tar.gz → 0.3.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 (275) hide show
  1. {sqlty-0.2.2 → sqlty-0.3.0}/PKG-INFO +3 -2
  2. {sqlty-0.2.2 → sqlty-0.3.0}/README.md +2 -1
  3. {sqlty-0.2.2 → sqlty-0.3.0}/pyproject.toml +3 -2
  4. {sqlty-0.2.2 → sqlty-0.3.0}/rust/Cargo.lock +366 -17
  5. {sqlty-0.2.2 → sqlty-0.3.0}/rust/Cargo.toml +3 -2
  6. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-ext/Cargo.toml +1 -0
  7. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-ext/src/lib.rs +24 -5
  8. sqlty-0.3.0/rust/crates/sqlty-ext/src/server.rs +131 -0
  9. sqlty-0.3.0/rust/crates/sqlty-lsp/Cargo.toml +18 -0
  10. sqlty-0.3.0/rust/crates/sqlty-lsp/src/actions.rs +103 -0
  11. sqlty-0.3.0/rust/crates/sqlty-lsp/src/lib.rs +422 -0
  12. sqlty-0.3.0/rust/crates/sqlty-lsp/src/tests.rs +436 -0
  13. sqlty-0.3.0/rust/crates/sqlty-lsp/src/text.rs +134 -0
  14. sqlty-0.3.0/rust/crates/sqlty-lsp/src/worker.rs +200 -0
  15. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-python/src/checker.rs +155 -42
  16. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-python/src/fixer.rs +5 -2
  17. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-python/src/rewriter.rs +76 -26
  18. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-python/src/rules.rs +6 -1
  19. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-python/src/tokens.rs +49 -2
  20. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/api.rs +33 -3
  21. sqlty-0.3.0/rust/crates/sqlty-sql/src/analyzer/dialect.rs +348 -0
  22. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/expr.rs +14 -0
  23. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/input.rs +43 -6
  24. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/mod.rs +1 -0
  25. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/preprocess.rs +16 -5
  26. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/resolve.rs +58 -2
  27. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/scope.rs +7 -0
  28. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__dml__tests__returning_columns_in_queries.snap +1 -1
  29. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__resolve__tests__cte_columns_are_resolved_like_tables.snap +1 -1
  30. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__resolve__tests__quoted_names_keep_their_case_in_postgres_only.snap +2 -2
  31. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__resolve__tests__system_columns_exist_without_being_declared.snap +1 -1
  32. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__resolve__tests__unknown_names_say_what_is_missing.snap +2 -2
  33. sqlty-0.3.0/rust/crates/sqlty-sql/src/analyzer/suggest.rs +82 -0
  34. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/tests.rs +60 -0
  35. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/diagnostics.rs +65 -10
  36. {sqlty-0.2.2 → sqlty-0.3.0}/skills/sqlty/SKILL.md +1 -0
  37. {sqlty-0.2.2 → sqlty-0.3.0}/skills/sqlty-check/SKILL.md +38 -3
  38. {sqlty-0.2.2 → sqlty-0.3.0}/skills/sqlty-ci/SKILL.md +1 -1
  39. {sqlty-0.2.2 → sqlty-0.3.0}/skills/sqlty-rewrite/SKILL.md +26 -0
  40. sqlty-0.3.0/skills/sqlty-server/SKILL.md +101 -0
  41. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/__init__.py +29 -4
  42. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/_breaking.py +11 -4
  43. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/_check.py +276 -53
  44. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/_cli.py +153 -67
  45. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/_config.py +47 -12
  46. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/_core.pyi +7 -2
  47. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/_drivers.py +14 -2
  48. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/_helpers.py +100 -36
  49. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/_json_types.py +4 -0
  50. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/_lint.py +16 -2
  51. sqlty-0.3.0/src/sqlty/_lsp_breaking.py +148 -0
  52. sqlty-0.3.0/src/sqlty/_lsp_bridge.py +72 -0
  53. sqlty-0.3.0/src/sqlty/_param_types.py +141 -0
  54. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/_params.py +18 -0
  55. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/_psycopg.py +35 -1
  56. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/_snapshot.py +0 -3
  57. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/_source.py +64 -4
  58. sqlty-0.3.0/src/sqlty/_type_extractor/__init__.py +46 -0
  59. sqlty-0.3.0/src/sqlty/_type_extractor/_stdlib.py +2722 -0
  60. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/_type_extractor/ast_fields.py +129 -18
  61. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/_type_extractor/compat.py +4 -11
  62. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/_type_extractor/extract.py +35 -63
  63. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/_type_extractor/generic.py +13 -33
  64. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/_type_extractor/info.py +0 -8
  65. sqlty-0.3.0/src/sqlty/_type_extractor/pydantic_types.py +133 -0
  66. sqlty-0.3.0/src/sqlty/_type_extractor/stdlib.py +46 -0
  67. sqlty-0.3.0/src/sqlty/_type_extractor/symbols.py +87 -0
  68. sqlty-0.3.0/src/sqlty/_variants.py +856 -0
  69. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/core.py +50 -18
  70. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/drivers/psycopg.py +65 -19
  71. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/dynamic-query.md +4 -1
  72. sqlty-0.3.0/src/sqlty/rules/params-type-mismatch.md +64 -0
  73. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/unchecked-query.md +5 -0
  74. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/unknown-column.md +33 -1
  75. sqlty-0.2.2/rust/crates/sqlty-sql/src/analyzer/dialect.rs +0 -171
  76. sqlty-0.2.2/src/sqlty/_type_extractor/__init__.py +0 -51
  77. sqlty-0.2.2/src/sqlty/_type_extractor/sandbox.py +0 -385
  78. {sqlty-0.2.2 → sqlty-0.3.0}/LICENSE +0 -0
  79. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-ext/build.rs +0 -0
  80. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-python/Cargo.toml +0 -0
  81. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-python/src/edit.rs +0 -0
  82. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-python/src/lib.rs +0 -0
  83. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-python/src/options.rs +0 -0
  84. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-python/src/scan.rs +0 -0
  85. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-python/src/template.rs +0 -0
  86. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/Cargo.toml +0 -0
  87. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/build.rs +0 -0
  88. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/README.md +0 -0
  89. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/common/aggregates.inference.toml +0 -0
  90. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/common/arithmetic.inference.toml +0 -0
  91. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/common/comparison.inference.toml +0 -0
  92. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/common/concat.inference.toml +0 -0
  93. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/common/conditional.inference.toml +0 -0
  94. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/common/datetime.inference.toml +0 -0
  95. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/common/json.inference.toml +0 -0
  96. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/common/math.inference.toml +0 -0
  97. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/common/strings.inference.toml +0 -0
  98. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/common/window.inference.toml +0 -0
  99. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/compile.rs +0 -0
  100. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/dialects.toml +0 -0
  101. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/mysql/aggregates.inference.toml +0 -0
  102. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/mysql/arithmetic.inference.toml +0 -0
  103. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/mysql/bits.inference.toml +0 -0
  104. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/mysql/comparison.inference.toml +0 -0
  105. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/mysql/concat.inference.toml +0 -0
  106. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/mysql/conditional.inference.toml +0 -0
  107. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/mysql/datetime.inference.toml +0 -0
  108. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/mysql/encryption.inference.toml +0 -0
  109. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/mysql/json.inference.toml +0 -0
  110. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/mysql/math.inference.toml +0 -0
  111. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/mysql/misc.inference.toml +0 -0
  112. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/mysql/spatial.inference.toml +0 -0
  113. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/mysql/strings.inference.toml +0 -0
  114. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/mysql/system.inference.toml +0 -0
  115. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/postgres/admin.inference.toml +0 -0
  116. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/postgres/aggregates.inference.toml +0 -0
  117. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/postgres/arithmetic.inference.toml +0 -0
  118. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/postgres/arrays.inference.toml +0 -0
  119. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/postgres/binary.inference.toml +0 -0
  120. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/postgres/comparison.inference.toml +0 -0
  121. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/postgres/concat.inference.toml +0 -0
  122. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/postgres/conditional.inference.toml +0 -0
  123. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/postgres/datetime.inference.toml +0 -0
  124. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/postgres/enums.inference.toml +0 -0
  125. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/postgres/events.inference.toml +0 -0
  126. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/postgres/extensions.inference.toml +0 -0
  127. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/postgres/formatting.inference.toml +0 -0
  128. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/postgres/geometry.inference.toml +0 -0
  129. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/postgres/json.inference.toml +0 -0
  130. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/postgres/math.inference.toml +0 -0
  131. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/postgres/merge.inference.toml +0 -0
  132. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/postgres/network.inference.toml +0 -0
  133. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/postgres/ranges.inference.toml +0 -0
  134. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/postgres/rows.inference.toml +0 -0
  135. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/postgres/sequences.inference.toml +0 -0
  136. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/postgres/series.inference.toml +0 -0
  137. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/postgres/strings.inference.toml +0 -0
  138. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/postgres/system.inference.toml +0 -0
  139. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/postgres/textsearch.inference.toml +0 -0
  140. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/postgres/uuid.inference.toml +0 -0
  141. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/postgres/xml.inference.toml +0 -0
  142. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/sqlite/aggregates.inference.toml +0 -0
  143. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/sqlite/arithmetic.inference.toml +0 -0
  144. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/sqlite/bitwise.inference.toml +0 -0
  145. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/sqlite/datetime.inference.toml +0 -0
  146. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/sqlite/fts.inference.toml +0 -0
  147. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/sqlite/json.inference.toml +0 -0
  148. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/sqlite/math.inference.toml +0 -0
  149. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/sqlite/scalar.inference.toml +0 -0
  150. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/rules/sqlite/strings.inference.toml +0 -0
  151. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/dml.rs +0 -0
  152. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/explain.rs +0 -0
  153. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/functions.rs +0 -0
  154. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/grouping.rs +0 -0
  155. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/hashing.rs +0 -0
  156. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/inference.rs +0 -0
  157. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/json.rs +0 -0
  158. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/literals.rs +0 -0
  159. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/memo.rs +0 -0
  160. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/merged_star.rs +0 -0
  161. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/names.rs +0 -0
  162. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/narrowing.rs +0 -0
  163. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/nullability.rs +0 -0
  164. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/operators.rs +0 -0
  165. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/params.rs +0 -0
  166. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/pg_record_functions.rs +0 -0
  167. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/planner_hints.sql +0 -0
  168. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/query.rs +0 -0
  169. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/references.rs +0 -0
  170. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/registry.rs +0 -0
  171. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/respell.rs +0 -0
  172. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__expr__tests__arrays_and_subscripts.snap +0 -0
  173. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__expr__tests__case_expressions.snap +0 -0
  174. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__expr__tests__casts.snap +0 -0
  175. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__expr__tests__casts_without_a_schema_do_not_complain.snap +0 -0
  176. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__expr__tests__composite_fields_and_json_access.snap +0 -0
  177. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__expr__tests__literals_and_unary_operators.snap +0 -0
  178. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__expr__tests__misc_expressions.snap +0 -0
  179. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__expr__tests__mysql_and_sqlite_expressions.snap +0 -0
  180. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__functions__tests__aggregates_in_postgres.snap +0 -0
  181. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__functions__tests__function_availability_differs_by_dialect.snap +0 -0
  182. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__functions__tests__return_types_follow_the_argument.snap +0 -0
  183. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__functions__tests__unknown_functions_are_untyped_and_explained.snap +0 -0
  184. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__literals__tests__value_sets_flow_through_expressions.snap +0 -0
  185. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__names__tests__column_names_follow_postgres_figure_colname.snap +0 -0
  186. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__operators__tests__arithmetic_promotes_numbers_and_types_date_math.snap +0 -0
  187. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__operators__tests__binary_operators_in_queries.snap +0 -0
  188. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__operators__tests__common_type_follows_postgres_union_rules.snap +0 -0
  189. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__operators__tests__division_differs_between_postgres_and_mysql.snap +0 -0
  190. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__query__tests__column_names_come_from_the_first_branch.snap +0 -0
  191. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__query__tests__ctes.snap +0 -0
  192. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__query__tests__dialects_name_and_type_the_same_query_differently.snap +0 -0
  193. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__query__tests__projection_forms.snap +0 -0
  194. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__query__tests__recursive_ctes_settle_nullability.snap +0 -0
  195. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__query__tests__set_operations_combine_nullability.snap +0 -0
  196. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__query__tests__set_operations_unify_types.snap +0 -0
  197. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__query__tests__statements_that_are_not_queries_have_no_columns.snap +0 -0
  198. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__query__tests__unsupported_query_forms_are_explained.snap +0 -0
  199. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__query__tests__values_lists.snap +0 -0
  200. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__resolve__tests__ambiguous_names_are_reported_once_per_query.snap +0 -0
  201. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__resolve__tests__names_are_not_judged_without_a_schema.snap +0 -0
  202. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__resolve__tests__nullability_comes_from_the_declaration.snap +0 -0
  203. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__resolve__tests__star_over_unreadable_sources_names_the_reason.snap +0 -0
  204. {sqlty-0.2.2 → sqlty-0.3.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
  205. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__scope__tests__correlated_subqueries_see_the_outer_scope.snap +0 -0
  206. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__scope__tests__derived_tables_ctes_and_views.snap +0 -0
  207. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__scope__tests__nullability_follows_the_join_kind.snap +0 -0
  208. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__scope__tests__opaque_sources_explain_themselves.snap +0 -0
  209. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__scope__tests__star_expansion_over_joins.snap +0 -0
  210. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/snapshots/sqlty_sql__analyzer__scope__tests__table_names_fold_by_dialect.snap +0 -0
  211. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/sql_type.rs +0 -0
  212. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/star_expand.rs +0 -0
  213. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/table_functions.rs +0 -0
  214. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/test_support.rs +0 -0
  215. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/text_names.rs +0 -0
  216. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/tokens.rs +0 -0
  217. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/analyzer/typed.rs +0 -0
  218. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/catalog/alter.rs +0 -0
  219. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/catalog/builtin_catalog.sql +0 -0
  220. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/catalog/columns.rs +0 -0
  221. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/catalog/loader.rs +0 -0
  222. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/catalog/mod.rs +0 -0
  223. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/catalog/names.rs +0 -0
  224. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/catalog/pg_catalog_views.sql +0 -0
  225. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/catalog/read.rs +0 -0
  226. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/catalog/resolve.rs +0 -0
  227. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/ddl.rs +0 -0
  228. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/json.rs +0 -0
  229. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/lib.rs +0 -0
  230. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/placeholders.rs +0 -0
  231. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/src/values.rs +0 -0
  232. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/tests/inference_compiler.rs +0 -0
  233. {sqlty-0.2.2 → sqlty-0.3.0}/rust/crates/sqlty-sql/tests/timing.rs +0 -0
  234. {sqlty-0.2.2 → sqlty-0.3.0}/skills/sqlty-adopt/SKILL.md +0 -0
  235. {sqlty-0.2.2 → sqlty-0.3.0}/skills/sqlty-breaking/SKILL.md +0 -0
  236. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/__main__.py +0 -0
  237. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/_decode.py +0 -0
  238. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/_gitignore.py +0 -0
  239. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/_json_shape.py +0 -0
  240. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/_type_extractor/subtype.py +0 -0
  241. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/magic.py +0 -0
  242. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/py.typed +0 -0
  243. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/ambiguous-column.md +0 -0
  244. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/column-count-mismatch.md +0 -0
  245. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/column-name-mismatch.md +0 -0
  246. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/column-type-mismatch.md +0 -0
  247. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/fstring-skipped.md +0 -0
  248. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/inline-sql-comment.md +0 -0
  249. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/insert-missing-column.md +0 -0
  250. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/insert-value-count.md +0 -0
  251. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/json-shape-mismatch.md +0 -0
  252. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/literal-mismatch.md +0 -0
  253. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/mysql-sql-marker.md +0 -0
  254. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/narrow-type.md +0 -0
  255. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/nullable-mismatch.md +0 -0
  256. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/param-count-mismatch.md +0 -0
  257. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/param-type-mismatch.md +0 -0
  258. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/redundant-literal.md +0 -0
  259. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/redundant-optional.md +0 -0
  260. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/select-star-no-schema.md +0 -0
  261. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/select-star.md +0 -0
  262. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/stale-rewrite.md +0 -0
  263. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/stale-type.md +0 -0
  264. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/tstring-skipped.md +0 -0
  265. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/typeddict-inheritance.md +0 -0
  266. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/typeddict-key-mismatch.md +0 -0
  267. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/ungrouped-column.md +0 -0
  268. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/unknown-function.md +0 -0
  269. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/unknown-table.md +0 -0
  270. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/unknown-type.md +0 -0
  271. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/unparsed-query.md +0 -0
  272. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/unsupported-syntax.md +0 -0
  273. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/untyped-query.md +0 -0
  274. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty/rules/unused-ignore.md +0 -0
  275. {sqlty-0.2.2 → sqlty-0.3.0}/src/sqlty_magic.pth +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlty
3
- Version: 0.2.2
3
+ Version: 0.3.0
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Environment :: Console
6
6
  Classifier: Intended Audience :: Developers
@@ -193,7 +193,8 @@ sqlty strip . # undo: back to plain strings
193
193
  sqlty one module at a time and back out. New project:
194
194
  [Quickstart](https://jirikuncar.github.io/sqlty/quickstart/). Existing codebase:
195
195
  [Migration](https://jirikuncar.github.io/sqlty/recipes/migration/), starting
196
- with `pg_dump --schema-only app > schema.sql`.
196
+ with `pg_dump --schema-only app > schema.sql`. In the editor:
197
+ [VS Code](https://jirikuncar.github.io/sqlty/recipes/vscode/).
197
198
 
198
199
  Not a fit for ORMs, SQL built at runtime, or runtime validation;
199
200
  [Why SQLTy?](https://jirikuncar.github.io/sqlty/motivation/) compares it with
@@ -160,7 +160,8 @@ sqlty strip . # undo: back to plain strings
160
160
  sqlty one module at a time and back out. New project:
161
161
  [Quickstart](https://jirikuncar.github.io/sqlty/quickstart/). Existing codebase:
162
162
  [Migration](https://jirikuncar.github.io/sqlty/recipes/migration/), starting
163
- with `pg_dump --schema-only app > schema.sql`.
163
+ with `pg_dump --schema-only app > schema.sql`. In the editor:
164
+ [VS Code](https://jirikuncar.github.io/sqlty/recipes/vscode/).
164
165
 
165
166
  Not a fit for ORMs, SQL built at runtime, or runtime validation;
166
167
  [Why SQLTy?](https://jirikuncar.github.io/sqlty/motivation/) compares it with
@@ -80,6 +80,7 @@ dev = [
80
80
  "rumdl>=0.3.0",
81
81
  "vale>=3.22.0.0",
82
82
  "zizmor>=1.31.1",
83
+ "pydantic[email]>=2.14.1",
83
84
  ]
84
85
  cli = ["rich>=15.0.0"]
85
86
  # Only the DuckDB type tests need it, and it has no wheel for every Python.
@@ -93,7 +94,7 @@ bench = [
93
94
  ]
94
95
 
95
96
  [tool.pytest.ini_options]
96
- addopts = ["-p", "tests._mdtest.plugin", "--cov-report=term-missing", "--cov-report=html", "-v"]
97
+ addopts = ["-p", "tests._mdtest.plugin", "-p", "tests._no_exec", "--cov-report=term-missing", "--cov-report=html", "-v"]
97
98
  pythonpath = ["."]
98
99
  testpaths = ["tests", "docs", "src/sqlty/rules", "README.md"]
99
100
  mdtest_paths = ["tests/mdtest", "docs", "src/sqlty/rules", "README.md", "skills"]
@@ -168,7 +169,7 @@ indent-style = "space"
168
169
  [tool.rumdl]
169
170
  # Long lines are tables and links; spaces in code spans show `--sql ` on purpose.
170
171
  disable = ["MD013", "MD038"]
171
- exclude = ["site", ".vale", ".github", "tests", "scripts/compat/reports", "PLAN-FUTURE.md", "rust/target", "proofs/.lake"]
172
+ exclude = ["site", ".vale", ".github", "tests", "scripts/compat/reports", "plans/2026-02-13-future.md", "rust/target", "proofs/.lake"]
172
173
 
173
174
  [tool.rumdl.per-file-ignores]
174
175
  # The demo GIF needs HTML for its width and centering.
@@ -47,6 +47,12 @@ version = "1.5.1"
47
47
  source = "registry+https://github.com/rust-lang/crates.io-index"
48
48
  checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
49
49
 
50
+ [[package]]
51
+ name = "bitflags"
52
+ version = "1.3.2"
53
+ source = "registry+https://github.com/rust-lang/crates.io-index"
54
+ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
55
+
50
56
  [[package]]
51
57
  name = "bitflags"
52
58
  version = "2.13.2"
@@ -171,12 +177,38 @@ dependencies = [
171
177
  "itertools",
172
178
  ]
173
179
 
180
+ [[package]]
181
+ name = "crossbeam-channel"
182
+ version = "0.5.17"
183
+ source = "registry+https://github.com/rust-lang/crates.io-index"
184
+ checksum = "98b0cc327b5bc766e7fda9c9260cc0fa81b43a8e240440422dff70788e3f9ef1"
185
+ dependencies = [
186
+ "crossbeam-utils",
187
+ ]
188
+
189
+ [[package]]
190
+ name = "crossbeam-utils"
191
+ version = "0.8.23"
192
+ source = "registry+https://github.com/rust-lang/crates.io-index"
193
+ checksum = "a31eee39dddec8330830986fcd7625edb5a24ec90ea038215273bbc3adb08ac6"
194
+
174
195
  [[package]]
175
196
  name = "crunchy"
176
197
  version = "0.2.4"
177
198
  source = "registry+https://github.com/rust-lang/crates.io-index"
178
199
  checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5"
179
200
 
201
+ [[package]]
202
+ name = "displaydoc"
203
+ version = "0.2.7"
204
+ source = "registry+https://github.com/rust-lang/crates.io-index"
205
+ checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8"
206
+ dependencies = [
207
+ "proc-macro2",
208
+ "quote",
209
+ "syn 3.0.7",
210
+ ]
211
+
180
212
  [[package]]
181
213
  name = "either"
182
214
  version = "1.19.0"
@@ -217,6 +249,15 @@ version = "0.1.14"
217
249
  source = "registry+https://github.com/rust-lang/crates.io-index"
218
250
  checksum = "aedcfb3409746eddb02b9e19ebda1c3394f759a152e48ee875a0844d1b955484"
219
251
 
252
+ [[package]]
253
+ name = "form_urlencoded"
254
+ version = "1.2.2"
255
+ source = "registry+https://github.com/rust-lang/crates.io-index"
256
+ checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
257
+ dependencies = [
258
+ "percent-encoding",
259
+ ]
260
+
220
261
  [[package]]
221
262
  name = "getrandom"
222
263
  version = "0.4.3"
@@ -251,6 +292,110 @@ version = "0.5.0"
251
292
  source = "registry+https://github.com/rust-lang/crates.io-index"
252
293
  checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
253
294
 
295
+ [[package]]
296
+ name = "icu_collections"
297
+ version = "2.4.0"
298
+ source = "registry+https://github.com/rust-lang/crates.io-index"
299
+ checksum = "fe090a42a0d3140fed8c63263ed1fecc02422cb2f4bfe55cd8de2de1b8e105dd"
300
+ dependencies = [
301
+ "displaydoc",
302
+ "potential_utf",
303
+ "utf8_iter",
304
+ "yoke",
305
+ "zerofrom",
306
+ "zerovec",
307
+ ]
308
+
309
+ [[package]]
310
+ name = "icu_locale_core"
311
+ version = "2.4.0"
312
+ source = "registry+https://github.com/rust-lang/crates.io-index"
313
+ checksum = "25d29b57c17c6528d0dc4c2141cfa2d08200465acb537a3909c8b9b8a4a984c0"
314
+ dependencies = [
315
+ "displaydoc",
316
+ "litemap",
317
+ "tinystr",
318
+ "writeable",
319
+ "zerovec",
320
+ ]
321
+
322
+ [[package]]
323
+ name = "icu_normalizer"
324
+ version = "2.4.0"
325
+ source = "registry+https://github.com/rust-lang/crates.io-index"
326
+ checksum = "404a3b8c486f205c87fe7f23ab6894d84a4ad76d6e4671ae1981ba7def87c599"
327
+ dependencies = [
328
+ "icu_collections",
329
+ "icu_normalizer_data",
330
+ "icu_properties",
331
+ "icu_provider",
332
+ "smallvec",
333
+ "zerovec",
334
+ ]
335
+
336
+ [[package]]
337
+ name = "icu_normalizer_data"
338
+ version = "2.4.0"
339
+ source = "registry+https://github.com/rust-lang/crates.io-index"
340
+ checksum = "20f0088bfb7441f7a37fa0c9e20cb1e9cba1cac6b9ce8cd2a6dc44294f8e8cbc"
341
+
342
+ [[package]]
343
+ name = "icu_properties"
344
+ version = "2.4.0"
345
+ source = "registry+https://github.com/rust-lang/crates.io-index"
346
+ checksum = "2ea83d991c56158f7cf898bf86436c1dfe7c07ee82fe88951f2695c9f37a379f"
347
+ dependencies = [
348
+ "displaydoc",
349
+ "icu_collections",
350
+ "icu_locale_core",
351
+ "icu_properties_data",
352
+ "icu_provider",
353
+ "zerotrie",
354
+ "zerovec",
355
+ ]
356
+
357
+ [[package]]
358
+ name = "icu_properties_data"
359
+ version = "2.4.0"
360
+ source = "registry+https://github.com/rust-lang/crates.io-index"
361
+ checksum = "b98f29af82d02b163fe50161388350e743bb3107cc8e8c2f7314cb505faddfcf"
362
+
363
+ [[package]]
364
+ name = "icu_provider"
365
+ version = "2.4.0"
366
+ source = "registry+https://github.com/rust-lang/crates.io-index"
367
+ checksum = "413099315636c588ee8f011190b329b971a09a8fae9d157e01dcae8379468514"
368
+ dependencies = [
369
+ "displaydoc",
370
+ "icu_locale_core",
371
+ "writeable",
372
+ "yoke",
373
+ "zerofrom",
374
+ "zerotrie",
375
+ "zerovec",
376
+ ]
377
+
378
+ [[package]]
379
+ name = "idna"
380
+ version = "1.1.0"
381
+ source = "registry+https://github.com/rust-lang/crates.io-index"
382
+ checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
383
+ dependencies = [
384
+ "idna_adapter",
385
+ "smallvec",
386
+ "utf8_iter",
387
+ ]
388
+
389
+ [[package]]
390
+ name = "idna_adapter"
391
+ version = "1.2.2"
392
+ source = "registry+https://github.com/rust-lang/crates.io-index"
393
+ checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714"
394
+ dependencies = [
395
+ "icu_normalizer",
396
+ "icu_properties",
397
+ ]
398
+
254
399
  [[package]]
255
400
  name = "indexmap"
256
401
  version = "2.14.2"
@@ -300,12 +445,44 @@ version = "0.11.0"
300
445
  source = "registry+https://github.com/rust-lang/crates.io-index"
301
446
  checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039"
302
447
 
448
+ [[package]]
449
+ name = "litemap"
450
+ version = "0.8.3"
451
+ source = "registry+https://github.com/rust-lang/crates.io-index"
452
+ checksum = "47d9d19d1d6efa0109d2f65ff4c85cddd50bd572e5a00127ab10987290bcefae"
453
+
303
454
  [[package]]
304
455
  name = "log"
305
456
  version = "0.4.29"
306
457
  source = "registry+https://github.com/rust-lang/crates.io-index"
307
458
  checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
308
459
 
460
+ [[package]]
461
+ name = "lsp-server"
462
+ version = "0.10.0"
463
+ source = "registry+https://github.com/rust-lang/crates.io-index"
464
+ checksum = "3ee25a31f2e571e426eef2896179450cafc7e2f5be00d8a93b1c2d21c0ff7656"
465
+ dependencies = [
466
+ "crossbeam-channel",
467
+ "log",
468
+ "serde",
469
+ "serde_derive",
470
+ "serde_json",
471
+ ]
472
+
473
+ [[package]]
474
+ name = "lsp-types"
475
+ version = "0.95.1"
476
+ source = "registry+https://github.com/rust-lang/crates.io-index"
477
+ checksum = "8e34d33a8e9b006cd3fc4fe69a921affa097bae4bb65f76271f4644f9a334365"
478
+ dependencies = [
479
+ "bitflags 1.3.2",
480
+ "serde",
481
+ "serde_json",
482
+ "serde_repr",
483
+ "url",
484
+ ]
485
+
309
486
  [[package]]
310
487
  name = "memchr"
311
488
  version = "2.8.0"
@@ -352,12 +529,27 @@ dependencies = [
352
529
  "winapi",
353
530
  ]
354
531
 
532
+ [[package]]
533
+ name = "percent-encoding"
534
+ version = "2.3.2"
535
+ source = "registry+https://github.com/rust-lang/crates.io-index"
536
+ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
537
+
355
538
  [[package]]
356
539
  name = "portable-atomic"
357
540
  version = "1.13.1"
358
541
  source = "registry+https://github.com/rust-lang/crates.io-index"
359
542
  checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
360
543
 
544
+ [[package]]
545
+ name = "potential_utf"
546
+ version = "0.1.6"
547
+ source = "registry+https://github.com/rust-lang/crates.io-index"
548
+ checksum = "d83eb9bc6d8e5cf568e7a1101d60ee05e81ed50ea106026f3d18deeb046d7661"
549
+ dependencies = [
550
+ "zerovec",
551
+ ]
552
+
361
553
  [[package]]
362
554
  name = "proc-macro2"
363
555
  version = "1.0.106"
@@ -379,9 +571,9 @@ dependencies = [
379
571
 
380
572
  [[package]]
381
573
  name = "pyo3"
382
- version = "0.29.3"
574
+ version = "0.30.1"
383
575
  source = "registry+https://github.com/rust-lang/crates.io-index"
384
- checksum = "700d18fa267b73b9b521fd7e13580e2f446916f176cacee1ab63fcc8191f1655"
576
+ checksum = "229ca13b8a15bb0d1487b81ab975bfcd97513416499a8312011b6036e42e0de4"
385
577
  dependencies = [
386
578
  "libc",
387
579
  "once_cell",
@@ -393,18 +585,18 @@ dependencies = [
393
585
 
394
586
  [[package]]
395
587
  name = "pyo3-build-config"
396
- version = "0.29.3"
588
+ version = "0.30.1"
397
589
  source = "registry+https://github.com/rust-lang/crates.io-index"
398
- checksum = "7b3fc0c4d08f6bb10e71fe39dfb9e2f59c6eb6854e22ec8092f50c69a4499adb"
590
+ checksum = "70130e2b6dd1ee589a8788026a429561ca5c40fa7a2fa7914c2282eddae24700"
399
591
  dependencies = [
400
592
  "target-lexicon",
401
593
  ]
402
594
 
403
595
  [[package]]
404
596
  name = "pyo3-ffi"
405
- version = "0.29.3"
597
+ version = "0.30.1"
406
598
  source = "registry+https://github.com/rust-lang/crates.io-index"
407
- checksum = "dfc0b8e19df29aad7086cf977bb0c2a2f143e30567eb113e9cf72b62ca698330"
599
+ checksum = "5e7ff73c555c286d212d4ce7e5fbda845a973c4f61bd5f160f5f2c3c2a04d1c4"
408
600
  dependencies = [
409
601
  "libc",
410
602
  "pyo3-build-config",
@@ -412,26 +604,26 @@ dependencies = [
412
604
 
413
605
  [[package]]
414
606
  name = "pyo3-macros"
415
- version = "0.29.3"
607
+ version = "0.30.1"
416
608
  source = "registry+https://github.com/rust-lang/crates.io-index"
417
- checksum = "6100e8a4b5eba53afaa5ed078364851a0b2499c553a44c31026b929049b49dc6"
609
+ checksum = "c46d2e5862c7bb8207e3b639f713dda3c499933444784154c11d013c5a691b60"
418
610
  dependencies = [
419
611
  "proc-macro2",
420
612
  "pyo3-macros-backend",
421
613
  "quote",
422
- "syn 2.0.114",
614
+ "syn 3.0.7",
423
615
  ]
424
616
 
425
617
  [[package]]
426
618
  name = "pyo3-macros-backend"
427
- version = "0.29.3"
619
+ version = "0.30.1"
428
620
  source = "registry+https://github.com/rust-lang/crates.io-index"
429
- checksum = "6143877a16e82b5a727b7127ff4cd86858a24a28d745d72f43e6f227c7b1bdb3"
621
+ checksum = "38b89f066f2ae72a2aef52d1537ca2fcd104440ebfadee06e97aa90738a25b9b"
430
622
  dependencies = [
431
623
  "heck",
432
624
  "proc-macro2",
433
625
  "quote",
434
- "syn 2.0.114",
626
+ "syn 3.0.7",
435
627
  ]
436
628
 
437
629
  [[package]]
@@ -510,7 +702,7 @@ version = "1.1.3"
510
702
  source = "registry+https://github.com/rust-lang/crates.io-index"
511
703
  checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34"
512
704
  dependencies = [
513
- "bitflags",
705
+ "bitflags 2.13.2",
514
706
  "errno",
515
707
  "libc",
516
708
  "linux-raw-sys",
@@ -569,6 +761,17 @@ dependencies = [
569
761
  "zmij",
570
762
  ]
571
763
 
764
+ [[package]]
765
+ name = "serde_repr"
766
+ version = "0.1.21"
767
+ source = "registry+https://github.com/rust-lang/crates.io-index"
768
+ checksum = "8d3b1629de253c70a0508c3899572da79ca359fdab27c7920ff00406df418906"
769
+ dependencies = [
770
+ "proc-macro2",
771
+ "quote",
772
+ "syn 3.0.7",
773
+ ]
774
+
572
775
  [[package]]
573
776
  name = "serde_spanned"
574
777
  version = "1.1.2"
@@ -590,6 +793,12 @@ version = "2.7.0"
590
793
  source = "registry+https://github.com/rust-lang/crates.io-index"
591
794
  checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa"
592
795
 
796
+ [[package]]
797
+ name = "smallvec"
798
+ version = "1.16.4"
799
+ source = "registry+https://github.com/rust-lang/crates.io-index"
800
+ checksum = "d0d5d4b1981b8bbbb7aed204cae5726d683d5d6ac7e74ec54122ea28f315e7c8"
801
+
593
802
  [[package]]
594
803
  name = "sqlparser"
595
804
  version = "0.63.0"
@@ -614,7 +823,7 @@ dependencies = [
614
823
 
615
824
  [[package]]
616
825
  name = "sqlty-bench"
617
- version = "0.2.2"
826
+ version = "0.3.0"
618
827
  dependencies = [
619
828
  "criterion",
620
829
  "sqlty-python",
@@ -623,19 +832,30 @@ dependencies = [
623
832
 
624
833
  [[package]]
625
834
  name = "sqlty-core"
626
- version = "0.2.2"
835
+ version = "0.3.0"
627
836
  dependencies = [
628
837
  "pyo3",
629
838
  "recursive",
839
+ "sqlty-lsp",
630
840
  "sqlty-python",
631
841
  "sqlty-sql",
632
842
  "stacker",
633
843
  "thiserror",
634
844
  ]
635
845
 
846
+ [[package]]
847
+ name = "sqlty-lsp"
848
+ version = "0.3.0"
849
+ dependencies = [
850
+ "crossbeam-channel",
851
+ "lsp-server",
852
+ "lsp-types",
853
+ "serde_json",
854
+ ]
855
+
636
856
  [[package]]
637
857
  name = "sqlty-python"
638
- version = "0.2.2"
858
+ version = "0.3.0"
639
859
  dependencies = [
640
860
  "regex",
641
861
  "sqlty-sql",
@@ -644,7 +864,7 @@ dependencies = [
644
864
 
645
865
  [[package]]
646
866
  name = "sqlty-sql"
647
- version = "0.2.2"
867
+ version = "0.3.0"
648
868
  dependencies = [
649
869
  "insta",
650
870
  "recursive",
@@ -656,6 +876,12 @@ dependencies = [
656
876
  "toml",
657
877
  ]
658
878
 
879
+ [[package]]
880
+ name = "stable_deref_trait"
881
+ version = "1.2.1"
882
+ source = "registry+https://github.com/rust-lang/crates.io-index"
883
+ checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
884
+
659
885
  [[package]]
660
886
  name = "stacker"
661
887
  version = "0.1.25"
@@ -691,6 +917,17 @@ dependencies = [
691
917
  "unicode-ident",
692
918
  ]
693
919
 
920
+ [[package]]
921
+ name = "synstructure"
922
+ version = "0.14.0"
923
+ source = "registry+https://github.com/rust-lang/crates.io-index"
924
+ checksum = "901704edd0dfe137f1987838ee4f259e4e063c31371bdb423f7ae38ec6f77f02"
925
+ dependencies = [
926
+ "proc-macro2",
927
+ "quote",
928
+ "syn 3.0.7",
929
+ ]
930
+
694
931
  [[package]]
695
932
  name = "target-lexicon"
696
933
  version = "0.13.4"
@@ -730,6 +967,16 @@ dependencies = [
730
967
  "syn 3.0.7",
731
968
  ]
732
969
 
970
+ [[package]]
971
+ name = "tinystr"
972
+ version = "0.8.5"
973
+ source = "registry+https://github.com/rust-lang/crates.io-index"
974
+ checksum = "abc840c238154d58f9e86b2792261edfde565a17696e1cda1a449de27979801a"
975
+ dependencies = [
976
+ "displaydoc",
977
+ "zerovec",
978
+ ]
979
+
733
980
  [[package]]
734
981
  name = "tinytemplate"
735
982
  version = "1.2.1"
@@ -785,6 +1032,25 @@ version = "1.0.23"
785
1032
  source = "registry+https://github.com/rust-lang/crates.io-index"
786
1033
  checksum = "537dd038a89878be9b64dd4bd1b260315c1bb94f4d784956b81e27a088d9a09e"
787
1034
 
1035
+ [[package]]
1036
+ name = "url"
1037
+ version = "2.5.8"
1038
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1039
+ checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed"
1040
+ dependencies = [
1041
+ "form_urlencoded",
1042
+ "idna",
1043
+ "percent-encoding",
1044
+ "serde",
1045
+ "serde_derive",
1046
+ ]
1047
+
1048
+ [[package]]
1049
+ name = "utf8_iter"
1050
+ version = "1.0.4"
1051
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1052
+ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
1053
+
788
1054
  [[package]]
789
1055
  name = "walkdir"
790
1056
  version = "2.5.0"
@@ -847,6 +1113,35 @@ version = "1.0.4"
847
1113
  source = "registry+https://github.com/rust-lang/crates.io-index"
848
1114
  checksum = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81"
849
1115
 
1116
+ [[package]]
1117
+ name = "writeable"
1118
+ version = "0.6.4"
1119
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1120
+ checksum = "3ad82d2a33cdc9674dc7465672f271e096168fcdbe0f799d9e6db8c5892679dc"
1121
+
1122
+ [[package]]
1123
+ name = "yoke"
1124
+ version = "0.8.4"
1125
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1126
+ checksum = "417ef3fcf6c300b7dbd25c85531a746931c02ad536f3cf4786ed1e88223340b3"
1127
+ dependencies = [
1128
+ "stable_deref_trait",
1129
+ "yoke-derive",
1130
+ "zerofrom",
1131
+ ]
1132
+
1133
+ [[package]]
1134
+ name = "yoke-derive"
1135
+ version = "0.8.4"
1136
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1137
+ checksum = "ec8ebde2db3681e8c9980cc27822030e68752690ddfa9473e739aeb4dbde6d71"
1138
+ dependencies = [
1139
+ "proc-macro2",
1140
+ "quote",
1141
+ "syn 3.0.7",
1142
+ "synstructure",
1143
+ ]
1144
+
850
1145
  [[package]]
851
1146
  name = "zerocopy"
852
1147
  version = "0.8.63"
@@ -867,6 +1162,60 @@ dependencies = [
867
1162
  "syn 2.0.114",
868
1163
  ]
869
1164
 
1165
+ [[package]]
1166
+ name = "zerofrom"
1167
+ version = "0.1.8"
1168
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1169
+ checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272"
1170
+ dependencies = [
1171
+ "zerofrom-derive",
1172
+ ]
1173
+
1174
+ [[package]]
1175
+ name = "zerofrom-derive"
1176
+ version = "0.1.8"
1177
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1178
+ checksum = "f75b4683f6c7f45248d4d64056a24298c6281e0993356d7d1b4a1a962ef10d4a"
1179
+ dependencies = [
1180
+ "proc-macro2",
1181
+ "quote",
1182
+ "syn 3.0.7",
1183
+ "synstructure",
1184
+ ]
1185
+
1186
+ [[package]]
1187
+ name = "zerotrie"
1188
+ version = "0.2.5"
1189
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1190
+ checksum = "4ea269c3bd32f0a32c321907a2ae912ba6f4649bb0fc764a15627e99a7095a3f"
1191
+ dependencies = [
1192
+ "displaydoc",
1193
+ "yoke",
1194
+ "zerofrom",
1195
+ ]
1196
+
1197
+ [[package]]
1198
+ name = "zerovec"
1199
+ version = "0.11.9"
1200
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1201
+ checksum = "f58a2799cfe9a1670c7ea8edbd52ef8edb93cb37a7f83bf31ba9e35d9dae6a40"
1202
+ dependencies = [
1203
+ "yoke",
1204
+ "zerofrom",
1205
+ "zerovec-derive",
1206
+ ]
1207
+
1208
+ [[package]]
1209
+ name = "zerovec-derive"
1210
+ version = "0.11.7"
1211
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1212
+ checksum = "c3743ddbf47738d929cd1ae2e199d40d0162979dfe31aef8ae646d2bf00bf97a"
1213
+ dependencies = [
1214
+ "proc-macro2",
1215
+ "quote",
1216
+ "syn 3.0.7",
1217
+ ]
1218
+
870
1219
  [[package]]
871
1220
  name = "zmij"
872
1221
  version = "1.0.23"
@@ -3,7 +3,7 @@ resolver = "2"
3
3
  members = ["crates/*"]
4
4
 
5
5
  [workspace.package]
6
- version = "0.2.2"
6
+ version = "0.3.0"
7
7
  edition = "2021"
8
8
  description = "Rust engine of sqlty: SQL type inference and Python source rewriting"
9
9
  license = "MIT"
@@ -12,7 +12,7 @@ publish = false
12
12
  rust-version = "1.88"
13
13
 
14
14
  [workspace.dependencies]
15
- pyo3 = { version = "0.29", features = ["extension-module"] }
15
+ pyo3 = { version = "0.30", features = ["extension-module"] }
16
16
  sqlparser = { version = "0.63", features = ["visitor"] }
17
17
  regex = "1"
18
18
  recursive = "0.1"
@@ -21,6 +21,7 @@ thiserror = "2"
21
21
  insta = "1.49"
22
22
  sqlty-sql = { path = "crates/sqlty-sql" }
23
23
  sqlty-python = { path = "crates/sqlty-python" }
24
+ sqlty-lsp = { path = "crates/sqlty-lsp" }
24
25
 
25
26
  [workspace.lints.clippy]
26
27
  all = { level = "warn", priority = -1 }
@@ -19,6 +19,7 @@ crate-type = ["cdylib"]
19
19
  pyo3.workspace = true
20
20
  sqlty-sql.workspace = true
21
21
  sqlty-python.workspace = true
22
+ sqlty-lsp.workspace = true
22
23
  recursive.workspace = true
23
24
  stacker = "0.1"
24
25
  thiserror.workspace = true