Source: django-oauth-toolkit
Version: 1.7.0-2
Severity: serious
Justification: FTBFS
Tags: trixie sid ftbfs
User: [email protected]
Usertags: ftbfs-20230925 ftbfs-trixie

Hi,

During a rebuild of all packages in sid, your package failed to build
on amd64.


Relevant part (hopefully):
>  debian/rules binary
> dh binary --with python3 --buildsystem=pybuild
>    dh_update_autotools_config -O--buildsystem=pybuild
>    dh_autoreconf -O--buildsystem=pybuild
>    dh_auto_configure -O--buildsystem=pybuild
> I: pybuild base:291: python3.11 setup.py config 
> running config
>    dh_auto_build -O--buildsystem=pybuild
> I: pybuild base:291: /usr/bin/python3 setup.py build 
> running build
> running build_py
> creating 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider
> copying oauth2_provider/decorators.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider
> copying oauth2_provider/middleware.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider
> copying oauth2_provider/tasks.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider
> copying oauth2_provider/apps.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider
> copying oauth2_provider/oauth2_validators.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider
> copying oauth2_provider/oauth2_backends.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider
> copying oauth2_provider/__init__.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider
> copying oauth2_provider/exceptions.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider
> copying oauth2_provider/urls.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider
> copying oauth2_provider/admin.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider
> copying oauth2_provider/generators.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider
> copying oauth2_provider/backends.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider
> copying oauth2_provider/http.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider
> copying oauth2_provider/compat.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider
> copying oauth2_provider/models.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider
> copying oauth2_provider/settings.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider
> copying oauth2_provider/signals.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider
> copying oauth2_provider/scopes.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider
> copying oauth2_provider/forms.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider
> copying oauth2_provider/validators.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider
> creating 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/migrations
> copying oauth2_provider/migrations/0003_auto_20201211_1314.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/migrations
> copying oauth2_provider/migrations/__init__.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/migrations
> copying oauth2_provider/migrations/0005_auto_20211222_2352.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/migrations
> copying oauth2_provider/migrations/0001_initial.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/migrations
> copying oauth2_provider/migrations/0002_auto_20190406_1805.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/migrations
> copying oauth2_provider/migrations/0004_auto_20200902_2022.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/migrations
> creating 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/contrib
> copying oauth2_provider/contrib/__init__.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/contrib
> creating 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/views
> copying oauth2_provider/views/generic.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/views
> copying oauth2_provider/views/base.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/views
> copying oauth2_provider/views/__init__.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/views
> copying oauth2_provider/views/introspect.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/views
> copying oauth2_provider/views/application.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/views
> copying oauth2_provider/views/token.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/views
> copying oauth2_provider/views/mixins.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/views
> copying oauth2_provider/views/oidc.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/views
> creating 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/management
> copying oauth2_provider/management/__init__.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/management
> creating 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/contrib/rest_framework
> copying oauth2_provider/contrib/rest_framework/permissions.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/contrib/rest_framework
> copying oauth2_provider/contrib/rest_framework/__init__.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/contrib/rest_framework
> copying oauth2_provider/contrib/rest_framework/authentication.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/contrib/rest_framework
> creating 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/management/commands
> copying oauth2_provider/management/commands/createapplication.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/management/commands
> copying oauth2_provider/management/commands/__init__.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/management/commands
> copying oauth2_provider/management/commands/cleartokens.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/management/commands
> running egg_info
> creating django_oauth_toolkit.egg-info
> writing django_oauth_toolkit.egg-info/PKG-INFO
> writing dependency_links to django_oauth_toolkit.egg-info/dependency_links.txt
> writing requirements to django_oauth_toolkit.egg-info/requires.txt
> writing top-level names to django_oauth_toolkit.egg-info/top_level.txt
> writing manifest file 'django_oauth_toolkit.egg-info/SOURCES.txt'
> reading manifest file 'django_oauth_toolkit.egg-info/SOURCES.txt'
> reading manifest template 'MANIFEST.in'
> adding license file 'LICENSE'
> adding license file 'AUTHORS'
> writing manifest file 'django_oauth_toolkit.egg-info/SOURCES.txt'
> /usr/lib/python3/dist-packages/setuptools/command/build_py.py:204: _Warning: 
> Package 'oauth2_provider.templates.oauth2_provider' is absent from the 
> `packages` configuration.
> !!
> 
>         
> ********************************************************************************
>         ############################
>         # Package would be ignored #
>         ############################
>         Python recognizes 'oauth2_provider.templates.oauth2_provider' as an 
> importable package[^1],
>         but it is absent from setuptools' `packages` configuration.
> 
>         This leads to an ambiguous overall configuration. If you want to 
> distribute this
>         package, please make sure that 
> 'oauth2_provider.templates.oauth2_provider' is explicitly added
>         to the `packages` configuration field.
> 
>         Alternatively, you can also rely on setuptools' discovery methods
>         (for example by using `find_namespace_packages(...)`/`find_namespace:`
>         instead of `find_packages(...)`/`find:`).
> 
>         You can read more about "package discovery" on setuptools 
> documentation page:
> 
>         - 
> https://setuptools.pypa.io/en/latest/userguide/package_discovery.html
> 
>         If you don't want 'oauth2_provider.templates.oauth2_provider' to be 
> distributed and are
>         already explicitly excluding 
> 'oauth2_provider.templates.oauth2_provider' via
>         `find_namespace_packages(...)/find_namespace` or 
> `find_packages(...)/find`,
>         you can try to use `exclude_package_data`, or 
> `include-package-data=False` in
>         combination with a more fine grained `package-data` configuration.
> 
>         You can read more about "package data files" on setuptools 
> documentation page:
> 
>         - https://setuptools.pypa.io/en/latest/userguide/datafiles.html
> 
> 
>         [^1]: For Python, any directory (with suitable naming) can be 
> imported,
>               even if it does not contain any `.py` files.
>               On the other hand, currently there is no concept of package data
>               directory, all directories are treated like packages.
>         
> ********************************************************************************
> 
> !!
>   check.warn(importable)
> creating 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/templates
> creating 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/templates/oauth2_provider
> copying 
> oauth2_provider/templates/oauth2_provider/application_confirm_delete.html -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/templates/oauth2_provider
> copying oauth2_provider/templates/oauth2_provider/application_detail.html -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/templates/oauth2_provider
> copying oauth2_provider/templates/oauth2_provider/application_form.html -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/templates/oauth2_provider
> copying oauth2_provider/templates/oauth2_provider/application_list.html -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/templates/oauth2_provider
> copying 
> oauth2_provider/templates/oauth2_provider/application_registration_form.html 
> -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/templates/oauth2_provider
> copying oauth2_provider/templates/oauth2_provider/authorize.html -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/templates/oauth2_provider
> copying oauth2_provider/templates/oauth2_provider/authorized-oob.html -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/templates/oauth2_provider
> copying 
> oauth2_provider/templates/oauth2_provider/authorized-token-delete.html -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/templates/oauth2_provider
> copying oauth2_provider/templates/oauth2_provider/authorized-tokens.html -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/templates/oauth2_provider
> copying oauth2_provider/templates/oauth2_provider/base.html -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/oauth2_provider/templates/oauth2_provider
>    dh_auto_test -O--buildsystem=pybuild
> I: pybuild base:291: cd 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build; 
> python3.11 -m pytest --ds tests.settings
> ============================= test session starts 
> ==============================
> platform linux -- Python 3.11.5, pytest-7.4.2, pluggy-1.3.0
> django: settings: tests.settings (from option)
> rootdir: /<<PKGBUILDDIR>>
> configfile: tox.ini
> plugins: mock-3.11.1, cov-4.1.0, xdist-3.3.1, django-4.5.2
> collected 378 items
> 
> tests/test_application_views.py .....
> tests/test_auth_backends.py ..........
> tests/test_authorization_code.py 
> ..................................................................
> tests/test_client_credential.py .......
> tests/test_commands.py New application created successfully
> .New application created successfully
> .New application created successfully
> .New application created successfully
> .New application created successfully
> ..New application created successfully
> ...
> tests/test_decorators.py ...
> tests/test_generator.py ...
> tests/test_hybrid.py ....................................................
> tests/test_implicit.py ..................
> tests/test_introspection_auth.py ......
> tests/test_introspection_view.py ..............
> tests/test_mixins.py ........
> tests/test_models.py ........................FFF...
> tests/test_oauth2_backends.py ......
> tests/test_oauth2_validators.py s...
> tests/test_oidc_views.py ...........
> tests/test_password.py ...
> tests/test_rest_framework.py ..............................
> tests/test_scopes.py ............
> tests/test_settings.py ...........
> tests/test_token_revocation.py .......
> tests/test_token_view.py ..........
> tests/test_validators.py ...
> tests/test_oauth2_validators.py ..........................
> tests/test_mixins.py ...
> tests/test_oauth2_backends.py .....
> tests/test_oauth2_validators.py ....
> tests/test_scopes_backend.py ..
> tests/test_settings.py ..........
> 
> =================================== FAILURES 
> ===================================
> __________________ TestClearExpired.test_clear_expired_tokens 
> __________________
> 
> self = <tests.test_models.TestClearExpired 
> testMethod=test_clear_expired_tokens>
> 
>     def setUp(self):
>         super().setUp()
>         # Insert many tokens, both expired and not, and grants.
>         self.num_tokens = 100
>         now = timezone.now()
>         earlier = now - timedelta(seconds=100)
>         later = now + timedelta(seconds=100)
>         app = Application.objects.create(
>             name="test_app",
>             redirect_uris="http://localhost http://example.com 
> http://example.org";,
>             user=self.user,
>             client_type=Application.CLIENT_CONFIDENTIAL,
>             authorization_grant_type=Application.GRANT_AUTHORIZATION_CODE,
>         )
>         # make 200 access tokens, half current and half expired.
>         expired_access_tokens = AccessToken.objects.bulk_create(
>             AccessToken(token="expired AccessToken {}".format(i), 
> expires=earlier)
>             for i in range(self.num_tokens)
>         )
>         current_access_tokens = AccessToken.objects.bulk_create(
>             AccessToken(token=f"current AccessToken {i}", expires=later) for 
> i in range(self.num_tokens)
>         )
>         # Give the first half of the access tokens a refresh token,
>         # alternating between current and expired ones.
> >       RefreshToken.objects.bulk_create(
>             RefreshToken(
>                 token=f"expired AT's refresh token {i}",
>                 application=app,
>                 access_token=expired_access_tokens[i].pk,
>                 user=self.user,
>             )
>             for i in range(0, len(expired_access_tokens) // 2, 2)
>         )
> 
> tests/test_models.py:321: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3/dist-packages/django/db/models/manager.py:87: in 
> manager_method
>     return getattr(self.get_queryset(), name)(*args, **kwargs)
> /usr/lib/python3/dist-packages/django/db/models/query.py:781: in bulk_create
>     objs = list(objs)
> tests/test_models.py:322: in <genexpr>
>     RefreshToken(
> /usr/lib/python3/dist-packages/django/db/models/base.py:543: in __init__
>     _setattr(self, field.name, rel_obj)
> /usr/lib/python3/dist-packages/django/db/models/fields/related_descriptors.py:369:
>  in __set__
>     super().__set__(instance, value)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = <django.db.models.fields.related_descriptors.ForwardOneToOneDescriptor 
> object at 0x7ff41ca0df50>
> instance = <RefreshToken: expired AT's refresh token 0>, value = 1
> 
>     def __set__(self, instance, value):
>         """
>         Set the related instance through the forward relation.
>     
>         With the example above, when setting ``child.parent = parent``:
>     
>         - ``self`` is the descriptor managing the ``parent`` attribute
>         - ``instance`` is the ``child`` instance
>         - ``value`` is the ``parent`` instance on the right of the equal sign
>         """
>         # An object must be an instance of the related class.
>         if value is not None and not isinstance(
>             value, self.field.remote_field.model._meta.concrete_model
>         ):
> >           raise ValueError(
>                 'Cannot assign "%r": "%s.%s" must be a "%s" instance.'
>                 % (
>                     value,
>                     instance._meta.object_name,
>                     self.field.name,
>                     self.field.remote_field.model._meta.object_name,
>                 )
> E               ValueError: Cannot assign "1": "RefreshToken.access_token" 
> must be a "AccessToken" instance.
> 
> /usr/lib/python3/dist-packages/django/db/models/fields/related_descriptors.py:266:
>  ValueError
> _________ TestClearExpired.test_clear_expired_tokens_incorect_timetype 
> _________
> 
> self = <tests.test_models.TestClearExpired 
> testMethod=test_clear_expired_tokens_incorect_timetype>
> 
>     def setUp(self):
>         super().setUp()
>         # Insert many tokens, both expired and not, and grants.
>         self.num_tokens = 100
>         now = timezone.now()
>         earlier = now - timedelta(seconds=100)
>         later = now + timedelta(seconds=100)
>         app = Application.objects.create(
>             name="test_app",
>             redirect_uris="http://localhost http://example.com 
> http://example.org";,
>             user=self.user,
>             client_type=Application.CLIENT_CONFIDENTIAL,
>             authorization_grant_type=Application.GRANT_AUTHORIZATION_CODE,
>         )
>         # make 200 access tokens, half current and half expired.
>         expired_access_tokens = AccessToken.objects.bulk_create(
>             AccessToken(token="expired AccessToken {}".format(i), 
> expires=earlier)
>             for i in range(self.num_tokens)
>         )
>         current_access_tokens = AccessToken.objects.bulk_create(
>             AccessToken(token=f"current AccessToken {i}", expires=later) for 
> i in range(self.num_tokens)
>         )
>         # Give the first half of the access tokens a refresh token,
>         # alternating between current and expired ones.
> >       RefreshToken.objects.bulk_create(
>             RefreshToken(
>                 token=f"expired AT's refresh token {i}",
>                 application=app,
>                 access_token=expired_access_tokens[i].pk,
>                 user=self.user,
>             )
>             for i in range(0, len(expired_access_tokens) // 2, 2)
>         )
> 
> tests/test_models.py:321: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3/dist-packages/django/db/models/manager.py:87: in 
> manager_method
>     return getattr(self.get_queryset(), name)(*args, **kwargs)
> /usr/lib/python3/dist-packages/django/db/models/query.py:781: in bulk_create
>     objs = list(objs)
> tests/test_models.py:322: in <genexpr>
>     RefreshToken(
> /usr/lib/python3/dist-packages/django/db/models/base.py:543: in __init__
>     _setattr(self, field.name, rel_obj)
> /usr/lib/python3/dist-packages/django/db/models/fields/related_descriptors.py:369:
>  in __set__
>     super().__set__(instance, value)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = <django.db.models.fields.related_descriptors.ForwardOneToOneDescriptor 
> object at 0x7ff41ca0df50>
> instance = <RefreshToken: expired AT's refresh token 0>, value = 1
> 
>     def __set__(self, instance, value):
>         """
>         Set the related instance through the forward relation.
>     
>         With the example above, when setting ``child.parent = parent``:
>     
>         - ``self`` is the descriptor managing the ``parent`` attribute
>         - ``instance`` is the ``child`` instance
>         - ``value`` is the ``parent`` instance on the right of the equal sign
>         """
>         # An object must be an instance of the related class.
>         if value is not None and not isinstance(
>             value, self.field.remote_field.model._meta.concrete_model
>         ):
> >           raise ValueError(
>                 'Cannot assign "%r": "%s.%s" must be a "%s" instance.'
>                 % (
>                     value,
>                     instance._meta.object_name,
>                     self.field.name,
>                     self.field.remote_field.model._meta.object_name,
>                 )
> E               ValueError: Cannot assign "1": "RefreshToken.access_token" 
> must be a "AccessToken" instance.
> 
> /usr/lib/python3/dist-packages/django/db/models/fields/related_descriptors.py:266:
>  ValueError
> ____________ TestClearExpired.test_clear_expired_tokens_with_tokens 
> ____________
> 
> self = <tests.test_models.TestClearExpired 
> testMethod=test_clear_expired_tokens_with_tokens>
> 
>     def setUp(self):
>         super().setUp()
>         # Insert many tokens, both expired and not, and grants.
>         self.num_tokens = 100
>         now = timezone.now()
>         earlier = now - timedelta(seconds=100)
>         later = now + timedelta(seconds=100)
>         app = Application.objects.create(
>             name="test_app",
>             redirect_uris="http://localhost http://example.com 
> http://example.org";,
>             user=self.user,
>             client_type=Application.CLIENT_CONFIDENTIAL,
>             authorization_grant_type=Application.GRANT_AUTHORIZATION_CODE,
>         )
>         # make 200 access tokens, half current and half expired.
>         expired_access_tokens = AccessToken.objects.bulk_create(
>             AccessToken(token="expired AccessToken {}".format(i), 
> expires=earlier)
>             for i in range(self.num_tokens)
>         )
>         current_access_tokens = AccessToken.objects.bulk_create(
>             AccessToken(token=f"current AccessToken {i}", expires=later) for 
> i in range(self.num_tokens)
>         )
>         # Give the first half of the access tokens a refresh token,
>         # alternating between current and expired ones.
> >       RefreshToken.objects.bulk_create(
>             RefreshToken(
>                 token=f"expired AT's refresh token {i}",
>                 application=app,
>                 access_token=expired_access_tokens[i].pk,
>                 user=self.user,
>             )
>             for i in range(0, len(expired_access_tokens) // 2, 2)
>         )
> 
> tests/test_models.py:321: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3/dist-packages/django/db/models/manager.py:87: in 
> manager_method
>     return getattr(self.get_queryset(), name)(*args, **kwargs)
> /usr/lib/python3/dist-packages/django/db/models/query.py:781: in bulk_create
>     objs = list(objs)
> tests/test_models.py:322: in <genexpr>
>     RefreshToken(
> /usr/lib/python3/dist-packages/django/db/models/base.py:543: in __init__
>     _setattr(self, field.name, rel_obj)
> /usr/lib/python3/dist-packages/django/db/models/fields/related_descriptors.py:369:
>  in __set__
>     super().__set__(instance, value)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = <django.db.models.fields.related_descriptors.ForwardOneToOneDescriptor 
> object at 0x7ff41ca0df50>
> instance = <RefreshToken: expired AT's refresh token 0>, value = 1
> 
>     def __set__(self, instance, value):
>         """
>         Set the related instance through the forward relation.
>     
>         With the example above, when setting ``child.parent = parent``:
>     
>         - ``self`` is the descriptor managing the ``parent`` attribute
>         - ``instance`` is the ``child`` instance
>         - ``value`` is the ``parent`` instance on the right of the equal sign
>         """
>         # An object must be an instance of the related class.
>         if value is not None and not isinstance(
>             value, self.field.remote_field.model._meta.concrete_model
>         ):
> >           raise ValueError(
>                 'Cannot assign "%r": "%s.%s" must be a "%s" instance.'
>                 % (
>                     value,
>                     instance._meta.object_name,
>                     self.field.name,
>                     self.field.remote_field.model._meta.object_name,
>                 )
> E               ValueError: Cannot assign "1": "RefreshToken.access_token" 
> must be a "AccessToken" instance.
> 
> /usr/lib/python3/dist-packages/django/db/models/fields/related_descriptors.py:266:
>  ValueError
> =============================== warnings summary 
> ===============================
> ../../../../../../usr/lib/python3/dist-packages/django/conf/__init__.py:267
>   /usr/lib/python3/dist-packages/django/conf/__init__.py:267: 
> RemovedInDjango50Warning: The USE_L10N setting is deprecated. Starting with 
> Django 5.0, localized formatting of data will always be enabled. For example 
> Django will display numbers and dates using the format of the current locale.
>     warnings.warn(USE_L10N_DEPRECATED_MSG, RemovedInDjango50Warning)
> 
> tests/test_client_credential.py:106
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/tests/test_client_credential.py:106:
>  PytestCollectionWarning: cannot collect test class 'TestView' because it has 
> a __init__ constructor (from: 
> .pybuild/cpython3_3.11_django-oauth-toolkit/build/tests/test_client_credential.py)
>     class TestView(OAuthLibMixin, View):
> 
> .pybuild/cpython3_3.11_django-oauth-toolkit/build/tests/test_authorization_code.py::TestOIDCAuthorizationCodeHSAlgorithm::test_id_token
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/tests/test_authorization_code.py:1734:
>  DeprecationWarning: Call to deprecated function (or staticmethod) key_type.
>     assert key.key_type == "oct"
> 
> .pybuild/cpython3_3.11_django-oauth-toolkit/build/tests/test_models.py::test_application_key
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/tests/test_models.py:430:
>  DeprecationWarning: Call to deprecated function (or staticmethod) key_type.
>     assert key.key_type == "RSA"
> 
> .pybuild/cpython3_3.11_django-oauth-toolkit/build/tests/test_models.py::test_application_key
>   
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build/tests/test_models.py:441:
>  DeprecationWarning: Call to deprecated function (or staticmethod) key_type.
>     assert key.key_type == "oct"
> 
> -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
> =========================== short test summary info 
> ============================
> FAILED tests/test_models.py::TestClearExpired::test_clear_expired_tokens - 
> Va...
> FAILED 
> tests/test_models.py::TestClearExpired::test_clear_expired_tokens_incorect_timetype
> FAILED 
> tests/test_models.py::TestClearExpired::test_clear_expired_tokens_with_tokens
> ======= 3 failed, 374 passed, 1 skipped, 5 warnings in 306.51s (0:05:06) 
> =======
> E: pybuild pybuild:395: test: plugin distutils failed with: exit code=1: cd 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_django-oauth-toolkit/build; 
> python3.11 -m pytest --ds tests.settings
> dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.11 
> returned exit code 13


The full build log is available from:
http://qa-logs.debian.net/2023/09/25/django-oauth-toolkit_1.7.0-2_unstable.log

All bugs filed during this archive rebuild are listed at:
https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20230925;[email protected]
or:
https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20230925&[email protected]&allbugs=1&cseverity=1&ctags=1&caffected=1#results

A list of current common problems and possible solutions is available at
http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute!

If you reassign this bug to another package, please mark it as 'affects'-ing
this package. See https://www.debian.org/Bugs/server-control#affects

If you fail to reproduce this, please provide a build log and diff it with mine
so that we can identify if something relevant changed in the meantime.

Reply via email to