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