def isfixed(ds):
    ds = dshape(ds)
    if isinstance(ds[0], TypeVar):
        return None  # don't know
    if isinstance(ds[0], Var):
        return False
    if isinstance(ds[0], Record):
        return all(map(isfixed, ds[0].types))
    if len(ds) > 1:
        return isfixed(ds.subarray(1))
    return True
This decorator can be used to turn simple functions
dataset/ETHPy150Open blaze/datashape/datashape/predicates.py/isfixed--crossover with--dataset/ETHPy150Open bartdag/recodoc2/recodoc2/apps/docutil/commands_util.py/simple_decorator