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 2021-08-16 10:09:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-social-auth-app-django (Old)
 and      /work/SRC/openSUSE:Factory/.python-social-auth-app-django.new.1899 
(New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-social-auth-app-django"

Mon Aug 16 10:09:21 2021 rev:8 rq:911557 version:5.0.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-social-auth-app-django/python-social-auth-app-django.changes
      2020-08-19 18:59:34.971934621 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-social-auth-app-django.new.1899/python-social-auth-app-django.changes
    2021-08-16 10:14:24.718893038 +0200
@@ -1,0 +2,10 @@
+Wed Aug 11 11:53:52 UTC 2021 - Mark??ta Machov?? <mmach...@suse.com>
+
+- Update to version 5.0.0
+  * Removed compat shims for obsolete Django versions
+  * Switch from deprecated django.conf.urls.url to django.urls.path
+  * Drop support for Python 2
+  * Django generic JSONField support
+  * Django 3.2+ compatibility
+
+-------------------------------------------------------------------

Old:
----
  social-auth-app-django-4.0.0.tar.gz

New:
----
  social-auth-app-django-5.0.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-social-auth-app-django.spec ++++++
--- /var/tmp/diff_new_pack.KN8GRL/_old  2021-08-16 10:14:25.106892541 +0200
+++ /var/tmp/diff_new_pack.KN8GRL/_new  2021-08-16 10:14:25.110892537 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-social-auth-app-django
 #
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -19,23 +19,21 @@
 %define skip_python2 1
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-social-auth-app-django
-Version:        4.0.0
+Version:        5.0.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 >= 2.1}
+BuildRequires:  %{python_module Django >= 2.2}
 BuildRequires:  %{python_module mock}
 BuildRequires:  %{python_module setuptools}
-BuildRequires:  %{python_module six}
-BuildRequires:  %{python_module social-auth-core >= 3.3.0}
+BuildRequires:  %{python_module social-auth-core >= 4.1.0}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
-Requires:       python-Django >= 2.1
-Requires:       python-six
-Requires:       python-social-auth-core >= 3.3.0
+Requires:       python-Django >= 2.2
+Requires:       python-social-auth-core >= 4.1.0
 BuildArch:      noarch
 %python_subpackages
 

