sqlmesh 0.194.2.dev3__py3-none-any.whl → 0.194.2.dev4__py3-none-any.whl

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.
sqlmesh/_version.py CHANGED
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '0.194.2.dev3'
21
- __version_tuple__ = version_tuple = (0, 194, 2, 'dev3')
20
+ __version__ = version = '0.194.2.dev4'
21
+ __version_tuple__ = version_tuple = (0, 194, 2, 'dev4')
sqlmesh/lsp/reference.py CHANGED
@@ -208,6 +208,17 @@ def get_model_definitions_for_a_path(
208
208
  target_range=target_range,
209
209
  )
210
210
  )
211
+
212
+ column_references = _process_column_references(
213
+ scope=scope,
214
+ reference_name=table.name,
215
+ read_file=read_file,
216
+ referenced_model_uri=document_uri,
217
+ description="",
218
+ reference_type="cte",
219
+ cte_target_range=target_range,
220
+ )
221
+ references.extend(column_references)
211
222
  continue
212
223
 
213
224
  # For non-CTE tables, process as before (external model references)
@@ -276,6 +287,19 @@ def get_model_definitions_for_a_path(
276
287
  target_range=yaml_target_range,
277
288
  )
278
289
  )
290
+
291
+ column_references = _process_column_references(
292
+ scope=scope,
293
+ reference_name=normalized_reference_name,
294
+ read_file=read_file,
295
+ referenced_model_uri=referenced_model_uri,
296
+ description=description,
297
+ yaml_target_range=yaml_target_range,
298
+ reference_type="external_model",
299
+ default_catalog=lint_context.context.default_catalog,
300
+ dialect=dialect,
301
+ )
302
+ references.extend(column_references)
279
303
  else:
280
304
  references.append(
281
305
  LSPModelReference(
@@ -288,6 +312,18 @@ def get_model_definitions_for_a_path(
288
312
  )
289
313
  )
290
314
 
315
+ column_references = _process_column_references(
316
+ scope=scope,
317
+ reference_name=normalized_reference_name,
318
+ read_file=read_file,
319
+ referenced_model_uri=referenced_model_uri,
320
+ description=description,
321
+ reference_type="model",
322
+ default_catalog=lint_context.context.default_catalog,
323
+ dialect=dialect,
324
+ )
325
+ references.extend(column_references)
326
+
291
327
  return references
292
328
 
293
329
 
@@ -735,6 +771,104 @@ def _position_within_range(position: Position, range: Range) -> bool:
735
771
  )
736
772
 
737
773
 
