#25477: Modelbase.__new__ causes `AppRegistryNotReady` ---------------------------------+-------------------- Reporter: cdestigter | Owner: nobody Type: Bug | Status: new Component: Core (Other) | Version: 1.9a1 Severity: Release blocker | Keywords: Triage Stage: Unreviewed | Has patch: 0 Easy pickings: 0 | UI/UX: 0 ---------------------------------+-------------------- I'm probably missing something, but I've noticed a regression when testing 1.9.
My standalone app django-typed-models gets this stack trace on django 1.9a1: {{{#!python Traceback (most recent call last): File "./runtests.py", line 12, in <module> django.setup() File ".../site-packages/django/__init__.py", line 18, in setup apps.populate(settings.INSTALLED_APPS) File ".../site-packages/django/apps/registry.py", line 85, in populate app_config = AppConfig.create(entry) File ".../site-packages/django/apps/config.py", line 90, in create module = import_module(entry) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) File "./typedmodels/__init__.py", line 2, in <module> from .models import TypedModel File "./typedmodels/models.py", line 301, in <module> class TypedModel(with_metaclass(TypedModelMetaclass, models.Model)): File ".../site-packages/django/utils/six.py", line 778, in __new__ return meta(name, bases, d) File "./typedmodels/models.py", line 49, in __new__ typed_model = super(TypedModelMetaclass, meta).__new__(meta, classname, bases, classdict) File ".../site-packages/django/db/models/base.py", line 94, in __new__ app_config = apps.get_containing_app_config(module) File ".../site-packages/django/apps/registry.py", line 239, in get_containing_app_config self.check_apps_ready() File ".../site-packages/django/apps/registry.py", line 124, in check_apps_ready raise AppRegistryNotReady("Apps aren't loaded yet.") django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet. }}} It looks like `ModelBase.__new__` is calling `apps.get_containing_app_config`, and that calls `check_apps_ready` which throws the exception. But, AFAICT the app-loading process imports the models, so it seems obvious that the apps aren't ever ready when the models are being defined. It seems if I remove [https://github.com/craigds/django-typed- models/blob/master/typedmodels/__init__.py#L2 this line] from my app, the problem goes away. I'm hesitant to do that because it'd be backwards-incompatible for users of my app (and `from typedmodels import TypedModel` is much less repetitive than `from typedmodels.models import TypedModel`) If importing the models file from the `__init__.py` is really no longer supported, perhaps a note should be added to the django 1.9 release notes about it? -- Ticket URL: <https://code.djangoproject.com/ticket/25477> Django <https://code.djangoproject.com/> The Web framework for perfectionists with deadlines. -- You received this message because you are subscribed to the Google Groups "Django updates" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-updates+unsubscr...@googlegroups.com. To post to this group, send email to django-updates@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/053.7e211b7d83be585572123789ce631033%40djangoproject.com. For more options, visit https://groups.google.com/d/optout.