buildframework/helium/sf/python/pythoncore/lib/docs.py
author wbernard
Fri, 13 Aug 2010 14:59:05 +0300
changeset 628 7c4a911dc066
parent 587 85df38eb4012
permissions -rw-r--r--
helium_11.0.0-e00f171ca185

#============================================================================ 
#Name        : docs.py 
#Part of     : Helium 

#Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
#All rights reserved.
#This component and the accompanying materials are made available
#under the terms of the License "Eclipse Public License v1.0"
#which accompanies this distribution, and is available
#at the URL "http://www.eclipse.org/legal/epl-v10.html".
#
#Initial Contributors:
#Nokia Corporation - initial contribution.
#
#Contributors:
#
#Description:
#===============================================================================

""" Modules related to documentation """

from __future__ import with_statement
import re
import os
import amara

def find_python_dependencies(setpath, _, dbPrj):
    """ Search python dependencies """
    for root, _, files in os.walk(setpath, topdown=False):
        for fname in files:
            filePattern = re.compile('.ant.xml$')
            fileMatch = filePattern.search(fname)
            modulelist = []
            if (fileMatch):
                filePath = os.path.abspath(os.path.join(root, fname))
                with open(filePath) as f_file:
                    filePathAmara = 'file:///'+ filePath.replace('\\','/')
                    curPrj = amara.parse(filePathAmara)
                    for line in f_file:
                        linePattern = re.compile('^import')
                        lineMatch = linePattern.search(line)
                        if ((lineMatch) and (line.find('.')==-1)):
                            newLine = line.replace('import','')
                            newLine = newLine.replace(',','')
                            moduleArray = newLine.split()
                            for curModule in moduleArray:
                                try:
                                    importModule = __import__(curModule)
                                    if hasattr(importModule, '__file__'):
                                        modulePath = importModule.__file__
                                        if 'helium' in modulePath:
                                            for projectList in dbPrj.antDatabase.project:
                                                if (projectList.name == curPrj.project.name):
                                                    if not (curModule in modulelist):
                                                        print " Python module : " + curModule
                                                        moduleElement = projectList.pythonDependency.xml_create_element(u'module', content=u''+curModule)
                                                        projectList.pythonDependency.xml_append(moduleElement)
                                                    modulelist = modulelist + [curModule]
                                except ImportError:
                                    pass