A decorator to cache results of functions returning
    pd.DataFrame or pd.Series objects under:
    <cache_dir>/<app_name>/<cache_type>/<func_name>.<param_string>.csv,
    missing parts, like app_name and cache_type, will be omitted

    If cache_dir is omitted, stutils 'ST_FS_CACHE_PATH' conf dir will be used.
    If 'ST_FS_CACHE_PATH' is not configured, a temporary directory
    will be created.

    :param app_name: if present, cache files for this application will be
        stored in a separate folder
    :param idx: number of columns to use as an index
    :param cache_type: if present, cache files within app directory will be
        separated into different folders by their cache_type.
    :param expires: cache duration in seconds
    :param cache_dir: set custom file cache path

def fs_cache(app_name='', cache_type='', idx=1,
             expires=DEFAULT_EXPIRES, cache_dir='', helper_class=_FSCacher):
    """
    A decorator to cache results of functions returning
    pd.DataFrame or pd.Series objects under:
    <cache_dir>/<app_name>/<cache_type>/<func_name>.<param_string>.csv,
    missing parts, like app_name and cache_type, will be omitted

    If cache_dir is omitted, stutils 'ST_FS_CACHE_PATH' conf dir will be used.
    If 'ST_FS_CACHE_PATH' is not configured, a temporary directory
    will be created.

    :param app_name: if present, cache files for this application will be
        stored in a separate folder
    :param idx: number of columns to use as an index
    :param cache_type: if present, cache files within app directory will be
        separated into different folders by their cache_type.
    :param expires: cache duration in seconds
    :param cache_dir: set custom file cache path
    """

    def decorator(func):
        return helper_class(func, cache_dir, app_name, cache_type, idx, expires)

    return decorator