def optimizeUncompiledPythonModule(module): full_name = module.getFullName() progress_logger.info( "Doing module dependency considerations for '{module_name}':".format( module_name=full_name ) ) for used_module_name, used_module_path in module.getUsedModules(): used_module = ImportCache.getImportedModuleByNameAndPath( used_module_name, used_module_path ) ModuleRegistry.addUsedModule(used_module) package_name = full_name.getPackageName() if package_name is not None: # TODO: It's unclear why, but some standard library modules on older Python3 # seem to not have parent packages after the scan. try: used_module = ImportCache.getImportedModuleByName(package_name) except KeyError: pass else: ModuleRegistry.addUsedModule(used_module) Plugins.considerImplicitImports(module=module, signal_change=signalChange)
def considerUsedModules(module, signal_change): for ( used_module_name, used_module_filename, finding, level, source_ref, ) in module.getUsedModules(): if finding == "not-found": Importing.warnAbout( importing=module, source_ref=source_ref, module_name=used_module_name, level=level, ) try: if used_module_filename is None: continue _module_name, module_kind = getModuleNameAndKindFromFilename( used_module_filename) decision, reason = decideRecursion( module_filename=used_module_filename, module_name=used_module_name, module_kind=module_kind, ) if decision: _addParentPackageUsages( using_module=module, module_name=used_module_name, signal_change=signal_change, source_ref=source_ref, ) used_module = recurseTo( signal_change=signal_change, module_name=used_module_name, module_filename=used_module_filename, module_kind=module_kind, reason=reason, ) addUsedModule( module=used_module, using_module=module, usage_tag="import", reason=reason, source_ref=source_ref, ) except NuitkaForbiddenImportEncounter as e: recursion_logger.sysexit( "Error, forbidden import of '%s' in module '%s' at '%s' encountered." % (e, module.getFullName().asString(), source_ref.getAsString())) Plugins.considerImplicitImports(module=module, signal_change=signal_change)
def optimizeShlibModule(module): # Pick up parent package if any. _attemptRecursion(module) Plugins.considerImplicitImports( module = module, signal_change = signalChange )
def optimizeShlibModule(module): # Pick up parent package if any. _attemptRecursion(module) # The tag set is global, so it can react to changes without context. # pylint: disable=W0603 global tag_set tag_set = TagSet() Plugins.considerImplicitImports(module, signal_change = signalChange)
def optimizeShlibModule(module): # Pick up parent package if any. _attemptRecursion(module) # The tag set is global, so it can react to changes without context. # pylint: disable=W0603 global tag_set tag_set = TagSet() Plugins.considerImplicitImports(module, signal_change=signalChange)
def optimizeCompiledPythonModule(module): if _progress: progress_logger.info( "Doing module local optimizations for '{module_name}'.".format( module_name=module.getFullName())) touched = False if _progress and Options.isShowMemory(): memory_watch = MemoryUsage.MemoryWatch() while True: tag_set.clear() try: # print("Compute module") module.computeModule() except BaseException: general.info("Interrupted while working on '%s'." % module) raise Graphs.onModuleOptimizationStep(module) # Search for local change tags. for tag in tag_set: if tag == "new_code": continue break else: if _progress: progress_logger.info("Finished with the module.") break if _progress: if "new_code" in tag_set: tag_set.remove("new_code") progress_logger.info( "Not finished with the module due to following change kinds: %s" % ",".join(sorted(tag_set))) # Otherwise we did stuff, so note that for return value. touched = True if _progress and Options.isShowMemory(): memory_watch.finish() memory_logger.info( "Memory usage changed during optimization of '%s': %s" % (module.getFullName(), memory_watch.asStr())) Plugins.considerImplicitImports(module=module, signal_change=signalChange) return touched
def optimizeUncompiledPythonModule(module): full_name = module.getFullName() progress_logger.info( "Doing module dependency considerations for '{module_name}':".format( module_name=full_name)) # Pick up parent package if any. module.attemptRecursion() considerUsedModules(module=module, signal_change=signalChange) Plugins.considerImplicitImports(module=module, signal_change=signalChange)
def optimizeCompiledPythonModule(module): if _progress: info( "Doing module local optimizations for '{module_name}'.".format( module_name = module.getFullName() ) ) touched = False if _progress and Options.isShowMemory(): memory_watch = MemoryUsage.MemoryWatch() while True: tag_set.clear() try: module.computeModule() except BaseException: info("Interrupted while working on '%s'." % module) raise Graphs.onModuleOptimizationStep(module) # Search for local change tags. for tag in tag_set: if tag == "new_code": continue break else: break # Otherwise we did stuff, so note that for return value. touched = True if _progress and Options.isShowMemory(): memory_watch.finish() info( "Memory usage changed during optimization of '%s': %s" % ( module.getFullName(), memory_watch.asStr() ) ) Plugins.considerImplicitImports( module = module, signal_change = signalChange ) return touched
def optimizePythonModule(module): if _progress: printLine( "Doing module local optimizations for '{module_name}'.".format( module_name = module.getFullName() ) ) # The tag set is global, so it can react to changes without context. # pylint: disable=W0603 global tag_set tag_set = TagSet() touched = False if _progress: memory_watch = MemoryUsage.MemoryWatch() while True: tag_set.clear() try: module.computeModule() except BaseException: info("Interrupted while working on '%s'." % module) raise if not tag_set: break if graph is not None: computation_counters[module] = computation_counters.get(module, 0) + 1 module_graph = module.asGraph(computation_counters[module]) graph.subgraph(module_graph) touched = True if _progress: memory_watch.finish() printLine( "Memory usage changed during optimization of '%s': %s" % ( module.getFullName(), memory_watch.asStr() ) ) Plugins.considerImplicitImports(module, signal_change = signalChange) return touched
def optimizeCompiledPythonModule(module): if _progress: printLine( "Doing module local optimizations for '{module_name}'.".format( module_name = module.getFullName() ) ) touched = False if _progress and Options.isShowMemory(): memory_watch = MemoryUsage.MemoryWatch() while True: tag_set.clear() try: module.computeModule() except BaseException: info("Interrupted while working on '%s'." % module) raise Graphs.onModuleOptimizationStep(module) # Search for local change tags. for tag in tag_set: if tag == "new_code": continue break else: break # Otherwise we did stuff, so note that for return value. touched = True if _progress and Options.isShowMemory(): memory_watch.finish() printLine( "Memory usage changed during optimization of '%s': %s" % ( module.getFullName(), memory_watch.asStr() ) ) Plugins.considerImplicitImports(module, signal_change = signalChange) return touched
def optimizeUncompiledPythonModule(module): if _progress: info("Doing module dependency considerations for '{module_name}':". format(module_name=module.getFullName())) for used_module_name in module.getUsedModuleNames(): used_module = ImportCache.getImportedModuleByName(used_module_name) ModuleRegistry.addUsedModule(used_module) package_name = module.getPackage() if package_name is not None: used_module = ImportCache.getImportedModuleByName(package_name) ModuleRegistry.addUsedModule(used_module) Plugins.considerImplicitImports(module=module, signal_change=signalChange)
def optimizePythonModule(module): if _progress: printLine( "Doing module local optimizations for '{module_name}'.".format( module_name=module.getFullName())) # The tag set is global, so it can react to changes without context. # pylint: disable=W0603 global tag_set tag_set = TagSet() touched = False if _progress: memory_watch = MemoryUsage.MemoryWatch() while True: tag_set.clear() try: module.computeModule() except BaseException: info("Interrupted while working on '%s'." % module) raise if not tag_set: break if graph is not None: computation_counters[module] = computation_counters.get(module, 0) + 1 module_graph = module.asGraph(computation_counters[module]) graph.subgraph(module_graph) touched = True if _progress: memory_watch.finish() printLine("Memory usage changed during optimization of '%s': %s" % (module.getFullName(), memory_watch.asStr())) Plugins.considerImplicitImports(module, signal_change=signalChange) return touched
def optimizeUncompiledPythonModule(module): if _progress: info( "Doing module dependency considerations for '{module_name}':".format( module_name=module.getFullName() ) ) for used_module_name, used_module_path in module.getUsedModules(): used_module = ImportCache.getImportedModuleByNameAndPath( used_module_name, used_module_path ) ModuleRegistry.addUsedModule(used_module) package_name = module.getPackage() if package_name is not None: used_module = ImportCache.getImportedModuleByName(package_name) ModuleRegistry.addUsedModule(used_module) Plugins.considerImplicitImports(module=module, signal_change=signalChange)
def optimizeShlibModule(module): # Pick up parent package if any. _attemptRecursion(module) Plugins.considerImplicitImports(module, signal_change = signalChange)
def optimizeCompiledPythonModule(module): optimization_logger.info_fileoutput( "Doing module local optimizations for '{module_name}'.".format( module_name=module.getFullName()), other_logger=progress_logger, ) touched = False if _progress and Options.isShowMemory(): memory_watch = MemoryWatch() # Temporary workaround, since we do some optimization based on the last pass results # that are then not yet fully seen in the traces yet until another time around, we # allow to continue the loop even without changes one more time. unchanged_count = 0 while True: tag_set.clear() try: # print("Compute module") with withChangeIndicationsTo(signalChange): scopes_were_incomplete = module.computeModule() except BaseException: general.info("Interrupted while working on '%s'." % module) raise if scopes_were_incomplete: tag_set.add("var_usage") Graphs.onModuleOptimizationStep(module) # Ignore other modules brought into the game. if "new_code" in tag_set: tag_set.remove("new_code") # Search for local change tags. if not tag_set: unchanged_count += 1 if unchanged_count == 1 and pass_count == 1: optimization_logger.info_fileoutput( "No changed, but retrying one more time.", other_logger=progress_logger, ) continue optimization_logger.info_fileoutput("Finished with the module.", other_logger=progress_logger) break unchanged_count = 0 optimization_logger.info_fileoutput( "Not finished with the module due to following change kinds: %s" % ",".join(sorted(tag_set)), other_logger=progress_logger, ) # Otherwise we did stuff, so note that for return value. touched = True if _progress and Options.isShowMemory(): memory_watch.finish() memory_logger.info( "Memory usage changed during optimization of '%s': %s" % (module.getFullName(), memory_watch.asStr())) Plugins.considerImplicitImports(module=module, signal_change=signalChange) return touched