Iterates over all paths that are in a directory and its subdirectory, returning 
    fully-specified paths.

def _iter_full_paths(path_list):
    """
    Iterates over all paths that are in a directory and its subdirectory, returning 
    fully-specified paths.
    """
    for path in path_list:
        if not os.path.isdir(path):
            full_path = os.path.realpath(path)
            yield path
        else:
            for root, dirs, filenames in os.walk(path):
                for filename in filenames:
                    full_path = os.path.realpath(os.path.join(root, filename))
                    yield full_path