Skip to content

Maximum recursion depth exceeded in __getattr__().#103272

@felixxm

Description

@felixxm

Bug report

We're hitting RecursionError: maximum recursion depth exceeded in Django test suite with Python 3.12.0a7 when accessing an attribute with a custom __getattr__() method:

ERROR: test_access_warning (deprecation.test_storages.DefaultStorageDeprecationTests.test_access_warning) ---------------------------------------------------------------------- Traceback (most recent call last): File "/django/tests/deprecation/test_storages.py", line 128, in test_access_warning settings.DEFAULT_FILE_STORAGE File "/django/django/conf/__init__.py", line 83, in __getattr__ if (_wrapped := self._wrapped) is empty: ^^^^^^^^^^^^^ File "/django/django/conf/__init__.py", line 83, in __getattr__ if (_wrapped := self._wrapped) is empty: ^^^^^^^^^^^^^ File "/django/django/conf/__init__.py", line 83, in __getattr__ if (_wrapped := self._wrapped) is empty: ^^^^^^^^^^^^^ [Previous line repeated 790 more times] RecursionError: maximum recursion depth exceeded 

See affected test and LazySettings.__getattr__().

Bisected to the aa0a73d.

I'd try to prepare a small regression test.

Your environment

  • CPython versions tested on: Python 3.12.0a7
  • Operating system and architecture: x86_64 GNU/Linux

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    3.12only security fixesrelease-blockertype-bugAn unexpected behavior, bug, or error

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions