apache-airflow-providers-common-sql 1.25.0__py3-none-any.whl → 1.26.0__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.
Potentially problematic release.
This version of apache-airflow-providers-common-sql might be problematic. Click here for more details.
- airflow/providers/common/sql/__init__.py +1 -1
- airflow/providers/common/sql/get_provider_info.py +0 -57
- airflow/providers/common/sql/hooks/handlers.py +5 -5
- airflow/providers/common/sql/hooks/sql.py +154 -6
- airflow/providers/common/sql/operators/sql.py +6 -8
- airflow/providers/common/sql/sensors/sql.py +3 -5
- {apache_airflow_providers_common_sql-1.25.0.dist-info → apache_airflow_providers_common_sql-1.26.0.dist-info}/METADATA +8 -6
- {apache_airflow_providers_common_sql-1.25.0.dist-info → apache_airflow_providers_common_sql-1.26.0.dist-info}/RECORD +10 -10
- {apache_airflow_providers_common_sql-1.25.0.dist-info → apache_airflow_providers_common_sql-1.26.0.dist-info}/WHEEL +1 -1
- {apache_airflow_providers_common_sql-1.25.0.dist-info → apache_airflow_providers_common_sql-1.26.0.dist-info}/entry_points.txt +0 -0
|
@@ -29,7 +29,7 @@ from airflow import __version__ as airflow_version
|
|
|
29
29
|
|
|
30
30
|
__all__ = ["__version__"]
|
|
31
31
|
|
|
32
|
-
__version__ = "1.
|
|
32
|
+
__version__ = "1.26.0"
|
|
33
33
|
|
|
34
34
|
if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
|
|
35
35
|
"2.9.0"
|
|
@@ -26,52 +26,6 @@ def get_provider_info():
|
|
|
26
26
|
"package-name": "apache-airflow-providers-common-sql",
|
|
27
27
|
"name": "Common SQL",
|
|
28
28
|
"description": "`Common SQL Provider <https://en.wikipedia.org/wiki/SQL>`__\n",
|
|
29
|
-
"state": "ready",
|
|
30
|
-
"source-date-epoch": 1743835974,
|
|
31
|
-
"versions": [
|
|
32
|
-
"1.25.0",
|
|
33
|
-
"1.24.1",
|
|
34
|
-
"1.24.0",
|
|
35
|
-
"1.23.0",
|
|
36
|
-
"1.21.0",
|
|
37
|
-
"1.20.0",
|
|
38
|
-
"1.19.0",
|
|
39
|
-
"1.18.0",
|
|
40
|
-
"1.17.1",
|
|
41
|
-
"1.17.0",
|
|
42
|
-
"1.16.0",
|
|
43
|
-
"1.15.0",
|
|
44
|
-
"1.14.2",
|
|
45
|
-
"1.14.1",
|
|
46
|
-
"1.14.0",
|
|
47
|
-
"1.13.0",
|
|
48
|
-
"1.12.0",
|
|
49
|
-
"1.11.1",
|
|
50
|
-
"1.11.0",
|
|
51
|
-
"1.10.1",
|
|
52
|
-
"1.10.0",
|
|
53
|
-
"1.9.0",
|
|
54
|
-
"1.8.1",
|
|
55
|
-
"1.8.0",
|
|
56
|
-
"1.7.2",
|
|
57
|
-
"1.7.1",
|
|
58
|
-
"1.7.0",
|
|
59
|
-
"1.6.2",
|
|
60
|
-
"1.6.1",
|
|
61
|
-
"1.6.0",
|
|
62
|
-
"1.5.2",
|
|
63
|
-
"1.5.1",
|
|
64
|
-
"1.5.0",
|
|
65
|
-
"1.4.0",
|
|
66
|
-
"1.3.4",
|
|
67
|
-
"1.3.3",
|
|
68
|
-
"1.3.2",
|
|
69
|
-
"1.3.1",
|
|
70
|
-
"1.3.0",
|
|
71
|
-
"1.2.0",
|
|
72
|
-
"1.1.0",
|
|
73
|
-
"1.0.0",
|
|
74
|
-
],
|
|
75
29
|
"integrations": [
|
|
76
30
|
{
|
|
77
31
|
"integration-name": "Common SQL",
|
|
@@ -114,15 +68,4 @@ def get_provider_info():
|
|
|
114
68
|
"sensors": [
|
|
115
69
|
{"integration-name": "Common SQL", "python-modules": ["airflow.providers.common.sql.sensors.sql"]}
|
|
116
70
|
],
|
|
117
|
-
"dependencies": [
|
|
118
|
-
"apache-airflow>=2.9.0",
|
|
119
|
-
"sqlparse>=0.5.1",
|
|
120
|
-
"more-itertools>=9.0.0",
|
|
121
|
-
"methodtools>=0.4.7",
|
|
122
|
-
],
|
|
123
|
-
"optional-dependencies": {
|
|
124
|
-
"pandas": ["pandas>=2.1.2,<2.2"],
|
|
125
|
-
"openlineage": ["apache-airflow-providers-openlineage"],
|
|
126
|
-
},
|
|
127
|
-
"devel-dependencies": [],
|
|
128
71
|
}
|
|
@@ -19,7 +19,9 @@ from __future__ import annotations
|
|
|
19
19
|
from collections.abc import Iterable
|
|
20
20
|
|
|
21
21
|
|
|
22
|
-
def return_single_query_results(
|
|
22
|
+
def return_single_query_results(
|
|
23
|
+
sql: str | Iterable[str], return_last: bool, split_statements: bool | None
|
|
24
|
+
) -> bool:
|
|
23
25
|
"""
|
|
24
26
|
Determine when results of single query only should be returned.
|
|
25
27
|
|
|
@@ -58,8 +60,7 @@ def fetch_all_handler(cursor) -> list[tuple] | None:
|
|
|
58
60
|
)
|
|
59
61
|
if cursor.description is not None:
|
|
60
62
|
return cursor.fetchall()
|
|
61
|
-
|
|
62
|
-
return None
|
|
63
|
+
return None
|
|
63
64
|
|
|
64
65
|
|
|
65
66
|
def fetch_one_handler(cursor) -> list[tuple] | None:
|
|
@@ -71,5 +72,4 @@ def fetch_one_handler(cursor) -> list[tuple] | None:
|
|
|
71
72
|
)
|
|
72
73
|
if cursor.description is not None:
|
|
73
74
|
return cursor.fetchone()
|
|
74
|
-
|
|
75
|
-
return None
|
|
75
|
+
return None
|
|
@@ -34,16 +34,19 @@ from typing import (
|
|
|
34
34
|
from urllib.parse import urlparse
|
|
35
35
|
|
|
36
36
|
import sqlparse
|
|
37
|
+
from deprecated import deprecated
|
|
37
38
|
from methodtools import lru_cache
|
|
38
39
|
from more_itertools import chunked
|
|
39
40
|
from sqlalchemy import create_engine
|
|
40
41
|
from sqlalchemy.engine import Inspector, make_url
|
|
41
42
|
from sqlalchemy.exc import ArgumentError, NoSuchModuleError
|
|
43
|
+
from typing_extensions import Literal
|
|
42
44
|
|
|
43
45
|
from airflow.configuration import conf
|
|
44
46
|
from airflow.exceptions import (
|
|
45
47
|
AirflowException,
|
|
46
48
|
AirflowOptionalProviderFeatureException,
|
|
49
|
+
AirflowProviderDeprecationWarning,
|
|
47
50
|
)
|
|
48
51
|
from airflow.hooks.base import BaseHook
|
|
49
52
|
from airflow.providers.common.sql.dialects.dialect import Dialect
|
|
@@ -52,6 +55,7 @@ from airflow.utils.module_loading import import_string
|
|
|
52
55
|
|
|
53
56
|
if TYPE_CHECKING:
|
|
54
57
|
from pandas import DataFrame
|
|
58
|
+
from polars import DataFrame as PolarsDataFrame
|
|
55
59
|
from sqlalchemy.engine import URL
|
|
56
60
|
|
|
57
61
|
from airflow.models import Connection
|
|
@@ -65,7 +69,9 @@ WARNING_MESSAGE = """Import of {} from the 'airflow.providers.common.sql.hooks'
|
|
|
65
69
|
be removed in the future. Please import it from 'airflow.providers.common.sql.hooks.handlers'."""
|
|
66
70
|
|
|
67
71
|
|
|
68
|
-
def return_single_query_results(
|
|
72
|
+
def return_single_query_results(
|
|
73
|
+
sql: str | Iterable[str], return_last: bool, split_statements: bool | None
|
|
74
|
+
) -> bool:
|
|
69
75
|
warnings.warn(WARNING_MESSAGE.format("return_single_query_results"), DeprecationWarning, stacklevel=2)
|
|
70
76
|
|
|
71
77
|
return handlers.return_single_query_results(sql, return_last, split_statements)
|
|
@@ -166,7 +172,7 @@ class DbApiHook(BaseHook):
|
|
|
166
172
|
super().__init__()
|
|
167
173
|
if not self.conn_name_attr:
|
|
168
174
|
raise AirflowException("conn_name_attr is not defined")
|
|
169
|
-
|
|
175
|
+
if len(args) == 1:
|
|
170
176
|
setattr(self, self.conn_name_attr, args[0])
|
|
171
177
|
elif self.conn_name_attr not in kwargs:
|
|
172
178
|
setattr(self, self.conn_name_attr, self.default_conn_name)
|
|
@@ -375,6 +381,11 @@ class DbApiHook(BaseHook):
|
|
|
375
381
|
self.log.debug("reserved words for '%s': %s", dialect_name, result)
|
|
376
382
|
return result
|
|
377
383
|
|
|
384
|
+
@deprecated(
|
|
385
|
+
reason="Replaced by function `get_df`.",
|
|
386
|
+
category=AirflowProviderDeprecationWarning,
|
|
387
|
+
action="ignore",
|
|
388
|
+
)
|
|
378
389
|
def get_pandas_df(
|
|
379
390
|
self,
|
|
380
391
|
sql,
|
|
@@ -384,6 +395,57 @@ class DbApiHook(BaseHook):
|
|
|
384
395
|
"""
|
|
385
396
|
Execute the sql and returns a pandas dataframe.
|
|
386
397
|
|
|
398
|
+
:param sql: the sql statement to be executed (str) or a list of sql statements to execute
|
|
399
|
+
:param parameters: The parameters to render the SQL query with.
|
|
400
|
+
:param kwargs: (optional) passed into pandas.io.sql.read_sql method
|
|
401
|
+
"""
|
|
402
|
+
return self._get_pandas_df(sql, parameters, **kwargs)
|
|
403
|
+
|
|
404
|
+
@deprecated(
|
|
405
|
+
reason="Replaced by function `get_df_by_chunks`.",
|
|
406
|
+
category=AirflowProviderDeprecationWarning,
|
|
407
|
+
action="ignore",
|
|
408
|
+
)
|
|
409
|
+
def get_pandas_df_by_chunks(
|
|
410
|
+
self,
|
|
411
|
+
sql,
|
|
412
|
+
parameters: list | tuple | Mapping[str, Any] | None = None,
|
|
413
|
+
*,
|
|
414
|
+
chunksize: int,
|
|
415
|
+
**kwargs,
|
|
416
|
+
) -> Generator[DataFrame, None, None]:
|
|
417
|
+
return self._get_pandas_df_by_chunks(sql, parameters, chunksize=chunksize, **kwargs)
|
|
418
|
+
|
|
419
|
+
def get_df(
|
|
420
|
+
self,
|
|
421
|
+
sql,
|
|
422
|
+
parameters: list | tuple | Mapping[str, Any] | None = None,
|
|
423
|
+
*,
|
|
424
|
+
df_type: Literal["pandas", "polars"] = "pandas",
|
|
425
|
+
**kwargs,
|
|
426
|
+
) -> DataFrame | PolarsDataFrame:
|
|
427
|
+
"""
|
|
428
|
+
Execute the sql and returns a dataframe.
|
|
429
|
+
|
|
430
|
+
:param sql: the sql statement to be executed (str) or a list of sql statements to execute
|
|
431
|
+
:param parameters: The parameters to render the SQL query with.
|
|
432
|
+
:param df_type: Type of dataframe to return, either "pandas" or "polars"
|
|
433
|
+
:param kwargs: (optional) passed into `pandas.io.sql.read_sql` or `polars.read_database` method
|
|
434
|
+
"""
|
|
435
|
+
if df_type == "pandas":
|
|
436
|
+
return self._get_pandas_df(sql, parameters, **kwargs)
|
|
437
|
+
if df_type == "polars":
|
|
438
|
+
return self._get_polars_df(sql, parameters, **kwargs)
|
|
439
|
+
|
|
440
|
+
def _get_pandas_df(
|
|
441
|
+
self,
|
|
442
|
+
sql,
|
|
443
|
+
parameters: list | tuple | Mapping[str, Any] | None = None,
|
|
444
|
+
**kwargs,
|
|
445
|
+
) -> DataFrame:
|
|
446
|
+
"""
|
|
447
|
+
Execute the sql and returns a pandas dataframe.
|
|
448
|
+
|
|
387
449
|
:param sql: the sql statement to be executed (str) or a list of sql statements to execute
|
|
388
450
|
:param parameters: The parameters to render the SQL query with.
|
|
389
451
|
:param kwargs: (optional) passed into pandas.io.sql.read_sql method
|
|
@@ -399,7 +461,61 @@ class DbApiHook(BaseHook):
|
|
|
399
461
|
with closing(self.get_conn()) as conn:
|
|
400
462
|
return psql.read_sql(sql, con=conn, params=parameters, **kwargs)
|
|
401
463
|
|
|
402
|
-
def
|
|
464
|
+
def _get_polars_df(
|
|
465
|
+
self,
|
|
466
|
+
sql,
|
|
467
|
+
parameters: list | tuple | Mapping[str, Any] | None = None,
|
|
468
|
+
**kwargs,
|
|
469
|
+
) -> PolarsDataFrame:
|
|
470
|
+
"""
|
|
471
|
+
Execute the sql and returns a polars dataframe.
|
|
472
|
+
|
|
473
|
+
:param sql: the sql statement to be executed (str) or a list of sql statements to execute
|
|
474
|
+
:param parameters: The parameters to render the SQL query with.
|
|
475
|
+
:param kwargs: (optional) passed into polars.read_database method
|
|
476
|
+
"""
|
|
477
|
+
try:
|
|
478
|
+
import polars as pl
|
|
479
|
+
except ImportError:
|
|
480
|
+
raise AirflowOptionalProviderFeatureException(
|
|
481
|
+
"polars library not installed, run: pip install "
|
|
482
|
+
"'apache-airflow-providers-common-sql[polars]'."
|
|
483
|
+
)
|
|
484
|
+
|
|
485
|
+
with closing(self.get_conn()) as conn:
|
|
486
|
+
execute_options: dict[str, Any] | None = None
|
|
487
|
+
if parameters is not None:
|
|
488
|
+
if isinstance(parameters, Mapping):
|
|
489
|
+
execute_options = dict(parameters)
|
|
490
|
+
else:
|
|
491
|
+
execute_options = {}
|
|
492
|
+
|
|
493
|
+
return pl.read_database(sql, connection=conn, execute_options=execute_options, **kwargs)
|
|
494
|
+
|
|
495
|
+
def get_df_by_chunks(
|
|
496
|
+
self,
|
|
497
|
+
sql,
|
|
498
|
+
parameters: list | tuple | Mapping[str, Any] | None = None,
|
|
499
|
+
*,
|
|
500
|
+
chunksize: int,
|
|
501
|
+
df_type: Literal["pandas", "polars"] = "pandas",
|
|
502
|
+
**kwargs,
|
|
503
|
+
) -> Generator[DataFrame | PolarsDataFrame, None, None]:
|
|
504
|
+
"""
|
|
505
|
+
Execute the sql and return a generator.
|
|
506
|
+
|
|
507
|
+
:param sql: the sql statement to be executed (str) or a list of sql statements to execute
|
|
508
|
+
:param parameters: The parameters to render the SQL query with
|
|
509
|
+
:param chunksize: number of rows to include in each chunk
|
|
510
|
+
:param df_type: Type of dataframe to return, either "pandas" or "polars"
|
|
511
|
+
:param kwargs: (optional) passed into `pandas.io.sql.read_sql` or `polars.read_database` method
|
|
512
|
+
"""
|
|
513
|
+
if df_type == "pandas":
|
|
514
|
+
return self._get_pandas_df_by_chunks(sql, parameters, chunksize=chunksize, **kwargs)
|
|
515
|
+
if df_type == "polars":
|
|
516
|
+
return self._get_polars_df_by_chunks(sql, parameters, chunksize=chunksize, **kwargs)
|
|
517
|
+
|
|
518
|
+
def _get_pandas_df_by_chunks(
|
|
403
519
|
self,
|
|
404
520
|
sql,
|
|
405
521
|
parameters: list | tuple | Mapping[str, Any] | None = None,
|
|
@@ -422,10 +538,43 @@ class DbApiHook(BaseHook):
|
|
|
422
538
|
"pandas library not installed, run: pip install "
|
|
423
539
|
"'apache-airflow-providers-common-sql[pandas]'."
|
|
424
540
|
)
|
|
425
|
-
|
|
426
541
|
with closing(self.get_conn()) as conn:
|
|
427
542
|
yield from psql.read_sql(sql, con=conn, params=parameters, chunksize=chunksize, **kwargs)
|
|
428
543
|
|
|
544
|
+
def _get_polars_df_by_chunks(
|
|
545
|
+
self,
|
|
546
|
+
sql,
|
|
547
|
+
parameters: list | tuple | Mapping[str, Any] | None = None,
|
|
548
|
+
*,
|
|
549
|
+
chunksize: int,
|
|
550
|
+
**kwargs,
|
|
551
|
+
) -> Generator[PolarsDataFrame, None, None]:
|
|
552
|
+
"""
|
|
553
|
+
Execute the sql and return a generator.
|
|
554
|
+
|
|
555
|
+
:param sql: the sql statement to be executed (str) or a list of sql statements to execute
|
|
556
|
+
:param parameters: The parameters to render the SQL query with.
|
|
557
|
+
:param chunksize: number of rows to include in each chunk
|
|
558
|
+
:param kwargs: (optional) passed into pandas.io.sql.read_sql method
|
|
559
|
+
"""
|
|
560
|
+
try:
|
|
561
|
+
import polars as pl
|
|
562
|
+
except ImportError:
|
|
563
|
+
raise AirflowOptionalProviderFeatureException(
|
|
564
|
+
"polars library not installed, run: pip install "
|
|
565
|
+
"'apache-airflow-providers-common-sql[polars]'."
|
|
566
|
+
)
|
|
567
|
+
|
|
568
|
+
with closing(self.get_conn()) as conn:
|
|
569
|
+
execute_options = None
|
|
570
|
+
if parameters is not None:
|
|
571
|
+
if isinstance(parameters, Mapping):
|
|
572
|
+
execute_options = dict(parameters)
|
|
573
|
+
|
|
574
|
+
yield from pl.read_database(
|
|
575
|
+
sql, connection=conn, execute_options=execute_options, batch_size=chunksize, **kwargs
|
|
576
|
+
)
|
|
577
|
+
|
|
429
578
|
def get_records(
|
|
430
579
|
self,
|
|
431
580
|
sql: str | list[str],
|
|
@@ -599,8 +748,7 @@ class DbApiHook(BaseHook):
|
|
|
599
748
|
if handlers.return_single_query_results(sql, return_last, split_statements):
|
|
600
749
|
self.descriptions = [_last_description]
|
|
601
750
|
return _last_result
|
|
602
|
-
|
|
603
|
-
return results
|
|
751
|
+
return results
|
|
604
752
|
|
|
605
753
|
def _make_common_data_structure(self, result: T | Sequence[T]) -> tuple | list[tuple]:
|
|
606
754
|
"""
|
|
@@ -534,12 +534,11 @@ class SQLColumnCheckOperator(BaseSQLOperator):
|
|
|
534
534
|
def _generate_partition_clause(check):
|
|
535
535
|
if self.partition_clause and "partition_clause" not in checks[check]:
|
|
536
536
|
return f"WHERE {self.partition_clause}"
|
|
537
|
-
|
|
537
|
+
if not self.partition_clause and "partition_clause" in checks[check]:
|
|
538
538
|
return f"WHERE {checks[check]['partition_clause']}"
|
|
539
|
-
|
|
539
|
+
if self.partition_clause and "partition_clause" in checks[check]:
|
|
540
540
|
return f"WHERE {self.partition_clause} AND {checks[check]['partition_clause']}"
|
|
541
|
-
|
|
542
|
-
return ""
|
|
541
|
+
return ""
|
|
543
542
|
|
|
544
543
|
checks_sql = "UNION ALL".join(
|
|
545
544
|
self.sql_check_template.format(
|
|
@@ -742,12 +741,11 @@ class SQLTableCheckOperator(BaseSQLOperator):
|
|
|
742
741
|
def _generate_partition_clause(check_name):
|
|
743
742
|
if self.partition_clause and "partition_clause" not in self.checks[check_name]:
|
|
744
743
|
return f"WHERE {self.partition_clause}"
|
|
745
|
-
|
|
744
|
+
if not self.partition_clause and "partition_clause" in self.checks[check_name]:
|
|
746
745
|
return f"WHERE {self.checks[check_name]['partition_clause']}"
|
|
747
|
-
|
|
746
|
+
if self.partition_clause and "partition_clause" in self.checks[check_name]:
|
|
748
747
|
return f"WHERE {self.partition_clause} AND {self.checks[check_name]['partition_clause']}"
|
|
749
|
-
|
|
750
|
-
return ""
|
|
748
|
+
return ""
|
|
751
749
|
|
|
752
750
|
return "UNION ALL".join(
|
|
753
751
|
self.sql_check_template.format(
|
|
@@ -105,8 +105,7 @@ class SqlSensor(BaseSensorOperator):
|
|
|
105
105
|
if self.fail_on_empty:
|
|
106
106
|
message = "No rows returned, raising as per fail_on_empty flag"
|
|
107
107
|
raise AirflowException(message)
|
|
108
|
-
|
|
109
|
-
return False
|
|
108
|
+
return False
|
|
110
109
|
|
|
111
110
|
condition = self.selector(records[0])
|
|
112
111
|
if self.failure is not None:
|
|
@@ -121,7 +120,6 @@ class SqlSensor(BaseSensorOperator):
|
|
|
121
120
|
if self.success is not None:
|
|
122
121
|
if callable(self.success):
|
|
123
122
|
return self.success(condition)
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
raise AirflowException(message)
|
|
123
|
+
message = f"self.success is present, but not callable -> {self.success}"
|
|
124
|
+
raise AirflowException(message)
|
|
127
125
|
return bool(condition)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: apache-airflow-providers-common-sql
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.26.0
|
|
4
4
|
Summary: Provider package apache-airflow-providers-common-sql for Apache Airflow
|
|
5
5
|
Keywords: airflow-provider,common.sql,airflow,integration
|
|
6
6
|
Author-email: Apache Software Foundation <dev@airflow.apache.org>
|
|
@@ -26,15 +26,17 @@ Requires-Dist: more-itertools>=9.0.0
|
|
|
26
26
|
Requires-Dist: methodtools>=0.4.7
|
|
27
27
|
Requires-Dist: apache-airflow-providers-openlineage ; extra == "openlineage"
|
|
28
28
|
Requires-Dist: pandas>=2.1.2,<2.2 ; extra == "pandas"
|
|
29
|
+
Requires-Dist: polars>=1.26.0 ; extra == "polars"
|
|
29
30
|
Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
|
|
30
|
-
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.
|
|
31
|
-
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.
|
|
31
|
+
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.26.0/changelog.html
|
|
32
|
+
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.26.0
|
|
32
33
|
Project-URL: Mastodon, https://fosstodon.org/@airflow
|
|
33
34
|
Project-URL: Slack Chat, https://s.apache.org/airflow-slack
|
|
34
35
|
Project-URL: Source Code, https://github.com/apache/airflow
|
|
35
36
|
Project-URL: YouTube, https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/
|
|
36
37
|
Provides-Extra: openlineage
|
|
37
38
|
Provides-Extra: pandas
|
|
39
|
+
Provides-Extra: polars
|
|
38
40
|
|
|
39
41
|
|
|
40
42
|
.. Licensed to the Apache Software Foundation (ASF) under one
|
|
@@ -61,7 +63,7 @@ Provides-Extra: pandas
|
|
|
61
63
|
|
|
62
64
|
Package ``apache-airflow-providers-common-sql``
|
|
63
65
|
|
|
64
|
-
Release: ``1.
|
|
66
|
+
Release: ``1.26.0``
|
|
65
67
|
|
|
66
68
|
|
|
67
69
|
`Common SQL Provider <https://en.wikipedia.org/wiki/SQL>`__
|
|
@@ -74,7 +76,7 @@ This is a provider package for ``common.sql`` provider. All classes for this pro
|
|
|
74
76
|
are in ``airflow.providers.common.sql`` python package.
|
|
75
77
|
|
|
76
78
|
You can find package information and changelog for the provider
|
|
77
|
-
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.
|
|
79
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.26.0/>`_.
|
|
78
80
|
|
|
79
81
|
Installation
|
|
80
82
|
------------
|
|
@@ -117,5 +119,5 @@ Dependent package
|
|
|
117
119
|
============================================================================================================== ===============
|
|
118
120
|
|
|
119
121
|
The changelog for the provider package can be found in the
|
|
120
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.
|
|
122
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.26.0/changelog.html>`_.
|
|
121
123
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
airflow/providers/common/sql/LICENSE,sha256=gXPVwptPlW1TJ4HSuG5OMPg-a3h43OGMkZRR1rpwfJA,10850
|
|
2
2
|
airflow/providers/common/sql/README_API.md,sha256=CxhaS8EedZ4dcbLUPC4-GLCMaY3OH96oHxXttUGU06E,5932
|
|
3
|
-
airflow/providers/common/sql/__init__.py,sha256=
|
|
4
|
-
airflow/providers/common/sql/get_provider_info.py,sha256=
|
|
3
|
+
airflow/providers/common/sql/__init__.py,sha256=Dq1VrbX8fQ-LThRC05hWOmMNtrEghP-rqLUo51LTr1Y,1498
|
|
4
|
+
airflow/providers/common/sql/get_provider_info.py,sha256=xCPXLKFA_1ilhGa0aB3E9ggdHtn9Do7Eb469begpZag,2767
|
|
5
5
|
airflow/providers/common/sql/get_provider_info.pyi,sha256=0mydJPGQScnPpoa9-ohHVJFngFH6Lsk22KS243PE-gw,1596
|
|
6
6
|
airflow/providers/common/sql/dialects/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
7
7
|
airflow/providers/common/sql/dialects/dialect.py,sha256=rV4frwvKeU25AydRFA0iJEzSDAjHBAQQl4a7OLpE2Tg,7698
|
|
@@ -10,21 +10,21 @@ airflow/providers/common/sql/doc/adr/0001-record-architecture-decisions.md,sha25
|
|
|
10
10
|
airflow/providers/common/sql/doc/adr/0002-return-common-data-structure-from-dbapihook-derived-hooks.md,sha256=ze5w9IVS-HkUwdZvPW8_JaJaVwel7-N6XdEVN4pTuCE,8457
|
|
11
11
|
airflow/providers/common/sql/doc/adr/0003-introduce-notion-of-dialects-in-dbapihook.md,sha256=DscUH0P3sgOpfXKPvtWpOkRXt8BI60FUxYnuwWpyLqM,2792
|
|
12
12
|
airflow/providers/common/sql/hooks/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
13
|
-
airflow/providers/common/sql/hooks/handlers.py,sha256=
|
|
13
|
+
airflow/providers/common/sql/hooks/handlers.py,sha256=XjvycIQsGpDrtg6RFACczybW_dER97RR6Z6B_S6jf6Y,3399
|
|
14
14
|
airflow/providers/common/sql/hooks/handlers.pyi,sha256=3UDOBxvFi5dLzRlF2yCwlj8LuYgDFSKNLmCHhF_Qfik,1827
|
|
15
|
-
airflow/providers/common/sql/hooks/sql.py,sha256=
|
|
15
|
+
airflow/providers/common/sql/hooks/sql.py,sha256=Gv3UftzA_uL6NTSx7Q1Ker-TYQs3DC6BC0doP8f0ZSQ,41833
|
|
16
16
|
airflow/providers/common/sql/hooks/sql.pyi,sha256=WZTBUUEI5NaboGl6XVawW11MqPFZF9u71LBUS5XGTJ4,6764
|
|
17
17
|
airflow/providers/common/sql/operators/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
18
18
|
airflow/providers/common/sql/operators/generic_transfer.py,sha256=EEKKMcOOLl0vyjXRHBI6UuoFLqpHpeHEj9zwMTrNAA4,8336
|
|
19
19
|
airflow/providers/common/sql/operators/generic_transfer.pyi,sha256=rhuCB7KSm_NutW8m3BNQmaoiUPDXp1fTrSeoR0Jr4dU,3330
|
|
20
|
-
airflow/providers/common/sql/operators/sql.py,sha256=
|
|
20
|
+
airflow/providers/common/sql/operators/sql.py,sha256=WrLBJksK5XxMXipF2b5JBbeFF3xGhtM1varJI83vfuQ,49920
|
|
21
21
|
airflow/providers/common/sql/sensors/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
22
|
-
airflow/providers/common/sql/sensors/sql.py,sha256=
|
|
22
|
+
airflow/providers/common/sql/sensors/sql.py,sha256=iYcE8vxLbya8GncOydjceAhu43uoGsN7wqjeYFQ-cak,5471
|
|
23
23
|
airflow/providers/common/sql/sensors/sql.pyi,sha256=GiOk2qD0PO5HWISgTTdOJQLC9b2ItzvQr68adXIbjGQ,2530
|
|
24
24
|
airflow/providers/common/sql/triggers/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
25
25
|
airflow/providers/common/sql/triggers/sql.py,sha256=C6BEhJdypE_hrvrWU_jxJuOi5FbpQG4xJ0EYPn_fqR0,3665
|
|
26
26
|
airflow/providers/common/sql/triggers/sql.pyi,sha256=7wVgfqUPJB7egsWwbZtwZV3TFm7DuKLclWetNInCM5w,1986
|
|
27
|
-
apache_airflow_providers_common_sql-1.
|
|
28
|
-
apache_airflow_providers_common_sql-1.
|
|
29
|
-
apache_airflow_providers_common_sql-1.
|
|
30
|
-
apache_airflow_providers_common_sql-1.
|
|
27
|
+
apache_airflow_providers_common_sql-1.26.0.dist-info/entry_points.txt,sha256=h8UXRp2crPuGmYVYRM5oe168qIh7g-4t2QQbVMizKjI,106
|
|
28
|
+
apache_airflow_providers_common_sql-1.26.0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
|
|
29
|
+
apache_airflow_providers_common_sql-1.26.0.dist-info/METADATA,sha256=K2TCRrbBxI9FDpSJrQGj2BN9PCTCYIsvQv_MmqxEFZ8,5344
|
|
30
|
+
apache_airflow_providers_common_sql-1.26.0.dist-info/RECORD,,
|