Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-django-auth-ldap for
openSUSE:Factory checked in at 2026-01-29 17:46:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-django-auth-ldap (Old)
and /work/SRC/openSUSE:Factory/.python-django-auth-ldap.new.1995 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-django-auth-ldap"
Thu Jan 29 17:46:59 2026 rev:20 rq:1329795 version:5.3.0
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-django-auth-ldap/python-django-auth-ldap.changes
2025-02-24 15:51:53.739100267 +0100
+++
/work/SRC/openSUSE:Factory/.python-django-auth-ldap.new.1995/python-django-auth-ldap.changes
2026-01-29 17:49:38.469300369 +0100
@@ -1,0 +2,13 @@
+Thu Jan 22 09:32:34 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 5.3.0:
+ * Add support for Python 3.14
+ * Add support for Django 6.0
+ * Drop support for Python 3.9
+ * Drop support for Django 5.1
+- update to 5.2.0:
+ * Filter empty Django group names when mirroring groups
+ * Increase log level from debug to info when
+ creating/populating a user
+
+-------------------------------------------------------------------
Old:
----
django_auth_ldap-5.1.0.tar.gz
New:
----
django_auth_ldap-5.3.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-django-auth-ldap.spec ++++++
--- /var/tmp/diff_new_pack.4IiXY4/_old 2026-01-29 17:49:39.001322937 +0100
+++ /var/tmp/diff_new_pack.4IiXY4/_new 2026-01-29 17:49:39.005323106 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-django-auth-ldap
#
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define skip_python2 1
Name: python-django-auth-ldap
-Version: 5.1.0
+Version: 5.3.0
Release: 0
Summary: Django LDAP authentication backend
License: BSD-2-Clause
++++++ django_auth_ldap-5.1.0.tar.gz -> django_auth_ldap-5.3.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django_auth_ldap-5.1.0/PKG-INFO
new/django_auth_ldap-5.3.0/PKG-INFO
--- old/django_auth_ldap-5.1.0/PKG-INFO 2024-10-17 11:03:53.607061600 +0200
+++ new/django_auth_ldap-5.3.0/PKG-INFO 2025-12-26 15:59:44.850388500 +0100
@@ -1,6 +1,6 @@
-Metadata-Version: 2.1
+Metadata-Version: 2.4
Name: django-auth-ldap
-Version: 5.1.0
+Version: 5.3.0
Summary: Django LDAP authentication backend
Author-email: Peter Sagerson <[email protected]>
Maintainer-email: François Freitag <[email protected]>
@@ -14,27 +14,28 @@
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Framework :: Django :: 4.2
-Classifier: Framework :: Django :: 5.0
-Classifier: Framework :: Django :: 5.1
+Classifier: Framework :: Django :: 5.2
+Classifier: Framework :: Django :: 6.0
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
-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: Programming Language :: Python :: 3.13
+Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: System :: Systems Administration ::
Authentication/Directory :: LDAP
-Requires-Python: >=3.9
+Requires-Python: >=3.10
Description-Content-Type: text/x-rst
License-File: LICENSE
Requires-Dist: Django>=4.2
Requires-Dist: python-ldap>=3.1
+Dynamic: license-file
================================
Django Authentication Using LDAP
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django_auth_ldap-5.1.0/django_auth_ldap/backend.py
new/django_auth_ldap-5.3.0/django_auth_ldap/backend.py
--- old/django_auth_ldap-5.1.0/django_auth_ldap/backend.py 2024-10-17
11:03:36.000000000 +0200
+++ new/django_auth_ldap-5.3.0/django_auth_ldap/backend.py 2025-12-26
15:59:34.000000000 +0100
@@ -642,12 +642,12 @@
"user does not satisfy AUTH_LDAP_NO_NEW_USERS"
)
- logger.debug("Creating Django user %s", username)
+ logger.info("Creating Django user %s", username)
self._user.set_unusable_password()
save_user = True
if should_populate:
- logger.debug("Populating Django user %s", username)
+ logger.info("Populating Django user %s", username)
self._populate_user()
save_user = True
@@ -779,7 +779,9 @@
from django.contrib.auth.models import Group
try:
- target_group_names =
frozenset(self._get_groups().get_group_names())
+ target_group_names = frozenset(
+ filter(None, self._get_groups().get_group_names())
+ )
except ldap.LDAPError as e:
_report_error(
type(self.backend),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django_auth_ldap-5.1.0/django_auth_ldap/version.py
new/django_auth_ldap-5.3.0/django_auth_ldap/version.py
--- old/django_auth_ldap-5.1.0/django_auth_ldap/version.py 2024-10-17
11:03:53.000000000 +0200
+++ new/django_auth_ldap-5.3.0/django_auth_ldap/version.py 2025-12-26
15:59:44.000000000 +0100
@@ -1,16 +1,34 @@
-# file generated by setuptools_scm
+# file generated by setuptools-scm
# don't change, don't track in version control
+
+__all__ = [
+ "__version__",
+ "__version_tuple__",
+ "version",
+ "version_tuple",
+ "__commit_id__",
+ "commit_id",
+]
+
TYPE_CHECKING = False
if TYPE_CHECKING:
- from typing import Tuple, Union
+ from typing import Tuple
+ from typing import Union
+
VERSION_TUPLE = Tuple[Union[int, str], ...]
+ COMMIT_ID = Union[str, None]
else:
VERSION_TUPLE = object
+ COMMIT_ID = object
version: str
__version__: str
__version_tuple__: VERSION_TUPLE
version_tuple: VERSION_TUPLE
+commit_id: COMMIT_ID
+__commit_id__: COMMIT_ID
+
+__version__ = version = '5.3.0'
+__version_tuple__ = version_tuple = (5, 3, 0)
-__version__ = version = '5.1.0'
-__version_tuple__ = version_tuple = (5, 1, 0)
+__commit_id__ = commit_id = 'gdba56694f'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/django_auth_ldap-5.1.0/django_auth_ldap.egg-info/PKG-INFO
new/django_auth_ldap-5.3.0/django_auth_ldap.egg-info/PKG-INFO
--- old/django_auth_ldap-5.1.0/django_auth_ldap.egg-info/PKG-INFO
2024-10-17 11:03:53.000000000 +0200
+++ new/django_auth_ldap-5.3.0/django_auth_ldap.egg-info/PKG-INFO
2025-12-26 15:59:44.000000000 +0100
@@ -1,6 +1,6 @@
-Metadata-Version: 2.1
+Metadata-Version: 2.4
Name: django-auth-ldap
-Version: 5.1.0
+Version: 5.3.0
Summary: Django LDAP authentication backend
Author-email: Peter Sagerson <[email protected]>
Maintainer-email: François Freitag <[email protected]>
@@ -14,27 +14,28 @@
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Framework :: Django :: 4.2
-Classifier: Framework :: Django :: 5.0
-Classifier: Framework :: Django :: 5.1
+Classifier: Framework :: Django :: 5.2
+Classifier: Framework :: Django :: 6.0
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
-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: Programming Language :: Python :: 3.13
+Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: System :: Systems Administration ::
Authentication/Directory :: LDAP
-Requires-Python: >=3.9
+Requires-Python: >=3.10
Description-Content-Type: text/x-rst
License-File: LICENSE
Requires-Dist: Django>=4.2
Requires-Dist: python-ldap>=3.1
+Dynamic: license-file
================================
Django Authentication Using LDAP
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django_auth_ldap-5.1.0/docs/conf.py
new/django_auth_ldap-5.3.0/docs/conf.py
--- old/django_auth_ldap-5.1.0/docs/conf.py 2024-10-17 11:03:36.000000000
+0200
+++ new/django_auth_ldap-5.3.0/docs/conf.py 2025-12-26 15:59:34.000000000
+0100
@@ -13,8 +13,7 @@
import contextlib
import os
import sys
-
-from pkg_resources import DistributionNotFound, get_distribution
+from importlib.metadata import PackageNotFoundError, version
sys.path.insert(0, os.path.abspath("ext"))
@@ -37,16 +36,14 @@
try:
- dist = get_distribution("django-auth-ldap")
-except DistributionNotFound:
+ release = version("django-auth-ldap")
+except PackageNotFoundError:
# The project is not installed in readthedocs environment (requires LDAP
# bindings). Read the version with setuptools_scm.
import setuptools_scm
with chdir(".."):
release = setuptools_scm.get_version()
-else:
- release = dist.version
version = ".".join(release.split(".")[:2])
@@ -59,7 +56,11 @@
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
-extensions = ["sphinx.ext.intersphinx", "daldocs"]
+extensions = [
+ "sphinx.ext.intersphinx",
+ "daldocs",
+ "sphinx_rtd_theme",
+]
# Add any paths that contain templates here, relative to this directory.
# templates_path = ['_templates']
@@ -94,7 +95,7 @@
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
-html_theme = "default"
+html_theme = "sphinx_rtd_theme"
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django_auth_ldap-5.1.0/docs/requirements.txt
new/django_auth_ldap-5.3.0/docs/requirements.txt
--- old/django_auth_ldap-5.1.0/docs/requirements.txt 2024-10-17
11:03:36.000000000 +0200
+++ new/django_auth_ldap-5.3.0/docs/requirements.txt 2025-12-26
15:59:34.000000000 +0100
@@ -1 +1,2 @@
setuptools_scm
+sphinx-rtd-theme
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django_auth_ldap-5.1.0/pyproject.toml
new/django_auth_ldap-5.3.0/pyproject.toml
--- old/django_auth_ldap-5.1.0/pyproject.toml 2024-10-17 11:03:36.000000000
+0200
+++ new/django_auth_ldap-5.3.0/pyproject.toml 2025-12-26 15:59:34.000000000
+0100
@@ -1,6 +1,6 @@
[project]
name = "django-auth-ldap"
-requires-python = ">=3.9"
+requires-python = ">=3.10"
description = "Django LDAP authentication backend"
readme = "README.rst"
authors = [
@@ -15,19 +15,19 @@
"Environment :: Web Environment",
"Framework :: Django",
"Framework :: Django :: 4.2",
- "Framework :: Django :: 5.0",
- "Framework :: Django :: 5.1",
+ "Framework :: Django :: 5.2",
+ "Framework :: Django :: 6.0",
"Intended Audience :: Developers",
"Intended Audience :: System Administrators",
"License :: OSI Approved :: BSD License",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"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",
+ "Programming Language :: Python :: 3.14",
"Topic :: Internet :: WWW/HTTP",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: System :: Systems Administration :: Authentication/Directory ::
LDAP",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django_auth_ldap-5.1.0/tests/tests.py
new/django_auth_ldap-5.3.0/tests/tests.py
--- old/django_auth_ldap-5.1.0/tests/tests.py 2024-10-17 11:03:36.000000000
+0200
+++ new/django_auth_ldap-5.3.0/tests/tests.py 2025-12-26 15:59:34.000000000
+0100
@@ -582,8 +582,8 @@
[(log.levelname, log.msg, log.args) for log in logs.records],
[
("DEBUG", "Binding as %s", (dn,)),
- ("DEBUG", "Creating Django user %s", ("alice",)),
- ("DEBUG", "Populating Django user %s", ("alice",)),
+ ("INFO", "Creating Django user %s", ("alice",)),
+ ("INFO", "Populating Django user %s", ("alice",)),
("DEBUG", "Binding as %s", ("",)),
(
"DEBUG",
@@ -1343,8 +1343,32 @@
alice = authenticate(username="alice", password="password")
- self.assertEqual(Group.objects.count(), 3)
- self.assertEqual(set(alice.groups.all()), set(Group.objects.all()))
+ groups = set(Group.objects.all())
+ self.assertEqual(
+ {g.name for g in groups},
+ {"active_px", "staff_px", "superuser_px"},
+ )
+ self.assertEqual(set(alice.groups.all()), groups)
+
+ def test_group_mirroring_custom_grouptype(self):
+ self._init_settings(
+ USER_DN_TEMPLATE="uid=%(user)s,ou=people,o=test",
+ GROUP_SEARCH=LDAPSearch(
+ "ou=groups,o=test", ldap.SCOPE_SUBTREE,
"(objectClass=posixGroup)"
+ ),
+ GROUP_TYPE=CustomGroupType(),
+ MIRROR_GROUPS=True,
+ )
+
+ self.assertEqual(Group.objects.count(), 0)
+
+ alice = authenticate(username="alice", password="password")
+ groups = set(Group.objects.all())
+ self.assertEqual(
+ {g.name for g in groups},
+ {"active_px", "staff_px"},
+ )
+ self.assertEqual(set(alice.groups.all()), groups)
def test_nested_group_mirroring(self):
self._init_settings(
@@ -1821,3 +1845,12 @@
active_nis = Group.objects.create(name="active_nis")
active_nis.permissions.add(*permissions)
+
+
+class CustomGroupType(PosixGroupType):
+ def group_name_from_info(self, group_info):
+ name = super().group_name_from_info(group_info)
+ if name.startswith("superuser"):
+ name = None
+
+ return name
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django_auth_ldap-5.1.0/tox.ini
new/django_auth_ldap-5.3.0/tox.ini
--- old/django_auth_ldap-5.1.0/tox.ini 2024-10-17 11:03:36.000000000 +0200
+++ new/django_auth_ldap-5.3.0/tox.ini 2025-12-26 15:59:34.000000000 +0100
@@ -3,18 +3,18 @@
ruff
docs
django42
- django50
- django51
+ django52
+ django60
djangomain
isolated_build = true
[gh]
python =
- 3.9 = django42
- 3.10 = django{42,50,51,main}
- 3.11 = django{42,50,51,main}
- 3.12 = django{42,50,51,main}
- 3.13 = django{42,50,51,main}
+ 3.10 = django{42,52}
+ 3.11 = django{42,52}
+ 3.12 = django{42,52,60,main}
+ 3.13 = django{42,52,60,main}
+ 3.14 = django{52,60,main}
[testenv]
commands =
@@ -22,21 +22,11 @@
{envpython} -Wa -b -m unittest discover --pattern *_test_without_django.py
deps =
django42: Django>=4.2,<4.3
- django50: Django>=5.0,<5.1
- django51: Django>=5.1b1,<5.2
+ django52: Django>=5.2,<6.0
+ django60: Django>=6.0,<6.1
djangomain: https://github.com/django/django/archive/main.tar.gz
[testenv:ruff]
deps = ruff
commands = ruff check .
skip_install = true
-
-[testenv:docs]
-isolated_build = true
-deps =
- readme_renderer
- setuptools>=65.0
- sphinx
-commands =
- make -C docs html
-allowlist_externals = make