diff --git a/.travis.yml b/.travis.yml index 98897ef..3e75c1c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,13 +1,24 @@ language: python python: - 2.7 - - 3.3 - 3.4 - 3.5 + - 3.6 - pypy + - pypy3 +matrix: + include: + - python: "3.7" + dist: xenial +before_install: + - pip install -U pip setuptools + - pip install -U coverage coveralls install: - - pip install tox-travis + - pip install -U -e .[test] script: - - tox + - coverage run -m zope.testrunner --test-path=src +after_success: + - coveralls notifications: email: false +cache: pip diff --git a/CHANGES.txt b/CHANGES.txt index 10f2eaa..f004882 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -4,7 +4,9 @@ Changelog 4.1.0 (unreleased) ------------------ -- Nothing changed yet. +- Add support for Python 3.6, 3.7 and PyPy3. + +- Drop support for Python 3.3. 4.0.0 (2016-08-08) diff --git a/setup.py b/setup.py index c30171c..13e88ac 100644 --- a/setup.py +++ b/setup.py @@ -55,9 +55,10 @@ def read(*rnames): 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.3', 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', + 'Programming Language :: Python :: 3.6', + 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: Implementation', 'Programming Language :: Python :: Implementation :: CPython', 'Programming Language :: Python :: Implementation :: PyPy', @@ -65,7 +66,7 @@ def read(*rnames): 'Operating System :: OS Independent', 'Topic :: Internet :: WWW/HTTP', 'Framework :: Zope :: 3'], - url='http://pypi.python.org/pypi/zope.app.appsetup', + url='https://github.com/zopefoundation/zope.app.appsetup', packages=find_packages('src'), package_dir={'': 'src'}, namespace_packages=['zope', 'zope.app'], diff --git a/src/zope/app/appsetup/bootstrap.py b/src/zope/app/appsetup/bootstrap.py index 0a8b393..4893218 100644 --- a/src/zope/app/appsetup/bootstrap.py +++ b/src/zope/app/appsetup/bootstrap.py @@ -180,7 +180,7 @@ def checkSecurityPolicy(event): was refactored and now it needs to be included from site.zcml. """ if getSecurityPolicy() is ParanoidSecurityPolicy: - logging.getLogger('zope.app.appsetup').warn( + logging.getLogger('zope.app.appsetup').warning( 'Security policy is not configured.\n' 'Please make sure that securitypolicy.zcml is included' ' in site.zcml immediately\n' diff --git a/src/zope/app/appsetup/bootstrap.txt b/src/zope/app/appsetup/bootstrap.txt index 365e47a..3fe51a8 100644 --- a/src/zope/app/appsetup/bootstrap.txt +++ b/src/zope/app/appsetup/bootstrap.txt @@ -10,8 +10,8 @@ object. It subscribes to DatabaseOpened events: >>> from zope.app.appsetup import bootstrap >>> import zope.processlifetime - >>> from ZODB.tests import util - >>> db = util.DB() + >>> from ZODB.MappingStorage import DB + >>> db = DB() >>> bootstrap.bootStrapSubscriber(zope.processlifetime.DatabaseOpened(db)) The subscriber makes sure that there is a root folder: diff --git a/src/zope/app/appsetup/debug.py b/src/zope/app/appsetup/debug.py index 9e19f4a..db9431b 100644 --- a/src/zope/app/appsetup/debug.py +++ b/src/zope/app/appsetup/debug.py @@ -60,7 +60,8 @@ def main(args=None): db = loadApplication(args) if "PYTHONSTARTUP" in os.environ: startup = os.environ["PYTHONSTARTUP"] - exec(compile(open(startup).read(), startup, 'exec')) + with open(startup) as s: + exec(compile(s.read(), startup, 'exec')) sys.modules['__main__'].root = db.open().root()[ZopePublication.root_name] print('The application root is known as `root`.') os.environ["PYTHONINSPECT"] = "true" diff --git a/src/zope/app/appsetup/tests.py b/src/zope/app/appsetup/tests.py index e9a4444..cc81201 100644 --- a/src/zope/app/appsetup/tests.py +++ b/src/zope/app/appsetup/tests.py @@ -27,7 +27,7 @@ import zope.component -from ZODB.tests.util import DB +from ZODB.MappingStorage import DB from zope.traversing.api import traverse, getPath from zope.error.interfaces import IErrorReportingUtility from zope.error.error import ErrorReportingUtility diff --git a/tox.ini b/tox.ini index 1667049..b92260a 100644 --- a/tox.ini +++ b/tox.ini @@ -1,29 +1,22 @@ [tox] -envlist = coverage-clean, py27, py33, py34, py35, pypy, coverage-report +envlist = flake8, py27, py34, py35, py36, py37, pypy, pypy3, coverage [testenv] +usedevelop = true commands = - coverage run setup.py ftest -setenv = - COVERAGE_FILE=.coverage.{envname} + zope-testrunner --test-path=src [] +extras = test + +[testenv:coverage] +basepython = python3.7 +commands = + coverage run -m zope.testrunner --test-path=src [] + coverage report --fail-under=80 deps = - .[test] coverage -[testenv:coverage-clean] -deps = coverage -setenv = - COVERAGE_FILE=.coverage +[testenv:flake8] +basepython = python3.6 skip_install = true -commands = coverage erase - -[testenv:coverage-report] -deps = coverage -setenv = - COVERAGE_FILE=.coverage -skip_install = true -commands = - coverage combine - coverage report - coverage html - coverage xml +deps = flake8 +commands = flake8 --doctests src setup.py