apache-airflow-providers-common-sql 1.24.0__tar.gz → 1.24.1__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.

Potentially problematic release.


This version of apache-airflow-providers-common-sql might be problematic. Click here for more details.

Files changed (29) hide show
  1. {apache_airflow_providers_common_sql-1.24.0 → apache_airflow_providers_common_sql-1.24.1}/PKG-INFO +8 -8
  2. {apache_airflow_providers_common_sql-1.24.0 → apache_airflow_providers_common_sql-1.24.1}/README.rst +4 -4
  3. {apache_airflow_providers_common_sql-1.24.0 → apache_airflow_providers_common_sql-1.24.1}/pyproject.toml +5 -5
  4. {apache_airflow_providers_common_sql-1.24.0 → apache_airflow_providers_common_sql-1.24.1}/src/airflow/providers/common/sql/__init__.py +1 -1
  5. {apache_airflow_providers_common_sql-1.24.0 → apache_airflow_providers_common_sql-1.24.1}/src/airflow/providers/common/sql/get_provider_info.py +2 -1
  6. {apache_airflow_providers_common_sql-1.24.0 → apache_airflow_providers_common_sql-1.24.1}/src/airflow/providers/common/sql/operators/sql.py +14 -3
  7. {apache_airflow_providers_common_sql-1.24.0 → apache_airflow_providers_common_sql-1.24.1}/src/airflow/providers/common/sql/triggers/sql.py +21 -11
  8. {apache_airflow_providers_common_sql-1.24.0 → apache_airflow_providers_common_sql-1.24.1}/src/airflow/providers/common/sql/LICENSE +0 -0
  9. {apache_airflow_providers_common_sql-1.24.0 → apache_airflow_providers_common_sql-1.24.1}/src/airflow/providers/common/sql/README_API.md +0 -0
  10. {apache_airflow_providers_common_sql-1.24.0 → apache_airflow_providers_common_sql-1.24.1}/src/airflow/providers/common/sql/dialects/__init__.py +0 -0
  11. {apache_airflow_providers_common_sql-1.24.0 → apache_airflow_providers_common_sql-1.24.1}/src/airflow/providers/common/sql/dialects/dialect.py +0 -0
  12. {apache_airflow_providers_common_sql-1.24.0 → apache_airflow_providers_common_sql-1.24.1}/src/airflow/providers/common/sql/dialects/dialect.pyi +0 -0
  13. {apache_airflow_providers_common_sql-1.24.0 → apache_airflow_providers_common_sql-1.24.1}/src/airflow/providers/common/sql/doc/adr/0001-record-architecture-decisions.md +0 -0
  14. {apache_airflow_providers_common_sql-1.24.0 → apache_airflow_providers_common_sql-1.24.1}/src/airflow/providers/common/sql/doc/adr/0002-return-common-data-structure-from-dbapihook-derived-hooks.md +0 -0
  15. {apache_airflow_providers_common_sql-1.24.0 → apache_airflow_providers_common_sql-1.24.1}/src/airflow/providers/common/sql/doc/adr/0003-introduce-notion-of-dialects-in-dbapihook.md +0 -0
  16. {apache_airflow_providers_common_sql-1.24.0 → apache_airflow_providers_common_sql-1.24.1}/src/airflow/providers/common/sql/get_provider_info.pyi +0 -0
  17. {apache_airflow_providers_common_sql-1.24.0 → apache_airflow_providers_common_sql-1.24.1}/src/airflow/providers/common/sql/hooks/__init__.py +0 -0
  18. {apache_airflow_providers_common_sql-1.24.0 → apache_airflow_providers_common_sql-1.24.1}/src/airflow/providers/common/sql/hooks/handlers.py +0 -0
  19. {apache_airflow_providers_common_sql-1.24.0 → apache_airflow_providers_common_sql-1.24.1}/src/airflow/providers/common/sql/hooks/handlers.pyi +0 -0
  20. {apache_airflow_providers_common_sql-1.24.0 → apache_airflow_providers_common_sql-1.24.1}/src/airflow/providers/common/sql/hooks/sql.py +0 -0
  21. {apache_airflow_providers_common_sql-1.24.0 → apache_airflow_providers_common_sql-1.24.1}/src/airflow/providers/common/sql/hooks/sql.pyi +0 -0
  22. {apache_airflow_providers_common_sql-1.24.0 → apache_airflow_providers_common_sql-1.24.1}/src/airflow/providers/common/sql/operators/__init__.py +0 -0
  23. {apache_airflow_providers_common_sql-1.24.0 → apache_airflow_providers_common_sql-1.24.1}/src/airflow/providers/common/sql/operators/generic_transfer.py +0 -0
  24. {apache_airflow_providers_common_sql-1.24.0 → apache_airflow_providers_common_sql-1.24.1}/src/airflow/providers/common/sql/operators/generic_transfer.pyi +0 -0
  25. {apache_airflow_providers_common_sql-1.24.0 → apache_airflow_providers_common_sql-1.24.1}/src/airflow/providers/common/sql/sensors/__init__.py +0 -0
  26. {apache_airflow_providers_common_sql-1.24.0 → apache_airflow_providers_common_sql-1.24.1}/src/airflow/providers/common/sql/sensors/sql.py +0 -0
  27. {apache_airflow_providers_common_sql-1.24.0 → apache_airflow_providers_common_sql-1.24.1}/src/airflow/providers/common/sql/sensors/sql.pyi +0 -0
  28. {apache_airflow_providers_common_sql-1.24.0 → apache_airflow_providers_common_sql-1.24.1}/src/airflow/providers/common/sql/triggers/__init__.py +0 -0
  29. {apache_airflow_providers_common_sql-1.24.0 → apache_airflow_providers_common_sql-1.24.1}/src/airflow/providers/common/sql/triggers/sql.pyi +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: apache-airflow-providers-common-sql
