Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-social-auth-app-django for
openSUSE:Factory checked in at 2026-05-28 17:28:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-social-auth-app-django (Old)
and /work/SRC/openSUSE:Factory/.python-social-auth-app-django.new.1937
(New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-social-auth-app-django"
Thu May 28 17:28:29 2026 rev:18 rq:1355543 version:5.9.0
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-social-auth-app-django/python-social-auth-app-django.changes
2026-04-07 16:51:33.015100283 +0200
+++
/work/SRC/openSUSE:Factory/.python-social-auth-app-django.new.1937/python-social-auth-app-django.changes
2026-05-28 17:29:22.497768518 +0200
@@ -1,0 +2,10 @@
+Thu May 28 07:37:35 UTC 2026 - Markéta Machová <[email protected]>
+
+- Update to 5.9.0
+ * DjangoStrategy now lazily creates a session when initialized without
+ a request
+ * Removed legacy replaces metadata from historical squashed migrations
+ * Added async support to SocialAuthExceptionMiddleware
+ * Dropped support for Django 5.1
+
+-------------------------------------------------------------------
Old:
----
social_auth_app_django-5.7.0.tar.gz
New:
----
social_auth_app_django-5.9.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-social-auth-app-django.spec ++++++
--- /var/tmp/diff_new_pack.2qQVIJ/_old 2026-05-28 17:29:23.345803621 +0200
+++ /var/tmp/diff_new_pack.2qQVIJ/_new 2026-05-28 17:29:23.345803621 +0200
@@ -18,23 +18,25 @@
%{?sle15_python_module_pythons}
Name: python-social-auth-app-django
-Version: 5.7.0
+Version: 5.9.0
Release: 0
Summary: Python Social Authentication, Django integration
License: BSD-3-Clause
Group: Development/Languages/Python
URL: https://github.com/python-social-auth/social-app-django
Source:
https://files.pythonhosted.org/packages/source/s/social_auth_app_django/social_auth_app_django-%{version}.tar.gz
-BuildRequires: %{python_module Django >= 5.1}
+BuildRequires: %{python_module Django >= 5.2}
+BuildRequires: %{python_module asgiref >= 3.8.1}
BuildRequires: %{python_module base >= 3.10}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module setuptools}
-BuildRequires: %{python_module social-auth-core >= 4.4.0}
+BuildRequires: %{python_module social-auth-core >= 4.8.3}
BuildRequires: %{python_module wheel}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
-Requires: python-Django >= 5.1
-Requires: python-social-auth-core >= 4.4.0
+Requires: python-Django >= 5.2
+Requires: python-asgiref >= 3.8.1
+Requires: python-social-auth-core >= 4.8.3
BuildArch: noarch
%python_subpackages
++++++ social_auth_app_django-5.7.0.tar.gz ->
social_auth_app_django-5.9.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/social_auth_app_django-5.7.0/CHANGELOG.md
new/social_auth_app_django-5.9.0/CHANGELOG.md
--- old/social_auth_app_django-5.7.0/CHANGELOG.md 2025-12-18
20:00:08.000000000 +0100
+++ new/social_auth_app_django-5.9.0/CHANGELOG.md 2026-04-29
16:51:40.000000000 +0200
@@ -5,6 +5,24 @@
The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [Semantic Versioning](http://semver.org/).
+##
[5.9.0](https://github.com/python-social-auth/social-app-django/releases/tag/5.9.0)
- 2026-04-29
+
+### Changed
+
+- Added async support to `SocialAuthExceptionMiddleware`
+- Dropped support for Django 5.1, Django 5.2 is now the minimum supported
version
+- Loosened the `social-auth-core` dependency to allow compatible 4.x releases
+- Improved release automation and GitHub release asset publishing
+
+##
[5.8.0](https://github.com/python-social-auth/social-app-django/releases/tag/5.8.0)
- 2026-04-20
+
+### Changed
+
+- Added explicit Django 5.1, 5.2, and 6.0 package classifiers
+- `DjangoStrategy` now lazily creates a session when initialized without a
request
+- Removed legacy `replaces` metadata from historical squashed migrations
+- Updated historical `unique_together` migration declarations for newer Django
compatibility
+
##
[5.7.0](https://github.com/python-social-auth/social-app-django/releases/tag/5.7.0)
- 2025-12-18
### Changed
@@ -36,7 +54,7 @@
### Changed
- Dropped support for older Django versions.
-- Added non-empty constraind on `uid`.
+- Added non-empty constraint on `uid`.
- Added support for session restore with stricter SameSite cookie policy.
##
[5.4.3](https://github.com/python-social-auth/social-app-django/releases/tag/5.4.3)
- 2025-02-13
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/social_auth_app_django-5.7.0/PKG-INFO
new/social_auth_app_django-5.9.0/PKG-INFO
--- old/social_auth_app_django-5.7.0/PKG-INFO 2025-12-18 20:00:10.786944200
+0100
+++ new/social_auth_app_django-5.9.0/PKG-INFO 2026-04-29 16:51:43.213986600
+0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.4
Name: social-auth-app-django
-Version: 5.7.0
+Version: 5.9.0
Summary: Python Social Authentication, Django integration.
Author-email: Matias Aguirre <[email protected]>, Michal Čihař
<[email protected]>
License-Expression: BSD-3-Clause
@@ -10,6 +10,9 @@
Keywords: django,oauth,openid,saml,social auth
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
+Classifier: Framework :: Django :: 5.2
+Classifier: Framework :: Django :: 6.0
+Classifier: Framework :: Django
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
@@ -22,15 +25,16 @@
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
-Requires-Dist: Django>=5.1
-Requires-Dist: social-auth-core~=4.8.3
+Requires-Dist: asgiref>=3.8.1
+Requires-Dist: Django>=5.2
+Requires-Dist: social-auth-core<5.0.0,>=4.8.3
Provides-Extra: dev
Requires-Dist: coverage>=3.6; extra == "dev"
-Requires-Dist: django-stubs-ext==5.2.8; extra == "dev"
-Requires-Dist: django-stubs==5.2.8; extra == "dev"
-Requires-Dist: mypy==1.19.1; extra == "dev"
+Requires-Dist: django-stubs-ext==6.0.3; extra == "dev"
+Requires-Dist: django-stubs==6.0.3; extra == "dev"
+Requires-Dist: mypy==1.20.2; extra == "dev"
Requires-Dist: pre-commit; extra == "dev"
-Requires-Dist: pyright==1.1.407; extra == "dev"
+Requires-Dist: pyright==1.1.409; extra == "dev"
Requires-Dist: tox; extra == "dev"
Dynamic: license-file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/social_auth_app_django-5.7.0/pyproject.toml
new/social_auth_app_django-5.9.0/pyproject.toml
--- old/social_auth_app_django-5.7.0/pyproject.toml 2025-12-18
20:00:08.000000000 +0100
+++ new/social_auth_app_django-5.9.0/pyproject.toml 2026-04-29
16:51:40.000000000 +0200
@@ -5,11 +5,11 @@
[dependency-groups]
dev = [
"coverage>=3.6",
- "django-stubs-ext==5.2.8",
- "django-stubs==5.2.8",
- "mypy==1.19.1",
+ "django-stubs-ext==6.0.3",
+ "django-stubs==6.0.3",
+ "mypy==1.20.2",
"pre-commit",
- "pyright==1.1.407",
+ "pyright==1.1.409",
"tox"
]
@@ -21,6 +21,9 @@
classifiers = [
"Development Status :: 5 - Production/Stable",
"Environment :: Web Environment",
+ "Framework :: Django :: 5.2",
+ "Framework :: Django :: 6.0",
+ "Framework :: Django",
"Intended Audience :: Developers",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
@@ -32,8 +35,9 @@
"Topic :: Internet"
]
dependencies = [
- "Django>=5.1",
- "social-auth-core~=4.8.3"
+ "asgiref>=3.8.1",
+ "Django>=5.2",
+ "social-auth-core>=4.8.3,<5.0.0"
]
description = "Python Social Authentication, Django integration."
keywords = ["django", "oauth", "openid", "saml", "social auth"]
@@ -42,18 +46,18 @@
name = "social-auth-app-django"
readme = "README.md"
requires-python = ">=3.10"
-version = "5.7.0"
+version = "5.9.0"
[project.optional-dependencies]
# This is present until pip implements supports for PEP 735
# see https://github.com/pypa/pip/issues/12963
dev = [
"coverage>=3.6",
- "django-stubs-ext==5.2.8",
- "django-stubs==5.2.8",
- "mypy==1.19.1",
+ "django-stubs-ext==6.0.3",
+ "django-stubs==6.0.3",
+ "mypy==1.20.2",
"pre-commit",
- "pyright==1.1.407",
+ "pyright==1.1.409",
"tox"
]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/social_auth_app_django-5.7.0/social_auth_app_django.egg-info/PKG-INFO
new/social_auth_app_django-5.9.0/social_auth_app_django.egg-info/PKG-INFO
--- old/social_auth_app_django-5.7.0/social_auth_app_django.egg-info/PKG-INFO
2025-12-18 20:00:10.000000000 +0100
+++ new/social_auth_app_django-5.9.0/social_auth_app_django.egg-info/PKG-INFO
2026-04-29 16:51:43.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.4
Name: social-auth-app-django
-Version: 5.7.0
+Version: 5.9.0
Summary: Python Social Authentication, Django integration.
Author-email: Matias Aguirre <[email protected]>, Michal Čihař
<[email protected]>
License-Expression: BSD-3-Clause
@@ -10,6 +10,9 @@
Keywords: django,oauth,openid,saml,social auth
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
+Classifier: Framework :: Django :: 5.2
+Classifier: Framework :: Django :: 6.0
+Classifier: Framework :: Django
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
@@ -22,15 +25,16 @@
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
-Requires-Dist: Django>=5.1
-Requires-Dist: social-auth-core~=4.8.3
+Requires-Dist: asgiref>=3.8.1
+Requires-Dist: Django>=5.2
+Requires-Dist: social-auth-core<5.0.0,>=4.8.3
Provides-Extra: dev
Requires-Dist: coverage>=3.6; extra == "dev"
-Requires-Dist: django-stubs-ext==5.2.8; extra == "dev"
-Requires-Dist: django-stubs==5.2.8; extra == "dev"
-Requires-Dist: mypy==1.19.1; extra == "dev"
+Requires-Dist: django-stubs-ext==6.0.3; extra == "dev"
+Requires-Dist: django-stubs==6.0.3; extra == "dev"
+Requires-Dist: mypy==1.20.2; extra == "dev"
Requires-Dist: pre-commit; extra == "dev"
-Requires-Dist: pyright==1.1.407; extra == "dev"
+Requires-Dist: pyright==1.1.409; extra == "dev"
Requires-Dist: tox; extra == "dev"
Dynamic: license-file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/social_auth_app_django-5.7.0/social_auth_app_django.egg-info/requires.txt
new/social_auth_app_django-5.9.0/social_auth_app_django.egg-info/requires.txt
---
old/social_auth_app_django-5.7.0/social_auth_app_django.egg-info/requires.txt
2025-12-18 20:00:10.000000000 +0100
+++
new/social_auth_app_django-5.9.0/social_auth_app_django.egg-info/requires.txt
2026-04-29 16:51:43.000000000 +0200
@@ -1,11 +1,12 @@
-Django>=5.1
-social-auth-core~=4.8.3
+asgiref>=3.8.1
+Django>=5.2
+social-auth-core<5.0.0,>=4.8.3
[dev]
coverage>=3.6
-django-stubs-ext==5.2.8
-django-stubs==5.2.8
-mypy==1.19.1
+django-stubs-ext==6.0.3
+django-stubs==6.0.3
+mypy==1.20.2
pre-commit
-pyright==1.1.407
+pyright==1.1.409
tox
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/social_auth_app_django-5.7.0/social_django/middleware.py
new/social_auth_app_django-5.9.0/social_django/middleware.py
--- old/social_auth_app_django-5.7.0/social_django/middleware.py
2025-12-18 20:00:08.000000000 +0100
+++ new/social_auth_app_django-5.9.0/social_django/middleware.py
2026-04-29 16:51:40.000000000 +0200
@@ -1,14 +1,17 @@
from urllib.parse import quote
+from asgiref.sync import iscoroutinefunction, markcoroutinefunction
from django.apps import apps
from django.conf import settings
from django.contrib import messages
from django.contrib.messages.api import MessageFailure
from django.shortcuts import redirect
+from django.utils.decorators import sync_and_async_middleware
from social_core.exceptions import SocialAuthBaseException
from social_core.utils import social_logger
+@sync_and_async_middleware
class SocialAuthExceptionMiddleware:
"""
Middleware that handles Social Auth AuthExceptions by providing the user
@@ -25,6 +28,9 @@
def __init__(self, get_response):
self.get_response = get_response
+ if iscoroutinefunction(get_response):
+ markcoroutinefunction(self)
+
def __call__(self, request):
return self.get_response(request)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/social_auth_app_django-5.7.0/social_django/migrations/0001_initial.py
new/social_auth_app_django-5.9.0/social_django/migrations/0001_initial.py
--- old/social_auth_app_django-5.7.0/social_django/migrations/0001_initial.py
2025-12-18 20:00:08.000000000 +0100
+++ new/social_auth_app_django-5.9.0/social_django/migrations/0001_initial.py
2026-04-29 16:51:40.000000000 +0200
@@ -15,8 +15,6 @@
class Migration(migrations.Migration):
- replaces = [("default", "0001_initial"), ("social_auth", "0001_initial")]
-
dependencies = [
migrations.swappable_dependency(USER_MODEL),
]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/social_auth_app_django-5.7.0/social_django/migrations/0002_add_related_name.py
new/social_auth_app_django-5.9.0/social_django/migrations/0002_add_related_name.py
---
old/social_auth_app_django-5.7.0/social_django/migrations/0002_add_related_name.py
2025-12-18 20:00:08.000000000 +0100
+++
new/social_auth_app_django-5.9.0/social_django/migrations/0002_add_related_name.py
2026-04-29 16:51:40.000000000 +0200
@@ -8,11 +8,6 @@
class Migration(migrations.Migration):
- replaces = [
- ("default", "0002_add_related_name"),
- ("social_auth", "0002_add_related_name"),
- ]
-
dependencies = [
("social_django", "0001_initial"),
]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/social_auth_app_django-5.7.0/social_django/migrations/0003_alter_email_max_length.py
new/social_auth_app_django-5.9.0/social_django/migrations/0003_alter_email_max_length.py
---
old/social_auth_app_django-5.7.0/social_django/migrations/0003_alter_email_max_length.py
2025-12-18 20:00:08.000000000 +0100
+++
new/social_auth_app_django-5.9.0/social_django/migrations/0003_alter_email_max_length.py
2026-04-29 16:51:40.000000000 +0200
@@ -6,11 +6,6 @@
class Migration(migrations.Migration):
- replaces = [
- ("default", "0003_alter_email_max_length"),
- ("social_auth", "0003_alter_email_max_length"),
- ]
-
dependencies = [
("social_django", "0002_add_related_name"),
]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/social_auth_app_django-5.7.0/social_django/migrations/0004_auto_20160423_0400.py
new/social_auth_app_django-5.9.0/social_django/migrations/0004_auto_20160423_0400.py
---
old/social_auth_app_django-5.7.0/social_django/migrations/0004_auto_20160423_0400.py
2025-12-18 20:00:08.000000000 +0100
+++
new/social_auth_app_django-5.9.0/social_django/migrations/0004_auto_20160423_0400.py
2026-04-29 16:51:40.000000000 +0200
@@ -4,11 +4,6 @@
class Migration(migrations.Migration):
- replaces = [
- ("default", "0004_auto_20160423_0400"),
- ("social_auth", "0004_auto_20160423_0400"),
- ]
-
dependencies = [
("social_django", "0003_alter_email_max_length"),
]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/social_auth_app_django-5.7.0/social_django/migrations/0005_auto_20160727_2333.py
new/social_auth_app_django-5.9.0/social_django/migrations/0005_auto_20160727_2333.py
---
old/social_auth_app_django-5.7.0/social_django/migrations/0005_auto_20160727_2333.py
2025-12-18 20:00:08.000000000 +0100
+++
new/social_auth_app_django-5.9.0/social_django/migrations/0005_auto_20160727_2333.py
2026-04-29 16:51:40.000000000 +0200
@@ -4,8 +4,6 @@
class Migration(migrations.Migration):
- replaces = [("social_auth", "0005_auto_20160727_2333")]
-
dependencies = [
("social_django", "0004_auto_20160423_0400"),
]
@@ -13,6 +11,6 @@
operations = [
migrations.AlterUniqueTogether(
name="association",
- unique_together={("server_url", "handle")},
+ unique_together=(("server_url", "handle"),),
),
]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/social_auth_app_django-5.7.0/social_django/strategy.py
new/social_auth_app_django-5.9.0/social_django/strategy.py
--- old/social_auth_app_django-5.7.0/social_django/strategy.py 2025-12-18
20:00:08.000000000 +0100
+++ new/social_auth_app_django-5.9.0/social_django/strategy.py 2026-04-29
16:51:40.000000000 +0200
@@ -45,12 +45,26 @@
class DjangoStrategy(BaseStrategy):
DEFAULT_TEMPLATE_STRATEGY = DjangoTemplateStrategy
+ _session: SessionBase
def __init__(self, storage, request: None | HttpRequest = None, tpl=None):
self.request: HttpRequest = request
- self.session: SessionBase = request.session if request else
create_session()
+ if request:
+ self.session = request.session
super().__init__(storage, tpl)
+ @property
+ def session(self) -> SessionBase:
+ try:
+ return self._session
+ except AttributeError:
+ self._session = create_session()
+ return self._session
+
+ @session.setter
+ def session(self, value: SessionBase) -> None:
+ self._session = value
+
def get_setting(self, name):
value = getattr(settings, name)
# Force text on URL named settings that are instance of Promise
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/social_auth_app_django-5.7.0/tests/test_middleware.py
new/social_auth_app_django-5.9.0/tests/test_middleware.py
--- old/social_auth_app_django-5.7.0/tests/test_middleware.py 2025-12-18
20:00:08.000000000 +0100
+++ new/social_auth_app_django-5.9.0/tests/test_middleware.py 2026-04-29
16:51:40.000000000 +0200
@@ -1,12 +1,15 @@
import logging
from unittest import mock
+from asgiref.sync import iscoroutinefunction
from django.contrib.messages import MessageFailure
-from django.http import HttpResponseRedirect
-from django.test import TestCase, override_settings
+from django.http import HttpResponse, HttpResponseRedirect
+from django.test import AsyncRequestFactory, RequestFactory, TestCase,
override_settings
from django.urls import reverse
from social_core.exceptions import AuthCanceled
+from social_django.middleware import SocialAuthExceptionMiddleware
+
class MockAuthCanceled(AuthCanceled):
def __init__(self, *args, **kwargs):
@@ -25,6 +28,32 @@
self.complete_url = reverse("social:complete", kwargs={"backend":
"facebook"})
self.complete_url += "?code=2&state=1"
+ def test_sync_middleware(self, mocked):
+ expected = HttpResponse()
+ get_response = mock.Mock(return_value=expected)
+ rf = RequestFactory()
+ request = rf.get("/")
+
+ middleware = SocialAuthExceptionMiddleware(get_response)
+ resp = middleware(request)
+
+ self.assertFalse(iscoroutinefunction(middleware))
+ self.assertIs(resp, expected)
+ get_response.assert_called_once_with(request)
+
+ async def test_async_middleware(self, mocked):
+ expected = HttpResponse()
+ get_response = mock.AsyncMock(return_value=expected)
+ async_rf = AsyncRequestFactory()
+ request = async_rf.get("/")
+
+ middleware = SocialAuthExceptionMiddleware(get_response)
+ resp = await middleware(request)
+
+ self.assertTrue(iscoroutinefunction(middleware))
+ self.assertIs(resp, expected)
+ get_response.assert_awaited_once_with(request)
+
def test_exception(self, mocked):
with self.assertRaises(MockAuthCanceled):
self.client.get(self.complete_url)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/social_auth_app_django-5.7.0/tests/test_strategy.py
new/social_auth_app_django-5.9.0/tests/test_strategy.py
--- old/social_auth_app_django-5.7.0/tests/test_strategy.py 2025-12-18
20:00:08.000000000 +0100
+++ new/social_auth_app_django-5.9.0/tests/test_strategy.py 2026-04-29
16:51:40.000000000 +0200
@@ -101,3 +101,8 @@
args, kwargs = self.strategy.clean_authenticate_args(None)
self.assertEqual(args, ())
self.assertEqual(kwargs, {"request": None})
+
+ def test_session_creation_without_request(self):
+ strategy = load_strategy()
+ self.assertIsNone(strategy.request)
+ self.assertIsNotNone(strategy.session)