nodes: 0, module; 1, function_definition; 2, function_name:merge; 3, parameters; 4, block; 5, identifier:left; 6, identifier:right; 7, default_parameter; 8, default_parameter; 9, default_parameter; 10, default_parameter; 11, default_parameter; 12, default_parameter; 13, default_parameter; 14, default_parameter; 15, default_parameter; 16, default_parameter; 17, default_parameter; 18, expression_statement; 19, if_statement; 20, return_statement; 21, identifier:how; 22, string:"inner"; 23, identifier:on; 24, None; 25, identifier:left_on; 26, None; 27, identifier:right_on; 28, None; 29, identifier:left_index; 30, False; 31, identifier:right_index; 32, False; 33, identifier:sort; 34, False; 35, identifier:suffixes; 36, tuple; 37, identifier:copy; 38, True; 39, identifier:indicator; 40, False; 41, identifier:validate; 42, None; 43, comment:"""Database style join, where common columns in "on" are merged.
  
      Args:
          left: DataFrame.
          right: DataFrame.
          how: What type of join to use.
          on: The common column name(s) to join on. If None, and left_on and
              right_on  are also None, will default to all commonly named
              columns.
          left_on: The column(s) on the left to use for the join.
          right_on: The column(s) on the right to use for the join.
          left_index: Use the index from the left as the join keys.
          right_index: Use the index from the right as the join keys.
          sort: Sort the join keys lexicographically in the result.
          suffixes: Add this suffix to the common names not in the "on".
          copy: Does nothing in our implementation
          indicator: Adds a column named _merge to the DataFrame with
              metadata from the merge about each row.
          validate: Checks if merge is a specific type.
  
      Returns:
           A merged Dataframe
          """; 44, not_operator; 45, block; 46, call; 47, string:"_x"; 48, string:"_y"; 49, call; 50, raise_statement; 51, attribute; 52, argument_list; 53, identifier:isinstance; 54, argument_list; 55, call; 56, identifier:left; 57, identifier:merge; 58, identifier:right; 59, keyword_argument; 60, keyword_argument; 61, keyword_argument; 62, keyword_argument; 63, keyword_argument; 64, keyword_argument; 65, keyword_argument; 66, keyword_argument; 67, keyword_argument; 68, keyword_argument; 69, keyword_argument; 70, identifier:left; 71, identifier:DataFrame; 72, identifier:ValueError; 73, argument_list; 74, identifier:how; 75, identifier:how; 76, identifier:on; 77, identifier:on; 78, identifier:left_on; 79, identifier:left_on; 80, identifier:right_on; 81, identifier:right_on; 82, identifier:left_index; 83, identifier:left_index; 84, identifier:right_index; 85, identifier:right_index; 86, identifier:sort; 87, identifier:sort; 88, identifier:suffixes; 89, identifier:suffixes; 90, identifier:copy; 91, identifier:copy; 92, identifier:indicator; 93, identifier:indicator; 94, identifier:validate; 95, identifier:validate; 96, call; 97, attribute; 98, argument_list; 99, string:"can not merge DataFrame with instance of type {}"; 100, identifier:format; 101, call; 102, identifier:type; 103, argument_list; 104, identifier:right
code: def merge(
      left,
      right,
      how="inner",
      on=None,
      left_on=None,
      right_on=None,
      left_index=False,
      right_index=False,
      sort=False,
      suffixes=("_x", "_y"),
      copy=True,
      indicator=False,
      validate=None,
  ):
      """Database style join, where common columns in "on" are merged.
  
      Args:
          left: DataFrame.
          right: DataFrame.
          how: What type of join to use.
          on: The common column name(s) to join on. If None, and left_on and
              right_on  are also None, will default to all commonly named
              columns.
          left_on: The column(s) on the left to use for the join.
          right_on: The column(s) on the right to use for the join.
          left_index: Use the index from the left as the join keys.
          right_index: Use the index from the right as the join keys.
          sort: Sort the join keys lexicographically in the result.
          suffixes: Add this suffix to the common names not in the "on".
          copy: Does nothing in our implementation
          indicator: Adds a column named _merge to the DataFrame with
              metadata from the merge about each row.
          validate: Checks if merge is a specific type.
  
      Returns:
           A merged Dataframe
          """
      if not isinstance(left, DataFrame):
          raise ValueError(
              "can not merge DataFrame with instance of type {}".format(type(right))
          )
  
      return left.merge(
          right,
          how=how,
          on=on,
          left_on=left_on,
          right_on=right_on,
          left_index=left_index,
          right_index=right_index,
          sort=sort,
          suffixes=suffixes,
          copy=copy,
          indicator=indicator,
          validate=validate,
      )