diff --git a/CHANGES b/CHANGES index 05fcf4b6..41e6cb17 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,22 @@ +Released 3.4.7 2026-05-19 + +No code changes, correcting for the fact that the previous release artifacts +uploaded to PyPI contained unintended files. + +---------------------------------------------------------------- +Released 3.4.6 2026-05-14 + +Fixes: +* ``attrlist`` parameter is now properly checked before use, avoiding memory + errors due to type mismatches +* Fixed errors with requestName/requestValue in ``extop.dds`` +* ``ldif`` and ``ldap.schema`` modules now actively close sockets as they're + finished with them + +Infrastructure: +* Package no longer requires setuptools-scm + +---------------------------------------------------------------- Released 3.4.5 2025-10-10 Security fixes: diff --git a/Lib/ldap/pkginfo.py b/Lib/ldap/pkginfo.py index 2ac6852d..5e90c09f 100644 --- a/Lib/ldap/pkginfo.py +++ b/Lib/ldap/pkginfo.py @@ -1,6 +1,6 @@ """ meta attributes for packaging which does not import any dependencies """ -__version__ = '3.4.5' +__version__ = '3.4.7' __author__ = 'python-ldap project' __license__ = 'Python style' diff --git a/Lib/ldapurl.py b/Lib/ldapurl.py index 57900028..00f55659 100644 --- a/Lib/ldapurl.py +++ b/Lib/ldapurl.py @@ -4,7 +4,7 @@ See https://www.python-ldap.org/ for details. """ -__version__ = '3.4.5' +__version__ = '3.4.7' __all__ = [ # constants diff --git a/Lib/ldif.py b/Lib/ldif.py index 356f95ea..b6c1a6a1 100644 --- a/Lib/ldif.py +++ b/Lib/ldif.py @@ -3,7 +3,7 @@ See https://www.python-ldap.org/ for details. """ -__version__ = '3.4.5' +__version__ = '3.4.7' __all__ = [ # constants diff --git a/Lib/slapdtest/__init__.py b/Lib/slapdtest/__init__.py index 0fabc4c4..4edfa031 100644 --- a/Lib/slapdtest/__init__.py +++ b/Lib/slapdtest/__init__.py @@ -4,7 +4,7 @@ See https://www.python-ldap.org/ for details. """ -__version__ = '3.4.5' +__version__ = '3.4.7' from slapdtest._slapdtest import SlapdObject, SlapdTestCase, SysLogHandler from slapdtest._slapdtest import requires_ldapi, requires_sasl, requires_tls diff --git a/TODO b/TODO index b728424a..b91341c3 100644 --- a/TODO +++ b/TODO @@ -2,12 +2,8 @@ General: - Define common Python style license for all modules -- Support Python 3.2+ Modules/ -- Specific support for more controls - - VLV control - - server-side sorting control - Wrap libldif as faster drop-in replacement for module ldif? - Extract response controls in SASL bind responses - Attach response controls to LDAPError instances to deliver the @@ -16,8 +12,6 @@ Modules/ when doing a search in case of ldap.FILTER_ERROR etc. Lib/ -- Unicode support for DNs, filter strings, etc. but not entry attributes! -(Everybody asking for the latter should check the mailing list archive first.) - Caching of search requests for each LDAPObject instance - LDIF parser for replication logs and change records diff --git a/pyproject.toml b/pyproject.toml index 77783f8b..cd9c4b70 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,48 +1,57 @@ [build-system] requires = [ - "setuptools", + "setuptools>=69", ] build-backend = "setuptools.build_meta" [project] name = "python-ldap" -license.text = "python-ldap" # Replace with 'license' once Python 3.8 is dropped dynamic = ["version"] description = "Python modules for implementing LDAP clients" + +license = "MIT AND LicenseRef-python-ldap" +license-files = [ + "LICENCE", + "LICENCE.MIT", +] + authors = [ - {name = "python-ldap project", email = "python-ldap@python.org"}, + { name = "python-ldap project", email = "python-ldap@python.org" }, ] -readme = "README" -requires-python = ">=3.6" +readme = { file = "README.rst", content-type = "text/x-rst" } + +requires-python = ">=3.9" keywords = ["ldap", "directory", "authentication"] + classifiers = [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Intended Audience :: System Administrators", - "Operating System :: OS Independent", + + # "License :: OSI Approved :: Python Software Foundation License", + "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX", + "Programming Language :: C", - "Programming Language :: Python", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Topic :: Database", "Topic :: Internet", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: System :: Systems Administration :: Authentication/Directory :: LDAP", - "License :: OSI Approved :: Python Software Foundation License", ] + dependencies = [ - "pyasn1 >= 0.3.7", - "pyasn1_modules >= 0.1.5", + "pyasn1>=0.3.7", + "pyasn1_modules>=0.1.5", ] [project.urls] @@ -51,13 +60,11 @@ Documentation = "https://python-ldap.readthedocs.io/" Repository = "https://github.com/python-ldap/python-ldap" Download = "https://pypi.org/project/python-ldap/" Changelog = "https://github.com/python-ldap/python-ldap/blob/main/CHANGES" - - +Issues = "https://github.com/python-ldap/python-ldap/issues" [tool.setuptools] zip-safe = false include-package-data = true -license-files = ["LICENCE", "LICENCE.MIT"] # Explicitly list all Python modules py-modules = ["ldapurl", "ldif"] @@ -98,8 +105,6 @@ exclude_lines = [ "raise NotImplementedError", "if 0:", "if __name__ == .__main__.:", - "if PY2", - "if not PY2", ] [tool.coverage.html]