def is_a(klass=None, search_attr=None, fk=False, m2m=False, o2o=False,
                exclude=False, delimiter=';', skip_missing=False,
                prefetch=True, assign_by_id=False):

    if exclude is not True:

        if not (klass and search_attr):
            raise ImproperlyConfigured(
                'you have to specify at least `klass`, `search_attr` and '
                'a type of relation')

        if not (inspect.isclass(klass) and issubclass(klass, Model) ):
            raise ImproperlyConfigured(
                'you have to specify a subclass of Model as `klass`')

        if len([ e for e in [fk, m2m, o2o] if e ]) != 1:
            raise ImproperlyConfigured('a column has to be either `fk`, `m2m` or `o2o`')

        if assign_by_id and not prefetch:
            raise ImproperlyConfigured(
                    'assign_by_id is only allowed with prefetch=True')

    return { 'm2m': m2m, 'klass': klass, 'fk': fk, 'o2o': o2o,
             'attr': search_attr, 'exclude': exclude, 'delimiter': delimiter,
             'skip_missing': skip_missing, 'prefetch': prefetch,
             'assign_by_id': assign_by_id
            }
Generates a uniform set of information out of the supplied data and does
dataset/ETHPy150Open pboehm/django-data-migration/data_migration/migration.py/is_a