Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-gear for openSUSE:Factory 
checked in at 2022-09-29 18:14:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-gear (Old)
 and      /work/SRC/openSUSE:Factory/.python-gear.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-gear"

Thu Sep 29 18:14:17 2022 rev:8 rq:1006898 version:0.16.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-gear/python-gear.changes  2021-09-25 
22:51:30.611354123 +0200
+++ /work/SRC/openSUSE:Factory/.python-gear.new.2275/python-gear.changes        
2022-09-29 18:15:08.479464701 +0200
@@ -1,0 +2,26 @@
+Wed Sep 28 19:51:07 UTC 2022 - Yogalakshmi Arunachalam <[email protected]>
+
+- version update to 0.16.0 
+ * Merge "Update the docker image to python3.9 and buster"
+ * Fix python3.9 testing
+ * Update the docker image to python3.9 and buster
+ * Overhaul package metadata and contributor info
+ * Add libffi header dependency
+ * Update testing to Python 3.9 and linters
+ * Create SSL context using PROTOCOL_TLS, fallback to highest supported version
+ * Merge "wakeConnections: Randomize connections before scanning them"
+ * Merge "Move handleDisconnect into BaseClientServer"
+ * Merge "remove unicode from code"
+ * Merge "Modify connection timeout process"
+ * wakeConnections: Randomize connections before scanning them
+ * Added Docker image builds
+ * remove unicode from code
+ * Merge "Bump crypto requirement to accomodate security standards"
+ * use python3 as context for build-python-release
+ * Bump crypto requirement to accomodate security standards
+ * Move handleDisconnect into BaseClientServer
+ * Revert "Add BSD/Darwin support."
+ * Merge "Ignore keepalive on unsupported platforms"
+ * Merge "Add BSD/Darwin support."
+
+-------------------------------------------------------------------

Old:
----
  gear-0.15.1.tar.gz

New:
----
  gear-0.16.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-gear.spec ++++++
--- /var/tmp/diff_new_pack.Rh7OhZ/_old  2022-09-29 18:15:08.999465720 +0200
+++ /var/tmp/diff_new_pack.Rh7OhZ/_new  2022-09-29 18:15:09.007465736 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-gear
 #
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2022 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
 
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-gear
-Version:        0.15.1
+Version:        0.16.0
 Release:        0
 Summary:        Pure Python Async Gear Protocol Library
 License:        Apache-2.0

