def clean(self, data, initial=None):
        ret = list()
        for i, data_item in enumerate(data):
            if data_item.get('DELETE', False):
                continue
            if initial and len(initial) > i:
                initial_item = initial[i]
            else:
                initial_item = None
            val = self.subfield.bound_data(data_item['value'], initial_item)
            
            arg_spec = inspect.getargspec(self.subfield.clean)
            try:
                if len(arg_spec.args) > 2:
                    val = self.subfield.clean(val, initial_item)
                else:
                    val = self.subfield.clean(val)
            except __HOLE__:
                if val:
                    raise
            else:
                if val:
                    ret.append((val, data_item.get('ORDER', None)))
        
        def compare_ordering_key(k):
            if k[1] is None:
                return (1, 0) # +infinity, larger than any number
            return (0, k[1])
        
        ret.sort(key=compare_ordering_key)
        return [item[0] for item in ret]
dataset/ETHPy150Open zbyte64/django-dockit/dockit/forms/fields.py/PrimitiveListField.clean