3
- Version: 1.24.0
3
+ Version: 1.24.1
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>
@@ -27,11 +27,11 @@ 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
29
  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.24.0/changelog.html
31
- Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.24.0
30
+ Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.24.1/changelog.html
31
+ Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.24.1
32
+ Project-URL: Mastodon, https://fosstodon.org/@airflow
32
33
  Project-URL: Slack Chat, https://s.apache.org/airflow-slack
33
34
  Project-URL: Source Code, https://github.com/apache/airflow
34
- Project-URL: Twitter, https://x.com/ApacheAirflow
35
35
  Project-URL: YouTube, https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/
36
36
  Provides-Extra: openlineage
37
37
  Provides-Extra: pandas
@@ -61,7 +61,7 @@ Provides-Extra: pandas
61
61
 
62
62
  Package ``apache-airflow-providers-common-sql``
63
63
 
64
- Release: ``1.24.0``
64
+ Release: ``1.24.1``
65
65
 
66
66
 
67
67
  `Common SQL Provider <https://en.wikipedia.org/wiki/SQL>`__
@@ -74,7 +74,7 @@ This is a provider package for ``common.sql`` provider. All classes for this pro
74
74
  are in ``airflow.providers.common.sql`` python package.
75
75
 
76
76
  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.24.0/>`_.
77
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.24.1/>`_.
78
78
 
79
79
  Installation
80
80
  ------------
@@ -101,7 +101,7 @@ Cross provider package dependencies
101
101
  -----------------------------------
102
102
 
103
103
  Those are dependencies that might be needed in order to use all the features of the package.
104
- You need to install the specified provider packages in order to use them.
104
+ You need to install the specified providers in order to use them.
105
105
 
106
106
  You can install such cross-provider dependencies when installing from PyPI. For example:
107
107
 
@@ -117,5 +117,5 @@ Dependent package
117
117
  ============================================================================================================== ===============
118
118
 
119
119
  The changelog for the provider package can be found in the
120
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.24.0/changelog.html>`_.
120
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.24.1/changelog.html>`_.
121
121
 
@@ -23,7 +23,7 @@
23
23
 
24
24
  Package ``apache-airflow-providers-common-sql``
25
25
 
26
- Release: ``1.24.0``
26
+ Release: ``1.24.1``
27
27
 
