1import typing as t
2
3import pandas as pd
4from sqlglot import exp
5
6TARGET_ALIAS = "__MERGE_TARGET__"
7SOURCE_ALIAS = "__MERGE_SOURCE__"
8DF_TYPES: t.Tuple = (pd.DataFrame,)
9Query = t.Union[exp.Subqueryable, exp.DerivedTable]
10QUERY_TYPES: t.Tuple = (exp.Subqueryable, exp.DerivedTable)
11
12
13if t.TYPE_CHECKING:
14 import pyspark
15
16 PySparkSession = pyspark.sql.SparkSession
17 PySparkDataFrame = pyspark.sql.DataFrame
18 DF = t.Union[pd.DataFrame, PySparkDataFrame]
19 QueryOrDF = t.Union[Query, DF]
20else:
21 try:
22 import pyspark
23
24 PySparkSession = pyspark.sql.SparkSession
25 PySparkDataFrame = pyspark.sql.DataFrame
26 DF_TYPES += (PySparkDataFrame,)
27 except ImportError:
28 PySparkSession = None
29 PySparkDataFrame = None