++++++ gear-0.15.1.tar.gz -> gear-0.16.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gear-0.15.1/.zuul.yaml new/gear-0.16.0/.zuul.yaml
--- old/gear-0.15.1/.zuul.yaml  2020-02-18 17:42:25.000000000 +0100
+++ new/gear-0.16.0/.zuul.yaml  2021-10-18 17:36:30.000000000 +0200
@@ -1,23 +1,98 @@
+- secret:
+    name: gear-opendev-dockerhub
+    data:
+      username: opendevzuul
+      password: !encrypted/pkcs1-oaep
+        - bROAu0oGBv+2l67dlC94t+s33rmdogBhWzyk7d/Zj7bSHZtfap2f1u+0RWogAKwjRtxtR
+          C6mqoVjKdWd+qBcnek0U/6Czgnhp5og3d9rsN+3SeQ9aOTTjoYkiqsg+c7N0rMh1AGndG
+          Qn3LU8i0EDGfzn5C+1KTcRHJ5brSrZzB+GsiXZxm8eLlupuFCep/yrUcnsH6f73sKGHQI
+          C9OcENQCelPLEdEtLb1eyx0hL1+o1ar0FdRCDrvZwih1SE/UUa18Zi7QCMEmkwZ8fil7B
+          zVtcBSTxTqIY49bgjerUykq0YKH1gTZrVC+UPFPjPZfNS39fxgcdqUMgbUTuWCoIrI0Jh
+          2pKg+KZ/3L8zqcmqOZFQOFvVi7zOtXdKZI3rmWRAzM/BgVXFeBsQZkGZ75TzE8Xm70uA4
+          WYdIva8kjBLrTz1/uRijZqNSrwM2fGO3VI+1SXUQI6FWJfZ+uSWzCDk9JswLPFzoXa7+J
+          ASDaygdGvU6q+pkxOQ/v9lgTnwZCdEAoCRdSZBKz/y3OosKAYIRIismLRJ9Kfkqxl8IEi
+          /0U+rSsWpWb5jufUcwAmL2Rj6YVcgUl3qSq2TzP3R+DPPda6Et4NZQ3RLpWP8if4VuNq7
+          gJ2yQTSLJLOG6nhDMRJoW3GLjUMWUw3sbvFE1VzcIggIs4mfxVp21Ps/6hRoAI=
+
+- job:
+    name: gear-build-opendev-image
+    parent: opendev-build-docker-image
+    description: Build OpenDev Docker images for gear
+    requires:
+      - python-base-container-image
+      - python-builder-container-image
+    provides: gear-container-image
+    vars: &gear_opendev_image_vars
+      zuul_work_dir: src/opendev.org/opendev/gear
+      docker_images:
+        - context: .
+          repository: opendevorg/geard
+          target: geard
+
+- job:
+    name: gear-upload-opendev-image
+    parent: opendev-upload-docker-image
+    description: Build OpenDev gear Docker images and upload to Docker Hub.
+    requires:
+      - python-base-container-image
+      - python-builder-container-image
+    provides: gear-container-image
+    vars: *gear_opendev_image_vars
+    secrets:
+      - name: docker_credentials
+        secret: gear-opendev-dockerhub
+        pass-to-parent: true
+
+- job:
+    name: gear-promote-opendev-image
+    parent: opendev-promote-docker-image
+    description: Promote previously uploaded gear Docker images.
+    vars: *gear_opendev_image_vars
+    secrets:
+      - name: docker_credentials
+        secret: gear-opendev-dockerhub
+        pass-to-parent: true
+
 - project:
+    vars:
+      release_python: python3
     templates:
       - publish-opendev-tox-docs
     check:
       jobs:
-        - tox-pep8
+        - tox-linters
         - tox-py27
         - tox-py35:
             nodeset: ubuntu-xenial
-        - build-python-release
+        - tox-py39:
+            nodeset: ubuntu-focal
+        - build-python-release:
+            nodeset: ubuntu-focal
+        - gear-build-opendev-image
     gate:
       jobs:
-        - tox-pep8
+        - tox-linters
         - tox-py27
         - tox-py35:
             nodeset: ubuntu-xenial
-        - build-python-release
+        - tox-py39:
+            nodeset: ubuntu-focal
+        - build-python-release:
+            nodeset: ubuntu-focal
+        - gear-upload-opendev-image
     promote:
       jobs:
         - opendev-promote-python
+        - gear-promote-opendev-image
     release:
       jobs:
-        - opendev-release-python
\ No newline at end of file
+        - opendev-release-python:
+            nodeset: ubuntu-focal
+        - upload-docker-image:
+            secrets:
+              name: docker_credentials
+              secret: gear-opendev-dockerhub
+              pass-to-parent: true
+            vars:
+              <<: *gear_opendev_image_vars
+              upload_docker_image_promote: false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gear-0.15.1/AUTHORS new/gear-0.16.0/AUTHORS
--- old/gear-0.15.1/AUTHORS     2020-02-18 17:43:34.000000000 +0100
+++ new/gear-0.16.0/AUTHORS     2021-10-18 17:37:22.000000000 +0200
@@ -1,3 +1,4 @@
+Ahmon Dancy <[email protected]>
 Andreas Jaeger <[email protected]>
 Antoine Musso <[email protected]>
 Benoit Bayszczak <[email protected]>
@@ -7,7 +8,9 @@
 David Shrewsbury <[email protected]>
 Derek Higgins <[email protected]>
 Fabien Boucher <[email protected]>
+Fabien Boucher <[email protected]>
 Gregory Haynes <[email protected]>
