diff options
author | Alex Grönholm <alex.gronholm@nextday.fi> | 2021-10-09 12:51:45 +0300 |
---|---|---|
committer | Alex Grönholm <alex.gronholm@nextday.fi> | 2021-10-09 12:51:45 +0300 |
commit | 3ab5e567b70325f1b2469536e365f9ae39da9844 (patch) | |
tree | 091096e53bd20cbec87b4709d0b93765e332098d | |
parent | 71c698053524b8d0da52970ddeefa65fb764023d (diff) | |
download | apscheduler-3ab5e567b70325f1b2469536e365f9ae39da9844.tar.gz |
Enabled the use of tzlocal 4+
-rw-r--r-- | apscheduler/schedulers/base.py | 6 | ||||
-rw-r--r-- | apscheduler/triggers/cron/__init__.py | 6 | ||||
-rw-r--r-- | apscheduler/triggers/date.py | 6 | ||||
-rw-r--r-- | apscheduler/triggers/interval.py | 7 | ||||
-rw-r--r-- | apscheduler/util.py | 11 | ||||
-rw-r--r-- | docs/versionhistory.rst | 6 | ||||
-rw-r--r-- | setup.py | 5 |
7 files changed, 30 insertions, 17 deletions
diff --git a/apscheduler/schedulers/base.py b/apscheduler/schedulers/base.py index 3dfb743..b750650 100644 --- a/apscheduler/schedulers/base.py +++ b/apscheduler/schedulers/base.py @@ -8,7 +8,6 @@ import warnings import sys from pkg_resources import iter_entry_points -from tzlocal import get_localzone import six from apscheduler.schedulers import SchedulerAlreadyRunningError, SchedulerNotRunningError @@ -19,7 +18,8 @@ from apscheduler.jobstores.memory import MemoryJobStore from apscheduler.job import Job from apscheduler.triggers.base import BaseTrigger from apscheduler.util import ( - asbool, asint, astimezone, maybe_ref, timedelta_seconds, undefined, TIMEOUT_MAX) + asbool, asint, astimezone, get_pytz_localzone, maybe_ref, timedelta_seconds, undefined, + TIMEOUT_MAX) from apscheduler.events import ( SchedulerEvent, JobEvent, JobSubmissionEvent, EVENT_SCHEDULER_START, EVENT_SCHEDULER_SHUTDOWN, EVENT_JOBSTORE_ADDED, EVENT_JOBSTORE_REMOVED, EVENT_ALL, EVENT_JOB_MODIFIED, EVENT_JOB_REMOVED, @@ -699,7 +699,7 @@ class BaseScheduler(six.with_metaclass(ABCMeta)): def _configure(self, config): # Set general options self._logger = maybe_ref(config.pop('logger', None)) or getLogger('apscheduler.scheduler') - self.timezone = astimezone(config.pop('timezone', None)) or get_localzone() + self.timezone = astimezone(config.pop('timezone', None)) or get_pytz_localzone() self.jobstore_retry_interval = float(config.pop('jobstore_retry_interval', 10)) # Set the job defaults diff --git a/apscheduler/triggers/cron/__init__.py b/apscheduler/triggers/cron/__init__.py index fec6e3b..28bda47 100644 --- a/apscheduler/triggers/cron/__init__.py +++ b/apscheduler/triggers/cron/__init__.py @@ -1,12 +1,12 @@ from datetime import datetime, timedelta -from tzlocal import get_localzone import six from apscheduler.triggers.base import BaseTrigger from apscheduler.triggers.cron.fields import ( BaseField, MonthField, WeekField, DayOfMonthField, DayOfWeekField, DEFAULT_VALUES) -from apscheduler.util import datetime_ceil, convert_to_datetime, datetime_repr, astimezone +from apscheduler.util import ( + datetime_ceil, convert_to_datetime, datetime_repr, astimezone, get_pytz_localzone) class CronTrigger(BaseTrigger): @@ -55,7 +55,7 @@ class CronTrigger(BaseTrigger): elif isinstance(end_date, datetime) and end_date.tzinfo: self.timezone = end_date.tzinfo else: - self.timezone = get_localzone() + self.timezone = get_pytz_localzone() self.start_date = convert_to_datetime(start_date, self.timezone, 'start_date') self.end_date = convert_to_datetime(end_date, self.timezone, 'end_date') diff --git a/apscheduler/triggers/date.py b/apscheduler/triggers/date.py index 0768100..c6df3a8 100644 --- a/apscheduler/triggers/date.py +++ b/apscheduler/triggers/date.py @@ -1,9 +1,7 @@ from datetime import datetime -from tzlocal import get_localzone - from apscheduler.triggers.base import BaseTrigger -from apscheduler.util import convert_to_datetime, datetime_repr, astimezone +from apscheduler.util import convert_to_datetime, datetime_repr, astimezone, get_pytz_localzone class DateTrigger(BaseTrigger): @@ -17,7 +15,7 @@ class DateTrigger(BaseTrigger): __slots__ = 'run_date' def __init__(self, run_date=None, timezone=None): - timezone = astimezone(timezone) or get_localzone() + timezone = astimezone(timezone) or get_pytz_localzone() if run_date is not None: self.run_date = convert_to_datetime(run_date, timezone, 'run_date') else: diff --git a/apscheduler/triggers/interval.py b/apscheduler/triggers/interval.py index 61094aa..ea8d024 100644 --- a/apscheduler/triggers/interval.py +++ b/apscheduler/triggers/interval.py @@ -1,10 +1,9 @@ from datetime import timedelta, datetime from math import ceil -from tzlocal import get_localzone - from apscheduler.triggers.base import BaseTrigger -from apscheduler.util import convert_to_datetime, timedelta_seconds, datetime_repr, astimezone +from apscheduler.util import ( + convert_to_datetime, timedelta_seconds, datetime_repr, astimezone, get_pytz_localzone) class IntervalTrigger(BaseTrigger): @@ -41,7 +40,7 @@ class IntervalTrigger(BaseTrigger): elif isinstance(end_date, datetime) and end_date.tzinfo: self.timezone = end_date.tzinfo else: - self.timezone = get_localzone() + self.timezone = get_pytz_localzone() start_date = start_date or (datetime.now(self.timezone) + self.interval) self.start_date = convert_to_datetime(start_date, self.timezone, 'start_date') diff --git a/apscheduler/util.py b/apscheduler/util.py index 1e643bf..09749cc 100644 --- a/apscheduler/util.py +++ b/apscheduler/util.py @@ -11,6 +11,7 @@ import sys from pytz import timezone, utc, FixedOffset import six +import tzlocal try: from inspect import signature @@ -431,3 +432,13 @@ def iscoroutinefunction_partial(f): # The asyncio version of iscoroutinefunction includes testing for @coroutine # decorations vs. the inspect version which does not. return iscoroutinefunction(f) + + +def get_pytz_localzone(): + if hasattr(tzlocal, 'get_localzone_name'): + # tzlocal 4 or later + zone_name = tzlocal.get_localzone_name() + return timezone(zone_name) + else: + # tzlocal 2 or earlier + return tzlocal.get_localzone() diff --git a/docs/versionhistory.rst b/docs/versionhistory.rst index d17efcc..68c272b 100644 --- a/docs/versionhistory.rst +++ b/docs/versionhistory.rst @@ -4,6 +4,12 @@ Version history To find out how to migrate your application from a previous version of APScheduler, see the :doc:`migration section <migration>`. +UNRELEASED +---------- + +- Enabled the use of ``tzlocal`` 4 and later + + 3.8.0 ----- @@ -1,8 +1,7 @@ # coding: utf-8 import os.path -from setuptools import setup, find_packages - +from setuptools import find_packages, setup here = os.path.dirname(__file__) readme_path = os.path.join(here, 'README.rst') @@ -41,7 +40,7 @@ setup( 'setuptools >= 0.7', 'six >= 1.4.0', 'pytz', - 'tzlocal ~= 2.0', + 'tzlocal >= 2.0, != 3.*', ], extras_require={ ':python_version == "2.7"': ['futures'], |