﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
18603	Adding support for PEP 302 importers	bhuztez		"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?"	Cleanup/optimization	closed	Core (Other)		Normal	needsinfo		cberner Harsh007	Accepted	0	0	0	0	0	0