+Guillaume Chauvel <[email protected]>
 James E. Blair <[email protected]>
 James E. Blair <[email protected]>
 James E. Blair <[email protected]>
@@ -29,4 +32,6 @@
 Sorin Sbarnea <[email protected]>
 Swapnil Kulkarni (coolsvap) <[email protected]>
 Tobias Henkel <[email protected]>
+liyou01 <[email protected]>
 qingszhao <[email protected]>
+shangxdy <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gear-0.15.1/CONTRIBUTING.rst 
new/gear-0.16.0/CONTRIBUTING.rst
--- old/gear-0.15.1/CONTRIBUTING.rst    2020-02-18 17:42:25.000000000 +0100
+++ new/gear-0.16.0/CONTRIBUTING.rst    2021-10-18 17:36:30.000000000 +0200
@@ -1,17 +1,47 @@
-If you would like to contribute to the development of OpenStack,
-you must follow the steps in this page:
+Contribution Overview
+=====================
 
-   http://docs.openstack.org/infra/manual/developers.html
-
-If you already have a good understanding of how the system works and your
-OpenStack accounts are set up, you can skip to the development workflow section
-of this documentation to learn how changes to OpenStack should be submitted for
-review via the Gerrit tool:
-
-   http://docs.openstack.org/infra/manual/developers.html#development-workflow
-
-Pull requests submitted through GitHub will be ignored.
-
-Bugs should be filed on StoryBoard, not GitHub:
-
-   https://storyboard.openstack.org/#!/project/714
+OpenDev's tools are hosted within the OpenDev collaboratory, and
+development for them uses workflows described in the OpenDev
+Infrastructure Manual:
+
+http://docs.opendev.org/opendev/manual/developers.html
+
+Defect reporting and task tracking takes place here:
+
+https://storyboard.openstack.org/#!/project/opendev/gear
+
+Developing gear
+===============
+
+Either install `bindep` and run ``bindep test`` to check you have the needed
+tools, or review ``bindep.txt`` by hand. If you have the `tox` utility
+installed you can also use it for this purpose, running ``tox -e bindep test``
+to get a list of missing distribution package dependencies in your development
+environment.
+
+Running Tests
+-------------
+
+The testing system is based on a combination of tox and testr. The canonical
+approach to running tests is to simply run the command `tox`. This will
+create virtual environments, populate them with dependencies and run all of
+the tests that OpenStack CI systems run. Behind the scenes, tox is running
+`testr run --parallel`, but is set up such that you can supply any additional
+testr arguments that are needed to tox. For example, you can run:
+`tox -- --analyze-isolation` to cause tox to tell testr to add
+--analyze-isolation to its argument list.
+
+It is also possible to run the tests inside of a virtual environment
+you have created, or it is possible that you have all of the dependencies
+installed locally already. If you'd like to go this route, the requirements
+are listed in requirements.txt and the requirements for testing are in
+test-requirements.txt. Installing them via pip, for instance, is simply::
+
+  pip install -r requirements.txt -r test-requirements.txt
+
+In you go this route, you can interact with the testr command directly.
+Running `testr run` will run the entire test suite. `testr run --parallel`
+will run it in parallel (this is the default incantation tox uses.) More
+information about testr can be found at:
+https://testrepository.readthedocs.io/en/latest/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gear-0.15.1/ChangeLog new/gear-0.16.0/ChangeLog
--- old/gear-0.15.1/ChangeLog   2020-02-18 17:43:34.000000000 +0100
+++ new/gear-0.16.0/ChangeLog   2021-10-18 17:37:22.000000000 +0200
@@ -1,6 +1,20 @@
 CHANGES
 =======
 
+0.16.0
+------
+
+* Overhaul package metadata and contributor info
+* Add libffi header dependency
+* Update testing to Python 3.9 and linters
+* Create SSL context using PROTOCOL\_TLS, fallback to highest supported version
+* wakeConnections: Randomize connections before scanning them
+* Added Docker image builds
+* remove unicode from code
+* use python3 as context for build-python-release
+* Bump crypto requirement to accomodate security standards
+* Move handleDisconnect into BaseClientServer
+
 0.15.1
 ------
 
