<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def left_full_join(g, h) -> None: """Add all nodes and edges from ``h`` to ``g``, in-place for ``g``. :param pybel.BELGraph g: A BEL graph :param pybel.BELGraph h: A BEL graph Example usage: """

    g.add_nodes_from(
        (node, data)
        for node, data in h.nodes(data=True)
        if node not in g
    )
    g.add_edges_from(
        (u, v, key, data)
        for u, v, key, data in h.edges(keys=True, data=True)
        if u not in g or v not in g[u] or key not in g[u][v]
    )

    update_metadata(h, g)
    update_node_helper(h, g)
    g.warnings.extend(h.warnings)