This is an automated email from the ASF dual-hosted git repository.

dstandish pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new a158fbb6bd Clarify docstrings for updated DbApiHook (#27966)
a158fbb6bd is described below

commit a158fbb6bde07cd20003680a4cf5e7811b9eda98
Author: Daniel Standish <15932138+dstand...@users.noreply.github.com>
AuthorDate: Mon Nov 28 16:12:39 2022 -0700

    Clarify docstrings for updated DbApiHook (#27966)
---
 airflow/providers/common/sql/hooks/sql.py | 57 ++++++++++++++++---------------
 1 file changed, 29 insertions(+), 28 deletions(-)

diff --git a/airflow/providers/common/sql/hooks/sql.py 
b/airflow/providers/common/sql/hooks/sql.py
index 06dbdb2f57..76260612a4 100644
--- a/airflow/providers/common/sql/hooks/sql.py
+++ b/airflow/providers/common/sql/hooks/sql.py
@@ -35,19 +35,20 @@ def return_single_query_results(sql: str | Iterable[str], 
return_last: bool, spl
     Determines when results of single query only should be returned.
 
     For compatibility reasons, the behaviour of the DBAPIHook is somewhat 
confusing.
-    In cases, when multiple queries are run, the return values will be an 
iterable (list) of results
-    - one for each query. However, in certain cases, when single query is run 
- the results will be just
-    the results of that single query without wrapping the results in a list.
+    In some cases, when multiple queries are run, the return value will be an 
iterable (list) of results
+    -- one for each query. However, in other cases, when single query is run, 
the return value will be just
+    the result of that single query without wrapping the results in a list.
 
-    The cases when single query results are returned without wrapping them in 
a list are when:
+    The cases when single query results are returned without wrapping them in 
a list are as follows:
 
-    a) sql is string and last_statement is True (regardless what 
split_statement value is)
-    b) sql is string and split_statement is False
+    a) sql is string and ``return_last`` is True (regardless what 
``split_statements`` value is)
+    b) sql is string and ``split_statements`` is False
 
-    In all other cases, the results are wrapped in a list, even if there is 
only one statement to process:
+    In all other cases, the results are wrapped in a list, even if there is 
only one statement to process.
+    In particular, the return value will be a list of query results in the 
following circumstances:
 
-    a) always when sql is an iterable of string statements (regardless what 
last_statement value is)
-    b) when sql is string, split_statement is True and last_statement is False
+    a) when ``sql`` is an iterable of string statements (regardless what 
``return_last`` value is)
+    b) when ``sql`` is string, ``split_statements`` is True and 
``return_last`` is False
 
     :param sql: sql to run (either string or list of strings)
     :param return_last: whether last statement output should only be returned
@@ -272,33 +273,33 @@ class DbApiHook(BaseForDbApiHook):
         where each element in the list are results of one of the queries 
(typically list of list of rows :D)
 
         For compatibility reasons, the behaviour of the DBAPIHook is somewhat 
confusing.
-        In cases, when multiple queries are run, the return values will be an 
iterable (list) of results
-        - one for each query. However, in certain cases, when single query is 
run - the results will be just
-        the results of that query without wrapping the results in a list.
+        In some cases, when multiple queries are run, the return value will be 
an iterable (list) of results
+        -- one for each query. However, in other cases, when single query is 
run, the return value will
+        be the result of that single query without wrapping the results in a 
list.
 
-        The cases when single query results are returned without wrapping them 
in a list are when:
+        The cases when single query results are returned without wrapping them 
in a list are as follows:
 
-        a) sql is string and last_statement is True (regardless what 
split_statement value is)
-        b) sql is string and split_statement is False
+        a) sql is string and ``return_last`` is True (regardless what 
``split_statements`` value is)
+        b) sql is string and ``split_statements`` is False
 
-        In all other cases, the results are wrapped in a list, even if there 
is only one statement to process:
+        In all other cases, the results are wrapped in a list, even if there 
is only one statement to process.
+        In particular, the return value will be a list of query results in the 
following circumstances:
 
-        a) always when sql is an iterable of string statements (regardless 
what last_statement value is)
-        b) when sql is string, split_statement is True and last_statement is 
False
+        a) when ``sql`` is an iterable of string statements (regardless what 
``return_last`` value is)
+        b) when ``sql`` is string, ``split_statements`` is True and 
``return_last`` is False
 
+        After ``run`` is called, you may access the following properties on 
the hook object:
 
-        In any of those cases, however you can access the following properties 
of the Hook after running it:
+          * ``descriptions``: an array of cursor descriptions. If 
``return_last`` is True, this will be
+             a one-element array containing the cursor ``description`` for the 
last statement.
+             Otherwise, it will contain the cursor description for each 
statement executed.
+          * ``last_description``: the description for the last statement 
executed
 
-          * descriptions - has an array of cursor descriptions - each 
statement executed contain the list
-            of descriptions executed. If ``return_last`` is used, this is 
always a one-element array
-          * last_description - description of the last statement executed
-
-        Note that return value from the hook will ONLY be actually returned 
when handler is provided. Setting
-        the ``handler`` to None, results in this method returning None.
+        Note that query result will ONLY be actually returned when a handler 
is provided; if
+        ``handler`` is None, this method will return None.
 
         Handler is a way to process the rows from cursor (Iterator) into a 
value that is suitable to be
-        returned to XCom and generally fit in memory. As an optimization, 
handler is usually not executed
-        by the SQLExecuteQuery operator if `do_xcom_push` is not specified.
+        returned to XCom and generally fit in memory.
 
         You can use pre-defined handles (`fetch_all_handler``, 
''fetch_one_handler``) or implement your
         own handler.
@@ -311,7 +312,7 @@ class DbApiHook(BaseForDbApiHook):
         :param handler: The result handler which is called with the result of 
each statement.
         :param split_statements: Whether to split a single SQL string into 
statements and run separately
         :param return_last: Whether to return result for only last statement 
or for all after split
-        :return: return only result of the ALL SQL expressions if handler was 
provided.
+        :return: if handler provided, returns query results (may be list of 
results depending on params)
         """
         self.descriptions = []
 

Reply via email to