def __init__(self, process, field, new_field, skip_no_field=False):
        """Construct a process field rename operation.

        :param process: Process slug
        :param field: Dot-separated field path, starting with the top-level
            database field name (must be either ``input`` or ``output``)
        :param new_field: New field name
        """
        self._raw_field = field
        self.field = field.split('.')
        if self.field[0] not in ('input', 'output'):
            raise ValueError("Field path must start with either input or output")
        if len(self.field) < 2:
            raise ValueError("Field path must contain at least two levels")
        if len(self.field) != 2:
            # TODO: Support nested fields.
            raise NotImplementedError("Field path must contain exactly two levels")

        schema_type = self.field.pop(0)

        self.new_field = new_field
        self.skip_no_field = skip_no_field

        super().__init__(
            process=process,
            schema_type=schema_type,
        )
def __init__ ( self , process , field , new_field , skip_no_field = False ) : self . _raw_field = field self . field = field . split ( '.' ) if self . field [ 0 ] not in ( 'input' , 'output' ) : raise ValueError ( "Field path must start with either input or output" ) if len ( self . field ) < 2 : raise ValueError ( "Field path must contain at least two levels" ) if len ( self . field ) != 2 : raise NotImplementedError ( "Field path must contain exactly two levels" ) schema_type = self . field . pop ( 0 ) self . new_field = new_field self . skip_no_field = skip_no_field super ( ) . __init__ ( process = process , schema_type = schema_type , )
Construct a process field rename operation.

        :param process: Process slug
        :param field: Dot-separated field path, starting with the top-level
            database field name (must be either ``input`` or ``output``)
        :param new_field: New field name