#14698: django.utils.module_loading.module_has_submodule yields false positives
----------------------------------------+-----------------------------------
          Reporter:  lrekucki           |         Owner:  nobody
            Status:  new                |     Milestone:  1.3   
         Component:  Core framework     |       Version:  1.2   
        Resolution:                     |      Keywords:        
             Stage:  Ready for checkin  |     Has_patch:  1     
        Needs_docs:  0                  |   Needs_tests:  0     
Needs_better_patch:  0                  |  
----------------------------------------+-----------------------------------
Old description:

> The way I found this is a bit crazy, so I'm not going to describe it all,
> but the 2 important things are:
>
>   # I have some explicit relative imports.
>   # I wanted to make a template library named the same as the application
> it contains.
>
> This generally should work (tried on a fresh project), but failed with a
> weird error in my project: "'currencies' is not a valid tag library:
> ImportError raised loading company.templatetags.currencies: No module
> named currencies". Of course there is no such module, because it's on
> "currencies.templatags" application.
>
> So after some debuging it turned out that module_has_submodule returns a
> false positive. This is because it checks {{{ if name in sys.modules }}}.
> To be honest, I didn't know about this, but it seems that Python
> sometimes also stores import misses by puting a None in to that
> dictionary. See [http://mail.python.org/pipermail/python-
> dev/2009-July/090780.html this python-dev thread].

New description:

 The way I found this is a bit crazy, so I'm not going to describe it all,
 but the 2 important things are:

   1. I have some explicit relative imports.
   2. I wanted to make a template library named the same as the application
 it contains.

 This generally should work (tried on a fresh project), but failed with a
 weird error in my project: `"'currencies' is not a valid tag library:
 ImportError raised loading company.templatetags.currencies: No module
 named currencies".` Of course there is no such module, because it's on
 "currencies.templatags" application.

 So after some debuging it turned out that module_has_submodule returns a
 false positive. This is because it checks {{{ if name in sys.modules }}}.
 To be honest, I didn't know about this, but it seems that Python sometimes
 also stores import misses by puting a None in to that dictionary. See
 [http://mail.python.org/pipermail/python-dev/2009-July/090780.html this
 python-dev thread].

Comment (by ramiro):

 (re-formatted description)

-- 
Ticket URL: <http://code.djangoproject.com/ticket/14698#comment:5>
Django <http://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 post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en.

Reply via email to