774
+ def _get_column_table_range(column: exp.Column, read_file: t.List[str]) -> Range:
775
+ """
776
+ Get the range for a column's table reference, handling both simple and qualified table names.
777
+
778
+ Args:
779
+ column: The column expression
780
+ read_file: The file content as list of lines
781
+
782
+ Returns:
783
+ The Range covering the table reference in the column
784
+ """
785
+
786
+ table_parts = column.parts[:-1]
787
+
788
+ start_range = TokenPositionDetails.from_meta(table_parts[0].meta).to_range(read_file)
789
+ end_range = TokenPositionDetails.from_meta(table_parts[-1].meta).to_range(read_file)
790
+
791
+ return Range(
792
+ start=to_lsp_position(start_range.start),
793
+ end=to_lsp_position(end_range.end),
794
+ )
795
+
796
+
797
+ def _process_column_references(
798
+ scope: t.Any,
799
+ reference_name: str,
800
+ read_file: t.List[str],
801
+ referenced_model_uri: URI,
802
+ description: t.Optional[str] = None,
803
+ yaml_target_range: t.Optional[Range] = None,
804
+ reference_type: t.Literal["model", "external_model", "cte"] = "model",
805
+ default_catalog: t.Optional[str] = None,
806
+ dialect: t.Optional[str] = None,
807
+ cte_target_range: t.Optional[Range] = None,
808
+ ) -> t.List[Reference]:
809
+ """
810
+ Process column references for a given table and create appropriate reference objects.
811
+
812
+ Args:
813
+ scope: The SQL scope to search for columns
814
+ reference_name: The full reference name (may include database/catalog)
815
+ read_file: The file content as list of lines
816
+ referenced_model_uri: URI of the referenced model
817
+ description: Markdown description for the reference
818
+ yaml_target_range: Target range for external models (YAML files)
819
+ reference_type: Type of reference - "model", "external_model", or "cte"
820
+ default_catalog: Default catalog for normalization
821
+ dialect: SQL dialect for normalization
822
+ cte_target_range: Target range for CTE references
823
+
824
+ Returns:
825
+ List of table references for column usages
826
+ """
827
+
828
+ references: t.List[Reference] = []
829
+ for column in scope.find_all(exp.Column):
830
+ if column.table:
831
+ if reference_type == "cte":
832
+ if column.table == reference_name:
833
+ table_range = _get_column_table_range(column, read_file)
834
+ references.append(
835
+ LSPCteReference(
836
+ uri=referenced_model_uri.value,
837
+ range=table_range,
838
+ target_range=cte_target_range,
839
+ )
840
+ )
841
+ else:
842
+ table_parts = [part.sql(dialect) for part in column.parts[:-1]]
843
+ table_ref = ".".join(table_parts)
844
+ normalized_reference_name = normalize_model_name(
845
+ table_ref,
846
+ default_catalog=default_catalog,
847
+ dialect=dialect,
848
+ )
849
+ if normalized_reference_name == reference_name:
850
+ table_range = _get_column_table_range(column, read_file)
851
+ if reference_type == "external_model":
852
+ references.append(
853
+ LSPExternalModelReference(
854
+ uri=referenced_model_uri.value,
855
+ range=table_range,
856
+ markdown_description=description,
857
+ target_range=yaml_target_range,
858
+ )
859
+ )
860
+ else:
861
+ references.append(
862
+ LSPModelReference(
863
+ uri=referenced_model_uri.value,
864
+ range=table_range,
865
+ markdown_description=description,
866
+ )
867
+ )
868
+
869
+ return references
870
+
871
+
738
872
  def _get_yaml_model_range(path: Path, model_name: str) -> t.Optional[Range]:
