def load_generator(filename, factory): """ Load a file and create a model if possible. This function is a generator. It will yield values from 0 to 100 (%) to indicate its progression. """ if isinstance(filename, (file, InputType)): log.info('Loading file from file descriptor') else: log.info('Loading file %s' % os.path.basename(filename)) try: # Use the incremental parser and yield the percentage of the file. loader = parser.GaphorLoader() for percentage in parser.parse_generator(filename, loader): pass if percentage: yield percentage / 2 else: yield percentage elements = loader.elements gaphor_version = loader.gaphor_version #elements = parser.parse(filename) #yield 100 except Exception, e: log.error('File could no be parsed', exc_info=True) raise
def load_generator(filename, factory): """ Load a file and create a model if possible. This function is a generator. It will yield values from 0 to 100 (%) to indicate its progression. """ if isinstance(filename, io.IOBase): log.info('Loading file from file descriptor') else: log.info('Loading file %s' % os.path.basename(filename)) try: # Use the incremental parser and yield the percentage of the file. loader = parser.GaphorLoader() for percentage in parser.parse_generator(filename, loader): pass if percentage: yield old_div(percentage, 2) else: yield percentage elements = loader.elements gaphor_version = loader.gaphor_version #elements = parser.parse(filename) #yield 100 except Exception as e: log.error('File could no be parsed', exc_info=True) raise try: component_registry = Application.get_service('component_registry') except NotInitializedError: component_registry = None try: factory.flush() gc.collect() log.info("Read %d elements from file" % len(elements)) if component_registry: component_registry.register_subscription_adapter( ElementChangedEventBlocker) try: for percentage in load_elements_generator(elements, factory, gaphor_version): if percentage: yield old_div(percentage, 2) + 50 else: yield percentage except Exception as e: raise finally: if component_registry: component_registry.unregister_subscription_adapter( ElementChangedEventBlocker) gc.collect() yield 100 except Exception as e: log.info('file %s could not be loaded' % filename) raise
def load_generator(filename, factory): """ Load a file and create a model if possible. This function is a generator. It will yield values from 0 to 100 (%) to indicate its progression. """ if isinstance(filename, io.IOBase): log.info("Loading file from file descriptor") else: log.info("Loading file %s" % os.path.basename(filename)) try: # Use the incremental parser and yield the percentage of the file. loader = parser.GaphorLoader() for percentage in parser.parse_generator(filename, loader): pass if percentage: yield percentage / 2 else: yield percentage elements = loader.elements gaphor_version = loader.gaphor_version except Exception as e: log.error("File could no be parsed", exc_info=True) raise if version_lower_than(gaphor_version, (0, 17, 0)): raise ValueError( "Gaphor model version should be at least 0.17.0 (found {})".format( gaphor_version ) ) log.info("Read %d elements from file" % len(elements)) factory.flush() gc.collect() with factory.block_events(): try: for percentage in load_elements_generator( elements, factory, gaphor_version ): if percentage: yield percentage / 2 + 50 else: yield percentage gc.collect() yield 100 except Exception as e: log.warning("file %s could not be loaded" % filename) raise factory.notify_model()
def load_generator(filename, factory, modeling_language): """ Load a file and create a model if possible. This function is a generator. It will yield values from 0 to 100 (%) to indicate its progression. """ if isinstance(filename, io.IOBase): log.info("Loading file from file descriptor") else: log.info(f"Loading file {os.fsdecode(os.path.basename(filename))}") try: # Use the incremental parser and yield the percentage of the file. loader = parser.GaphorLoader() for percentage in parser.parse_generator(filename, loader): if percentage: yield percentage / 2 else: yield percentage elements = loader.elements gaphor_version = loader.gaphor_version except OSError: log.exception("File could no be parsed") raise if version_lower_than(gaphor_version, (0, 17, 0)): raise ValueError( f"Gaphor model version should be at least 0.17.0 (found {gaphor_version})" ) log.info(f"Read {len(elements)} elements from file") factory.flush() gc.collect() with factory.block_events(): try: for percentage in load_elements_generator( elements, factory, modeling_language, gaphor_version ): if percentage: yield percentage / 2 + 50 else: yield percentage gc.collect() yield 100 except Exception as e: log.warning(f"file {filename} could not be loaded ({e})") raise factory.model_ready()
def load_generator(filename, factory): """Load a file and create a model if possible. This function is a generator. It will yield values from 0 to 100 (%) to indicate its progression.""" logger.debug('Starting load generator') logger.debug('FILE NAME: %s'%filename) logger.debug('FACTORY: %s'%factory) try: # Use the incremental parser and yield the percentage of the file. loader = parser.GaphorLoader() for percentage in parser.parse_generator(filename, loader): pass if percentage: yield percentage / 2 else: yield percentage elements = loader.elements gaphor_version = loader.gaphor_version except Exception, e: logger.error('File could no be parsed', exc_info=True) raise