Adding support for PEP 302 importers
|Reported by:||bhuztez||Owned by:||nobody|
|Has patch:||yes||Needs documentation:||no|
|Needs tests:||no||Patch needs improvement:||no|
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.
- find submodules before importing the package: finding management commands
- find submodules after importing the package: finding template tags(already solved by #13334) and listing available database backends
- 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)?
Change History (3)
comment:1 Changed 20 months ago by aaugustin
- Needs documentation unset
- Needs tests unset
- Patch needs improvement unset
- Triage Stage changed from Unreviewed to Accepted