739
873
  """
740
874
  Find the range of a specific model block in a YAML file.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlmesh
3
- Version: 0.194.2.dev3
3
+ Version: 0.194.2.dev4
4
4
  Summary: Next-generation data transformation framework
5
5
  Author-email: "TobikoData Inc." <engineering@tobikodata.com>
6
6
  License: Apache License
@@ -1,5 +1,5 @@
1
1
  sqlmesh/__init__.py,sha256=QjwaamJIdW7voXoS880yAx7tHm-Im4_mqGA-XJgafos,7631
2
- sqlmesh/_version.py,sha256=tW1GvcGMq_Eu01nF2RSEc0AXxy6CJcKTVsDI-NuvUwM,528
2
+ sqlmesh/_version.py,sha256=4AXoTdklMBMT8Jjx_8JGYvr6SI6W51xe_eIQYgKEEdg,528
3
3
  sqlmesh/magics.py,sha256=ysPC5ohXpgQ8IHQPwtQtwGoVypmVq_YBlm1noUueDIw,40448
4
4
  sqlmesh/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  sqlmesh/cicd/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -173,7 +173,7 @@ sqlmesh/lsp/description.py,sha256=PjguwyVw5YeYSgT0JMhkf5U1Jry-sDPLvQ2caIR9JPQ,85
173
173
  sqlmesh/lsp/helpers.py,sha256=EFc1u3-b7kSv5-tNwmKUDxId72RCLDBnN2lLTgRSzzQ,1020
174
174
  sqlmesh/lsp/hints.py,sha256=j-blccBUil94yRoDjWfkSM0HqMmsKD6hP2TaWdWWVk4,3734
175
175
  sqlmesh/lsp/main.py,sha256=EanNAS5ArBRc2oYsS3jhL46pfzXLn78xwSW-9R4RQ3o,33731
176
- sqlmesh/lsp/reference.py,sha256=8hZT3wH8zmWiFEySS1_nVhhLg-CKCGncf9wG3LGBef8,26432
176
+ sqlmesh/lsp/reference.py,sha256=NyfpK12TouDuy5-G7KOhvifkJItMfrakKwnMoU6SiVk,32088
177
177
  sqlmesh/lsp/uri.py,sha256=mvSLbZGmMTHPpliThOtVWiFcHnfJzp1w39q9l-xD2SI,802
178
178
  sqlmesh/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
179
179
  sqlmesh/migrations/v0001_init.py,sha256=h8FwMYJj9_O8yGpk12guaSaGwX5A3we2GiKeHrXi15o,2048
@@ -282,7 +282,7 @@ sqlmesh/utils/pydantic.py,sha256=I898jAFqa3qU6lG2uPpRebVFncOUo8ZrLWM_R3K3DHU,116
282
282
  sqlmesh/utils/rich.py,sha256=BpB47G0-JcU41LkGkeGKroexj4NOV5fox4-GOIXPgIc,3545
283
283
  sqlmesh/utils/windows.py,sha256=r7Yin4WEwbvH7sKA3hOJtRsclmscNuBeCklCfVPvtQs,611
284
284
  sqlmesh/utils/yaml.py,sha256=np-WVcwmwsKghCgAj1OBBMsK1SXSRn4wR-H37cGiFr8,2282
285
- sqlmesh-0.194.2.dev3.dist-info/licenses/LICENSE,sha256=OlMefUjgWJdULtf84BLW0AZZcY8DwdgQqb_1j2862j8,11346
285
+ sqlmesh-0.194.2.dev4.dist-info/licenses/LICENSE,sha256=OlMefUjgWJdULtf84BLW0AZZcY8DwdgQqb_1j2862j8,11346
286
286
  web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
287
287
  web/client/dist/index.html,sha256=w71qWSLmp-xwmVJO8m41k8Rtni3iZlF0hmhiTr-NeCI,5472
288
288
  web/client/dist/assets/Audits-sYYNn2gO.js,sha256=zSAKkif2kU0JuPH05xjNYITNPmsbDlvLKUc2-orr8AY,1041
@@ -400,8 +400,8 @@ web/server/api/endpoints/models.py,sha256=ud-lRwriyI_OYg9tZchrBgeiXELiRTLNEodraf
400
400
  web/server/api/endpoints/modules.py,sha256=8hqqgonGay_mJmpCw0IdbjsPhWlQH2VLdKAqha-myac,468
401
401
  web/server/api/endpoints/plan.py,sha256=OYuQ_4dgbhG9ibTcX1a8mvYgH3ANxw9Fhbb4wg6QWqc,9222
402
402
  web/server/api/endpoints/table_diff.py,sha256=SCy3-pr5x6bEEiOaZGCDbiHQhpgxwmnz3Acqa2Ie6jI,2090
403
- sqlmesh-0.194.2.dev3.dist-info/METADATA,sha256=68Hr4ov-q8fgFR2dP58fjRksQy-8d3C4R6qiks8NmQ4,26690
404
- sqlmesh-0.194.2.dev3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
405
- sqlmesh-0.194.2.dev3.dist-info/entry_points.txt,sha256=pIYKtg-u-uO7BK_Y0qrdmfyj0bYrcMc3Xiqr5WE3VFk,121
406
- sqlmesh-0.194.2.dev3.dist-info/top_level.txt,sha256=bspjo5vjELQkuN0qKuTFIbsrUt3Zeo8D2mlKeHG1LdE,12
407
- sqlmesh-0.194.2.dev3.dist-info/RECORD,,
403
+ sqlmesh-0.194.2.dev4.dist-info/METADATA,sha256=pevBdvNfo9E_J4tgKi3OEpgwh1snIDvFiV1molPT_04,26690
404
+ sqlmesh-0.194.2.dev4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
405
+ sqlmesh-0.194.2.dev4.dist-info/entry_points.txt,sha256=pIYKtg-u-uO7BK_Y0qrdmfyj0bYrcMc3Xiqr5WE3VFk,121
406
+ sqlmesh-0.194.2.dev4.dist-info/top_level.txt,sha256=bspjo5vjELQkuN0qKuTFIbsrUt3Zeo8D2mlKeHG1LdE,12
407
+ sqlmesh-0.194.2.dev4.dist-info/RECORD,,