@@ -40,6 +54,7 @@
 ------
 
 * Make workers admin command py3 safe
+* Modify connection timeout process
 
 0.11.0
 ------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gear-0.15.1/Dockerfile new/gear-0.16.0/Dockerfile
--- old/gear-0.15.1/Dockerfile  1970-01-01 01:00:00.000000000 +0100
+++ new/gear-0.16.0/Dockerfile  2021-10-18 17:36:30.000000000 +0200
@@ -0,0 +1,26 @@
+# Copyright (c) 2019 VEXXHOST, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+FROM opendevorg/python-builder as builder
+
+COPY . /tmp/src
+RUN assemble
+
+FROM opendevorg/python-base as geard
+
+COPY --from=builder /output/ /output
+RUN /output/install-from-bindep
+
+CMD ["/usr/local/bin/geard"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gear-0.15.1/PKG-INFO new/gear-0.16.0/PKG-INFO
--- old/gear-0.15.1/PKG-INFO    2020-02-18 17:43:34.000000000 +0100
+++ new/gear-0.16.0/PKG-INFO    2021-10-18 17:37:22.615178800 +0200
@@ -1,25 +1,23 @@
-Metadata-Version: 1.2
+Metadata-Version: 2.1
 Name: gear
-Version: 0.15.1
+Version: 0.16.0
 Summary: Pure Python Async Gear Protocol Library
-Home-page: https://opendev.org/opendev/gear
-Author: OpenStack
-Author-email: [email protected]
-License: UNKNOWN
+Home-page: https://docs.opendev.org/opendev/gear
+Author: OpenDev Contributors
+Author-email: [email protected]
+License: Apache License, Version 2.0
 Project-URL: Bug Tracker, 
https://storyboard.openstack.org/#!/project/opendev/gear
 Project-URL: CI: Zuul, 
https://zuul.opendev.org/t/opendev/builds?project=opendev/gear
-Project-URL: Documentation, https://docs.opendev.org/opendev/gear/
 Project-URL: Source Code, https://opendev.org/opendev/gear
+Project-URL: Documentation, https://docs.opendev.org/opendev/gear/
 Description: python-gear
         ===========
         
         A pure-Python asynchronous library to interface with Gearman.
         
-        
 Platform: UNKNOWN
 Classifier: Development Status :: 4 - Beta
 Classifier: Environment :: Console
-Classifier: Environment :: OpenStack
 Classifier: Intended Audience :: Developers
 Classifier: Intended Audience :: Information Technology
 Classifier: License :: OSI Approved :: Apache Software License
@@ -29,3 +27,8 @@
 Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
+Description-Content-Type: text/x-rst; charset=UTF-8
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gear-0.15.1/bindep.txt new/gear-0.16.0/bindep.txt
--- old/gear-0.15.1/bindep.txt  2020-02-18 17:42:25.000000000 +0100
+++ new/gear-0.16.0/bindep.txt  2021-10-18 17:36:30.000000000 +0200
@@ -1,11 +1,11 @@
 # This is a cross-platform list tracking distribution packages needed by tests;
 # see http://docs.openstack.org/infra/bindep/ for additional information.
 
+libffi-dev [platform:dpkg]
+libffi-devel [platform:rpm]
 python-dev [platform:dpkg]
 python-devel [platform:rpm]
 python3-all-dev [platform:ubuntu !platform:ubuntu-precise]
 python3-dev [platform:dpkg]
 python3-devel [platform:fedora]
-python3.4 [platform:ubuntu-trusty]
 python3.5 [platform:ubuntu-xenial]
-python34-devel [platform:centos]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gear-0.15.1/doc/source/conf.py 
new/gear-0.16.0/doc/source/conf.py
--- old/gear-0.15.1/doc/source/conf.py  2020-02-18 17:42:25.000000000 +0100
+++ new/gear-0.16.0/doc/source/conf.py  2021-10-18 17:36:30.000000000 +0200
@@ -41,8 +41,8 @@
 master_doc = 'index'
 
 # General information about the project.
-project = u'Gear'
-copyright = u'2013, OpenStack Foundation'
+project = 'Gear'
+copyright = 'OpenDev Contributors'
 
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the
@@ -184,8 +184,8 @@
 # Grouping the document tree into LaTeX files. List of tuples
 # (source start file, target name, title, author, documentclass 
[howto/manual]).
 latex_documents = [
-  ('index', 'Gear.tex', u'Gear Documentation',
-   u'OpenStack Foundation', 'manual'),
+  ('index', 'Gear.tex', 'Gear Documentation',
+   'OpenDev Contributors', 'manual'),
 ]
 
 # The name of an image file (relative to this directory) to place at the top of
