Bug#1123122: django-maintenancemode: FTBFS: dh_auto_test: error: pybuild --test -i python{version} -p "3.14 3.13" --system=custom --test-args="PYTHONPATH=. {interpreter} -m pytest" returned exit code 13
Package: src:django-maintenancemode
Version: 0.11.7+git221001-5
Severity: serious
Tags: ftbfs forky sid
Dear maintainer:
During a rebuild of all packages in unstable, this package failed to build.
Below you will find the last part of the build log (probably the most
relevant part, but not necessarily). If required, the full build log
is available here:
https://people.debian.org/~sanvila/build-logs/202512/
About the archive rebuild: The build was made on virtual machines from AWS,
using sbuild and a reduced chroot with only build-essential packages.
If you cannot reproduce the bug please contact me privately, as I
am willing to provide ssh access to a virtual machine where the bug is
fully reproducible.
If this is really a bug in one of the build-depends, please use
reassign and add an affects on src:django-maintenancemode, so that this is still
visible in the BTS web page for this package.
Thanks.
--------------------------------------------------------------------------------
[...]
debian/rules clean
dh clean --buildsystem=pybuild
dh_auto_clean -O--buildsystem=pybuild
I: pybuild base:317: python3.14 setup.py clean
/usr/lib/python3/dist-packages/setuptools/dist.py:759: SetuptoolsDeprecationWarning: License classifiers are deprecated.
!!
********************************************************************************
Please consider removing the following classifiers in favor of a SPDX license expression:
License :: OSI Approved :: BSD License
See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
********************************************************************************
[... snipped ...]
/usr/lib/python3/dist-packages/django/test/client.py:267: in store_rendered_templates
store["context"].append(copy(context))
^^^^^^^^^^^^^
/usr/lib/python3.14/copy.py:82: in copy
return copier(x)
^^^^^^^^^
/usr/lib/python3/dist-packages/django/template/context.py:158: in __copy__
duplicate = super().__copy__()
^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = [{'True': True, 'False': False, 'None': None}, {'is_email': True, 'unicode_hint': '', 'frames': [{'exc_cause': None, '...lf):'], 'pre_context_lineno': 32, 'colno': '\n ^^^^^^^^^^^^^^^', 'tb_area_colno': '\n ^^^^^^^^^^^^^^^'}}]
def __copy__(self):
duplicate = copy(super())
> duplicate.dicts = self.dicts[:]
^^^^^^^^^^^^^^^
E AttributeError: 'super' object has no attribute 'dicts' and no __dict__ for setting new attributes
/usr/lib/python3/dist-packages/django/template/context.py:39: AttributeError
During handling of the above exception, another exception occurred:
request = <WSGIRequest: GET '/'>
@wraps(get_response)
def inner(request):
try:
> response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/django/core/handlers/exception.py:55:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3/dist-packages/django/utils/deprecation.py:134: in __call__
response = response or self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/django/core/handlers/exception.py:57: in inner
response = response_for_exception(request, exc)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/django/core/handlers/exception.py:144: in response_for_exception
log_response(
/usr/lib/python3/dist-packages/django/utils/log.py:246: in log_response
getattr(logger, level)(
/usr/lib/python3.14/logging/__init__.py:1549: in error
self._log(ERROR, msg, args, **kwargs)
/usr/lib/python3.14/logging/__init__.py:1665: in _log
self.handle(record)
/usr/lib/python3.14/logging/__init__.py:1681: in handle
self.callHandlers(record)
/usr/lib/python3.14/logging/__init__.py:1737: in callHandlers
hdlr.handle(record)
/usr/lib/python3.14/logging/__init__.py:1027: in handle
self.emit(record)
/usr/lib/python3/dist-packages/django/utils/log.py:125: in emit
reporter.get_traceback_text(),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/django/views/debug.py:418: in get_traceback_text
return t.render(c)
^^^^^^^^^^^
/usr/lib/python3/dist-packages/django/template/base.py:175: in render
return self._render(context)
^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/django/test/utils.py:111: in instrumented_test_render
template_rendered.send(sender=self, template=self, context=context)
/usr/lib/python3/dist-packages/django/dispatch/dispatcher.py:177: in send
(receiver, receiver(signal=self, sender=sender, **named))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/django/test/client.py:267: in store_rendered_templates
store["context"].append(copy(context))
^^^^^^^^^^^^^
/usr/lib/python3.14/copy.py:82: in copy
return copier(x)
^^^^^^^^^
/usr/lib/python3/dist-packages/django/template/context.py:158: in __copy__
duplicate = super().__copy__()
^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = [{'True': True, 'False': False, 'None': None}, {'is_email': True, 'unicode_hint': '', 'frames': [{'exc_cause': None, '...lf):'], 'pre_context_lineno': 32, 'colno': '\n ^^^^^^^^^^^^^^^', 'tb_area_colno': '\n ^^^^^^^^^^^^^^^'}}]
def __copy__(self):
duplicate = copy(super())
> duplicate.dicts = self.dicts[:]
^^^^^^^^^^^^^^^
E AttributeError: 'super' object has no attribute 'dicts' and no __dict__ for setting new attributes
/usr/lib/python3/dist-packages/django/template/context.py:39: AttributeError
During handling of the above exception, another exception occurred:
request = <WSGIRequest: GET '/'>
@wraps(get_response)
def inner(request):
try:
> response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/django/core/handlers/exception.py:55:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3/dist-packages/django/utils/deprecation.py:134: in __call__
response = response or self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/django/core/handlers/exception.py:57: in inner
response = response_for_exception(request, exc)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/django/core/handlers/exception.py:144: in response_for_exception
log_response(
/usr/lib/python3/dist-packages/django/utils/log.py:246: in log_response
getattr(logger, level)(
/usr/lib/python3.14/logging/__init__.py:1549: in error
self._log(ERROR, msg, args, **kwargs)
/usr/lib/python3.14/logging/__init__.py:1665: in _log
self.handle(record)
/usr/lib/python3.14/logging/__init__.py:1681: in handle
self.callHandlers(record)
/usr/lib/python3.14/logging/__init__.py:1737: in callHandlers
hdlr.handle(record)
/usr/lib/python3.14/logging/__init__.py:1027: in handle
self.emit(record)
/usr/lib/python3/dist-packages/django/utils/log.py:125: in emit
reporter.get_traceback_text(),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/django/views/debug.py:418: in get_traceback_text
return t.render(c)
^^^^^^^^^^^
/usr/lib/python3/dist-packages/django/template/base.py:175: in render
return self._render(context)
^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/django/test/utils.py:111: in instrumented_test_render
template_rendered.send(sender=self, template=self, context=context)
/usr/lib/python3/dist-packages/django/dispatch/dispatcher.py:177: in send
(receiver, receiver(signal=self, sender=sender, **named))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/django/test/client.py:267: in store_rendered_templates
store["context"].append(copy(context))
^^^^^^^^^^^^^
/usr/lib/python3.14/copy.py:82: in copy
return copier(x)
^^^^^^^^^
/usr/lib/python3/dist-packages/django/template/context.py:158: in __copy__
duplicate = super().__copy__()
^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = [{'True': True, 'False': False, 'None': None}, {'is_email': True, 'unicode_hint': '', 'frames': [{'exc_cause': None, '...lf):'], 'pre_context_lineno': 32, 'colno': '\n ^^^^^^^^^^^^^^^', 'tb_area_colno': '\n ^^^^^^^^^^^^^^^'}}]
def __copy__(self):
duplicate = copy(super())
> duplicate.dicts = self.dicts[:]
^^^^^^^^^^^^^^^
E AttributeError: 'super' object has no attribute 'dicts' and no __dict__ for setting new attributes
/usr/lib/python3/dist-packages/django/template/context.py:39: AttributeError
During handling of the above exception, another exception occurred:
self = <maintenancemode.tests.test_middleware.MaintenanceModeMiddlewareTestCase testMethod=test_middleware_with_superuser_user_denied>
def test_middleware_with_superuser_user_denied(self):
# A logged in user that _is_ a staff user should be able to
# use the site normally
User.objects.filter(pk=self.user.pk).update(is_superuser=True)
self.client.login(username="maintenance", password="password")
with self.settings(MAINTENANCE_MODE=True, MAINTENANCE_ALLOW_SUPERUSER=False):
> response = self.client.get("/")
^^^^^^^^^^^^^^^^^^^^
maintenancemode/tests/test_middleware.py:89:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3/dist-packages/django/test/client.py:927: in get
response = super().get(path, data=data, secure=secure, headers=headers, **extra)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/django/test/client.py:457: in get
return self.generic(
/usr/lib/python3/dist-packages/django/test/client.py:609: in generic
return self.request(**r)
^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/django/test/client.py:886: in request
response = self.handler(environ)
^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/django/test/client.py:176: in __call__
response = self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/django/core/handlers/base.py:140: in get_response
response = self._middleware_chain(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/django/core/handlers/exception.py:57: in inner
response = response_for_exception(request, exc)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/django/core/handlers/exception.py:144: in response_for_exception
log_response(
/usr/lib/python3/dist-packages/django/utils/log.py:246: in log_response
getattr(logger, level)(
/usr/lib/python3.14/logging/__init__.py:1549: in error
self._log(ERROR, msg, args, **kwargs)
/usr/lib/python3.14/logging/__init__.py:1665: in _log
self.handle(record)
/usr/lib/python3.14/logging/__init__.py:1681: in handle
self.callHandlers(record)
/usr/lib/python3.14/logging/__init__.py:1737: in callHandlers
hdlr.handle(record)
/usr/lib/python3.14/logging/__init__.py:1027: in handle
self.emit(record)
/usr/lib/python3/dist-packages/django/utils/log.py:125: in emit
reporter.get_traceback_text(),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/django/views/debug.py:418: in get_traceback_text
return t.render(c)
^^^^^^^^^^^
/usr/lib/python3/dist-packages/django/template/base.py:175: in render
return self._render(context)
^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/django/test/utils.py:111: in instrumented_test_render
template_rendered.send(sender=self, template=self, context=context)
/usr/lib/python3/dist-packages/django/dispatch/dispatcher.py:177: in send
(receiver, receiver(signal=self, sender=sender, **named))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/django/test/client.py:267: in store_rendered_templates
store["context"].append(copy(context))
^^^^^^^^^^^^^
/usr/lib/python3.14/copy.py:82: in copy
return copier(x)
^^^^^^^^^
/usr/lib/python3/dist-packages/django/template/context.py:158: in __copy__
duplicate = super().__copy__()
^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = [{'True': True, 'False': False, 'None': None}, {'is_email': True, 'unicode_hint': '', 'frames': [{'exc_cause': None, '...lf):'], 'pre_context_lineno': 32, 'colno': '\n ^^^^^^^^^^^^^^^', 'tb_area_colno': '\n ^^^^^^^^^^^^^^^'}}]
def __copy__(self):
duplicate = copy(super())
> duplicate.dicts = self.dicts[:]
^^^^^^^^^^^^^^^
E AttributeError: 'super' object has no attribute 'dicts' and no __dict__ for setting new attributes
/usr/lib/python3/dist-packages/django/template/context.py:39: AttributeError
=============================== warnings summary ===============================
../../../usr/lib/python3/dist-packages/django/conf/__init__.py:241
/usr/lib/python3/dist-packages/django/conf/__init__.py:241: RemovedInDjango50Warning: The default value of USE_TZ will change from False to True in Django 5.0. Set USE_TZ to False in your project settings if you want to keep the current default behavior.
warnings.warn(
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
FAILED maintenancemode/tests/test_middleware.py::MaintenanceModeMiddlewareTestCase::test_enabled_middleware_with_template
FAILED maintenancemode/tests/test_middleware.py::MaintenanceModeMiddlewareTestCase::test_enabled_middleware_without_template
FAILED maintenancemode/tests/test_middleware.py::MaintenanceModeMiddlewareTestCase::test_management_command
FAILED maintenancemode/tests/test_middleware.py::MaintenanceModeMiddlewareTestCase::test_middleware_with_non_staff_user
FAILED maintenancemode/tests/test_middleware.py::MaintenanceModeMiddlewareTestCase::test_middleware_with_staff_user_denied
FAILED maintenancemode/tests/test_middleware.py::MaintenanceModeMiddlewareTestCase::test_middleware_with_superuser_user_denied
==================== 6 failed, 7 passed, 1 warning in 3.52s ====================
E: pybuild pybuild:389: test: plugin custom failed with: exit code=1: PYTHONPATH=. python3.14 -m pytest
I: pybuild base:317: PYTHONPATH=. python3.13 -m pytest
============================= test session starts ==============================
platform linux -- Python 3.13.11, pytest-9.0.2, pluggy-1.6.0
django: version: 4.2.26, settings: maintenancemode.tests.settings (from ini)
rootdir: /<<PKGBUILDDIR>>
configfile: setup.cfg
plugins: typeguard-4.4.4, django-4.11.1
collected 13 items
maintenancemode/tests/test_middleware.py ............. [100%]
=============================== warnings summary ===============================
../../../usr/lib/python3/dist-packages/django/conf/__init__.py:241
/usr/lib/python3/dist-packages/django/conf/__init__.py:241: RemovedInDjango50Warning: The default value of USE_TZ will change from False to True in Django 5.0. Set USE_TZ to False in your project settings if you want to keep the current default behavior.
warnings.warn(
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
======================== 13 passed, 1 warning in 1.56s =========================
dh_auto_test: error: pybuild --test -i python{version} -p "3.14 3.13" --system=custom --test-args="PYTHONPATH=. {interpreter} -m pytest" returned exit code 13
make[1]: *** [debian/rules:12: override_dh_auto_test] Error 25
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
make: *** [debian/rules:6: binary] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------
Reply to: