def show_options(
    selection: str | None = None,
    base_url: str = DATA_REPO,
    use_local_location: bool = False,
) -> dict:
    """
    Get available category options for a specific asset class.

    Provides a dictionary of all available categories for the specified
    asset class without requiring class initialization.

    Args:
        selection: Asset class to get options for. Can be one of:
            'equities', 'etfs', 'funds', 'indices', 'currencies',
            'cryptos', 'moneymarkets'.
        base_url: Custom URL or file path location.
            Defaults to the GitHub repository.
        use_local_location: Whether to use a local file path.
            Defaults to False.

    Returns:
        Dictionary mapping category names to their possible values.

    Raises:
        ValueError: If selection is None or invalid.
        Exception: If unable to load data from the specified location.
    """
    selection_values = [
        "equities",
        "etfs",
        "funds",
        "indices",
        "currencies",
        "cryptos",
        "moneymarkets",
    ]
    if selection is None:
        raise ValueError(
            "The 'selection' variable is not set. Please provide a valid selection.\n"
            f"The available options are: {', '.join(selection_values)}"
        )
    if selection not in selection_values:
        raise ValueError(
            f"The selection variable provided is not valid, "
            f"choose from {', '.join(selection_values)}"
        )

    the_path = str(file_path) + "/" if use_local_location else base_url
    the_path += f"/categories/{selection}_categories.gzip"

    try:
        if use_local_location:
            categories_df = pd.read_csv(the_path, compression="gzip", index_col=0)
        else:
            response = requests.get(the_path, headers=HEADERS, timeout=60)
            response.raise_for_status()

            categories_df = pd.read_csv(
                pd.io.common.BytesIO(response.content), compression="gzip", index_col=0
            )
    except requests.exceptions.RequestException as error:
        raise ValueError(
            f"Failed to load data from {the_path}: {str(error)}.\n"
            "Ensure you are able to access the file. "
            "It is possible it fails due to a firewall or other security settings. "
            "Sometimes Google Colab is also the culprit."
        ) from error

    categories = {
        index: categories_df.loc[index].dropna().to_numpy()
        for index in categories_df.index
    }

    return categories

    Get available category options for a specific asset class.

    Provides a dictionary of all available categories for the specified
    asset class without requiring class initialization.

    Args:
        selection: Asset class to get options for. Can be one of:
            'equities', 'etfs', 'funds', 'indices', 'currencies',
            'cryptos', 'moneymarkets'.
        base_url: Custom URL or file path location.
            Defaults to the GitHub repository.
        use_local_location: Whether to use a local file path.
            Defaults to False.

    Returns:
        Dictionary mapping category names to their possible values.

    Raises:
        ValueError: If selection is None or invalid.
        Exception: If unable to load data from the specified location.
    
financedatabase/helpers.py