178 self.__shapes = {} |
178 self.__shapes = {} |
179 |
179 |
180 modules = self.__buildModulesDict() |
180 modules = self.__buildModulesDict() |
181 |
181 |
182 # step 1: build a dictionary of packages |
182 # step 1: build a dictionary of packages |
183 for module in sorted(modules.keys()): |
183 for module in sorted(modules): |
184 if "." in module: |
184 if "." in module: |
185 packageName, moduleName = module.rsplit(".", 1) |
185 packageName, moduleName = module.rsplit(".", 1) |
186 else: |
186 else: |
187 packageName, moduleName = "", module |
187 packageName, moduleName = "", module |
188 if packageName in packages: |
188 if packageName in packages: |
189 packages[packageName][0].append(moduleName) |
189 packages[packageName][0].append(moduleName) |
190 else: |
190 else: |
191 packages[packageName] = ([moduleName], []) |
191 packages[packageName] = ([moduleName], []) |
192 |
192 |
193 # step 2: assign modules to dictionaries and update import relationship |
193 # step 2: assign modules to dictionaries and update import relationship |
194 for module in sorted(modules.keys()): |
194 for module in sorted(modules): |
195 package = module.rsplit(".", 1)[0] |
195 package = module.rsplit(".", 1)[0] |
196 impLst = [] |
196 impLst = [] |
197 for moduleImport in modules[module].imports: |
197 for moduleImport in modules[module].imports: |
198 if moduleImport in modules: |
198 if moduleImport in modules: |
199 impLst.append(moduleImport) |
199 impLst.append(moduleImport) |
211 impLst.append(n) |
211 impLst.append(n) |
212 else: |
212 else: |
213 n = "{0}.{1}".format(root, moduleImport) |
213 n = "{0}.{1}".format(root, moduleImport) |
214 if n in modules: |
214 if n in modules: |
215 impLst.append(n) |
215 impLst.append(n) |
216 for moduleImport in list(modules[module].from_imports.keys()): |
216 for moduleImport in modules[module].from_imports: |
217 if moduleImport.startswith("."): |
217 if moduleImport.startswith("."): |
218 dots = len(moduleImport) - len(moduleImport.lstrip(".")) |
218 dots = len(moduleImport) - len(moduleImport.lstrip(".")) |
219 if dots == 1: |
219 if dots == 1: |
220 moduleImport = moduleImport[1:] |
220 moduleImport = moduleImport[1:] |
221 elif dots > 1: |
221 elif dots > 1: |
261 if impPackage not in packages[package][1] and impPackage != package: |
261 if impPackage not in packages[package][1] and impPackage != package: |
262 packages[package][1].append(impPackage) |
262 packages[package][1].append(impPackage) |
263 except KeyError: |
263 except KeyError: |
264 continue |
264 continue |
265 |
265 |
266 for package in sorted(packages.keys()): |
266 for package in sorted(packages): |
267 if package: |
267 if package: |
268 relPackage = package.replace(root, "") |
268 relPackage = package.replace(root, "") |
269 if relPackage and relPackage[0] == ".": |
269 if relPackage and relPackage[0] == ".": |
270 relPackage = relPackage[1:] |
270 relPackage = relPackage[1:] |
271 else: |
271 else: |