docs: def get_subgraph_by_annotations(graph, annotations, or_=None):
      """Induce a sub-graph given an annotations filter.
  
      :param graph: pybel.BELGraph graph: A BEL graph
      :param dict[str,iter[str]] annotations: Annotation filters (match all with :func:`pybel.utils.subdict_matches`)
      :param boolean or_: if True any annotation should be present, if False all annotations should be present in the
                          edge. Defaults to True.
      :return: A subgraph of the original BEL graph
      :rtype: pybel.BELGraph
      """
      edge_filter_builder = (
          build_annotation_dict_any_filter
          if (or_ is None or or_) else
          build_annotation_dict_all_filter
      )
  
      return get_subgraph_by_edge_filter(graph, edge_filter_builder(annotations))