#29906 closed Bug (invalid)
`isinstance(django_settings, type)` triggers ImproperlyConfigured, although settings are not really accessed
| Reported by: | Daniel Hahler | Owned by: | nobody |
|---|---|---|---|
| Component: | Core (Other) | Version: | 2.1 |
| Severity: | Normal | Keywords: | |
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description (last modified by )
Checking if django.conf.settings is a class should not trigger an exception, but the following code triggers ImproperlyConfigured already:
from django.conf import settings as django_settings isinstance(django_settings, type)
Change History (3)
comment:1 by , 7 years ago
| Resolution: | → invalid |
|---|---|
| Status: | new → closed |
comment:2 by , 7 years ago
| Component: | Uncategorized → Core (Other) |
|---|---|
| Description: | modified (diff) |
| Type: | Uncategorized → Bug |
comment:3 by , 7 years ago
Just for the record: it is not via __getattr__, but because __class__ itself is special property already: https://github.com/django/django/blob/3d4d0a25b299a97314582156a0d63d939662d310/django/utils/functional.py#L305
I still think that isinstance() should not throw, but created a fix/workaround for pytest nonetheless.
Note:
See TracTickets
for help on using tickets.
As mentioned on the linked PR this has little to do with the
isinstancecheck; accessingdjango.conf.settingsattributes (in this case__class__throughisinstance) is prohibited until settings are configured.