def parse_definitions(graph: BELGraph,
                      enumerated_lines: Iterable[Tuple[int, str]],
                      metadata_parser: MetadataParser,
                      allow_failures: bool = False,
                      use_tqdm: bool = False,
                      tqdm_kwargs: Optional[Mapping[str, Any]] = None,
                      ) -> None:
    """Parse the lines in the definitions section of a BEL script.

    :param graph: A BEL graph
    :param enumerated_lines: An enumerated iterable over the lines in the definitions section of a BEL script
    :param metadata_parser: A metadata parser
    :param allow_failures: If true, allows parser to continue past strange failures
    :param use_tqdm: Use :mod:`tqdm` to show a progress bar?
    :param tqdm_kwargs: Keywords to pass to ``tqdm``
    :raises: pybel.parser.parse_exceptions.InconsistentDefinitionError
    :raises: pybel.resources.exc.ResourceError
    :raises: sqlalchemy.exc.OperationalError
    """
    parse_definitions_start_time = time.time()

    if use_tqdm:
        _tqdm_kwargs = dict(desc='Definitions', leave=False)
        if tqdm_kwargs:
            _tqdm_kwargs.update(tqdm_kwargs)
        enumerated_lines = tqdm(list(enumerated_lines), **_tqdm_kwargs)

    for line_number, line in enumerated_lines:
        try:
            metadata_parser.parseString(line, line_number=line_number)
        except (InconsistentDefinitionError, ResourceError) as e:
            parse_log.exception(LOG_FMT, line_number, 0, e.__class__.__name__, line)
            raise e
        except OperationalError as e:
            parse_log.warning('Need to upgrade database. See '
                              'http://pybel.readthedocs.io/en/latest/installation.html#upgrading')
            raise e
        except Exception as e:
            if not allow_failures:
                exc = MalformedMetadataException(line_number, line, 0)
                _log_parse_exception(graph, exc)
                raise exc from e

    graph.namespace_url.update(metadata_parser.namespace_url_dict)
    graph.namespace_pattern.update({
        keyword: pattern.pattern
        for keyword, pattern in metadata_parser.namespace_to_pattern.items()
    })

    graph.annotation_url.update(metadata_parser.annotation_url_dict)
    graph.annotation_pattern.update({
        keyword: pattern.pattern
        for keyword, pattern in metadata_parser.annotation_to_pattern.items()
    })
    graph.annotation_list.update(metadata_parser.annotation_to_local)
    graph.uncached_namespaces.update(metadata_parser.uncachable_namespaces)

    log.info('Finished parsing definitions section in %.02f seconds', time.time() - parse_definitions_start_time)
def parse_definitions ( graph : BELGraph , enumerated_lines : Iterable [ Tuple [ int , str ] ] , metadata_parser : MetadataParser , allow_failures : bool = False , use_tqdm : bool = False , tqdm_kwargs : Optional [ Mapping [ str , Any ] ] = None , ) -> None : parse_definitions_start_time = time . time ( ) if use_tqdm : _tqdm_kwargs = dict ( desc = 'Definitions' , leave = False ) if tqdm_kwargs : _tqdm_kwargs . update ( tqdm_kwargs ) enumerated_lines = tqdm ( list ( enumerated_lines ) , ** _tqdm_kwargs ) for line_number , line in enumerated_lines : try : metadata_parser . parseString ( line , line_number = line_number ) except ( InconsistentDefinitionError , ResourceError ) as e : parse_log . exception ( LOG_FMT , line_number , 0 , e . __class__ . __name__ , line ) raise e except OperationalError as e : parse_log . warning ( 'Need to upgrade database. See ' 'http://pybel.readthedocs.io/en/latest/installation.html#upgrading' ) raise e except Exception as e : if not allow_failures : exc = MalformedMetadataException ( line_number , line , 0 ) _log_parse_exception ( graph , exc ) raise exc from e graph . namespace_url . update ( metadata_parser . namespace_url_dict ) graph . namespace_pattern . update ( { keyword : pattern . pattern for keyword , pattern in metadata_parser . namespace_to_pattern . items ( ) } ) graph . annotation_url . update ( metadata_parser . annotation_url_dict ) graph . annotation_pattern . update ( { keyword : pattern . pattern for keyword , pattern in metadata_parser . annotation_to_pattern . items ( ) } ) graph . annotation_list . update ( metadata_parser . annotation_to_local ) graph . uncached_namespaces . update ( metadata_parser . uncachable_namespaces ) log . info ( 'Finished parsing definitions section in %.02f seconds' , time . time ( ) - parse_definitions_start_time )
Parse the lines in the definitions section of a BEL script.

    :param graph: A BEL graph
    :param enumerated_lines: An enumerated iterable over the lines in the definitions section of a BEL script
    :param metadata_parser: A metadata parser
    :param allow_failures: If true, allows parser to continue past strange failures
    :param use_tqdm: Use :mod:`tqdm` to show a progress bar?
    :param tqdm_kwargs: Keywords to pass to ``tqdm``
    :raises: pybel.parser.parse_exceptions.InconsistentDefinitionError
    :raises: pybel.resources.exc.ResourceError
    :raises: sqlalchemy.exc.OperationalError