<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def swap_columns(self, column_name_1, column_name_2, inplace=False):
 """ Swaps the columns with the given names. If inplace == False (default) this operation does not modify the current SFrame, returning a new SFrame. If inplace == True, this operation modifies the current SFrame, returning self. Parameters column_name_1 : string Name of column to swap column_name_2 : string Name of other column to swap inplace : bool, optional. Defaults to False. Whether the SFrame is modified in place. """

        if inplace:
            self.__is_dirty__ = True
            with cython_context():
                if self._is_vertex_frame():
                    graph_proxy = self.__graph__.__proxy__.swap_vertex_fields(column_name_1, column_name_2)
                    self.__graph__.__proxy__ = graph_proxy
                elif self._is_edge_frame():
                    graph_proxy = self.__graph__.__proxy__.swap_edge_fields(column_name_1, column_name_2)
                    self.__graph__.__proxy__ = graph_proxy
            return self
        else:
            return super(GFrame, self).swap_columns(column_name_1, column_name_2, inplace=inplace)