<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def data_dirpath(task=None, **kwargs):
 """Get the path of the corresponding data directory. Parameters task : str, optional The task for which datasets in the desired directory are used for. If not given, a path for the corresponding task-agnostic directory is returned. **kwargs : extra keyword arguments Extra keyword arguments, representing additional attributes of the datasets, are used to generate additional sub-folders on the path. For example, providing 'lang=en' will results in a path such as '/barn_base_dir/regression/lang_en/mydataset.csv'. Hierarchy always matches lexicographical order of keyword argument names, so 'lang=en' and 'animal=dog' will result in a path such as 'barn_base_dir/task_name/animal_dof/lang_en/dset.csv'. Returns ------- str The path to the desired dir. """

    path = _base_dir()
    if task:
        path = os.path.join(path, _snail_case(task))
    for k, v in sorted(kwargs.items()):
        subdir_name = '{}_{}'.format(_snail_case(k), _snail_case(v))
        path = os.path.join(path, subdir_name)
    os.makedirs(path, exist_ok=True)
    return path