def _check_argument_units(args, defaults, dimensionality):
    """Yield arguments with improper dimensionality."""
    for arg, val in args.items():
        try:
            need, parsed = dimensionality[arg]
        except KeyError:
            continue
        if arg in defaults:
            check = val == defaults[arg]
            if check:
                continue
        try:
            if val.dimensionality != parsed:
                yield arg, val.units, need
        except AttributeError:
            if parsed != '':
                yield arg, 'none', need
