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

potiuk 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 ddaf74df9b convert TimeSensorAsync target_time to utc on call time 
(#25221)
ddaf74df9b is described below

commit ddaf74df9b1e9a4698d719f81931e822b21b0a95
Author: GitStart-AirFlow <[email protected]>
AuthorDate: Fri Jul 22 22:03:46 2022 +0100

    convert TimeSensorAsync target_time to utc on call time (#25221)
---
 airflow/sensors/time_sensor.py    | 4 +++-
 tests/sensors/test_time_sensor.py | 7 +++++++
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/airflow/sensors/time_sensor.py b/airflow/sensors/time_sensor.py
index 117390925d..edd8a7689d 100644
--- a/airflow/sensors/time_sensor.py
+++ b/airflow/sensors/time_sensor.py
@@ -51,10 +51,12 @@ class TimeSensorAsync(BaseSensorOperator):
         super().__init__(**kwargs)
         self.target_time = target_time
 
-        self.target_datetime = timezone.coerce_datetime(
+        aware_time = timezone.coerce_datetime(
             datetime.datetime.combine(datetime.datetime.today(), 
self.target_time)
         )
 
+        self.target_datetime = timezone.convert_to_utc(aware_time)
+
     def execute(self, context: Context):
         self.defer(
             trigger=DateTimeTrigger(moment=self.target_datetime),
diff --git a/tests/sensors/test_time_sensor.py 
b/tests/sensors/test_time_sensor.py
index b3ce2e84d9..4d69b71324 100644
--- a/tests/sensors/test_time_sensor.py
+++ b/tests/sensors/test_time_sensor.py
@@ -68,3 +68,10 @@ class TestTimeSensorAsync:
         assert exc_info.value.trigger.moment == timezone.datetime(2020, 7, 7, 
10)
         assert exc_info.value.method_name == "execute_complete"
         assert exc_info.value.kwargs is None
+
+    def test_target_time_aware(self):
+        with DAG("test_target_time_aware", start_date=timezone.datetime(2020, 
1, 1, 23, 0)):
+            aware_time = time(0, 1).replace(tzinfo=pendulum.local_timezone())
+            op = TimeSensorAsync(task_id="test", target_time=aware_time)
+            assert hasattr(op.target_datetime.tzinfo, "offset")
+            assert op.target_datetime.tzinfo.offset == 0

Reply via email to