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

Reply via email to