def register_examples(manager: Manager, user_datastore: SQLAlchemyUserDatastore, butler: User) -> None:
    """Insert example graphs."""
    for graph in (sialic_acid_graph, egf_graph, statin_graph, homology_graph):
        if not manager.has_name_version(graph.name, graph.version):
            logger.info('uploading public example graph: %s', graph)
            insert_graph(manager, graph, user=butler, public=True)

    test_user = user_datastore.find_user(email='*****@*****.**')
    if test_user:
        for graph in (braf_graph,):
            if not manager.has_name_version(graph.name, graph.version):
                logger.info('uploading internal example graph: %s', graph)
                insert_graph(manager, graph, user=test_user, public=False)
def insert_graph(
    manager: Manager,
    graph: BELGraph,
    user: User,
    public: bool = True,
    use_tqdm: bool = False,
) -> Network:
    """Insert a graph and also make a report.

    :param manager: A PyBEL manager
    :param graph: A BEL graph
    :param user: The identifier of the user to report. Defaults to 1. Can also give a user object.
    :param public: Should the network be public? Defaults to False.
    :param use_tqdm: Show a progress bar? Defaults to False.
    :raises: TypeError
    """
    if manager.has_name_version(graph.name, graph.version):
        logger.info('database already has %s', graph)
        return manager.get_network_by_name_version(graph.name, graph.version)

    network = manager.insert_graph(graph, use_tqdm=use_tqdm)

    report = Report(public=public, user=user)

    fill_out_report(graph=graph, network=network, report=report)

    manager.session.add(report)
    manager.session.commit()

    return network