++++++ social-auth-app-django-4.0.0.tar.gz -> 
social-auth-app-django-5.0.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/social-auth-app-django-4.0.0/CHANGELOG.md 
new/social-auth-app-django-5.0.0/CHANGELOG.md
--- old/social-auth-app-django-4.0.0/CHANGELOG.md       2020-06-21 
06:52:10.000000000 +0200
+++ new/social-auth-app-django-5.0.0/CHANGELOG.md       2021-08-05 
20:13:52.000000000 +0200
@@ -5,7 +5,19 @@
 The format is based on [Keep a Changelog](http://keepachangelog.com/)
 and this project adheres to [Semantic Versioning](http://semver.org/).
 
-## 
[4.0.0](https://github.com/python-social-auth/social-app-django/releases/tag/3.4.0)
 - 2020-05-30
+## 
[5.0.0](https://github.com/python-social-auth/social-app-django/releases/tag/5.0.0)
 - 2021-08-05
+
+### Changed
+- Removed compat shims for obsolete Django versions
+- Switch from deprecated `django.conf.urls.url` to `django.urls.path`
+- Use query `.exists()` instead of `.count() > 0`
+- Added testing for Django 3.0
+- Drop support for Python 2
+- Django generic `JSONField` support, details documented 
[here](https://python-social-auth.readthedocs.io/en/latest/configuration/django.html#json-field-support)
+- Django 3.2+ compatibility
+- Use `_default_manager` instead of `objects`
+
+## 
[4.0.0](https://github.com/python-social-auth/social-app-django/releases/tag/4.0.0)
 - 2020-06-20
 
 ### Changed
 - Dropped support for older Django versions (1.8, 1.9, 1.10, 2.0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/social-auth-app-django-4.0.0/PKG-INFO 
new/social-auth-app-django-5.0.0/PKG-INFO
--- old/social-auth-app-django-4.0.0/PKG-INFO   2020-06-21 06:56:08.670946100 
+0200
+++ new/social-auth-app-django-5.0.0/PKG-INFO   2021-08-05 20:14:03.747578100 
+0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: social-auth-app-django
-Version: 4.0.0
+Version: 5.0.0
 Summary: Python Social Authentication, Django integration.
 Home-page: https://github.com/python-social-auth/social-app-django
 Author: Matias Aguirre
@@ -8,9 +8,10 @@
 License: BSD
 Description: # Python Social Auth - Django
         
-        [![Build 
Status](https://travis-ci.org/python-social-auth/social-app-django.svg?branch=master)](https://travis-ci.org/python-social-auth/social-app-django)
-        
[![Donate](https://img.shields.io/badge/Donate-PayPal-orange.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=matiasaguirre%40gmail%2ecom&lc=US&item_name=Python%20Social%20Auth&no_note=0&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHostedGuest)
+        ![Build 
Status](https://github.com/python-social-auth/social-app-django/workflows/Flake8/badge.svg)
+        ![Build 
Status](https://github.com/python-social-auth/social-app-django/workflows/Tests/badge.svg)
         [![PyPI 
version](https://badge.fury.io/py/social-auth-app-django.svg)](https://badge.fury.io/py/social-auth-app-django)
+        
[![Donate](https://img.shields.io/badge/Donate-PayPal-orange.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=matiasaguirre%40gmail%2ecom&lc=US&item_name=Python%20Social%20Auth&no_note=0&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHostedGuest)
         
         Python Social Auth is an easy to setup social 
authentication/registration
         mechanism with support for several frameworks and auth providers.
@@ -67,6 +68,10 @@
 Classifier: Intended Audience :: Developers
 Classifier: Environment :: Web Environment
 Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
+Requires-Python: >=3.6
 Description-Content-Type: text/markdown
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/social-auth-app-django-4.0.0/README.md 
new/social-auth-app-django-5.0.0/README.md
--- old/social-auth-app-django-4.0.0/README.md  2020-05-30 04:10:23.000000000 
+0200
+++ new/social-auth-app-django-5.0.0/README.md  2021-08-05 20:13:52.000000000 
+0200
@@ -1,8 +1,9 @@
 # Python Social Auth - Django
 
-[![Build 
Status](https://travis-ci.org/python-social-auth/social-app-django.svg?branch=master)](https://travis-ci.org/python-social-auth/social-app-django)
-[![Donate](https://img.shields.io/badge/Donate-PayPal-orange.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=matiasaguirre%40gmail%2ecom&lc=US&item_name=Python%20Social%20Auth&no_note=0&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHostedGuest)
+![Build 
Status](https://github.com/python-social-auth/social-app-django/workflows/Flake8/badge.svg)
+![Build 
Status](https://github.com/python-social-auth/social-app-django/workflows/Tests/badge.svg)
 [![PyPI 
version](https://badge.fury.io/py/social-auth-app-django.svg)](https://badge.fury.io/py/social-auth-app-django)
+[![Donate](https://img.shields.io/badge/Donate-PayPal-orange.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=matiasaguirre%40gmail%2ecom&lc=US&item_name=Python%20Social%20Auth&no_note=0&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHostedGuest)
 
 Python Social Auth is an easy to setup social authentication/registration
 mechanism with support for several frameworks and auth providers.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/social-auth-app-django-4.0.0/dev-requirements.txt 
new/social-auth-app-django-5.0.0/dev-requirements.txt
--- old/social-auth-app-django-4.0.0/dev-requirements.txt       2020-02-09 
06:08:05.000000000 +0100
+++ new/social-auth-app-django-5.0.0/dev-requirements.txt       2021-08-05 
20:13:52.000000000 +0200
@@ -1,4 +1,3 @@
-mock==2.0.0
 codecov==2.0.7
 tox==2.7.0
 -r requirements.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/social-auth-app-django-4.0.0/manage.py 
new/social-auth-app-django-5.0.0/manage.py
--- old/social-auth-app-django-4.0.0/manage.py  2020-02-09 06:08:05.000000000 
+0100
+++ new/social-auth-app-django-5.0.0/manage.py  2021-08-05 20:13:52.000000000 
+0200
@@ -1,6 +1,4 @@
 #!/usr/bin/env python
-# -*- coding: utf-8 -*-
-from __future__ import unicode_literals, absolute_import
 
 import os
 import sys
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/social-auth-app-django-4.0.0/requirements.txt 
new/social-auth-app-django-5.0.0/requirements.txt
--- old/social-auth-app-django-4.0.0/requirements.txt   2020-05-30 
04:55:07.000000000 +0200
+++ new/social-auth-app-django-5.0.0/requirements.txt   2021-08-05 
20:13:52.000000000 +0200
@@ -1,2 +1 @@
-six
-social-auth-core >= 3.3.0
+social-auth-core >= 4.1.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/social-auth-app-django-4.0.0/setup.py 
new/social-auth-app-django-5.0.0/setup.py
--- old/social-auth-app-django-4.0.0/setup.py   2020-05-30 04:10:23.000000000 
+0200
+++ new/social-auth-app-django-5.0.0/setup.py   2021-08-05 20:13:52.000000000 
+0200
@@ -1,4 +1,3 @@
-# -*- coding: utf-8 -*-
 """Setup file for easy installation"""
 import re
 
@@ -6,7 +5,7 @@
 from setuptools import setup
 
 
-VERSION_RE = re.compile('__version__ = \'([\d\.]+)\'')
+VERSION_RE = re.compile(r'__version__ = \'([\d\.]+)\'')
 
 
 def read_version():
@@ -23,6 +22,7 @@
 def load_requirements():
     return open(join(dirname(__file__), 'requirements.txt')).readlines()
 
+
 setup(
     name='social-auth-app-django',
     version=read_version(),
@@ -40,6 +40,7 @@
     ],
     long_description=long_description(),
     long_description_content_type='text/markdown',
+    python_requires='>=3.6',
     install_requires=load_requirements(),
     classifiers=[
         'Development Status :: 4 - Beta',
@@ -48,8 +49,11 @@
         'Intended Audience :: Developers',
         'Environment :: Web Environment',
         'Programming Language :: Python',
-        'Programming Language :: Python :: 2.7',
-        'Programming Language :: Python :: 3'
+        'Programming Language :: Python :: 3',
+        'Programming Language :: Python :: 3.6',
+        'Programming Language :: Python :: 3.7',
+        'Programming Language :: Python :: 3.8',
+        'Programming Language :: Python :: 3.9',
     ],
     zip_safe=False
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/social-auth-app-django-4.0.0/social_auth_app_django.egg-info/PKG-INFO 
new/social-auth-app-django-5.0.0/social_auth_app_django.egg-info/PKG-INFO
--- old/social-auth-app-django-4.0.0/social_auth_app_django.egg-info/PKG-INFO   
2020-06-21 06:56:08.000000000 +0200
+++ new/social-auth-app-django-5.0.0/social_auth_app_django.egg-info/PKG-INFO   
2021-08-05 20:14:03.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: social-auth-app-django
-Version: 4.0.0
+Version: 5.0.0
 Summary: Python Social Authentication, Django integration.
 Home-page: https://github.com/python-social-auth/social-app-django
 Author: Matias Aguirre
@@ -8,9 +8,10 @@
 License: BSD
 Description: # Python Social Auth - Django
         
-        [![Build 
Status](https://travis-ci.org/python-social-auth/social-app-django.svg?branch=master)](https://travis-ci.org/python-social-auth/social-app-django)
-        
[![Donate](https://img.shields.io/badge/Donate-PayPal-orange.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=matiasaguirre%40gmail%2ecom&lc=US&item_name=Python%20Social%20Auth&no_note=0&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHostedGuest)
+        ![Build 
Status](https://github.com/python-social-auth/social-app-django/workflows/Flake8/badge.svg)
+        ![Build 
Status](https://github.com/python-social-auth/social-app-django/workflows/Tests/badge.svg)
         [![PyPI 
version](https://badge.fury.io/py/social-auth-app-django.svg)](https://badge.fury.io/py/social-auth-app-django)
+        
[![Donate](https://img.shields.io/badge/Donate-PayPal-orange.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=matiasaguirre%40gmail%2ecom&lc=US&item_name=Python%20Social%20Auth&no_note=0&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHostedGuest)
         
         Python Social Auth is an easy to setup social 
authentication/registration
         mechanism with support for several frameworks and auth providers.
@@ -67,6 +68,10 @@
 Classifier: Intended Audience :: Developers
 Classifier: Environment :: Web Environment
 Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
+Requires-Python: >=3.6
 Description-Content-Type: text/markdown
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/social-auth-app-django-4.0.0/social_auth_app_django.egg-info/SOURCES.txt 
new/social-auth-app-django-5.0.0/social_auth_app_django.egg-info/SOURCES.txt
--- 
old/social-auth-app-django-4.0.0/social_auth_app_django.egg-info/SOURCES.txt    
    2020-06-21 06:56:08.000000000 +0200
+++ 
new/social-auth-app-django-5.0.0/social_auth_app_django.egg-info/SOURCES.txt    
    2021-08-05 20:14:03.000000000 +0200
@@ -15,7 +15,7 @@
 social_auth_app_django.egg-info/top_level.txt
 social_django/__init__.py
 social_django/admin.py
-social_django/compat.py
+social_django/apps.py
 social_django/config.py
 social_django/context_processors.py
 social_django/fields.py
@@ -42,7 +42,6 @@
 social_django/migrations/0010_uid_db_index.py
 social_django/migrations/__init__.py
 tests/__init__.py
-tests/compat.py
 tests/settings.py
 tests/test_admin.py
 tests/test_context_processors.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/social-auth-app-django-4.0.0/social_auth_app_django.egg-info/requires.txt 
new/social-auth-app-django-5.0.0/social_auth_app_django.egg-info/requires.txt
--- 
old/social-auth-app-django-4.0.0/social_auth_app_django.egg-info/requires.txt   
    2020-06-21 06:56:08.000000000 +0200
+++ 
new/social-auth-app-django-5.0.0/social_auth_app_django.egg-info/requires.txt   
    2021-08-05 20:14:03.000000000 +0200
@@ -1,2 +1 @@
-six
-social-auth-core>=3.3.0
+social-auth-core>=4.1.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/social-auth-app-django-4.0.0/social_django/__init__.py 
new/social-auth-app-django-5.0.0/social_django/__init__.py
--- old/social-auth-app-django-4.0.0/social_django/__init__.py  2020-06-21 
06:52:06.000000000 +0200
+++ new/social-auth-app-django-5.0.0/social_django/__init__.py  2021-08-05 
20:13:52.000000000 +0200
@@ -1,6 +1,7 @@
-__version__ = '4.0.0'
+__version__ = '5.0.0'
 
 
+import django
 from social_core.backends.base import BaseAuth
 
 # django.contrib.auth.load_backend() will import and instanciate the
@@ -9,6 +10,7 @@
 # BaseAuth.__init__ to ignore the mandatory strategy argument and load
 # it.
 
+
 def baseauth_init_workaround(original_init):
     def fake_init(self, strategy=None, *args, **kwargs):
         from .utils import load_strategy
@@ -20,4 +22,5 @@
     BaseAuth.__init__ = baseauth_init_workaround(BaseAuth.__init__)
     BaseAuth.__init_patched = True
 
-default_app_config = 'social_django.config.PythonSocialAuthConfig'
+if django.VERSION < (3, 2):
+    default_app_config = 'social_django.apps.PythonSocialAuthConfig'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/social-auth-app-django-4.0.0/social_django/admin.py 
new/social-auth-app-django-5.0.0/social_django/admin.py
--- old/social-auth-app-django-4.0.0/social_django/admin.py     2020-05-30 
04:10:23.000000000 +0200
+++ new/social-auth-app-django-5.0.0/social_django/admin.py     2021-08-05 
20:13:52.000000000 +0200
@@ -22,12 +22,12 @@
         if search_fields is None:
             _User = UserSocialAuth.user_model()
             username = getattr(_User, 'USERNAME_FIELD', None) or \
-                       hasattr(_User, 'username') and 'username' or \
-                       None
+                hasattr(_User, 'username') and 'username' or \
+                None
             fieldnames = ('first_name', 'last_name', 'email', username)
             all_names = self._get_all_field_names(_User._meta)
             search_fields = [name for name in fieldnames
-                                if name and name in all_names]
+                             if name and name in all_names]
         return ['user__' + name for name in search_fields] + \
             getattr(settings, setting_name('ADMIN_SEARCH_FIELDS'), [])
 
@@ -35,7 +35,7 @@
     def _get_all_field_names(model):
         names = chain.from_iterable(
             (field.name, field.attname)
-                if hasattr(field, 'attname') else (field.name,)
+            if hasattr(field, 'attname') else (field.name,)
             for field in model.get_fields()
             # For complete backwards compatibility, you may want to exclude
             # GenericForeignKey from the results.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/social-auth-app-django-4.0.0/social_django/apps.py 
new/social-auth-app-django-5.0.0/social_django/apps.py
--- old/social-auth-app-django-4.0.0/social_django/apps.py      1970-01-01 
01:00:00.000000000 +0100
+++ new/social-auth-app-django-5.0.0/social_django/apps.py      2021-08-05 
20:13:52.000000000 +0200
@@ -0,0 +1,12 @@
+from django.apps import AppConfig
+
+
+class PythonSocialAuthConfig(AppConfig):
+    # Explicitly set default auto field type to avoid migrations in Django 3.2+
+    default_auto_field = 'django.db.models.AutoField'
+    # Full Python path to the application eg. 'django.contrib.admin'.
+    name = 'social_django'
+    # Last component of the Python path to the application eg. 'admin'.
+    label = 'social_django'
+    # Human-readable name for the application eg. "Admin".
+    verbose_name = 'Python Social Auth'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/social-auth-app-django-4.0.0/social_django/compat.py 
new/social-auth-app-django-5.0.0/social_django/compat.py
--- old/social-auth-app-django-4.0.0/social_django/compat.py    2020-02-09 
06:08:05.000000000 +0100
+++ new/social-auth-app-django-5.0.0/social_django/compat.py    1970-01-01 
01:00:00.000000000 +0100
@@ -1,34 +0,0 @@
-# coding=utf-8
-import six
-import django
-from django.db import models
-
-
-try:
-    from django.urls import reverse
-except ImportError:
-    from django.core.urlresolvers import reverse
-
-try:
-    from django.utils.deprecation import MiddlewareMixin
-except ImportError:
-    MiddlewareMixin = object
-
-
-def get_rel_model(field):
-    if django.VERSION >= (1, 9):
-        return field.remote_field.model
-
-    user_model = field.rel.to
-    if isinstance(user_model, six.string_types):
-        app_label, model_name = user_model.split('.')
-        user_model = models.get_model(app_label, model_name)
-    return user_model
-
-
-def get_request_port(request):
-    if django.VERSION >= (1, 9):
-        return request.get_port()
-
-    host_parts = request.get_host().partition(':')
-    return host_parts[2] or request.META['SERVER_PORT']
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/social-auth-app-django-4.0.0/social_django/config.py 
new/social-auth-app-django-5.0.0/social_django/config.py
--- old/social-auth-app-django-4.0.0/social_django/config.py    2020-02-09 
06:08:05.000000000 +0100
+++ new/social-auth-app-django-5.0.0/social_django/config.py    2021-08-05 
20:13:52.000000000 +0200
@@ -1,10 +1,2 @@
-from django.apps import AppConfig
-
-
-class PythonSocialAuthConfig(AppConfig):
-    # Full Python path to the application eg. 'django.contrib.admin'.
-    name = 'social_django'
-    # Last component of the Python path to the application eg. 'admin'.
-    label = 'social_django'
-    # Human-readable name for the application eg. "Admin".
-    verbose_name = 'Python Social Auth'
+# For backward compatibility. You should use the configuration from apps module
+from .apps import PythonSocialAuthConfig  # noqa: F401
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/social-auth-app-django-4.0.0/social_django/context_processors.py 
new/social-auth-app-django-5.0.0/social_django/context_processors.py
--- old/social-auth-app-django-4.0.0/social_django/context_processors.py        
2020-05-30 04:10:23.000000000 +0200
+++ new/social-auth-app-django-5.0.0/social_django/context_processors.py        
2021-08-05 20:13:52.000000000 +0200
@@ -1,6 +1,7 @@
 from django.contrib.auth import REDIRECT_FIELD_NAME
+from django.conf import settings
 from django.utils.functional import SimpleLazyObject
-from django.utils.http import urlquote
+from urllib.parse import quote
 
 try:
     from django.utils.functional import empty as _empty
@@ -10,11 +11,12 @@
 
 
 from social_core.backends.utils import user_backends_data
-from .utils import Storage, BACKENDS
+from .utils import Storage
 
 
 class LazyDict(SimpleLazyObject):
     """Lazy dict initialization."""
+
     def __getitem__(self, name):
         if self._wrapped is empty:
             self._setup()
@@ -30,17 +32,17 @@
     """Load Social Auth current user data to context under the key 'backends'.
     Will return the output of social_core.backends.utils.user_backends_data."""
     return {'backends': LazyDict(lambda: user_backends_data(request.user,
-                                                            BACKENDS,
+                                                            
settings.AUTHENTICATION_BACKENDS,
                                                             Storage))}
 
 
 def login_redirect(request):
     """Load current redirect to context."""
     value = request.method == 'POST' and \
-                request.POST.get(REDIRECT_FIELD_NAME) or \
-                request.GET.get(REDIRECT_FIELD_NAME)
+        request.POST.get(REDIRECT_FIELD_NAME) or \
+        request.GET.get(REDIRECT_FIELD_NAME)
     if value:
-        value = urlquote(value)
+        value = quote(value)
         querystring = REDIRECT_FIELD_NAME + '=' + value
     else:
         querystring = ''
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/social-auth-app-django-4.0.0/social_django/fields.py 
new/social-auth-app-django-5.0.0/social_django/fields.py
--- old/social-auth-app-django-4.0.0/social_django/fields.py    2020-05-30 
04:10:23.000000000 +0200
+++ new/social-auth-app-django-5.0.0/social_django/fields.py    2021-08-05 
20:13:52.000000000 +0200
@@ -1,15 +1,42 @@
 import json
-import six
+import warnings
 
 from django.core.exceptions import ValidationError
 from django.conf import settings
 from django.db import models
-from django.utils.encoding import force_text
+from django.utils.encoding import force_str
 
 from social_core.utils import setting_name
 
-if getattr(settings, setting_name('POSTGRES_JSONFIELD'), False):
-    from django.contrib.postgres.fields import JSONField as JSONFieldBase
+
+POSTGRES_JSONFIELD = getattr(settings, setting_name('POSTGRES_JSONFIELD'),
+                             False)
+
+if POSTGRES_JSONFIELD:
+    warnings.warn(
+        'SOCIAL_AUTH_POSTGRES_JSONFIELD has been renamed to '
+        'SOCIAL_AUTH_JSONFIELD_ENABLED and will be removed in the next 
release.'
+    )
+    JSONFIELD_ENABLED = True
+else:
+    JSONFIELD_ENABLED = getattr(settings, setting_name('JSONFIELD_ENABLED'),
+                                False)
+
+if JSONFIELD_ENABLED:
+    JSONFIELD_CUSTOM = getattr(settings, setting_name('JSONFIELD_CUSTOM'), 
None)
+
+    if JSONFIELD_CUSTOM is not None:
+        try:
+            from django.utils.module_loading import import_string
+        except ImportError:
+            from importlib import import_module as import_string
+        JSONFieldBase = import_string(JSONFIELD_CUSTOM)
+    else:
+        try:
+            from django.db.models import JSONField as JSONFieldBase
+        except ImportError:
+            from django.contrib.postgres.fields import \
+                JSONField as JSONFieldBase
 else:
     JSONFieldBase = models.TextField
 
@@ -21,7 +48,7 @@
 
     def __init__(self, *args, **kwargs):
         kwargs.setdefault('default', dict)
-        super(JSONField, self).__init__(*args, **kwargs)
+        super().__init__(*args, **kwargs)
 
     def from_db_value(self, value, *args, **kwargs):
         return self.to_python(value)
@@ -34,9 +61,9 @@
         if self.blank and not value:
             return {}
         value = value or '{}'
-        if isinstance(value, six.binary_type):
-            value = six.text_type(value, 'utf-8')
-        if isinstance(value, six.string_types):
+        if isinstance(value, bytes):
+            value = str(value, 'utf-8')
+        if isinstance(value, str):
             try:
                 return json.loads(value)
             except Exception as err:
@@ -47,8 +74,8 @@
     def validate(self, value, model_instance):
         """Check value is a valid JSON string, raise ValidationError on
         error."""
-        if isinstance(value, six.string_types):
-            super(JSONField, self).validate(value, model_instance)
+        if isinstance(value, str):
+            super().validate(value, model_instance)
             try:
                 json.loads(value)
             except Exception as err:
@@ -63,9 +90,9 @@
 
     def value_to_string(self, obj):
         """Return value from object converted to string properly"""
-        return force_text(self.value_from_object(obj))
+        return force_str(self.value_from_object(obj))
 
     def value_from_object(self, obj):
         """Return value dumped to string."""
-        orig_val = super(JSONField, self).value_from_object(obj)
+        orig_val = super().value_from_object(obj)
         return self.get_prep_value(orig_val)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/social-auth-app-django-4.0.0/social_django/management/commands/clearsocial.py
 
new/social-auth-app-django-5.0.0/social_django/management/commands/clearsocial.py
--- 
old/social-auth-app-django-4.0.0/social_django/management/commands/clearsocial.py
   2020-02-09 06:08:05.000000000 +0100
+++ 
new/social-auth-app-django-5.0.0/social_django/management/commands/clearsocial.py
   2021-08-05 20:13:52.000000000 +0200
@@ -10,7 +10,7 @@
     help = 'removes old not used verification codes and partials'
 
     def add_arguments(self, parser):
-        super(Command, self).add_arguments(parser)
+        super().add_arguments(parser)
         parser.add_argument(
             '--age',
             action='store',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/social-auth-app-django-4.0.0/social_django/middleware.py 
new/social-auth-app-django-5.0.0/social_django/middleware.py
--- old/social-auth-app-django-4.0.0/social_django/middleware.py        
2020-05-30 04:10:23.000000000 +0200
+++ new/social-auth-app-django-5.0.0/social_django/middleware.py        
2021-08-05 20:13:52.000000000 +0200
@@ -1,16 +1,13 @@
-# -*- coding: utf-8 -*-
-import six
-
 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.http import urlquote
+from django.utils.deprecation import MiddlewareMixin
+from urllib.parse import quote
 
 from social_core.exceptions import SocialAuthBaseException
 from social_core.utils import social_logger
-from .compat import MiddlewareMixin
 
 
 class SocialAuthExceptionMiddleware(MiddlewareMixin):
@@ -44,8 +41,8 @@
                 except MessageFailure:
                     if url:
                         url += ('?' in url and '&' or '?') + \
-                               
'message={0}&backend={1}'.format(urlquote(message),
-                                                                backend_name)
+                               'message={}&backend={}'.format(quote(message),
+                                                              backend_name)
             else:
                 social_logger.error(message)
 
@@ -58,7 +55,7 @@
             return strategy.setting('RAISE_EXCEPTIONS') or settings.DEBUG
 
     def get_message(self, request, exception):
-        return six.text_type(exception)
+        return str(exception)
 
     def get_redirect_uri(self, request, exception):
         strategy = getattr(request, 'social_strategy', None)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/social-auth-app-django-4.0.0/social_django/migrations/0001_initial.py 
new/social-auth-app-django-5.0.0/social_django/migrations/0001_initial.py
--- old/social-auth-app-django-4.0.0/social_django/migrations/0001_initial.py   
2020-05-30 04:10:23.000000000 +0200
+++ new/social-auth-app-django-5.0.0/social_django/migrations/0001_initial.py   
2021-08-05 20:13:52.000000000 +0200
@@ -1,6 +1,3 @@
-# -*- coding: utf-8 -*-
-from __future__ import unicode_literals
-
 from django.db import models, migrations
 from django.conf import settings
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/social-auth-app-django-4.0.0/social_django/migrations/0002_add_related_name.py
 
new/social-auth-app-django-5.0.0/social_django/migrations/0002_add_related_name.py
--- 
old/social-auth-app-django-4.0.0/social_django/migrations/0002_add_related_name.py
  2020-05-30 04:10:23.000000000 +0200
+++ 
new/social-auth-app-django-5.0.0/social_django/migrations/0002_add_related_name.py
  2021-08-05 20:13:52.000000000 +0200
@@ -1,6 +1,3 @@
-# -*- coding: utf-8 -*-
-from __future__ import unicode_literals
-
 from django.db import models, migrations
 from django.conf import settings
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/social-auth-app-django-4.0.0/social_django/migrations/0003_alter_email_max_length.py
 
new/social-auth-app-django-5.0.0/social_django/migrations/0003_alter_email_max_length.py
--- 
old/social-auth-app-django-4.0.0/social_django/migrations/0003_alter_email_max_length.py
    2020-05-30 04:10:23.000000000 +0200
+++ 
new/social-auth-app-django-5.0.0/social_django/migrations/0003_alter_email_max_length.py
    2021-08-05 20:13:52.000000000 +0200
@@ -1,6 +1,3 @@
-# -*- coding: utf-8 -*-
-from __future__ import unicode_literals
-
 from django.conf import settings
 from django.db import models, migrations
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/social-auth-app-django-4.0.0/social_django/migrations/0004_auto_20160423_0400.py
 
new/social-auth-app-django-5.0.0/social_django/migrations/0004_auto_20160423_0400.py
--- 
old/social-auth-app-django-4.0.0/social_django/migrations/0004_auto_20160423_0400.py
        2020-05-30 04:10:23.000000000 +0200
+++ 
new/social-auth-app-django-5.0.0/social_django/migrations/0004_auto_20160423_0400.py
        2021-08-05 20:13:52.000000000 +0200
@@ -1,7 +1,4 @@
-# -*- coding: utf-8 -*-
-from __future__ import unicode_literals
-
-from django.db import migrations, models
+from django.db import migrations
 
 from ..fields import JSONField
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/social-auth-app-django-4.0.0/social_django/migrations/0005_auto_20160727_2333.py
 
new/social-auth-app-django-5.0.0/social_django/migrations/0005_auto_20160727_2333.py
--- 
old/social-auth-app-django-4.0.0/social_django/migrations/0005_auto_20160727_2333.py
        2020-05-30 04:10:23.000000000 +0200
+++ 
new/social-auth-app-django-5.0.0/social_django/migrations/0005_auto_20160727_2333.py
        2021-08-05 20:13:52.000000000 +0200
@@ -1,6 +1,4 @@
-# -*- coding: utf-8 -*-
 # Generated by Django 1.9.5 on 2016-07-28 02:33
-from __future__ import unicode_literals
 
 from django.db import migrations
 
@@ -17,6 +15,6 @@
     operations = [
         migrations.AlterUniqueTogether(
             name='association',
-            unique_together=set([('server_url', 'handle')]),
+            unique_together={('server_url', 'handle')},
         ),
     ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/social-auth-app-django-4.0.0/social_django/migrations/0006_partial.py 
new/social-auth-app-django-5.0.0/social_django/migrations/0006_partial.py
--- old/social-auth-app-django-4.0.0/social_django/migrations/0006_partial.py   
2020-02-09 06:08:05.000000000 +0100
+++ new/social-auth-app-django-5.0.0/social_django/migrations/0006_partial.py   
2021-08-05 20:13:52.000000000 +0200
@@ -1,6 +1,4 @@
-# -*- coding: utf-8 -*-
 # Generated by Django 1.10.4 on 2017-01-02 11:54
-from __future__ import unicode_literals
 
 from django.db import migrations, models
 import social_django.fields
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/social-auth-app-django-4.0.0/social_django/migrations/0007_code_timestamp.py
 
new/social-auth-app-django-5.0.0/social_django/migrations/0007_code_timestamp.py
--- 
old/social-auth-app-django-4.0.0/social_django/migrations/0007_code_timestamp.py
    2020-02-09 06:08:05.000000000 +0100
+++ 
new/social-auth-app-django-5.0.0/social_django/migrations/0007_code_timestamp.py
    2021-08-05 20:13:52.000000000 +0200
@@ -1,6 +1,4 @@
-# -*- coding: utf-8 -*-
 # Generated by Django 1.10.7 on 2017-06-08 06:54
-from __future__ import unicode_literals
 
 from django.db import migrations, models
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/social-auth-app-django-4.0.0/social_django/migrations/0008_partial_timestamp.py
 
new/social-auth-app-django-5.0.0/social_django/migrations/0008_partial_timestamp.py
--- 
old/social-auth-app-django-4.0.0/social_django/migrations/0008_partial_timestamp.py
 2020-02-09 06:08:05.000000000 +0100
+++ 
new/social-auth-app-django-5.0.0/social_django/migrations/0008_partial_timestamp.py
 2021-08-05 20:13:52.000000000 +0200
@@ -1,6 +1,4 @@
-# -*- coding: utf-8 -*-
 # Generated by Django 1.10.7 on 2017-06-08 06:57
-from __future__ import unicode_literals
 
 from django.db import migrations, models
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/social-auth-app-django-4.0.0/social_django/migrations/0010_uid_db_index.py 
new/social-auth-app-django-5.0.0/social_django/migrations/0010_uid_db_index.py
--- 
old/social-auth-app-django-4.0.0/social_django/migrations/0010_uid_db_index.py  
    2020-05-30 05:19:26.000000000 +0200
+++ 
new/social-auth-app-django-5.0.0/social_django/migrations/0010_uid_db_index.py  
    2021-08-05 20:13:52.000000000 +0200
@@ -1,6 +1,3 @@
-# -*- coding: utf-8 -*-
-from __future__ import unicode_literals
-
 from django.conf import settings
 from django.db import models, migrations
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/social-auth-app-django-4.0.0/social_django/models.py 
new/social-auth-app-django-5.0.0/social_django/models.py
--- old/social-auth-app-django-4.0.0/social_django/models.py    2020-05-30 
05:19:26.000000000 +0200
+++ new/social-auth-app-django-5.0.0/social_django/models.py    2021-08-05 
20:13:52.000000000 +0200
@@ -1,23 +1,20 @@
 """Django ORM models for Social Auth"""
-import six
-
 from django.db import models
 from django.conf import settings
 from django.db.utils import IntegrityError
 
 from social_core.utils import setting_name
 
-from .compat import get_rel_model
 from .storage import DjangoUserMixin, DjangoAssociationMixin, \
-                     DjangoNonceMixin, DjangoCodeMixin, \
-                     DjangoPartialMixin, BaseDjangoStorage
+    DjangoNonceMixin, DjangoCodeMixin, \
+    DjangoPartialMixin, BaseDjangoStorage
 from .fields import JSONField
 from .managers import UserSocialAuthManager
 
 
 USER_MODEL = getattr(settings, setting_name('USER_MODEL'), None) or \
-             getattr(settings, 'AUTH_USER_MODEL', None) or \
-             'auth.User'
+    getattr(settings, 'AUTH_USER_MODEL', None) or \
+    'auth.User'
 UID_LENGTH = getattr(settings, setting_name('UID_LENGTH'), 255)
 EMAIL_LENGTH = getattr(settings, setting_name('EMAIL_LENGTH'), 254)
 NONCE_SERVER_URL_LENGTH = getattr(
@@ -62,8 +59,7 @@
 
     @classmethod
     def user_model(cls):
-        user_model = get_rel_model(field=cls._meta.get_field('user'))
-        return user_model
+        return cls._meta.get_field('user').remote_field.model
 
 
 class UserSocialAuth(AbstractUserSocialAuth):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/social-auth-app-django-4.0.0/social_django/storage.py 
new/social-auth-app-django-5.0.0/social_django/storage.py
--- old/social-auth-app-django-4.0.0/social_django/storage.py   2020-05-30 
04:58:43.000000000 +0200
+++ new/social-auth-app-django-5.0.0/social_django/storage.py   2021-08-05 
20:13:52.000000000 +0200
@@ -1,7 +1,6 @@
 """Django ORM models for Social Auth"""
 import base64
-import six
-import sys
+
 from django.core.exceptions import FieldDoesNotExist
 from django.db import transaction, router
 from django.db.utils import IntegrityError
@@ -17,7 +16,7 @@
         user.save()
 
     def set_extra_data(self, extra_data=None):
-        if super(DjangoUserMixin, self).set_extra_data(extra_data):
+        if super().set_extra_data(extra_data):
             self.save()
 
     @classmethod
@@ -32,7 +31,7 @@
             valid_password = user.has_usable_password()
         else:
             valid_password = True
-        return valid_password or qs.count() > 0
+        return valid_password or qs.exists()
 
     @classmethod
     def disconnect(cls, entry):
@@ -50,7 +49,7 @@
         """
         if 'username' in kwargs:
             kwargs[cls.username_field()] = kwargs.pop('username')
-        return cls.user_model().objects.filter(*args, **kwargs).count() > 0
+        return cls.user_model()._default_manager.filter(*args, 
**kwargs).exists()
 
     @classmethod
     def get_username(cls, user):
@@ -77,20 +76,17 @@
                 # stays undamaged by wrapping the create in an atomic.
                 using = router.db_for_write(cls.user_model())
                 with transaction.atomic(using=using):
-                    user = cls.user_model().objects.create_user(*args, 
**kwargs)
+                    user = 
cls.user_model()._default_manager.create_user(*args, **kwargs)
             else:
-                user = cls.user_model().objects.create_user(*args, **kwargs)
-        except IntegrityError:
-            # User might have been created on a different thread, try and find 
them.
-            # If we don't, re-raise the IntegrityError.
-            exc_info = sys.exc_info()
+                user = cls.user_model()._default_manager.create_user(*args, 
**kwargs)
+        except IntegrityError as exc:
             # If email comes in as None it won't get found in the get
             if kwargs.get('email', True) is None:
                 kwargs['email'] = ''
             try:
-                user = cls.user_model().objects.get(*args, **kwargs)
+                user = cls.user_model()._default_manager.get(*args, **kwargs)
             except cls.user_model().DoesNotExist:
-                six.reraise(*exc_info)
+                raise exc
         return user
 
     @classmethod
@@ -98,7 +94,7 @@
         if pk:
             kwargs = {'pk': pk}
         try:
-            return cls.user_model().objects.get(**kwargs)
+            return cls.user_model()._default_manager.get(**kwargs)
         except cls.user_model().DoesNotExist:
             return None
 
@@ -106,11 +102,11 @@
     def get_users_by_email(cls, email):
         user_model = cls.user_model()
         email_field = getattr(user_model, 'EMAIL_FIELD', 'email')
-        return user_model.objects.filter(**{email_field + '__iexact': email})
+        return user_model._default_manager.filter(**{email_field + '__iexact': 
email})
 
     @classmethod
     def get_social_auth(cls, provider, uid):
-        if not isinstance(uid, six.string_types):
+        if not isinstance(uid, str):
             uid = str(uid)
         try:
             return cls.objects.get(provider=provider, uid=uid)
@@ -130,7 +126,7 @@
 
     @classmethod
     def create_social_auth(cls, user, uid, provider):
-        if not isinstance(uid, six.string_types):
+        if not isinstance(uid, str):
             uid = str(uid)
         if hasattr(transaction, 'atomic'):
             # In Django versions that have an "atomic" transaction decorator / 
context
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/social-auth-app-django-4.0.0/social_django/strategy.py 
new/social-auth-app-django-5.0.0/social_django/strategy.py
--- old/social-auth-app-django-4.0.0/social_django/strategy.py  2020-06-21 
06:42:24.000000000 +0200
+++ new/social-auth-app-django-5.0.0/social_django/strategy.py  2021-08-05 
20:13:52.000000000 +0200
@@ -1,18 +1,16 @@
-# coding=utf-8
 from django.conf import settings
-from django.http import HttpResponse, HttpRequest
+from django.http import HttpResponse
 from django.db.models import Model
 from django.contrib.contenttypes.models import ContentType
 from django.contrib.auth import authenticate
 from django.shortcuts import redirect, resolve_url
 from django.template import TemplateDoesNotExist, loader, engines
 from django.utils.crypto import get_random_string
-from django.utils.encoding import force_text
+from django.utils.encoding import force_str
 from django.utils.functional import Promise
 from django.utils.translation import get_language
 
 from social_core.strategy import BaseStrategy, BaseTemplateStrategy
-from .compat import get_request_port
 
 
 def render_template_string(request, html, context=None):
@@ -37,14 +35,14 @@
     def __init__(self, storage, request=None, tpl=None):
         self.request = request
         self.session = request.session if request else {}
-        super(DjangoStrategy, self).__init__(storage, tpl)
+        super().__init__(storage, tpl)
 
     def get_setting(self, name):
         value = getattr(settings, name)
         # Force text on URL named settings that are instance of Promise
         if name.endswith('_URL'):
             if isinstance(value, Promise):
-                value = force_text(value)
+                value = force_str(value)
             value = resolve_url(value)
         return value
 
@@ -74,7 +72,7 @@
 
     def request_port(self):
         """Port in use for this request"""
-        return get_request_port(request=self.request)
+        return self.request.get_port()
 
     def request_get(self):
         """Request GET data"""
@@ -149,7 +147,7 @@
         if isinstance(val, dict) and 'pk' in val and 'ctype' in val:
             ctype = ContentType.objects.get_for_id(val['ctype'])
             ModelClass = ctype.model_class()
-            val = ModelClass.objects.get(pk=val['pk'])
+            val = ModelClass._default_manager.get(pk=val['pk'])
         return val
 
     def get_language(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/social-auth-app-django-4.0.0/social_django/urls.py 
new/social-auth-app-django-5.0.0/social_django/urls.py
--- old/social-auth-app-django-4.0.0/social_django/urls.py      2020-05-30 
04:10:23.000000000 +0200
+++ new/social-auth-app-django-5.0.0/social_django/urls.py      2021-08-05 
20:13:52.000000000 +0200
@@ -1,6 +1,6 @@
 """URLs module"""
 from django.conf import settings
-from django.conf.urls import url
+from django.urls import path
 
 from social_core.utils import setting_name
 from . import views
@@ -12,13 +12,13 @@
 
 urlpatterns = [
     # authentication / association
-    url(r'^login/(?P<backend>[^/]+){0}$'.format(extra), views.auth,
-        name='begin'),
-    url(r'^complete/(?P<backend>[^/]+){0}$'.format(extra), views.complete,
-        name='complete'),
+    path(f'login/<str:backend>{extra}', views.auth,
+         name='begin'),
+    path(f'complete/<str:backend>{extra}', views.complete,
+         name='complete'),
     # disconnection
-    url(r'^disconnect/(?P<backend>[^/]+){0}$'.format(extra), views.disconnect,
-        name='disconnect'),
-    url(r'^disconnect/(?P<backend>[^/]+)/(?P<association_id>\d+){0}$'
-        .format(extra), views.disconnect, name='disconnect_individual'),
+    path(f'disconnect/<str:backend>{extra}', views.disconnect,
+         name='disconnect'),
+    path(f'disconnect/<str:backend>/<int:association_id>{extra}',
+         views.disconnect, name='disconnect_individual'),
 ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/social-auth-app-django-4.0.0/social_django/utils.py 
new/social-auth-app-django-5.0.0/social_django/utils.py
--- old/social-auth-app-django-4.0.0/social_django/utils.py     2020-05-30 
04:10:23.000000000 +0200
+++ new/social-auth-app-django-5.0.0/social_django/utils.py     2021-08-05 
20:13:52.000000000 +0200
@@ -1,16 +1,13 @@
-# coding=utf-8
 from functools import wraps
 
 from django.conf import settings
 from django.http import Http404
+from django.urls import reverse
 
 from social_core.utils import setting_name, module_member, get_strategy
 from social_core.exceptions import MissingBackend
-from social_core.backends.utils import get_backend
-from .compat import reverse
 
 
-BACKENDS = settings.AUTHENTICATION_BACKENDS
 STRATEGY = getattr(settings, setting_name('STRATEGY'),
                    'social_django.strategy.DjangoStrategy')
 STORAGE = getattr(settings, setting_name('STORAGE'),
@@ -24,8 +21,7 @@
 
 
 def load_backend(strategy, name, redirect_uri):
-    Backend = get_backend(BACKENDS, name)
-    return Backend(strategy, redirect_uri)
+    return strategy.get_backend(name, redirect_uri=redirect_uri)
 
 
 def psa(redirect_uri=None, load_strategy=load_strategy):
@@ -43,7 +39,8 @@
 
             try:
                 request.backend = load_backend(request.social_strategy,
-                                               backend, uri)
+                                               backend,
+                                               redirect_uri=uri)
             except MissingBackend:
                 raise Http404('Backend not found')
             return func(request, backend, *args, **kwargs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/social-auth-app-django-4.0.0/social_django/views.py 
new/social-auth-app-django-5.0.0/social_django/views.py
--- old/social-auth-app-django-4.0.0/social_django/views.py     2020-02-09 
06:08:05.000000000 +0100
+++ new/social-auth-app-django-5.0.0/social_django/views.py     2021-08-05 
20:13:52.000000000 +0200
@@ -18,14 +18,14 @@
 
 
 @never_cache
-@psa('{0}:complete'.format(NAMESPACE))
+@psa(f'{NAMESPACE}:complete')
 def auth(request, backend):
     return do_auth(request.backend, redirect_name=REDIRECT_FIELD_NAME)
 
 
 @never_cache
 @csrf_exempt
-@psa('{0}:complete'.format(NAMESPACE))
+@psa(f'{NAMESPACE}:complete')
 def complete(request, backend, *args, **kwargs):
     """Authentication complete view"""
     return do_complete(request.backend, _do_login, user=request.user,
@@ -92,8 +92,7 @@
 
 
 def _do_login(backend, user, social_user):
-    user.backend = '{0}.{1}'.format(backend.__module__,
-                                    backend.__class__.__name__)
+    user.backend = f'{backend.__module__}.{backend.__class__.__name__}'
     # Get these details early to avoid any issues involved in the
     # session switch that happens when we call login().
     enable_session_expiration = backend.setting('SESSION_EXPIRATION', False)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/social-auth-app-django-4.0.0/tests/compat.py 
new/social-auth-app-django-5.0.0/tests/compat.py
--- old/social-auth-app-django-4.0.0/tests/compat.py    2020-02-09 
06:08:08.000000000 +0100
+++ new/social-auth-app-django-5.0.0/tests/compat.py    1970-01-01 
01:00:00.000000000 +0100
@@ -1,16 +0,0 @@
-# coding=utf-8
-import django
-from django.conf.urls import include
-from django.contrib import admin
-
-if django.VERSION < (1, 9):
-    admin_urls = include(admin.site.urls)
-    base_url = 'http://testserver'
-else:
-    admin_urls = admin.site.urls
-    base_url = ''
-
-if django.VERSION < (1, 10):
-    username_max_length = 30
-else:
-    username_max_length = 150
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/social-auth-app-django-4.0.0/tests/settings.py 
new/social-auth-app-django-5.0.0/tests/settings.py
--- old/social-auth-app-django-4.0.0/tests/settings.py  2020-06-21 
06:42:24.000000000 +0200
+++ new/social-auth-app-django-5.0.0/tests/settings.py  2021-08-05 
20:13:52.000000000 +0200
@@ -1,6 +1,3 @@
-# -*- coding: utf-8 -*-
-from __future__ import unicode_literals, absolute_import
-
 import os
 
 BASE_DIR = os.path.dirname(os.path.abspath(__file__))
@@ -50,6 +47,7 @@
             'context_processors': [
                 'django.contrib.auth.context_processors.auth',
                 'django.contrib.messages.context_processors.messages',
+                'django.template.context_processors.request',
                 'social_django.context_processors.backends',
                 'social_django.context_processors.login_redirect',
             ],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/social-auth-app-django-4.0.0/tests/test_admin.py 
new/social-auth-app-django-5.0.0/tests/test_admin.py
--- old/social-auth-app-django-4.0.0/tests/test_admin.py        2020-02-09 
06:08:08.000000000 +0100
+++ new/social-auth-app-django-5.0.0/tests/test_admin.py        2021-08-05 
20:13:52.000000000 +0200
@@ -1,9 +1,6 @@
-# -*- coding: utf-8
-from __future__ import unicode_literals, absolute_import
-
 from django.contrib.auth import get_user_model
 from django.test import TestCase
-from social_django.compat import reverse
+from django.urls import reverse
 from social_django.models import UserSocialAuth
 
 
@@ -11,7 +8,7 @@
     @classmethod
     def setUpTestData(cls):
         User = get_user_model()
-        User.objects.create_superuser(
+        User._default_manager.create_superuser(
             username='admin', email='ad...@test.com', first_name='Admin',
             password='super-duper-test'
         )
@@ -26,5 +23,5 @@
         """The App name in the admin index page"""
         self.client.login(username='admin', password='super-duper-test')
         meta = UserSocialAuth._meta
-        url_name = 'admin:%s_%s_changelist' % (meta.app_label, meta.model_name)
+        url_name = f'admin:{meta.app_label}_{meta.model_name}_changelist'
         self.client.get(reverse(url_name))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/social-auth-app-django-4.0.0/tests/test_context_processors.py 
new/social-auth-app-django-5.0.0/tests/test_context_processors.py
--- old/social-auth-app-django-4.0.0/tests/test_context_processors.py   
2020-02-09 06:08:08.000000000 +0100
+++ new/social-auth-app-django-5.0.0/tests/test_context_processors.py   
2021-08-05 20:13:52.000000000 +0200
@@ -1,4 +1,3 @@
-# -*- coding: utf-8 -*-
 from django.test import TestCase, RequestFactory, override_settings
 
 from social_django.context_processors import login_redirect
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/social-auth-app-django-4.0.0/tests/test_middleware.py 
new/social-auth-app-django-5.0.0/tests/test_middleware.py
--- old/social-auth-app-django-4.0.0/tests/test_middleware.py   2020-02-09 
06:08:08.000000000 +0100
+++ new/social-auth-app-django-5.0.0/tests/test_middleware.py   2021-08-05 
20:13:52.000000000 +0200
@@ -1,22 +1,20 @@
-# coding=utf-8
 import logging
 
-import mock
+from unittest import mock
 
 from django.contrib.messages import MessageFailure
 from django.http import HttpResponseRedirect
 from django.test import TestCase, override_settings
+from django.urls import reverse
 
 from social_core.exceptions import AuthCanceled
-from social_django.compat import reverse
-from .compat import base_url
 
 
 class MockAuthCanceled(AuthCanceled):
     def __init__(self, *args, **kwargs):
         if not args:
             kwargs.setdefault('backend', None)
-        super(MockAuthCanceled, self).__init__(*args, **kwargs)
+        super().__init__(*args, **kwargs)
 
 
 @mock.patch('social_core.backends.base.BaseAuth.request',
@@ -47,13 +45,14 @@
     def test_login_error_url(self, mocked):
         response = self.client.get(self.complete_url)
         self.assertTrue(isinstance(response, HttpResponseRedirect))
-        self.assertEqual(response.url, base_url + '/')
+        self.assertEqual(response.url, '/')
 
     @override_settings(SOCIAL_AUTH_LOGIN_ERROR_URL='/')
     @mock.patch('django.contrib.messages.error', side_effect=MessageFailure)
     def test_message_failure(self, mocked_request, mocked_error):
         response = self.client.get(self.complete_url)
         self.assertTrue(isinstance(response, HttpResponseRedirect))
-        self.assertEqual(response.url, base_url +
-                         '/?message=Authentication%20process%20canceled'
-                         '&backend=facebook')
+        self.assertEqual(
+            response.url,
+            '/?message=Authentication%20process%20canceled&backend=facebook'
+        )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/social-auth-app-django-4.0.0/tests/test_models.py 
new/social-auth-app-django-5.0.0/tests/test_models.py
--- old/social-auth-app-django-4.0.0/tests/test_models.py       2020-02-09 
06:08:08.000000000 +0100
+++ new/social-auth-app-django-5.0.0/tests/test_models.py       2021-08-05 
20:13:52.000000000 +0200
@@ -1,9 +1,6 @@
-# -*- coding: utf-8
-from __future__ import unicode_literals, absolute_import
-
 from datetime import timedelta
 
-import mock
+from unittest import mock
 from django.contrib.auth import get_user_model
 from django.core.management import call_command
 from django.db import IntegrityError
@@ -11,21 +8,20 @@
 
 from social_django.models import AbstractUserSocialAuth, Association, Code, \
     DjangoStorage, Nonce, Partial, UserSocialAuth
-from .compat import username_max_length
 
 
 class TestSocialAuthUser(TestCase):
     def test_user_relationship_none(self):
         """Accessing User.social_user outside of the pipeline doesn't work"""
         User = get_user_model()
-        user = User.objects.create_user(username="randomtester")
+        user = User._default_manager.create_user(username="randomtester")
         with self.assertRaises(AttributeError):
             user.social_user
 
     def test_user_existing_relationship(self):
         """Accessing User.social_user outside of the pipeline doesn't work"""
         User = get_user_model()
-        user = User.objects.create_user(username="randomtester")
+        user = User._default_manager.create_user(username="randomtester")
         UserSocialAuth.objects.create(user=user,
                                       provider='my-provider',
                                       uid='1234')
@@ -34,7 +30,7 @@
 
     def test_get_social_auth(self):
         User = get_user_model()
-        user = User.objects.create_user(username="randomtester")
+        user = User._default_manager.create_user(username="randomtester")
         user_social = UserSocialAuth.objects.create(user=user,
                                                     provider='my-provider',
                                                     uid='1234')
@@ -66,7 +62,7 @@
 class TestUserSocialAuth(TestCase):
     def setUp(self):
         self.user_model = get_user_model()
-        self.user = self.user_model.objects.create_user(
+        self.user = self.user_model._default_manager.create_user(
             username='randomtester', email='u...@example.com')
         self.usa = UserSocialAuth.objects.create(
             user=self.user, provider='my-provider', uid='1234')
@@ -74,7 +70,7 @@
     def test_changed(self):
         self.user.email = eml = 't...@example.com'
         UserSocialAuth.changed(user=self.user)
-        db_eml = self.user_model.objects.get(username=self.user.username).email
+        db_eml = 
self.user_model._default_manager.get(username=self.user.username).email
         self.assertEqual(db_eml, eml)
 
     def test_set_extra_data(self):
@@ -121,7 +117,7 @@
     @mock.patch('social_django.storage.transaction', spec=[])
     def test_create_user_without_transaction_atomic(self, *args):
         UserSocialAuth.create_user(username='test')
-        self.assertTrue(self.user_model.objects.filter(
+        self.assertTrue(self.user_model._default_manager.filter(
             username='test').exists())
 
     def test_get_user(self):
@@ -169,8 +165,7 @@
                 user=self.user, provider=self.usa.provider, uid=self.usa.uid)
 
     def test_username_max_length(self):
-        self.assertEqual(UserSocialAuth.username_max_length(),
-                         username_max_length)
+        self.assertEqual(UserSocialAuth.username_max_length(), 150)
 
 
 class TestNonce(TestCase):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/social-auth-app-django-4.0.0/tests/test_strategy.py 
new/social-auth-app-django-5.0.0/tests/test_strategy.py
--- old/social-auth-app-django-4.0.0/tests/test_strategy.py     2020-06-21 
06:42:24.000000000 +0200
+++ new/social-auth-app-django-5.0.0/tests/test_strategy.py     2021-08-05 
20:13:52.000000000 +0200
@@ -1,14 +1,11 @@
-# coding=utf-8
-from __future__ import unicode_literals, absolute_import
-
-import mock
+from unittest import mock
 
 from django.contrib.auth import get_user_model
 from django.contrib.contenttypes.models import ContentType
 from django.contrib.sessions.middleware import SessionMiddleware
 from django.http import QueryDict, HttpResponse
 from django.test import TestCase, RequestFactory
-from django.utils.translation import ugettext_lazy
+from django.utils.translation import gettext_lazy
 
 from social_django.utils import load_strategy, load_backend
 
@@ -17,7 +14,7 @@
     def setUp(self):
         self.request_factory = RequestFactory()
         self.request = self.request_factory.get('/', data={'x': '1'})
-        SessionMiddleware().process_request(self.request)
+        SessionMiddleware(lambda: None).process_request(self.request)
         self.strategy = load_strategy(request=self.request)
 
     def test_request_methods(self):
@@ -38,7 +35,7 @@
     def test_settings(self):
         with self.settings(LOGIN_ERROR_URL='/'):
             self.assertEqual(self.strategy.get_setting('LOGIN_ERROR_URL'), '/')
-        with self.settings(LOGIN_ERROR_URL=ugettext_lazy('/')):
+        with self.settings(LOGIN_ERROR_URL=gettext_lazy('/')):
             self.assertEqual(self.strategy.get_setting('LOGIN_ERROR_URL'), '/')
 
     def test_session_methods(self):
@@ -54,7 +51,7 @@
 
     def test_session_value(self):
         user_model = get_user_model()
-        user = user_model.objects.create_user(username="test")
+        user = user_model._default_manager.create_user(username="test")
         ctype = ContentType.objects.get_for_model(user_model)
 
         val = self.strategy.to_session_value(val=user)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/social-auth-app-django-4.0.0/tests/test_views.py 
new/social-auth-app-django-5.0.0/tests/test_views.py
--- old/social-auth-app-django-4.0.0/tests/test_views.py        2020-02-09 
06:08:08.000000000 +0100
+++ new/social-auth-app-django-5.0.0/tests/test_views.py        2021-08-05 
20:13:52.000000000 +0200
@@ -1,14 +1,12 @@
-# -*- coding: utf-8 -*-
-import mock
+from unittest import mock
 from django.contrib.auth import get_user_model
 from django.contrib.auth.models import AbstractBaseUser
 
 from django.test import TestCase, override_settings
+from django.urls import reverse
 
-from social_django.compat import reverse
 from social_django.models import UserSocialAuth
 from social_django.views import get_session_timeout
-from .compat import base_url
 
 
 @override_settings(SOCIAL_AUTH_FACEBOOK_KEY='1',
@@ -36,12 +34,12 @@
                         '.set_expiry', side_effect=[OverflowError, None]):
             response = self.client.get(url)
             self.assertEqual(response.status_code, 302)
-            self.assertEqual(response.url, base_url + '/accounts/profile/')
+            self.assertEqual(response.url, '/accounts/profile/')
 
     @mock.patch('social_core.backends.base.BaseAuth.request')
     def test_disconnect(self, mock_request):
         user_model = get_user_model()
-        user = user_model.objects.create_user(username='test', password='pwd')
+        user = user_model._default_manager.create_user(username='test', 
password='pwd')
         UserSocialAuth.objects.create(user=user, provider='facebook')
         self.client.login(username='test', password='pwd')
 
@@ -68,11 +66,11 @@
     def setUp(self):
         self.social_user = mock.MagicMock()
         self.social_user.expiration_datetime.return_value = None
-        super(TestGetSessionTimeout, self).setUp()
+        super().setUp()
 
     def set_user_expiration(self, seconds):
         self.social_user.expiration_datetime.return_value = mock.MagicMock(
-            total_seconds = mock.MagicMock(return_value=seconds)
+            total_seconds=mock.MagicMock(return_value=seconds)
         )
 
     def test_expiration_disabled_no_max(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/social-auth-app-django-4.0.0/tests/urls.py 
new/social-auth-app-django-5.0.0/tests/urls.py
--- old/social-auth-app-django-4.0.0/tests/urls.py      2020-02-09 
06:08:08.000000000 +0100
+++ new/social-auth-app-django-5.0.0/tests/urls.py      2021-08-05 
20:13:52.000000000 +0200
@@ -1,9 +1,8 @@
-# -*- coding: utf-8
-from django.conf.urls import url, include
-from .compat import admin_urls
+from django.urls import include, path
+from django.contrib import admin
 
 
 urlpatterns = [
-    url(r'^admin/', admin_urls),
-    url(r'^', include('social_django.urls', namespace='social')),
+    path('admin/', admin.site.urls),
+    path('', include('social_django.urls', namespace='social')),
 ]

Reply via email to