Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-zope.hookable for openSUSE:Factory checked in at 2021-10-20 20:23:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-zope.hookable (Old) and /work/SRC/openSUSE:Factory/.python-zope.hookable.new.1890 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-zope.hookable" Wed Oct 20 20:23:23 2021 rev:10 rq:925647 version:5.1.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-zope.hookable/python-zope.hookable.changes 2020-04-15 20:07:27.838144685 +0200 +++ /work/SRC/openSUSE:Factory/.python-zope.hookable.new.1890/python-zope.hookable.changes 2021-10-20 20:24:07.489372169 +0200 @@ -1,0 +2,14 @@ +Wed Oct 13 09:21:27 UTC 2021 - pgaj...@suse.com + +- update to version 5.1.0 + - Add support for Python 3.9. + - Create Linux aarch64 wheels. + +------------------------------------------------------------------- +Wed Oct 13 08:29:25 UTC 2021 - pgaj...@suse.com + +- %check: use %pyunittest rpm macro +- added sources + + _multibuild + +------------------------------------------------------------------- Old: ---- zope.hookable-5.0.1.tar.gz New: ---- _multibuild zope.hookable-5.1.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-zope.hookable.spec ++++++ --- /var/tmp/diff_new_pack.glFZZa/_old 2021-10-20 20:24:09.029373120 +0200 +++ /var/tmp/diff_new_pack.glFZZa/_new 2021-10-20 20:24:09.029373120 +0200 @@ -1,7 +1,7 @@ # -# spec file for package python-zope.hookable +# spec file # -# Copyright (c) 2020 SUSE LLC +# Copyright (c) 2021 SUSE LLC # Copyright (c) 2013 LISA GmbH, Bingen, Germany. # # All modifications and additions to the file contributed by third parties @@ -18,8 +18,16 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} -Name: python-zope.hookable -Version: 5.0.1 +%global flavor @BUILD_FLAVOR@%{nil} +%if "%{flavor}" == "test" +%define psuffix -test +%bcond_without test +%else +%define psuffix %{nil} +%bcond_with test +%endif +Name: python-zope.hookable%{psuffix} +Version: 5.1.0 Release: 0 Summary: Zope hookable License: ZPL-2.1 @@ -33,7 +41,10 @@ BuildRequires: %{python_module Sphinx} # /SECTION # SECTION testing requirements +%if %{with test} +BuildRequires: %{python_module zope.hookable} BuildRequires: %{python_module zope.testing} +%endif # /SECTION %python_subpackages @@ -60,24 +71,35 @@ rm -rf zope.hookable.egg-info %build +%if !%{with test} %python_build python3 setup.py build_sphinx && rm build/sphinx/html/.buildinfo build/sphinx/html/objects.inv +%endif %install +%if !%{with test} %python_install %{python_expand rm -f %{buildroot}%{$python_sitearch}/zope/hookable/_zope_hookable.c %fdupes %{buildroot}%{$python_sitearch} } +%endif %check -%python_exec setup.py test +%if %{with test} +pushd src +%pyunittest 'zope.hookable.tests.test_hookable.test_suite' +%endif +%if !%{with test} %files %{python_files} %license LICENSE.txt %doc CHANGES.rst COPYRIGHT.txt README.rst %{python_sitearch}/* +%endif +%if !%{with test} %files -n %{name}-doc %doc build/sphinx/html/ +%endif %changelog ++++++ _multibuild ++++++ <multibuild> <package>test</package> </multibuild> ++++++ zope.hookable-5.0.1.tar.gz -> zope.hookable-5.1.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.hookable-5.0.1/.coveragerc new/zope.hookable-5.1.0/.coveragerc --- old/zope.hookable-5.0.1/.coveragerc 2020-03-10 14:22:30.000000000 +0100 +++ new/zope.hookable-5.1.0/.coveragerc 2021-07-20 08:09:00.000000000 +0200 @@ -1,10 +1,29 @@ +# Generated from: +# https://github.com/zopefoundation/meta/tree/master/config/c-code [run] source = zope.hookable +# New in 5.0; required for the GHA coveralls submission. +relative_files = True +branch = true + +[paths] +source = + src/ + .tox/*/lib/python*/site-packages/ + .tox/pypy*/site-packages/ [report] +show_missing = true +precision = 2 exclude_lines = - pragma: no cover + except ImportError: if __name__ == '__main__': - raise NotImplementedError + pragma: no cover + pragma: nocover raise AssertionError - self.fail + raise NotImplementedError + raise unittest.Skip + self.fail\( + +[html] +directory = parts/htmlcov diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.hookable-5.0.1/.manylinux-install.sh new/zope.hookable-5.1.0/.manylinux-install.sh --- old/zope.hookable-5.0.1/.manylinux-install.sh 1970-01-01 01:00:00.000000000 +0100 +++ new/zope.hookable-5.1.0/.manylinux-install.sh 2021-07-20 08:09:00.000000000 +0200 @@ -0,0 +1,49 @@ +#!/usr/bin/env bash +# Generated from: +# https://github.com/zopefoundation/meta/tree/master/config/c-code + +set -e -x + +# Running inside docker +# Set a cache directory for pip. This was +# mounted to be the same as it is outside docker so it +# can be persisted. +export XDG_CACHE_HOME="/cache" +# XXX: This works for macOS, where everything bind-mounted +# is seen as owned by root in the container. But when the host is Linux +# the actual UIDs come through to the container, triggering +# pip to disable the cache when it detects that the owner doesn't match. +# The below is an attempt to fix that, taken from bcrypt. It seems to work on +# Github Actions. +if [ -n "$GITHUB_ACTIONS" ]; then + echo Adjusting pip cache permissions + mkdir -p $XDG_CACHE_HOME/pip + chown -R $(whoami) $XDG_CACHE_HOME +fi +ls -ld /cache +ls -ld /cache/pip + +# Compile wheels +for PYBIN in /opt/python/*/bin; do + if [[ "${PYBIN}" == *"cp27"* ]] || \ + [[ "${PYBIN}" == *"cp35"* ]] || \ + [[ "${PYBIN}" == *"cp36"* ]] || \ + [[ "${PYBIN}" == *"cp37"* ]] || \ + [[ "${PYBIN}" == *"cp38"* ]] || \ + [[ "${PYBIN}" == *"cp39"* ]]; then + "${PYBIN}/pip" install -e /io/ + "${PYBIN}/pip" wheel /io/ -w wheelhouse/ + if [ `uname -m` == 'aarch64' ]; then + cd /io/ + "${PYBIN}/pip" install tox + "${PYBIN}/tox" -e py + cd .. + fi + rm -rf /io/build /io/*.egg-info + fi +done + +# Bundle external shared libraries into the wheels +for whl in wheelhouse/zope.hookable*.whl; do + auditwheel repair "$whl" -w /io/wheelhouse/ +done diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.hookable-5.0.1/.manylinux.sh new/zope.hookable-5.1.0/.manylinux.sh --- old/zope.hookable-5.0.1/.manylinux.sh 1970-01-01 01:00:00.000000000 +0100 +++ new/zope.hookable-5.1.0/.manylinux.sh 2021-07-20 08:09:00.000000000 +0200 @@ -0,0 +1,16 @@ +#!/usr/bin/env bash +# Generated from: +# https://github.com/zopefoundation/meta/tree/master/config/c-code + +set -e -x + +# Mount the current directory as /io +# Mount the pip cache directory as /cache +# `pip cache` requires pip 20.1 +echo Setting up caching +python --version +python -mpip --version +LCACHE="$(dirname `python -mpip cache dir`)" +echo Sharing pip cache at $LCACHE $(ls -ld $LCACHE) + +docker run --rm -e GITHUB_ACTIONS -v "$(pwd)":/io -v "$LCACHE:/cache" $DOCKER_IMAGE $PRE_CMD /io/.manylinux-install.sh diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.hookable-5.0.1/.travis.yml new/zope.hookable-5.1.0/.travis.yml --- old/zope.hookable-5.0.1/.travis.yml 2020-03-10 14:22:30.000000000 +0100 +++ new/zope.hookable-5.1.0/.travis.yml 1970-01-01 01:00:00.000000000 +0100 @@ -1,101 +0,0 @@ -language: python -env: - global: - TWINE_USERNAME: zope.wheelbuilder - TWINE_PASSWORD: - secure: "iHOASkMh4JGxVom8gVdIDmmj7VRa5j8vvdABphmyuO6ZH6Qyvu/dIJwzp5S5GKEn+SmwoB+MdKHdxtvVTmmryA5TqimYVd0zti+DeCdSU2N87W/dCpuvNUIL0dz+QeCzuQluipl0qjhkPPhR4GzwxLwxFZW1vJyQ7puGlbhjlkY=" - -python: - - 2.7 - - 3.5 - - 3.6 - - 3.7 - - 3.8 - - pypy - - pypy3 - -jobs: - include: - - name: "Python: 2.7, pure (no C extensions)" - python: 2.7 - env: PURE_PYTHON=1 - - # manylinux wheel builds - - name: 64-bit manylinux wheels (all Pythons) - services: docker - env: DOCKER_IMAGE=quay.io/pypa/manylinux2010_x86_64 - install: docker pull $DOCKER_IMAGE - script: bash .manylinux.sh - - - name: 32-bit manylinux wheels (all Pythons) - services: docker - env: DOCKER_IMAGE=quay.io/pypa/manylinux2010_i686 PRE_CMD=linux32 - install: docker pull $DOCKER_IMAGE - script: bash .manylinux.sh - - # It's important to use 'macpython' builds to get the least - # restrictive wheel tag. It's also important to avoid - # 'homebrew 3' because it floats instead of being a specific version. - - name: Python 2.7 wheels for MacOS - os: osx - language: generic - env: TERRYFY_PYTHON='macpython 2.7.17' - - name: Python 3.5 wheels for MacOS - os: osx - language: generic - env: TERRYFY_PYTHON='macpython 3.5' - - name: Python 3.6 wheels for MacOS - os: osx - language: generic - env: TERRYFY_PYTHON='macpython 3.6.2' - - name: Python 3.7 wheels for MacOS - os: osx - language: generic - env: TERRYFY_PYTHON='macpython 3.7.0' - -before_install: - - | - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then - git clone https://github.com/MacPython/terryfy - source terryfy/travis_tools.sh - get_python_environment $TERRYFY_PYTHON venv - fi - -install: - - pip install -U pip setuptools - - pip install -U coveralls coverage - - pip install -U -e .[test,docs] - -script: - - python --version - - coverage run setup.py -q test - - coverage run -a -m sphinx -b doctest -d docs/_build/doctrees docs docs/_build/doctest - - python setup.py -q bdist_wheel - -after_success: - - coveralls - - | - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then - # macpython 3.5 doesn't support recent TLS protocols which causes twine - # upload to fail, so we use the system Python to run twine - /usr/bin/python -m ensurepip --user - /usr/bin/python -m pip install --user -U pip - /usr/bin/python -m pip install --user -U -I twine - /usr/bin/python -m twine check dist/* - if [[ $TRAVIS_TAG ]]; then - /usr/bin/python -m twine upload --skip-existing dist/* - fi - fi - - | - if [[ -n "$DOCKER_IMAGE" ]]; then - pip install twine - twine check wheelhouse/* - if [[ $TRAVIS_TAG ]]; then - twine upload --skip-existing wheelhouse/* - fi - fi - -notifications: - email: false - -cache: pip diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.hookable-5.0.1/CHANGES.rst new/zope.hookable-5.1.0/CHANGES.rst --- old/zope.hookable-5.0.1/CHANGES.rst 2020-03-10 14:22:30.000000000 +0100 +++ new/zope.hookable-5.1.0/CHANGES.rst 2021-07-20 08:09:00.000000000 +0200 @@ -2,6 +2,14 @@ Changes ========= +5.1.0 (2021-07-20) +================== + +- Add support for Python 3.9. + +- Create Linux aarch64 wheels. + + 5.0.1 (2020-03-10) ================== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.hookable-5.0.1/MANIFEST.in new/zope.hookable-5.1.0/MANIFEST.in --- old/zope.hookable-5.0.1/MANIFEST.in 2020-03-10 14:22:30.000000000 +0100 +++ new/zope.hookable-5.1.0/MANIFEST.in 2021-07-20 08:09:00.000000000 +0200 @@ -1,15 +1,17 @@ +# Generated from: +# https://github.com/zopefoundation/meta/tree/master/config/c-code include *.rst include *.txt -include *.py include buildout.cfg include tox.ini -include .travis.yml include appveyor.yml include .coveragerc -recursive-include docs *.bat recursive-include docs *.py recursive-include docs *.rst +recursive-include docs *.txt recursive-include docs Makefile -global-exclude *.pyc +recursive-include src *.py +include *.sh +recursive-include docs *.bat diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.hookable-5.0.1/PKG-INFO new/zope.hookable-5.1.0/PKG-INFO --- old/zope.hookable-5.0.1/PKG-INFO 2020-03-10 14:22:31.633509900 +0100 +++ new/zope.hookable-5.1.0/PKG-INFO 2021-07-20 08:09:01.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: zope.hookable -Version: 5.0.1 +Version: 5.1.0 Summary: Zope hookable Home-page: http://github.com/zopefoundation/zope.hookable Author: Zope Foundation and Contributors @@ -18,8 +18,8 @@ :target: https://pypi.org/project/zope.hookable/ :alt: Supported Python versions - .. image:: https://travis-ci.org/zopefoundation/zope.hookable.svg?branch=master - :target: https://travis-ci.org/zopefoundation/zope.hookable + .. image:: https://travis-ci.com/zopefoundation/zope.hookable.svg?branch=master + :target: https://travis-ci.com/zopefoundation/zope.hookable .. image:: https://readthedocs.org/projects/zopehookable/badge/?version=latest :target: https://zopehookable.readthedocs.io/en/latest/ @@ -44,6 +44,14 @@ Changes ========= + 5.1.0 (2021-07-20) + ================== + + - Add support for Python 3.9. + + - Create Linux aarch64 wheels. + + 5.0.1 (2020-03-10) ================== @@ -155,6 +163,7 @@ Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: Framework :: Zope :: 3 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.hookable-5.0.1/README.rst new/zope.hookable-5.1.0/README.rst --- old/zope.hookable-5.0.1/README.rst 2020-03-10 14:22:30.000000000 +0100 +++ new/zope.hookable-5.1.0/README.rst 2021-07-20 08:09:00.000000000 +0200 @@ -10,8 +10,8 @@ :target: https://pypi.org/project/zope.hookable/ :alt: Supported Python versions -.. image:: https://travis-ci.org/zopefoundation/zope.hookable.svg?branch=master - :target: https://travis-ci.org/zopefoundation/zope.hookable +.. image:: https://travis-ci.com/zopefoundation/zope.hookable.svg?branch=master + :target: https://travis-ci.com/zopefoundation/zope.hookable .. image:: https://readthedocs.org/projects/zopehookable/badge/?version=latest :target: https://zopehookable.readthedocs.io/en/latest/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.hookable-5.0.1/appveyor.yml new/zope.hookable-5.1.0/appveyor.yml --- old/zope.hookable-5.0.1/appveyor.yml 2020-03-10 14:22:30.000000000 +0100 +++ new/zope.hookable-5.1.0/appveyor.yml 2021-07-20 08:09:00.000000000 +0200 @@ -1,8 +1,12 @@ +# Generated from: +# https://github.com/zopefoundation/meta/tree/master/config/c-code environment: + # Currently the builds use @mgedmin's Appveyor account. The PyPI token belongs + # to zope.wheelbuilder, which is managed by @mgedmin and @dataflake. global: - TWINE_USERNAME: zope.wheelbuilder + TWINE_USERNAME: __token__ TWINE_PASSWORD: - secure: UcdTh6W78cRLVGfKRFoa5A== + secure: aoZC/+rvJKg8B5GMGIxd1VVAqNNBjVQeFnBhHb5CSR6SETwd7qeNIP92xgZA2hhgiZH3KVFYEID+OR7j6TTVLVZLHP3EXKP+/sccqPjs3DDgDKuGjU5iovqpJnXiTPNI1LlGqUMM7neCvljjLkcW1InVbygB5p/V1YE8Zs8PjZ8j7Ny84EalvWprAO/xB1hawCIydi1bpq0WZbw8H+IvmDYYkVa1jgSBfHhsA3/S7943QWzPCRtUPuIXziAhdMUgnhj/1N/RPXRMYoNG/Se5Kg== matrix: - python: 27 @@ -15,8 +19,11 @@ - python: 37-x64 - python: 38 - python: 38-x64 + - python: 39 + - python: 39-x64 install: + - "SET PYTHONVERSION=%PYTHON%" - "SET PATH=C:\\Python%PYTHON%;c:\\Python%PYTHON%\\scripts;%PATH%" - ps: | $env:PYTHON = "C:\\Python${env:PYTHON}" @@ -26,20 +33,23 @@ } - ps: if (-not (Test-Path $env:PYTHON)) { throw "No $env:PYTHON" } - echo "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64 > "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\vcvars64.bat" - - pip install -e . + - python -m pip install -U pip + - pip install -U setuptools wheel + - pip install -U -e .[test] + +matrix: + fast_finish: true build_script: - - pip install wheel - python -W ignore setup.py -q bdist_wheel test_script: - - python setup.py -q test - + - zope-testrunner --test-path=src artifacts: - path: 'dist\*.whl' name: wheel deploy_script: - - ps: if ($env:APPVEYOR_REPO_TAG -eq $TRUE) { pip install twine; twine upload --skip-existing dist/* } + - ps: if ($env:APPVEYOR_REPO_TAG -eq $TRUE) { pip install twine; twine upload --skip-existing dist\*.whl } deploy: on diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.hookable-5.0.1/bootstrap.py new/zope.hookable-5.1.0/bootstrap.py --- old/zope.hookable-5.0.1/bootstrap.py 2020-03-10 14:22:30.000000000 +0100 +++ new/zope.hookable-5.1.0/bootstrap.py 1970-01-01 01:00:00.000000000 +0100 @@ -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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.hookable-5.0.1/setup.cfg new/zope.hookable-5.1.0/setup.cfg --- old/zope.hookable-5.0.1/setup.cfg 2020-03-10 14:22:31.634053200 +0100 +++ new/zope.hookable-5.1.0/setup.cfg 2021-07-20 08:09:01.000000000 +0200 @@ -1,20 +1,19 @@ -[nosetests] -nocapture = 1 -cover-package = zope.hookable -cover-erase = 1 -with-doctest = 0 -where = src - -[aliases] -dev = develop easy_install zope.hookable[testing] -docs = easy_install zope.hookable[docs] - [bdist_wheel] -universal = 0 +universal = 1 -[zest-releaser] +[zest.releaser] create-wheel = no +[flake8] +doctests = 1 + +[check-manifest] +ignore = + .editorconfig + .meta.toml + docs/_build/html/_sources/* + docs/_build/doctest/* + [egg_info] tag_build = tag_date = 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.hookable-5.0.1/setup.py new/zope.hookable-5.1.0/setup.py --- old/zope.hookable-5.0.1/setup.py 2020-03-10 14:22:30.000000000 +0100 +++ new/zope.hookable-5.1.0/setup.py 2021-07-20 08:09:00.000000000 +0200 @@ -36,6 +36,7 @@ """This class subclasses build_ext and allows the building of C extensions to fail. """ + def run(self): try: build_ext.run(self) @@ -64,10 +65,10 @@ codeoptimization = [ - Extension( - "zope.hookable._zope_hookable", - [os.path.join('src', 'zope', 'hookable', "_zope_hookable.c")], - ), + Extension( + "zope.hookable._zope_hookable", + [os.path.join('src', 'zope', 'hookable', "_zope_hookable.c")], + ), ] is_pypy_or_jython = platform.python_implementation() in ('PyPy', 'Jython') @@ -82,10 +83,11 @@ TESTS_REQUIRE = [ 'zope.testing', + 'zope.testrunner', ] setup(name='zope.hookable', - version='5.0.1', + version='5.1.0', url='http://github.com/zopefoundation/zope.hookable', license='ZPL 2.1', description='Zope hookable', @@ -107,6 +109,7 @@ "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Framework :: Zope :: 3", @@ -131,4 +134,4 @@ 'test': TESTS_REQUIRE, }, python_requires='>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*', -) + ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.hookable-5.0.1/src/zope/__init__.py new/zope.hookable-5.1.0/src/zope/__init__.py --- old/zope.hookable-5.0.1/src/zope/__init__.py 2020-03-10 14:22:30.000000000 +0100 +++ new/zope.hookable-5.1.0/src/zope/__init__.py 2021-07-20 08:09:00.000000000 +0200 @@ -1 +1 @@ -__import__('pkg_resources').declare_namespace(__name__) # pragma: no cover +__import__('pkg_resources').declare_namespace(__name__) # pragma: no cover diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.hookable-5.0.1/src/zope/hookable/__init__.py new/zope.hookable-5.1.0/src/zope/hookable/__init__.py --- old/zope.hookable-5.0.1/src/zope/hookable/__init__.py 2020-03-10 14:22:30.000000000 +0100 +++ new/zope.hookable-5.1.0/src/zope/hookable/__init__.py 2021-07-20 08:09:00.000000000 +0200 @@ -20,6 +20,7 @@ _PYPY = platform.python_implementation() in ('PyPy', 'Jython') _PURE_PYTHON = os.environ.get('PURE_PYTHON', _PYPY) + class _py_hookable(object): __slots__ = ('_original', '_implementation') @@ -62,12 +63,13 @@ def __call__(self, *args, **kw): return self._implementation(*args, **kw) + try: from zope.hookable._zope_hookable import hookable as _c_hookable -except ImportError: # pragma: no cover +except ImportError: # pragma: no cover _c_hookable = None -if _PURE_PYTHON or _c_hookable is None: # pragma: no cover +if _PURE_PYTHON or _c_hookable is None: hookable = _py_hookable -else: +else: # pragma: no cover hookable = _c_hookable diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.hookable-5.0.1/src/zope/hookable/tests/test_hookable.py new/zope.hookable-5.1.0/src/zope/hookable/tests/test_hookable.py --- old/zope.hookable-5.0.1/src/zope/hookable/tests/test_hookable.py 2020-03-10 14:22:30.000000000 +0100 +++ new/zope.hookable-5.1.0/src/zope/hookable/tests/test_hookable.py 2021-07-20 08:09:00.000000000 +0200 @@ -15,35 +15,41 @@ """ import unittest + def return_foo(): return 'FOO' + def return_bar(): return 'BAR' + def not_called(): raise AssertionError("This should not be called") + class PyHookableMixin(object): def _callFUT(self, *args, **kw): from zope.hookable import _py_hookable return _py_hookable(*args, **kw) + class HookableMixin(object): def _callFUT(self, *args, **kw): from zope.hookable import hookable, _py_hookable - if hookable is _py_hookable: # pragma: no cover + if hookable is _py_hookable: raise unittest.SkipTest("Hookable and PyHookable are the same") - return hookable(*args, **kw) + return hookable(*args, **kw) # pragma: no cover class PyHookableTests(PyHookableMixin, unittest.TestCase): def test_pure_python(self): - from zope.hookable import _PURE_PYTHON, hookable, _py_hookable, _c_hookable + from zope.hookable import _PURE_PYTHON, hookable + from zope.hookable import _py_hookable, _c_hookable self.assertIs(hookable, _py_hookable if _PURE_PYTHON else _c_hookable) def test_before_hook(self): @@ -107,6 +113,7 @@ hooked.sethook(return_bar) self.assertEqual(hooked(), 'BAR') + class TestIssue6Py(PyHookableMixin, unittest.TestCase): # Make sphinx docs for hooked objects work. @@ -175,11 +182,14 @@ with self.assertRaises(AttributeError): hooked.__getattribute__('') + class HookableTests(HookableMixin, PyHookableTests): pass + class TestIssue6(HookableMixin, TestIssue6Py): pass + def test_suite(): return unittest.defaultTestLoader.loadTestsFromName(__name__) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.hookable-5.0.1/src/zope.hookable.egg-info/PKG-INFO new/zope.hookable-5.1.0/src/zope.hookable.egg-info/PKG-INFO --- old/zope.hookable-5.0.1/src/zope.hookable.egg-info/PKG-INFO 2020-03-10 14:22:31.000000000 +0100 +++ new/zope.hookable-5.1.0/src/zope.hookable.egg-info/PKG-INFO 2021-07-20 08:09:01.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: zope.hookable -Version: 5.0.1 +Version: 5.1.0 Summary: Zope hookable Home-page: http://github.com/zopefoundation/zope.hookable Author: Zope Foundation and Contributors @@ -18,8 +18,8 @@ :target: https://pypi.org/project/zope.hookable/ :alt: Supported Python versions - .. image:: https://travis-ci.org/zopefoundation/zope.hookable.svg?branch=master - :target: https://travis-ci.org/zopefoundation/zope.hookable + .. image:: https://travis-ci.com/zopefoundation/zope.hookable.svg?branch=master + :target: https://travis-ci.com/zopefoundation/zope.hookable .. image:: https://readthedocs.org/projects/zopehookable/badge/?version=latest :target: https://zopehookable.readthedocs.io/en/latest/ @@ -44,6 +44,14 @@ Changes ========= + 5.1.0 (2021-07-20) + ================== + + - Add support for Python 3.9. + + - Create Linux aarch64 wheels. + + 5.0.1 (2020-03-10) ================== @@ -155,6 +163,7 @@ Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: Framework :: Zope :: 3 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.hookable-5.0.1/src/zope.hookable.egg-info/SOURCES.txt new/zope.hookable-5.1.0/src/zope.hookable.egg-info/SOURCES.txt --- old/zope.hookable-5.0.1/src/zope.hookable.egg-info/SOURCES.txt 2020-03-10 14:22:31.000000000 +0100 +++ new/zope.hookable-5.1.0/src/zope.hookable.egg-info/SOURCES.txt 2021-07-20 08:09:01.000000000 +0200 @@ -1,12 +1,12 @@ .coveragerc -.travis.yml +.manylinux-install.sh +.manylinux.sh CHANGES.rst COPYRIGHT.txt LICENSE.txt MANIFEST.in README.rst appveyor.yml -bootstrap.py buildout.cfg setup.cfg setup.py diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.hookable-5.0.1/src/zope.hookable.egg-info/requires.txt new/zope.hookable-5.1.0/src/zope.hookable.egg-info/requires.txt --- old/zope.hookable-5.0.1/src/zope.hookable.egg-info/requires.txt 2020-03-10 14:22:31.000000000 +0100 +++ new/zope.hookable-5.1.0/src/zope.hookable.egg-info/requires.txt 2021-07-20 08:09:01.000000000 +0200 @@ -5,7 +5,9 @@ [test] zope.testing +zope.testrunner [testing] zope.testing +zope.testrunner coverage diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.hookable-5.0.1/tox.ini new/zope.hookable-5.1.0/tox.ini --- old/zope.hookable-5.0.1/tox.ini 2020-03-10 14:22:30.000000000 +0100 +++ new/zope.hookable-5.1.0/tox.ini 2021-07-20 08:09:00.000000000 +0200 @@ -1,35 +1,67 @@ +# Generated from: +# https://github.com/zopefoundation/meta/tree/master/config/c-code [tox] +minversion = 3.18 envlist = - py27,py35,py36,py37,py38,py27-pure,pypy,pypy3,coverage,docs + lint + py27,py27-pure + py35,py35-pure + py36,py36-pure + py37,py37-pure + py38,py38-pure + py39,py39-pure + pypy + pypy3 + docs + coverage [testenv] -commands = - python setup.py -q test -q - sphinx-build -b doctest -d {envdir}/.cache/doctrees docs {envdir}/.cache/doctest +usedevelop = true deps = - .[test,docs] + # Until repoze.sphinx.autointerface supports Sphinx 4.x we cannot use it: + Sphinx < 4 +setenv = + pure: PURE_PYTHON=1 + !pure-!pypy-!pypy3: PURE_PYTHON=0 +commands = + zope-testrunner --test-path=src {posargs:-vc} + !py27-!pypy: sphinx-build -b doctest -d {envdir}/.cache/doctrees docs {envdir}/.cache/doctest +extras = + test + docs [testenv:coverage] -usedevelop = true -basepython = - python2.7 -commands = - coverage run setup.py -q test -q - coverage run -a -m sphinx -b doctest -d {envdir}/.cache/doctrees docs {envdir}/.cache/doctest - coverage report --fail-under=100 +basepython = python3 +allowlist_externals = + mkdir deps = - {[testenv]deps} coverage - -[testenv:py27-pure] -basepython = - python2.7 setenv = - PURE_PYTHON = 1 + PURE_PYTHON=1 +commands = + mkdir -p {toxinidir}/parts/htmlcov + coverage run -m zope.testrunner --test-path=src {posargs:-vc} + coverage html -i + coverage report -i -m --fail-under=100 + +[testenv:lint] +basepython = python3 +skip_install = true +deps = + flake8 + check-manifest + check-python-versions +commands = + flake8 src setup.py + check-manifest + check-python-versions [testenv:docs] -basepython = - python2.7 +basepython = python3 +skip_install = false +# Until repoze.sphinx.autointerface supports Sphinx 4.x we cannot use it: +deps = Sphinx < 4 +commands_pre = commands = sphinx-build -b html -d docs/_build/doctrees docs docs/_build/html sphinx-build -b doctest -d docs/_build/doctrees docs docs/_build/doctest