fabioz/Pydev — pull request #123 by dannyyoo (2014-05-15 17:48:37+00:00)
Title: Bug 374: Feature request: module resolution extension point.

This adds a "pydev_python_module_resolver" extension point, which
allows plug-ins to define how to resolve Python modules and get
the module structure with respect to a single project.

The current default behavior of PythonPathHelper does a recursive tree
walk across the PYTHONPATH to collect a project's modules. For
organizations that need to support large, heterogeneous codebases, the
PYTHONPATH may span across tens of thousands of Java, C++ , and Python
files. In this scenario, PyDev can not effective walk the entire
PYTHONPATH without becoming overwhelmed.

The extension point allows plugins to override the default behavior
and explicitly define what modules are part of a project. It adds an
IPythonModuleResolver interface for finding project structure and
resolving modules. It threads IProject through the callers of
PythonPathHelper.getModulesFoundStructure() to provide the project
context. Finally, this adds a test plugin to explicitly check the
behavior of the introduced extension point.

Change-Id: I75d68354c58956c64796d5ef91d4a3530bf8f73c