28
28
 
29
29
  `Common SQL Provider <https://en.wikipedia.org/wiki/SQL>`__
@@ -36,7 +36,7 @@ This is a provider package for ``common.sql`` provider. All classes for this pro
36
36
  are in ``airflow.providers.common.sql`` python package.
37
37
 
38
38
  You can find package information and changelog for the provider
39
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.24.0/>`_.
39
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.24.1/>`_.
40
40
 
41
41
  Installation
42
42
  ------------
@@ -63,7 +63,7 @@ Cross provider package dependencies
63
63
  -----------------------------------
64
64
 
65
65
  Those are dependencies that might be needed in order to use all the features of the package.
66
- You need to install the specified provider packages in order to use them.
66
+ You need to install the specified providers in order to use them.
67
67
 
68
68
  You can install such cross-provider dependencies when installing from PyPI. For example:
69
69
 
@@ -79,4 +79,4 @@ Dependent package
79
79
  ============================================================================================================== ===============
80
80
 
81
81
  The changelog for the provider package can be found in the
82
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.24.0/changelog.html>`_.
82
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.24.1/changelog.html>`_.
@@ -20,12 +20,12 @@
20
20
  # IF YOU WANT TO MODIFY THIS FILE EXCEPT DEPENDENCIES, YOU SHOULD MODIFY THE TEMPLATE
21
21
  # `pyproject_TEMPLATE.toml.jinja2` IN the `dev/breeze/src/airflow_breeze/templates` DIRECTORY
22
22
  [build-system]
23
- requires = ["flit_core==3.11.0"]
23
+ requires = ["flit_core==3.12.0"]
24
24
  build-backend = "flit_core.buildapi"
25
25
 
26
26
  [project]
27
27
  name = "apache-airflow-providers-common-sql"
28
- version = "1.24.0"
28
+ version = "1.24.1"
29
29
  description = "Provider package apache-airflow-providers-common-sql for Apache Airflow"
30
30
  readme = "README.rst"
31
31
  authors = [
@@ -99,12 +99,12 @@ apache-airflow-providers-fab = {workspace = true}
99
99
  apache-airflow-providers-standard = {workspace = true}
100
100
 
101
101
  [project.urls]
102
- "Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.24.0"
103
- "Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.24.0/changelog.html"
102
+ "Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.24.1"
103
+ "Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.24.1/changelog.html"
104
104
  "Bug Tracker" = "https://github.com/apache/airflow/issues"
105
105
  "Source Code" = "https://github.com/apache/airflow"
106
106
  "Slack Chat" = "https://s.apache.org/airflow-slack"
107
- "Twitter" = "https://x.com/ApacheAirflow"
107
+ "Mastodon" = "https://fosstodon.org/@airflow"
108
108
  "YouTube" = "https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/"
109
109
 
110
110
  [project.entry-points."apache_airflow_provider"]
@@ -29,7 +29,7 @@ from airflow import __version__ as airflow_version
29
29
 
30
30
  __all__ = ["__version__"]
31
31
 
32
- __version__ = "1.24.0"
32
+ __version__ = "1.24.1"
33
33
 
34
34
  if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
35
35
  "2.9.0"
@@ -27,8 +27,9 @@ def get_provider_info():
27
27
  "name": "Common SQL",
28
28
  "description": "`Common SQL Provider <https://en.wikipedia.org/wiki/SQL>`__\n",
29
29
  "state": "ready",
30
- "source-date-epoch": 1741508670,
30
+ "source-date-epoch": 1742481439,
31
31
  "versions": [
32
+ "1.24.1",
32
33
  "1.24.0",
33
34
  "1.23.0",
34
35
  "1.21.0",
@@ -478,7 +478,7 @@ class SQLColumnCheckOperator(BaseSQLOperator):
478
478
 
479
479
  self.table = table
480
480
  self.column_mapping = column_mapping
481
- self.partition_clause = partition_clause
481
+ self.partition_clause = _initialize_partition_clause(partition_clause)
482
482
  self.accept_none = accept_none
483
483
 
484
484
  def _build_checks_sql():
@@ -699,7 +699,7 @@ class SQLTableCheckOperator(BaseSQLOperator):
699
699
 
700
700
  self.table = table
701
701
  self.checks = checks
702
- self.partition_clause = partition_clause
702
+ self.partition_clause = _initialize_partition_clause(partition_clause)
703
703
  self.sql = f"SELECT check_name, check_result FROM ({self._generate_sql_query()}) AS check_table"
704
704
 
705
705
  def execute(self, context: Context):
@@ -1200,7 +1200,7 @@ class BranchSQLOperator(BaseSQLOperator, SkipMixin):
1200
1200
  self.conn_id,
1201
1201
  )
1202
1202
  record = self.get_db_hook().get_first(self.sql, self.parameters)
1203
- if not record:
1203
+ if record is None:
1204
1204
  raise AirflowException(
1205
1205
  "No rows returned from sql query. Operator expected True or False return value."
1206
1206
  )
@@ -1243,3 +1243,14 @@ class BranchSQLOperator(BaseSQLOperator, SkipMixin):
1243
1243
 
1244
1244
  # TODO(potiuk) remove the type ignore once we solve provider <-> Task SDK relationship
1245
1245
  self.skip_all_except(context["ti"], follow_branch) # type: ignore[arg-type]
1246
+
1247
+
1248
+ def _initialize_partition_clause(clause: str | None) -> str | None:
1249
+ """Ensure the partition_clause contains only valid patterns."""
1250
+ if clause is None:
1251
+ return None
1252
+
1253
+ if ";" in clause:
1254
+ raise ValueError("Invalid partition_clause: semicolons (;) not allowed.")
1255
+
1256
+ return clause
@@ -61,25 +61,35 @@ class SQLExecuteQueryTrigger(BaseTrigger):
61
61
  },
