def get_contrib_features(project_root):
    """Get contributed features for a project at project_root

    For a project ``foo``, walks modules within the ``foo.features.contrib``
    subpackage. A single object that is an instance of ``ballet.Feature`` is
    imported if present in each module. The resulting ``Feature`` objects are
    collected.

    Args:
        project_root (str, path-like): Path to project root

    Returns:
        List[ballet.Feature]: list of Feature objects
    """
    # TODO Project should require ModuleType
    project = Project(project_root)
    contrib = project._resolve('.features.contrib')
    return _get_contrib_features(contrib)
def get_contrib_features ( project_root ) : project = Project ( project_root ) contrib = project . _resolve ( '.features.contrib' ) return _get_contrib_features ( contrib )
Get contributed features for a project at project_root

    For a project ``foo``, walks modules within the ``foo.features.contrib``
    subpackage. A single object that is an instance of ``ballet.Feature`` is
    imported if present in each module. The resulting ``Feature`` objects are
    collected.

    Args:
        project_root (str, path-like): Path to project root

    Returns:
        List[ballet.Feature]: list of Feature objects