#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.

Reply via email to