Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-ldap for openSUSE:Factory checked in at 2023-12-15 21:48:28 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-ldap (Old) and /work/SRC/openSUSE:Factory/.python-ldap.new.25432 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-ldap" Fri Dec 15 21:48:28 2023 rev:60 rq:1133198 version:3.4.4 Changes: -------- --- /work/SRC/openSUSE:Factory/python-ldap/python-ldap.changes 2023-08-14 22:36:10.100572023 +0200 +++ /work/SRC/openSUSE:Factory/.python-ldap.new.25432/python-ldap.changes 2023-12-15 21:48:39.081167355 +0100 @@ -1,0 +2,9 @@ +Thu Dec 14 21:14:57 UTC 2023 - Dirk Müller <dmuel...@suse.com> + +- update to 3.4.4: + * Reconnect race condition in ReconnectLDAPObject is now fixed + * Socket ownership is now claimed once we've passed it to + libldap LDAP_set_option string formats are now compatible + with Python 3.12 + +------------------------------------------------------------------- Old: ---- python-ldap-3.4.3.tar.gz New: ---- python-ldap-3.4.4.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-ldap.spec ++++++ --- /var/tmp/diff_new_pack.qiztSr/_old 2023-12-15 21:48:39.833195024 +0100 +++ /var/tmp/diff_new_pack.qiztSr/_new 2023-12-15 21:48:39.833195024 +0100 @@ -21,7 +21,7 @@ %define skip_python2 1 Name: python-ldap -Version: 3.4.3 +Version: 3.4.4 Release: 0 Summary: Python LDAP interface License: Python-2.0 ++++++ python-ldap-3.4.3.tar.gz -> python-ldap-3.4.4.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ldap-3.4.3/CHANGES new/python-ldap-3.4.4/CHANGES --- old/python-ldap-3.4.3/CHANGES 2022-09-20 17:33:12.000000000 +0200 +++ new/python-ldap-3.4.4/CHANGES 2023-11-17 21:30:16.000000000 +0100 @@ -1,3 +1,20 @@ +Released 3.4.4 2022-11-17 + +Fixes: +* Reconnect race condition in ReconnectLDAPObject is now fixed +* Socket ownership is now claimed once we've passed it to libldap +* LDAP_set_option string formats are now compatible with Python 3.12 + +Doc/ +* Security Policy was created +* Broken article links are fixed now +* Bring Conscious Language improvements + +Infrastructure: +* Add testing and document support for Python 3.10, 3.11, and 3.12 + + +---------------------------------------------------------------- Released 3.4.3 2022-09-15 This is a minor release to bring back the removed OPT_X_TLS option. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ldap-3.4.3/Doc/conf.py new/python-ldap-3.4.4/Doc/conf.py --- old/python-ldap-3.4.3/Doc/conf.py 2022-09-20 17:33:12.000000000 +0200 +++ new/python-ldap-3.4.4/Doc/conf.py 2023-11-03 01:32:59.000000000 +0100 @@ -50,8 +50,8 @@ # The suffix of source filenames. source_suffix = '.rst' -# The master toctree document. -master_doc = 'index' +# The root toctree document. +root_doc = 'index' # General substitutions. project = 'python-ldap' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ldap-3.4.3/Doc/faq.rst new/python-ldap-3.4.4/Doc/faq.rst --- old/python-ldap-3.4.3/Doc/faq.rst 2022-09-20 17:33:12.000000000 +0200 +++ new/python-ldap-3.4.4/Doc/faq.rst 2023-11-03 01:32:59.000000000 +0100 @@ -13,7 +13,7 @@ **A3**: see file CHANGES in source distribution or `repository`_. -.. _repository: https://github.com/python-ldap/python-ldap/blob/master/CHANGES +.. _repository: https://github.com/python-ldap/python-ldap/blob/main/CHANGES Usage diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ldap-3.4.3/Doc/resources.rst new/python-ldap-3.4.4/Doc/resources.rst --- old/python-ldap-3.4.3/Doc/resources.rst 2022-09-20 17:33:12.000000000 +0200 +++ new/python-ldap-3.4.4/Doc/resources.rst 2023-11-03 01:32:59.000000000 +0100 @@ -8,13 +8,13 @@ *Python LDAP Applications* articles by Matt Butcher --------------------------------------------------- -* `Part 1 - Installing and Configuring the Python-LDAP Library and Binding to an LDAP Directory <https://www.packtpub.com/article/installing-and-configuring-the-python-ldap-library-and-binding-to-an-ldap-directory>`_ +* `Part 1 - Installing and Configuring the Python-LDAP Library and Binding to an LDAP Directory <https://hub.packtpub.com/python-ldap-applications-part-1-installing-and-configuring-python-ldap-library-and-bin/>`_ This also covers SASL. -* `Part 2 - LDAP Operations <https://www.packtpub.com/article/python-ldap-applications-ldap-opearations>`_ -* `Part 3 - More LDAP Operations and the LDAP URL Library <https://www.packtpub.com/article/python-ldap-applications-more-ldap-operations-and-the-ldap-url-library>`_ -* `Part 4 - LDAP Schema <https://www.packtpub.com/article/python-ldap-applications-ldap-schema>`_ +* `Part 2 - LDAP Operations <https://hub.packtpub.com/configuring-and-securing-python-ldap-applications-part-2/>`_ +* `Part 3 - More LDAP Operations and the LDAP URL Library <https://hub.packtpub.com/python-ldap-applications-extra-ldap-operations-and-ldap-url-library/>`_ +* `Part 4 - LDAP Schema <https://hub.packtpub.com/python-ldap-applications-part-4-ldap-schema/>`_ Gee, someone waded through the badly documented mysteries of module :mod:`ldap.schema`. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ldap-3.4.3/Lib/ldap/ldapobject.py new/python-ldap-3.4.4/Lib/ldap/ldapobject.py --- old/python-ldap-3.4.3/Lib/ldap/ldapobject.py 2022-09-20 17:33:12.000000000 +0200 +++ new/python-ldap-3.4.4/Lib/ldap/ldapobject.py 2023-11-03 01:32:59.000000000 +0100 @@ -893,7 +893,7 @@ self._reconnect_lock = ldap.LDAPLock(desc='reconnect lock within %s' % (repr(self))) # XXX cannot pickle file, use default trace file self._trace_file = ldap._trace_file - self.reconnect(self._uri) + self.reconnect(self._uri,force=True) def _store_last_bind(self,_method,*args,**kwargs): self._last_bind = (_method,args,kwargs) @@ -914,11 +914,16 @@ def passwd_s(self,*args,**kwargs): return self._apply_method_s(SimpleLDAPObject.passwd_s,*args,**kwargs) - def reconnect(self,uri,retry_max=1,retry_delay=60.0): + def reconnect(self,uri,retry_max=1,retry_delay=60.0,force=True): # Drop and clean up old connection completely # Reconnect self._reconnect_lock.acquire() try: + if hasattr(self,'_l'): + if force: + SimpleLDAPObject.unbind_s(self) + else: + return reconnect_counter = retry_max while reconnect_counter: counter_text = '%d. (of %d)' % (retry_max-reconnect_counter+1,retry_max) @@ -962,14 +967,12 @@ return # reconnect() def _apply_method_s(self,func,*args,**kwargs): - if not hasattr(self,'_l'): - self.reconnect(self._uri,retry_max=self._retry_max,retry_delay=self._retry_delay) + self.reconnect(self._uri,retry_max=self._retry_max,retry_delay=self._retry_delay,force=False) try: return func(self,*args,**kwargs) except ldap.SERVER_DOWN: - SimpleLDAPObject.unbind_s(self) # Try to reconnect - self.reconnect(self._uri,retry_max=self._retry_max,retry_delay=self._retry_delay) + self.reconnect(self._uri,retry_max=self._retry_max,retry_delay=self._retry_delay,force=True) # Re-try last operation return func(self,*args,**kwargs) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ldap-3.4.3/Lib/ldap/pkginfo.py new/python-ldap-3.4.4/Lib/ldap/pkginfo.py --- old/python-ldap-3.4.3/Lib/ldap/pkginfo.py 2022-09-20 17:33:12.000000000 +0200 +++ new/python-ldap-3.4.4/Lib/ldap/pkginfo.py 2023-11-17 21:30:16.000000000 +0100 @@ -1,6 +1,6 @@ """ meta attributes for packaging which does not import any dependencies """ -__version__ = '3.4.3' +__version__ = '3.4.4' __author__ = 'python-ldap project' __license__ = 'Python style' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ldap-3.4.3/Lib/ldapurl.py new/python-ldap-3.4.4/Lib/ldapurl.py --- old/python-ldap-3.4.3/Lib/ldapurl.py 2022-09-20 17:33:12.000000000 +0200 +++ new/python-ldap-3.4.4/Lib/ldapurl.py 2023-11-17 21:30:16.000000000 +0100 @@ -4,7 +4,7 @@ See https://www.python-ldap.org/ for details. """ -__version__ = '3.4.3' +__version__ = '3.4.4' __all__ = [ # constants diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ldap-3.4.3/Lib/ldif.py new/python-ldap-3.4.4/Lib/ldif.py --- old/python-ldap-3.4.3/Lib/ldif.py 2022-09-20 17:33:12.000000000 +0200 +++ new/python-ldap-3.4.4/Lib/ldif.py 2023-11-17 21:30:16.000000000 +0100 @@ -3,7 +3,7 @@ See https://www.python-ldap.org/ for details. """ -__version__ = '3.4.3' +__version__ = '3.4.4' __all__ = [ # constants diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ldap-3.4.3/Lib/python_ldap.egg-info/PKG-INFO new/python-ldap-3.4.4/Lib/python_ldap.egg-info/PKG-INFO --- old/python-ldap-3.4.3/Lib/python_ldap.egg-info/PKG-INFO 2022-09-20 17:33:49.000000000 +0200 +++ new/python-ldap-3.4.4/Lib/python_ldap.egg-info/PKG-INFO 2023-11-17 21:46:39.000000000 +0100 @@ -1,13 +1,12 @@ Metadata-Version: 2.1 Name: python-ldap -Version: 3.4.3 +Version: 3.4.4 Summary: Python modules for implementing LDAP clients Home-page: https://www.python-ldap.org/ +Download-URL: https://pypi.org/project/python-ldap/ Author: python-ldap project Author-email: python-l...@python.org License: Python style -Download-URL: https://pypi.org/project/python-ldap/ -Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers Classifier: Intended Audience :: System Administrators @@ -22,6 +21,9 @@ Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 Classifier: Topic :: Database Classifier: Topic :: Internet Classifier: Topic :: Software Development :: Libraries :: Python Modules @@ -29,6 +31,8 @@ Classifier: License :: OSI Approved :: Python Software Foundation License Requires-Python: >=3.6 License-File: LICENCE +Requires-Dist: pyasn1>=0.3.7 +Requires-Dist: pyasn1_modules>=0.1.5 python-ldap: python-ldap provides an object-oriented API to access LDAP directory servers @@ -37,4 +41,3 @@ (e.g. processing LDIF, LDAPURLs, LDAPv3 schema, LDAPv3 extended operations and controls, etc.). - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ldap-3.4.3/Lib/slapdtest/__init__.py new/python-ldap-3.4.4/Lib/slapdtest/__init__.py --- old/python-ldap-3.4.3/Lib/slapdtest/__init__.py 2022-09-20 17:33:12.000000000 +0200 +++ new/python-ldap-3.4.4/Lib/slapdtest/__init__.py 2023-11-17 21:30:16.000000000 +0100 @@ -4,7 +4,7 @@ See https://www.python-ldap.org/ for details. """ -__version__ = '3.4.3' +__version__ = '3.4.4' from slapdtest._slapdtest import SlapdObject, SlapdTestCase, SysLogHandler from slapdtest._slapdtest import requires_ldapi, requires_sasl, requires_tls diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ldap-3.4.3/Modules/options.c new/python-ldap-3.4.4/Modules/options.c --- old/python-ldap-3.4.3/Modules/options.c 2022-09-20 17:33:12.000000000 +0200 +++ new/python-ldap-3.4.4/Modules/options.c 2023-11-17 21:30:11.000000000 +0100 @@ -207,8 +207,8 @@ } else { PyErr_Format(PyExc_ValueError, - "timeout must be >= 0 or -1/None for infinity, got %f", - doubleval); + "timeout must be >= 0 or -1/None for infinity, got %S", + value); return 0; } break; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ldap-3.4.3/PKG-INFO new/python-ldap-3.4.4/PKG-INFO --- old/python-ldap-3.4.3/PKG-INFO 2022-09-20 17:33:49.643415000 +0200 +++ new/python-ldap-3.4.4/PKG-INFO 2023-11-17 21:46:39.785235600 +0100 @@ -1,13 +1,12 @@ Metadata-Version: 2.1 Name: python-ldap -Version: 3.4.3 +Version: 3.4.4 Summary: Python modules for implementing LDAP clients Home-page: https://www.python-ldap.org/ +Download-URL: https://pypi.org/project/python-ldap/ Author: python-ldap project Author-email: python-l...@python.org License: Python style -Download-URL: https://pypi.org/project/python-ldap/ -Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers Classifier: Intended Audience :: System Administrators @@ -22,6 +21,9 @@ Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 Classifier: Topic :: Database Classifier: Topic :: Internet Classifier: Topic :: Software Development :: Libraries :: Python Modules @@ -29,6 +31,8 @@ Classifier: License :: OSI Approved :: Python Software Foundation License Requires-Python: >=3.6 License-File: LICENCE +Requires-Dist: pyasn1>=0.3.7 +Requires-Dist: pyasn1_modules>=0.1.5 python-ldap: python-ldap provides an object-oriented API to access LDAP directory servers @@ -37,4 +41,3 @@ (e.g. processing LDIF, LDAPURLs, LDAPv3 schema, LDAPv3 extended operations and controls, etc.). - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ldap-3.4.3/Tests/t_ldapobject.py new/python-ldap-3.4.4/Tests/t_ldapobject.py --- old/python-ldap-3.4.3/Tests/t_ldapobject.py 2022-09-20 17:33:12.000000000 +0200 +++ new/python-ldap-3.4.4/Tests/t_ldapobject.py 2023-11-03 01:32:59.000000000 +0100 @@ -647,24 +647,14 @@ @requires_init_fd() class Test03_SimpleLDAPObjectWithFileno(Test00_SimpleLDAPObject): def _open_ldap_conn(self, who=None, cred=None, **kwargs): - if hasattr(self, '_sock'): - raise RuntimeError("socket already connected") - self._sock = socket.create_connection( + sock = socket.create_connection( (self.server.hostname, self.server.port) ) - return super()._open_ldap_conn( - who=who, cred=cred, fileno=self._sock.fileno(), **kwargs + result = super()._open_ldap_conn( + who=who, cred=cred, fileno=sock.fileno(), **kwargs ) - - def tearDown(self): - self._sock.close() - delattr(self, '_sock') - super().tearDown() - - def reset_connection(self): - self._sock.close() - delattr(self, '_sock') - super(Test03_SimpleLDAPObjectWithFileno, self).reset_connection() + sock.detach() + return result if __name__ == '__main__': diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ldap-3.4.3/setup.py new/python-ldap-3.4.4/setup.py --- old/python-ldap-3.4.3/setup.py 2022-09-20 17:33:12.000000000 +0200 +++ new/python-ldap-3.4.4/setup.py 2023-11-17 21:30:11.000000000 +0100 @@ -90,6 +90,9 @@ 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3.9', + 'Programming Language :: Python :: 3.10', + 'Programming Language :: Python :: 3.11', + 'Programming Language :: Python :: 3.12', # Note: when updating Python versions, also change tox.ini and .github/workflows/* 'Topic :: Database', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/python-ldap-3.4.3/tox.ini new/python-ldap-3.4.4/tox.ini --- old/python-ldap-3.4.3/tox.ini 2022-09-20 17:33:12.000000000 +0200 +++ new/python-ldap-3.4.4/tox.ini 2023-11-03 01:32:59.000000000 +0100 @@ -5,7 +5,7 @@ [tox] # Note: when updating Python versions, also change setup.py and .github/worlflows/* -envlist = py{36,37,38,39,310},c90-py{36,37},py3-nosasltls,doc,py3-trace,pypy3 +envlist = py{36,37,38,39,310,311,312},c90-py{36,37},py3-nosasltls,doc,py3-trace,pypy3.9 minver = 1.8 [gh-actions] @@ -14,7 +14,10 @@ 3.7: py37 3.8: py38, doc, py3-nosasltls 3.9: py39, py3-trace - pypy3: pypy3 + 3.10: py310 + 3.11: py311 + 3.12: py312 + pypy3.9: pypy3.9 [testenv] deps = @@ -26,6 +29,11 @@ commands = {envpython} -bb -Werror \ -m unittest discover -v -s Tests -p 't_*' {posargs} +[testenv:py312] +# Python 3.12 headers are incompatible with declaration-after-statement +setenv = + CFLAGS=-Wno-int-in-bool-context -Werror -std=c99 + [testenv:py3-nosasltls] basepython = python3 # don't install, install dependencies manually