summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Grönholm <alex.gronholm@nextday.fi>2018-08-15 21:16:25 +0300
committerAlex Grönholm <alex.gronholm@nextday.fi>2018-08-15 21:16:25 +0300
commita1be548fbf8b5d4c427a2389f20806f2275fe013 (patch)
tree214336b8d72f77f306fc69babac4bbd0bfcd4010
parent8ebdae9bfe468a836079c26f8ed2b2362f9bebf9 (diff)
downloadapscheduler-a1be548fbf8b5d4c427a2389f20806f2275fe013.tar.gz
Added Python 3.7 compatibility
-rw-r--r--.travis.yml4
-rw-r--r--setup.py5
-rw-r--r--tests/test_schedulers.py6
-rw-r--r--tests/test_triggers.py10
-rw-r--r--tox.ini4
5 files changed, 22 insertions, 7 deletions
diff --git a/.travis.yml b/.travis.yml
index 4ba520d..6eb1e4a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,4 +1,5 @@
sudo: required
+dist: xenial
language: python
stages:
@@ -28,6 +29,9 @@ jobs:
- env: TOXENV=py36
python: "3.6"
+ - env: TOXENV=py37
+ python: "3.7"
+
- env: TOXENV=flake8
sudo: false
python: "3.5"
diff --git a/setup.py b/setup.py
index 6bb57db..3fc5ba9 100644
--- a/setup.py
+++ b/setup.py
@@ -28,7 +28,8 @@ setup(
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
- 'Programming Language :: Python :: 3.6'
+ 'Programming Language :: Python :: 3.6',
+ 'Programming Language :: Python :: 3.7'
],
keywords='scheduling cron',
license='MIT',
@@ -59,7 +60,7 @@ setup(
'pytest-tornado5'
],
'testing:python_version == "2.7"': ['mock'],
- 'testing:python_version != "2.7"': ['pytest_asyncio < 0.6.0']
+ 'testing:python_version != "2.7"': ['pytest_asyncio']
},
zip_safe=False,
entry_points={
diff --git a/tests/test_schedulers.py b/tests/test_schedulers.py
index 198745a..73baef4 100644
--- a/tests/test_schedulers.py
+++ b/tests/test_schedulers.py
@@ -1,4 +1,5 @@
import logging
+import sys
from datetime import datetime, timedelta
from threading import Thread
@@ -728,8 +729,10 @@ Jobstore other:
assert str(exc.value) == 'Expected a trigger instance or string, got int instead'
def test_create_trigger_bad_plugin_type(self, scheduler):
+ mock_plugin = MagicMock()
+ mock_plugin.load.configure_mock(return_value=object)
scheduler._trigger_classes = {}
- scheduler._trigger_plugins = {'dummy': MagicMock(return_value=object)}
+ scheduler._trigger_plugins = {'dummy': mock_plugin}
exc = pytest.raises(TypeError, scheduler._create_trigger, 'dummy', {})
assert str(exc.value) == 'The trigger entry point does not point to a trigger class'
@@ -968,6 +971,7 @@ class TestAsyncIOScheduler(SchedulerImplementationTestBase):
thread.join()
+@pytest.mark.skipif(sys.version_info >= (3, 7), reason='Gevent does not yet work on Python 3.7+')
class TestGeventScheduler(SchedulerImplementationTestBase):
@pytest.fixture
def scheduler(self):
diff --git a/tests/test_triggers.py b/tests/test_triggers.py
index dffc71d..299e9f6 100644
--- a/tests/test_triggers.py
+++ b/tests/test_triggers.py
@@ -1,5 +1,6 @@
import pickle
import random
+import sys
from datetime import datetime, timedelta, date
import pytest
@@ -538,9 +539,14 @@ class TestIntervalTrigger(object):
assert repr(trigger) == "<CronTrigger (day='1-2,4-7', timezone='Europe/Berlin')>"
def test_repr(self, trigger):
- assert repr(trigger) == ("<IntervalTrigger (interval=datetime.timedelta(0, 1), "
+ if sys.version_info[:2] < (3, 7):
+ timedelta_args = '0, 1'
+ else:
+ timedelta_args = 'seconds=1'
+
+ assert repr(trigger) == ("<IntervalTrigger (interval=datetime.timedelta({}), "
"start_date='2009-08-04 00:00:02 CEST', "
- "timezone='Europe/Berlin')>")
+ "timezone='Europe/Berlin')>".format(timedelta_args))
def test_str(self, trigger):
assert str(trigger) == "interval[0:00:01]"
diff --git a/tox.ini b/tox.ini
index e55b25f..03ff8cf 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,5 +1,5 @@
[tox]
-envlist = py27, py34, py35, py36, pypy, pypy3, flake8
+envlist = py27, py34, py35, py36, py37, pypy, pypy3, flake8
skip_missing_interpreters = true
[testenv]
@@ -14,7 +14,7 @@ extras = testing
tornado
twisted
zookeeper
-deps = {py35,py36}: PyQt5
+deps = {py35,py36,py37}: PyQt5
[testenv:flake8]
deps = flake8