@@ -214,10 +214,10 @@
 # One entry per manual page. List of tuples
 # (source start file, name, description, authors, manual section).
 man_pages = [
-    ('index', 'gear', u'Gear Full Documentation',
-     [u'OpenStack Foundation'], 1),
-    ('geard', 'geard', u'async pure python Gearman daemon',
-     [u'OpenStack Foundation'], 8),
+    ('index', 'gear', 'Gear Full Documentation',
+     ['OpenDev Contributors'], 1),
+    ('geard', 'geard', 'async pure python Gearman daemon',
+     ['OpenDev Contributors'], 8),
 ]
 
 # If true, show URL addresses after external links.
@@ -230,8 +230,8 @@
 # (source start file, target name, title, author,
 #  dir menu entry, description, category)
 texinfo_documents = [
-  ('index', 'Gear', u'Gear Documentation',
-   u'OpenStack Foundation', 'Gear', 'One line description of project.',
+  ('index', 'Gear', 'Gear Documentation',
+   'OpenDev Contributors', 'Gear', 'One line description of project.',
    'Miscellaneous'),
 ]
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gear-0.15.1/gear/__init__.py 
new/gear-0.16.0/gear/__init__.py
--- old/gear-0.15.1/gear/__init__.py    2020-02-18 17:42:25.000000000 +0100
+++ new/gear-0.16.0/gear/__init__.py    2021-10-18 17:36:30.000000000 +0200
@@ -15,6 +15,7 @@
 import errno
 import logging
 import os
+import random
 import select
 import six
 import socket
@@ -90,6 +91,44 @@
     return data
 
 
+def best_tls_version():
+    if hasattr(ssl, 'PROTOCOL_TLS'):
+        return ssl.PROTOCOL_TLS
+    # Note there is some risk in selecting tls 1.2 if available
+    # as both the client and server may not support it and need 1.1
+    # or 1.0. However, a xenial installation with python 3.5 does
+    # support 1.2 which is probably as old a setup as we need to worry
+    # about.
+    elif hasattr(ssl, 'PROTOCOL_TLSv1_2'):
+        return ssl.PROTOCOL_TLSv1_2
+    elif hasattr(ssl, 'PROTOCOL_TLSv1_1'):
+        return ssl.PROTOCOL_TLSv1_1
+    elif hasattr(ssl, 'PROTOCOL_TLSv1'):
+        return ssl.PROTOCOL_TLSv1
+    else:
+        raise ConnectionError('No supported TLS version available.')
+
+
+def create_ssl_context():
+    tls_version = best_tls_version()
+    context = ssl.SSLContext(tls_version)
+
+    # Disable TLSv1.3
+    # According to https://bugs.python.org/issue43622#msg389497, an event on
+    # ssl socket can happen without data being available at application level.
+    # As gear is using a polling loop with multiple file descriptors and ssl
+    # socket used as a blocking one, a blocked state could happen.
+    # This is highlighted by Zuul SSL test: TestSchedulerSSL, where such
+    # blocked state appears consistently.
+    # note: gear tests and zuul tests are ok for TLSv1.2 but this behavior
+    # could also happen
+    if (hasattr(ssl, 'PROTOCOL_TLS') and
+            tls_version == ssl.PROTOCOL_TLS):
+        context.options |= ssl.OP_NO_TLSv1_3
+
+    return context
+
+
 class Task(object):
     def __init__(self):
         self._wait_event = threading.Event()
@@ -208,7 +247,7 @@
 
             if self.use_ssl:
                 self.log.debug("Using SSL")
-                context = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
+                context = create_ssl_context()
                 context.verify_mode = ssl.CERT_REQUIRED
                 context.check_hostname = False
                 context.load_cert_chain(self.ssl_cert, self.ssl_key)
@@ -996,6 +1035,17 @@
         end = time.time()
         self.reportTimingStats(packet.ptype, end - start)
 
+    def handleDisconnect(self, job):
+        """Handle a Gearman server disconnection.
+
+        If the Gearman server is disconnected, this will be called for any
+        jobs currently associated with the server.
+
+        :arg Job packet: The :py:class:`Job` that was running when the server
+            disconnected.
+        """
+        return job
+
     def reportTimingStats(self, ptype, duration):
         """Report processing times by packet type
 
@@ -1250,15 +1300,18 @@
         start_time = time.time()
         while self.running:
             self.connections_condition.acquire()
-            while self.running and not self.active_connections:
-                if timeout is not None:
-                    self._checkTimeout(start_time, timeout)
-                self.log.debug("Waiting for at least one active connection")
-                self.connections_condition.wait(timeout=1)
-            if self.active_connections:
-                self.log.debug("Active connection found")
-                connected = True
-            self.connections_condition.release()
+            try:
+                while self.running and not self.active_connections:
+                    if timeout is not None:
+                        self._checkTimeout(start_time, timeout)
+                    self.log.debug("Waiting for at least one active "
+                                   "connection")
+                    self.connections_condition.wait(timeout=1)
+                if self.active_connections:
+                    self.log.debug("Active connection found")
+                    connected = True
+            finally:
+                self.connections_condition.release()
             if connected:
                 return
 
@@ -1696,17 +1749,6 @@
         packet.connection.handleOptionRes(packet.getArgument(0))
         task.setComplete()
 
-    def handleDisconnect(self, job):
-        """Handle a Gearman server disconnection.
-
-        If the Gearman server is disconnected, this will be called for any
-        jobs currently associated with the server.
-
-        :arg Job packet: The :py:class:`Job` that was running when the server
-            disconnected.
-        """
-        return job
-
 
 class FunctionRecord(object):
     """Represents a function that should be registered with Gearman.
@@ -2858,7 +2900,7 @@
                     self.log.debug("Accepting new connection")
                     c, addr = self.socket.accept()
                     if self.use_ssl:
-                        context = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
+                        context = create_ssl_context()
                         context.verify_mode = ssl.CERT_REQUIRED
                         context.load_cert_chain(self.ssl_cert, self.ssl_key)
                         context.load_verify_locations(self.ssl_ca)
@@ -3295,7 +3337,13 @@
 
     def wakeConnections(self, job=None):
         p = Packet(constants.RES, constants.NOOP, b'')
-        for connection in self.active_connections:
+
+        # Use a randomized copy of active_connections to try
+        # to spread workload across the machines that workers are on.
+        conns = self.active_connections[:]
+        random.shuffle(conns)    # Modifies the list
+
+        for connection in conns:
             if connection.state == 'SLEEP':
                 if ((job and job.name in connection.functions) or
                         (job is None)):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gear-0.15.1/gear/tests/test_functional.py 
new/gear-0.16.0/gear/tests/test_functional.py
--- old/gear-0.15.1/gear/tests/test_functional.py       2020-02-18 
17:42:25.000000000 +0100
+++ new/gear-0.16.0/gear/tests/test_functional.py       2021-10-18 
17:36:30.000000000 +0200
@@ -78,7 +78,7 @@
 
     def create_cert(self, cn, issuer=None, signing_key=None):
         key = crypto.PKey()
-        key.generate_key(crypto.TYPE_RSA, 1024)
+        key.generate_key(crypto.TYPE_RSA, 2048)
 
         cert = crypto.X509()
         subject = cert.get_subject()
@@ -97,7 +97,7 @@
         else:
             cert.set_issuer(subject)
         if signing_key:
-            cert.sign(signing_key, 'sha1')
+            cert.sign(signing_key, 'sha256')
         else:
             cert.sign(key, 'sha1')
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gear-0.15.1/gear.egg-info/PKG-INFO 
new/gear-0.16.0/gear.egg-info/PKG-INFO
--- old/gear-0.15.1/gear.egg-info/PKG-INFO      2020-02-18 17:43:34.000000000 
+0100
+++ new/gear-0.16.0/gear.egg-info/PKG-INFO      2021-10-18 17:37:22.000000000 
+0200
@@ -1,25 +1,23 @@
-Metadata-Version: 1.2
+Metadata-Version: 2.1
 Name: gear
-Version: 0.15.1
+Version: 0.16.0
 Summary: Pure Python Async Gear Protocol Library
-Home-page: https://opendev.org/opendev/gear
-Author: OpenStack
-Author-email: [email protected]
-License: UNKNOWN
+Home-page: https://docs.opendev.org/opendev/gear
+Author: OpenDev Contributors
+Author-email: [email protected]
+License: Apache License, Version 2.0
 Project-URL: Bug Tracker, 
https://storyboard.openstack.org/#!/project/opendev/gear
 Project-URL: CI: Zuul, 
https://zuul.opendev.org/t/opendev/builds?project=opendev/gear
-Project-URL: Documentation, https://docs.opendev.org/opendev/gear/
 Project-URL: Source Code, https://opendev.org/opendev/gear
+Project-URL: Documentation, https://docs.opendev.org/opendev/gear/
 Description: python-gear
         ===========
         
         A pure-Python asynchronous library to interface with Gearman.
         
-        
 Platform: UNKNOWN
 Classifier: Development Status :: 4 - Beta
 Classifier: Environment :: Console
-Classifier: Environment :: OpenStack
 Classifier: Intended Audience :: Developers
 Classifier: Intended Audience :: Information Technology
 Classifier: License :: OSI Approved :: Apache Software License
@@ -29,3 +27,8 @@
 Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
+Description-Content-Type: text/x-rst; charset=UTF-8
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gear-0.15.1/gear.egg-info/SOURCES.txt 
new/gear-0.16.0/gear.egg-info/SOURCES.txt
--- old/gear-0.15.1/gear.egg-info/SOURCES.txt   2020-02-18 17:43:34.000000000 
+0100
+++ new/gear-0.16.0/gear.egg-info/SOURCES.txt   2021-10-18 17:37:22.000000000 
+0200
@@ -3,6 +3,7 @@
 AUTHORS
 CONTRIBUTING.rst
 ChangeLog
+Dockerfile
 LICENSE
 MANIFEST.in
 README.rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gear-0.15.1/gear.egg-info/pbr.json 
new/gear-0.16.0/gear.egg-info/pbr.json
--- old/gear-0.15.1/gear.egg-info/pbr.json      2020-02-18 17:43:34.000000000 
+0100
+++ new/gear-0.16.0/gear.egg-info/pbr.json      2021-10-18 17:37:22.000000000 
+0200
@@ -1 +1 @@
-{"git_version": "9933f06", "is_release": true}
\ No newline at end of file
+{"git_version": "aa21a0c", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gear-0.15.1/gear.egg-info/requires.txt 
new/gear-0.16.0/gear.egg-info/requires.txt
--- old/gear-0.15.1/gear.egg-info/requires.txt  2020-02-18 17:43:34.000000000 
+0100
+++ new/gear-0.16.0/gear.egg-info/requires.txt  2021-10-18 17:37:22.000000000 
+0200
@@ -1,4 +1,4 @@
-pbr>=1.8.0
-six>=1.5.2
 extras
+pbr>=1.8.0
 python-daemon>=2.0.4
+six>=1.5.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gear-0.15.1/setup.cfg new/gear-0.16.0/setup.cfg
--- old/gear-0.15.1/setup.cfg   2020-02-18 17:43:34.000000000 +0100
+++ new/gear-0.16.0/setup.cfg   2021-10-18 17:37:22.615178800 +0200
@@ -1,20 +1,23 @@
 [metadata]
 name = gear
-author = OpenStack
-author-email = [email protected]
+author = OpenDev Contributors
+author-email = [email protected]
 summary = Pure Python Async Gear Protocol Library
-description-file = 
-       README.rst
-home-page = https://opendev.org/opendev/gear
+long_description = file: README.rst
+long_description_content_type = text/x-rst; charset=UTF-8
+url = https://docs.opendev.org/opendev/gear
 project_urls = 
        Bug Tracker = https://storyboard.openstack.org/#!/project/opendev/gear
        CI: Zuul = 
https://zuul.opendev.org/t/opendev/builds?project=opendev/gear
        Source Code = https://opendev.org/opendev/gear
        Documentation = https://docs.opendev.org/opendev/gear/
+license = Apache License, Version 2.0
+license_files = 
+       AUTHORS
+       LICENSE
 classifier = 
        Development Status :: 4 - Beta
        Environment :: Console
-       Environment :: OpenStack
        Intended Audience :: Developers
        Intended Audience :: Information Technology
        License :: OSI Approved :: Apache Software License
@@ -24,6 +27,10 @@
        Programming Language :: Python :: 2.7
        Programming Language :: Python :: 3
        Programming Language :: Python :: 3.5
+       Programming Language :: Python :: 3.6
+       Programming Language :: Python :: 3.7
+       Programming Language :: Python :: 3.8
+       Programming Language :: Python :: 3.9
 
 [files]
 packages = 
@@ -36,13 +43,7 @@
 [bdist_wheel]
 universal = 1
 
-[build_sphinx]
-all_files = 1
-build-dir = doc/build
-source-dir = doc/source
-
 [egg_info]
 tag_build = 
 tag_date = 0
-tag_svn_revision = 0
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gear-0.15.1/test-requirements.txt 
new/gear-0.16.0/test-requirements.txt
--- old/gear-0.15.1/test-requirements.txt       2020-02-18 17:42:25.000000000 
+0100
+++ new/gear-0.16.0/test-requirements.txt       2021-10-18 17:36:30.000000000 
+0200
@@ -1,4 +1,4 @@
-hacking>=0.12.0,!=0.13.0,<0.14  # Apache-2.0
+hacking>=2.0.0,<2.1.0  # Apache-2.0
 
 coverage>=3.6
 fixtures>=0.3.12
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gear-0.15.1/tox.ini new/gear-0.16.0/tox.ini
--- old/gear-0.15.1/tox.ini     2020-02-18 17:42:25.000000000 +0100
+++ new/gear-0.16.0/tox.ini     2021-10-18 17:36:30.000000000 +0200
@@ -1,11 +1,13 @@
 [tox]
 minversion = 1.6
 skipsdist = True
-envlist = py34,py35,py27,pep8
+envlist = py3,py27,linters
+ignore_basepython_conflict = true
 
 [testenv]
 setenv = VIRTUAL_ENV={envdir}
 usedevelop = True
+basepython = python3
 install_command = pip install {opts} {packages}
 deps = -r{toxinidir}/requirements.txt
        -r{toxinidir}/test-requirements.txt
@@ -15,7 +17,7 @@
 [tox:jenkins]
 sitepackages = True
 
-[testenv:pep8]
+[testenv:linters]
 commands = flake8
 
 [testenv:cover]
@@ -30,7 +32,7 @@
 exclude = .venv,.tox,dist,doc,*.egg
 show-source = true
 # E123, E125, E129 and H ignored intentionally in this code-base
-ignore = E123,E125,E129,H
+ignore = E123,E125,E129,E741,W504,H
 
 [testenv:docs]
 basepython = python3

Reply via email to