class_docstr: Class which stores vertex and edge properties that can be used to construct
  Graphs from individual property selections and used later to annotate graph
  algorithm results with corresponding properties.
class_docstr_tok: ["Class","which","stores","vertex","and","edge","properties","that","can","be","used","to","construct","Graphs","from","individual","property","selections","and","used","later","to","annotate","graph","algorithm","results","with","corresponding","properties","."]
docstr: Return True if df has rows with the same src, dst, type, and columns
  
  Parameters
  ----------
  df : dataframe
      Containing the edges to test test for duplicates
  columns : list of strings, optional
      List of column names to use when testing for duplicate edges in
      addition to source, destination and type.
  
  Returns
  -------
  bool
      True if df has multiple rows with the same source, destination and type
      plus columns that are specified.
  
  Examples
  --------
  >>> import cugraph
  >>> import cudf
  >>> from cugraph.experimental import PropertyGraph
  >>> df = cudf.DataFrame(columns=["src", "dst", "some_property"],
  ...                     data=[(99, 22, "a"),
  ...                           (98, 34, "b"),
  ...                           (97, 56, "c"),
  ...                           (96, 88, "d"),
  ...                          ])
  >>> pG = PropertyGraph()
  >>> pG.add_edge_data(df, type_name="etype", vertex_col_names=("src", "dst"))
  >>> PropertyGraph.has_duplicate_edges(pG.get_edge_data())
  False
code: def has_duplicate_edges(cls, df, columns=None):
      """
      Return True if df has rows with the same src, dst, type, and columns
  
      Parameters
      ----------
      df : dataframe
          Containing the edges to test test for duplicates
      columns : list of strings, optional
          List of column names to use when testing for duplicate edges in
          addition to source, destination and type.
  
      Returns
      -------
      bool
          True if df has multiple rows with the same source, destination and type
          plus columns that are specified.
  
      Examples
      --------
      >>> import cugraph
      >>> import cudf
      >>> from cugraph.experimental import PropertyGraph
      >>> df = cudf.DataFrame(columns=["src", "dst", "some_property"],
      ...                     data=[(99, 22, "a"),
      ...                           (98, 34, "b"),
      ...                           (97, 56, "c"),
      ...                           (96, 88, "d"),
      ...                          ])
      >>> pG = PropertyGraph()
      >>> pG.add_edge_data(df, type_name="etype", vertex_col_names=("src", "dst"))
      >>> PropertyGraph.has_duplicate_edges(pG.get_edge_data())
      False
      """
      cols = [cls.src_col_name, cls.dst_col_name, cls.type_col_name]
      if columns:
          cols.extend(columns)
      return cls._has_duplicates(df, cols)
  
imports: import cudf
  import numpy
  import cugraph
  from cugraph.utilities.utils import import_optional, MissingModule, create_list_series_from_2d_ar
  from typing import Union
label_desc: Use image node_id 39 for calling the EXPERIMENTAL__PropertyGraph obj's underlying member method code with example usage: obj.has_duplicate_edges(cls, df, columns) and returns: cls