code: def _maximum_bipartite_matching(
      graph, types="type", weights=None, eps=None
  ):
      """Finds a maximum matching in a bipartite graph.
  
      A maximum matching is a set of edges such that each vertex is incident on
      at most one matched edge and the number (or weight) of such edges in the
      set is as large as possible.
  
      @param types: vertex types in a list or the name of a vertex attribute
        holding vertex types. Types should be denoted by zeros and ones (or
        C{False} and C{True}) for the two sides of the bipartite graph.
        If omitted, it defaults to C{type}, which is the default vertex type
        attribute for bipartite graphs.
      @param weights: edge weights to be used. Can be a sequence or iterable or
        even an edge attribute name.
      @param eps: a small real number used in equality tests in the weighted
        bipartite matching algorithm. Two real numbers are considered equal in
        the algorithm if their difference is smaller than this value. This
        is required to avoid the accumulation of numerical errors. If you
        pass C{None} here, igraph will try to determine an appropriate value
        automatically.
      @return: an instance of L{Matching}."""
      if eps is None:
          eps = -1
  
      matches = GraphBase._maximum_bipartite_matching(
          graph, types, weights, eps
      )
      return Matching(graph, matches, types=types)
  
imports: from igraph._igraph import GraphBase
  from igraph.matching import Matching
label_desc: Use image node_id 1 for calling a global function with example usage: _maximum_bipartite_matching(graph, types, weights, eps) and returns: Matching