You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by bo...@apache.org on 2017/11/27 20:39:45 UTC

[08/11] incubator-airflow git commit: [AIRFLOW-1806] Use naive datetime when using cron

[AIRFLOW-1806] Use naive datetime when using cron


Project: http://git-wip-us.apache.org/repos/asf/incubator-airflow/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-airflow/commit/8aadc311
Tree: http://git-wip-us.apache.org/repos/asf/incubator-airflow/tree/8aadc311
Diff: http://git-wip-us.apache.org/repos/asf/incubator-airflow/diff/8aadc311

Branch: refs/heads/master
Commit: 8aadc3112539f760bbd8b0454137e7a40091458c
Parents: 9624f5f
Author: Bolke de Bruin <bo...@xs4all.nl>
Authored: Wed Nov 15 21:44:16 2017 +0100
Committer: Bolke de Bruin <bo...@xs4all.nl>
Committed: Mon Nov 27 15:54:27 2017 +0100

----------------------------------------------------------------------
 airflow/utils/dates.py | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-airflow/blob/8aadc311/airflow/utils/dates.py
----------------------------------------------------------------------
diff --git a/airflow/utils/dates.py b/airflow/utils/dates.py
index dab2b0d..cb9c840 100644
--- a/airflow/utils/dates.py
+++ b/airflow/utils/dates.py
@@ -72,20 +72,28 @@ def date_range(
     delta_iscron = False
     if isinstance(delta, six.string_types):
         delta_iscron = True
+        tz = start_date.tzinfo
+        timezone.make_naive(start_date, tz)
         cron = croniter(delta, start_date)
     elif isinstance(delta, timedelta):
         delta = abs(delta)
     l = []
     if end_date:
         while start_date <= end_date:
+            if delta_iscron:
+                start_date = timezone.make_aware(start_date, tz)
             l.append(start_date)
+
             if delta_iscron:
                 start_date = cron.get_next(datetime)
             else:
                 start_date += delta
     else:
         for _ in range(abs(num)):
+            if delta_iscron:
+                start_date = timezone.make_aware(start_date, tz)
             l.append(start_date)
+
             if delta_iscron:
                 if num > 0:
                     start_date = cron.get_next(datetime)
@@ -122,12 +130,14 @@ def round_time(dt, delta, start_date=timezone.make_aware(datetime.min)):
 
     if isinstance(delta, six.string_types):
         # It's cron based, so it's easy
+        tz = start_date.tzinfo
+        start_date = timezone.make_naive(start_date, tz)
         cron = croniter(delta, start_date)
         prev = cron.get_prev(datetime)
         if prev == start_date:
-            return start_date
+            return timezone.make_aware(start_date, tz)
         else:
-            return prev
+            return timezone.make_aware(prev, tz)
 
     # Ignore the microseconds of dt
     dt -= timedelta(microseconds=dt.microsecond)