summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Howitz <mh@gocept.com>2020-11-05 13:30:11 +0100
committerGitHub <noreply@github.com>2020-11-05 13:30:11 +0100
commit3efc9579ba378f2809579ee2dc378f09e5a57ffb (patch)
tree8d1d62d52778589aa32ec21d98f20788d111b33e
parentdb372a6a07dfd8ce4dbbd16121f7c58b3c221e82 (diff)
downloadzope-interface-3efc9579ba378f2809579ee2dc378f09e5a57ffb.tar.gz
Add support for Python 3.9. (#222)
-rwxr-xr-x.manylinux-install.sh3
-rw-r--r--.travis.yml10
-rw-r--r--CHANGES.rst6
-rw-r--r--appveyor.yml2
-rw-r--r--bootstrap.py210
-rw-r--r--setup.py2
-rw-r--r--tox.ini13
7 files changed, 29 insertions, 217 deletions
diff --git a/.manylinux-install.sh b/.manylinux-install.sh
index 05bb4e8..ea41c49 100755
--- a/.manylinux-install.sh
+++ b/.manylinux-install.sh
@@ -8,7 +8,8 @@ for PYBIN in /opt/python/*/bin; do
[[ "${PYBIN}" == *"cp35"* ]] || \
[[ "${PYBIN}" == *"cp36"* ]] || \
[[ "${PYBIN}" == *"cp37"* ]] || \
- [[ "${PYBIN}" == *"cp38"* ]]; then
+ [[ "${PYBIN}" == *"cp38"* ]] || \
+ [[ "${PYBIN}" == *"cp39"* ]]; then
"${PYBIN}/pip" install -e /io/
"${PYBIN}/pip" wheel /io/ -w wheelhouse/
if [ `uname -m` == 'aarch64' ]; then
diff --git a/.travis.yml b/.travis.yml
index e10c753..6d4701b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,5 +1,5 @@
language: python
-
+dist: focal
env:
global:
ZOPE_INTERFACE_STRICT_IRO: 1
@@ -13,7 +13,8 @@ python:
- 3.6
- 3.7
- 3.8
- - pypy
+ - 3.9
+ - pypy2
- pypy3
jobs:
@@ -47,6 +48,7 @@ jobs:
script: bash .manylinux.sh
- name: aarch64 wheels
+ dist: bionic
group: edge
arch: arm64
virt: lxd
@@ -82,6 +84,10 @@ jobs:
os: osx
language: generic
env: TERRYFY_PYTHON='macpython 3.8.0'
+ - name: Python 3.9 wheels for MacOS
+ os: osx
+ language: generic
+ env: TERRYFY_PYTHON='macpython 3.9.0'
before_install:
- |
diff --git a/CHANGES.rst b/CHANGES.rst
index 7a869e0..9545c5d 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -2,12 +2,16 @@
Changes
=========
-5.1.3 (unreleased)
+5.2.0 (unreleased)
==================
- Add documentation section ``Persistency and Equality``
(`#218 <https://github.com/zopefoundation/zope.interface/issues/218>`_).
+- Create arm64 wheels.
+
+- Add support for Python 3.9.
+
5.1.2 (2020-10-01)
==================
diff --git a/appveyor.yml b/appveyor.yml
index 41fbbbb..caca09e 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -15,6 +15,8 @@ environment:
- python: 37-x64
- python: 38
- python: 38-x64
+ - python: 39
+ - python: 39-x64
install:
- "SET PATH=C:\\Python%PYTHON%;c:\\Python%PYTHON%\\scripts;%PATH%"
diff --git a/bootstrap.py b/bootstrap.py
deleted file mode 100644
index a459921..0000000
--- a/bootstrap.py
+++ /dev/null
@@ -1,210 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2006 Zope Foundation and Contributors.
-# All Rights Reserved.
-#
-# This software is subject to the provisions of the Zope Public License,
-# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
-# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE.
-#
-##############################################################################
-"""Bootstrap a buildout-based project
-
-Simply run this script in a directory containing a buildout.cfg.
-The script accepts buildout command-line options, so you can
-use the -c option to specify an alternate configuration file.
-"""
-
-import os
-import shutil
-import sys
-import tempfile
-
-from optparse import OptionParser
-
-__version__ = '2015-07-01'
-# See zc.buildout's changelog if this version is up to date.
-
-tmpeggs = tempfile.mkdtemp(prefix='bootstrap-')
-
-usage = '''\
-[DESIRED PYTHON FOR BUILDOUT] bootstrap.py [options]
-
-Bootstraps a buildout-based project.
-
-Simply run this script in a directory containing a buildout.cfg, using the
-Python that you want bin/buildout to use.
-
-Note that by using --find-links to point to local resources, you can keep
-this script from going over the network.
-'''
-
-parser = OptionParser(usage=usage)
-parser.add_option("--version",
- action="store_true", default=False,
- help=("Return bootstrap.py version."))
-parser.add_option("-t", "--accept-buildout-test-releases",
- dest='accept_buildout_test_releases',
- action="store_true", default=False,
- help=("Normally, if you do not specify a --version, the "
- "bootstrap script and buildout gets the newest "
- "*final* versions of zc.buildout and its recipes and "
- "extensions for you. If you use this flag, "
- "bootstrap and buildout will get the newest releases "
- "even if they are alphas or betas."))
-parser.add_option("-c", "--config-file",
- help=("Specify the path to the buildout configuration "
- "file to be used."))
-parser.add_option("-f", "--find-links",
- help=("Specify a URL to search for buildout releases"))
-parser.add_option("--allow-site-packages",
- action="store_true", default=False,
- help=("Let bootstrap.py use existing site packages"))
-parser.add_option("--buildout-version",
- help="Use a specific zc.buildout version")
-parser.add_option("--setuptools-version",
- help="Use a specific setuptools version")
-parser.add_option("--setuptools-to-dir",
- help=("Allow for re-use of existing directory of "
- "setuptools versions"))
-
-options, args = parser.parse_args()
-if options.version:
- print("bootstrap.py version %s" % __version__)
- sys.exit(0)
-
-
-######################################################################
-# load/install setuptools
-
-try:
- from urllib.request import urlopen
-except ImportError:
- from urllib2 import urlopen
-
-ez = {}
-if os.path.exists('ez_setup.py'):
- exec(open('ez_setup.py').read(), ez)
-else:
- exec(urlopen('https://bootstrap.pypa.io/ez_setup.py').read(), ez)
-
-if not options.allow_site_packages:
- # ez_setup imports site, which adds site packages
- # this will remove them from the path to ensure that incompatible versions
- # of setuptools are not in the path
- import site
- # inside a virtualenv, there is no 'getsitepackages'.
- # We can't remove these reliably
- if hasattr(site, 'getsitepackages'):
- for sitepackage_path in site.getsitepackages():
- # Strip all site-packages directories from sys.path that
- # are not sys.prefix; this is because on Windows
- # sys.prefix is a site-package directory.
- if sitepackage_path != sys.prefix:
- sys.path[:] = [x for x in sys.path
- if sitepackage_path not in x]
-
-setup_args = dict(to_dir=tmpeggs, download_delay=0)
-
-if options.setuptools_version is not None:
- setup_args['version'] = options.setuptools_version
-if options.setuptools_to_dir is not None:
- setup_args['to_dir'] = options.setuptools_to_dir
-
-ez['use_setuptools'](**setup_args)
-import setuptools
-import pkg_resources
-
-# This does not (always?) update the default working set. We will
-# do it.
-for path in sys.path:
- if path not in pkg_resources.working_set.entries:
- pkg_resources.working_set.add_entry(path)
-
-######################################################################
-# Install buildout
-
-ws = pkg_resources.working_set
-
-setuptools_path = ws.find(
- pkg_resources.Requirement.parse('setuptools')).location
-
-# Fix sys.path here as easy_install.pth added before PYTHONPATH
-cmd = [sys.executable, '-c',
- 'import sys; sys.path[0:0] = [%r]; ' % setuptools_path +
- 'from setuptools.command.easy_install import main; main()',
- '-mZqNxd', tmpeggs]
-
-find_links = os.environ.get(
- 'bootstrap-testing-find-links',
- options.find_links or
- ('http://downloads.buildout.org/'
- if options.accept_buildout_test_releases else None)
- )
-if find_links:
- cmd.extend(['-f', find_links])
-
-requirement = 'zc.buildout'
-version = options.buildout_version
-if version is None and not options.accept_buildout_test_releases:
- # Figure out the most recent final version of zc.buildout.
- import setuptools.package_index
- _final_parts = '*final-', '*final'
-
- def _final_version(parsed_version):
- try:
- return not parsed_version.is_prerelease
- except AttributeError:
- # Older setuptools
- for part in parsed_version:
- if (part[:1] == '*') and (part not in _final_parts):
- return False
- return True
-
- index = setuptools.package_index.PackageIndex(
- search_path=[setuptools_path])
- if find_links:
- index.add_find_links((find_links,))
- req = pkg_resources.Requirement.parse(requirement)
- if index.obtain(req) is not None:
- best = []
- bestv = None
- for dist in index[req.project_name]:
- distv = dist.parsed_version
- if _final_version(distv):
- if bestv is None or distv > bestv:
- best = [dist]
- bestv = distv
- elif distv == bestv:
- best.append(dist)
- if best:
- best.sort()
- version = best[-1].version
-if version:
- requirement = '=='.join((requirement, version))
-cmd.append(requirement)
-
-import subprocess
-if subprocess.call(cmd) != 0:
- raise Exception(
- "Failed to execute command:\n%s" % repr(cmd)[1:-1])
-
-######################################################################
-# Import and run buildout
-
-ws.add_entry(tmpeggs)
-ws.require(requirement)
-import zc.buildout.buildout
-
-if not [a for a in args if '=' not in a]:
- args.append('bootstrap')
-
-# if -c was provided, we push it back into args for buildout' main function
-if options.config_file is not None:
- args[0:0] = ['-c', options.config_file]
-
-zc.buildout.buildout.main(args)
-shutil.rmtree(tmpeggs)
diff --git a/setup.py b/setup.py
index 02f762d..5040a81 100644
--- a/setup.py
+++ b/setup.py
@@ -100,7 +100,7 @@ long_description = (
)
setup(name='zope.interface',
- version='5.1.3.dev0',
+ version='5.2.0.dev0',
url='https://github.com/zopefoundation/zope.interface',
license='ZPL 2.1',
description='Interfaces for Python',
diff --git a/tox.ini b/tox.ini
index 0b366cb..dbdebff 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,6 +1,15 @@
[tox]
envlist =
- py27,py27-pure,py35,py35-pure,py36,py37,py38,py38-cext,pypy,pypy3,coverage,docs
+ py27,py27-pure,
+ py35,py35-pure,
+ py36,
+ py37,
+ py38,py38-cext,
+ py39,
+ pypy,
+ pypy3,
+ coverage,
+ docs
# NB: if you add new environments, please also add them to depends in
# testenv:coverage so that parallel runs (tox -p auto) will work correctly
@@ -44,7 +53,7 @@ commands =
coverage report -i
coverage html -i
coverage xml -i
-depends = py27,py27-pure,py35,py35-pure,py36,py37,py38,py38-cext,pypy,pypy3,docs
+depends = py27,py27-pure,py35,py35-pure,py36,py37,py38,py38-cext,py39,pypy,pypy3,docs
parallel_show_output = true
[testenv:docs]