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

bolke 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 90a100a7c3 Fix SalesforceHook compatiblity with Pandas 2.x (#35145)
90a100a7c3 is described below

commit 90a100a7c3d554d1c674a90feaefdf42fd4c45ba
Author: dave-pollock <[email protected]>
AuthorDate: Wed Nov 1 00:53:08 2023 +1100

    Fix SalesforceHook compatiblity with Pandas 2.x (#35145)
    
    In pandas 2.0.0, pandas.np was removed. Airflow 2.7.0 switched to pandas 
2.x, however the SalesforceHook still has a reference to pandas.np, and is 
therefore broken in some cases after 2.7.0, resulting in an AttributeError if 
the _to_timestamp method is called.
---
 airflow/providers/salesforce/hooks/salesforce.py    | 3 ++-
 tests/providers/salesforce/hooks/test_salesforce.py | 7 +++++--
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/airflow/providers/salesforce/hooks/salesforce.py 
b/airflow/providers/salesforce/hooks/salesforce.py
index bca3521226..5bdbb6eaa8 100644
--- a/airflow/providers/salesforce/hooks/salesforce.py
+++ b/airflow/providers/salesforce/hooks/salesforce.py
@@ -242,6 +242,7 @@ class SalesforceHook(BaseHook):
         # between 0 and 10 are turned into timestamps
         # if the column cannot be converted,
         # just return the original column untouched
+        import numpy as np
         import pandas as pd
 
         try:
@@ -259,7 +260,7 @@ class SalesforceHook(BaseHook):
             try:
                 converted.append(value.timestamp())
             except (ValueError, AttributeError):
-                converted.append(pd.np.NaN)
+                converted.append(np.NaN)
 
         return pd.Series(converted, index=column.index)
 
diff --git a/tests/providers/salesforce/hooks/test_salesforce.py 
b/tests/providers/salesforce/hooks/test_salesforce.py
index b3792c6121..0c1d9ede4c 100644
--- a/tests/providers/salesforce/hooks/test_salesforce.py
+++ b/tests/providers/salesforce/hooks/test_salesforce.py
@@ -422,7 +422,9 @@ class TestSalesforceHook:
     )
     @patch(
         "pandas.DataFrame.from_records",
-        return_value=pd.DataFrame({"test": [1, 2, 3], "field_1": 
["2019-01-01", "2019-01-02", "2019-01-03"]}),
+        return_value=pd.DataFrame(
+            {"test": [1, 2, 3, 4], "field_1": ["2019-01-01", "2019-01-02", 
"2019-01-03", "NaT"]}
+        ),
     )
     def test_object_to_df_with_timestamp_conversion(self, mock_data_frame, 
mock_describe_object):
         obj_name = "obj_name"
@@ -434,7 +436,8 @@ class TestSalesforceHook:
 
         mock_describe_object.assert_called_once_with(obj_name)
         pd.testing.assert_frame_equal(
-            data_frame, pd.DataFrame({"test": [1, 2, 3], "field_1": 
[1.546301e09, 1.546387e09, 1.546474e09]})
+            data_frame,
+            pd.DataFrame({"test": [1, 2, 3, 4], "field_1": [1.546301e09, 
1.546387e09, 1.546474e09, np.nan]}),
         )
 
     @patch("airflow.providers.salesforce.hooks.salesforce.time.time", 
return_value=1.23)

Reply via email to