def clear_all_none(args):
    """ Strip all None from a key/value structure, including keys which nested them

    Args:
        args (dict): key/value pairs which may contain None values

    Returns:
        dict: structure with all None removed and no empty values

    Example:
        >>> clear_all_none({'a': 1, 'b': {'c': None}})
        {'a': 1}
    """
    return dict((x, y) for x, y in [
                (k, (v if not isinstance(v, dict) else clear_all_none(v)))
                for k, v in args.items() if v is not None ] if y != {})