apache-airflow-providers-common-sql 1.25.0rc1__py3-none-any.whl → 1.26.0rc1__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.
@@ -29,7 +29,7 @@ from airflow import __version__ as airflow_version
29
29
 
30
30
  __all__ = ["__version__"]
31
31
 
32
- __version__ = "1.25.0"
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(sql: str | Iterable[str], return_last: bool, split_statements: bool | None):
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
- else:
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
- else:
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(sql: str | Iterable[str], return_last: bool, split_statements: bool | None):
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
- elif len(args) == 1:
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 get_pandas_df_by_chunks(
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
- else:
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
- elif not self.partition_clause and "partition_clause" in checks[check]:
537
+ if not self.partition_clause and "partition_clause" in checks[check]:
538
538
  return f"WHERE {checks[check]['partition_clause']}"
539
- elif self.partition_clause and "partition_clause" in checks[check]:
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
- else:
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
- elif not self.partition_clause and "partition_clause" in self.checks[check_name]:
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
- elif self.partition_clause and "partition_clause" in self.checks[check_name]:
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
- else:
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
- else:
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
- else:
125
- message = f"self.success is present, but not callable -> {self.success}"
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.25.0rc1
3
+ Version: 1.26.0rc1
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.25.0/changelog.html
31
- Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.25.0
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.25.0``
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.25.0/>`_.
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.25.0/changelog.html>`_.
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=Ew3tWC35a-hICANabkcK790IlFt6eEeg-7fsgHGFm80,1498
4
- airflow/providers/common/sql/get_provider_info.py,sha256=WmoanSVASTkHnaAtFRzgh9f14V9hFa7t_UjmknC_BzQ,4141
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=pzZg6gDWQa_bIpoFCs3J_o_07Eb9EpbJIiNCk2e07e4,3413
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=y8m5YRsuQvH8DI9fPT9gtMZ2iSLKh5QW4bAgSfZRAL4,36134
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=0CGU23iEQhMz-OcdXYoHsmoKsZj--XMRFaQ-7Fr9jHU,49972
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=vJqxvDpwmGbq_6kMMqU4YjhHhcbhDhHYjJ2ufhLDmGc,5519
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.25.0rc1.dist-info/entry_points.txt,sha256=h8UXRp2crPuGmYVYRM5oe168qIh7g-4t2QQbVMizKjI,106
28
- apache_airflow_providers_common_sql-1.25.0rc1.dist-info/WHEEL,sha256=_2ozNFCLWc93bK4WKHCO-eDUENDlo-dgc9cU3qokYO4,82
29
- apache_airflow_providers_common_sql-1.25.0rc1.dist-info/METADATA,sha256=svkgZVUGQn-LfyMjnQeYEAqr4TfJ1QnYCDOJV9aqJ1k,5277
30
- apache_airflow_providers_common_sql-1.25.0rc1.dist-info/RECORD,,
27
+ apache_airflow_providers_common_sql-1.26.0rc1.dist-info/entry_points.txt,sha256=h8UXRp2crPuGmYVYRM5oe168qIh7g-4t2QQbVMizKjI,106
28
+ apache_airflow_providers_common_sql-1.26.0rc1.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
29
+ apache_airflow_providers_common_sql-1.26.0rc1.dist-info/METADATA,sha256=Uuum2BU4qXiPiYKIXsy7BgIMjv-Q3RTq_BsZCA2xWXI,5350
30
+ apache_airflow_providers_common_sql-1.26.0rc1.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: flit 3.11.0
2
+ Generator: flit 3.12.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any