62
62
  )
63
63
 
64
+ def get_hook(self) -> DbApiHook:
65
+ """
66
+ Return DbApiHook.
67
+
68
+ :return: DbApiHook for this connection
69
+ """
70
+ connection = BaseHook.get_connection(self.conn_id)
71
+ hook = connection.get_hook(hook_params=self.hook_params)
72
+ if not isinstance(hook, DbApiHook):
73
+ raise AirflowException(
74
+ f"You are trying to use `common-sql` with {hook.__class__.__name__},"
75
+ " but its provider does not support it. Please upgrade the provider to a version that"
76
+ " supports `common-sql`. The hook class should be a subclass of"
77
+ f" `{hook.__class__.__module__}.{hook.__class__.__name__}`."
78
+ f" Got {hook.__class__.__name__} hook with class hierarchy: {hook.__class__.mro()}"
79
+ )
80
+ return hook
81
+
64
82
  async def run(self) -> AsyncIterator[TriggerEvent]:
65
83
  try:
66
- hook = BaseHook.get_hook(self.conn_id, hook_params=self.hook_params)
67
-
68
- if not isinstance(hook, DbApiHook):
69
- raise AirflowException(
70
- f"You are trying to use `common-sql` with {hook.__class__.__name__},"
71
- " but its provider does not support it. Please upgrade the provider to a version that"
72
- " supports `common-sql`. The hook class should be a subclass of"
73
- f" `{hook.__class__.__module__}.{hook.__class__.__name__}`."
74
- f" Got {hook.__class__.__name__} hook with class hierarchy: {hook.__class__.mro()}"
75
- )
84
+ hook = self.get_hook()
76
85
 
77
86
  self.log.info("Extracting data from %s", self.conn_id)
78
87
  self.log.info("Executing: \n %s", self.sql)
79
88
  self.log.info("Reading records from %s", self.conn_id)
89
+
80
90
  results = hook.get_records(self.sql)
81
- self.log.info("Reading records from %s done!", self.conn_id)
82
91
 
92
+ self.log.info("Reading records from %s done!", self.conn_id)
83
93
  self.log.debug("results: %s", results)
84
94
  yield TriggerEvent({"status": "success", "results": results})
85
95
  except Exception as e: