def south_field_triple(self):
        """Return a description of this field parsable by South."""

        # It's safe to import South at this point; this method
        # will never actually be called unless South is installed.
        from south.modelsinspector import introspector

        # Get the args and kwargs with which this field was generated.
        # The "double" variable name is a riff of of South "triples", since
        #   the `introspector` function only returns the final two elements
        #   of a South triple. This is fine since those two pieces are all
        #   we actually need.
        double = introspector(self.of)

        # Return the appropriate South triple.
        return (
            (self.__class__.__module__, self.__class__.__name__) % '%s.%s',
            [],
            {
                # The `of` argument is *itself* another triple, of
                #   the internal field.
                # The ArrayField constructor understands how to resurrect
                #   its internal field from this serialized state.
                'of': (
                    '{module}.{class_name}'.format(
                        module=self.of.__class__.__module__,
                        class_name=self.of.__class__.__name__,
                    ),
                    double[0],
                    double[1],
                ),
            },
        )
dataset/ETHPy150Open lukesneeringer/django-pgfields/django_pg/models/fields/array.py/ArrayField.south_field_triple/swapped operands of `%`