#18603: Adding support for PEP 302 importers
--------------------------------------+--------------------
     Reporter:  bhuztez               |      Owner:  nobody
         Type:  Cleanup/optimization  |     Status:  new
    Component:  Uncategorized         |    Version:
     Severity:  Normal                |   Keywords:
 Triage Stage:  Unreviewed            |  Has patch:  1
Easy pickings:  0                     |      UI/UX:  0
--------------------------------------+--------------------
 Django makes assumptions about the filesystem layout of python packages
 here and there, and will silently skip any app which does not meet
 Django's assumptions without raise up any warnings.

 Adding support for PEP 302 importers can solve all these problems,
 including #582 #596 #8238 #8280 #12206 #13587 #16718 #17331. And I found
 that there are three different kinds of problems.

 1. find submodules before importing the package: finding management
 commands
 1. find submodules after importing the package: finding template
 tags(already solved by #13334) and listing available database backends
 1. find resource files after importing the package: template files, static
 files, fixtures and translation files

 I have been working on solve these problems in the past few months, code
 is now available on Github:
 https://github.com/bhuztez/django/compare/master...pep-302

 There are still a few problems.

  management command:: since we have to find management commands before
 importing any app packages, we still need to make assumptions, see
 https://code.djangoproject.com/ticket/14087#comment:13 . I think we have
 to make a better assumption on `loader.get_filename`. And how to find
 management commands in packages imported by `sys.meta_path`?

  static files finder:: I changed static files finder API. now
 `Finder.find` returns `[(storage, path)]` instead of `[path]`.

  app package resource file regression tests:: templates, fixtures,
 translation files and static files (except collect_static) relies on same
 api to find resource files. Should I just add tests for the API, or I have
 to add almost same tests for templates, fixtures, translation files and
 static files?

  template loader:: I changed template loader API. I think the
 `template_dirs` parameter is confusing here in `loader(template_name,
 template_dirs=None)`. if I set the `template_dirs` parameter,
 `django.template.loaders.app_directories.Loader` works just like
 `django.template.loaders.filesystem.Loader`, and
 `django.template.loaders.eggs.Loader` does not respect my parameter.

  fixture path:: how to `humanize(fixture_storage)`?


 Any ideas?

-- 
Ticket URL: <https://code.djangoproject.com/ticket/18603>
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 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