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

Reply via email to