def show_options(
        self,
        selection: str | None = None,
        base_currency: str | list | None = None,
        quote_currency: str | list | None = None,
    ) -> dict | np.ndarray:
        """
        Retrieve all options for the specified selection.

        This method returns a series containing all available options for the specified
        selection, which can be one of the following: "base_currency", "quote_currency", "exchange", "market".

        Args:
            selection (str. optional): The selection you want to see the options for.
                Choose from: "base_currency" or "quote_currency"
                If not provided, returns data for all base and quote currencies.
            base_currency (str | list | None, optional): Specific base currency to filter options.
                If not provided, returns data for all base currencies.
            quote_currency (str | list | None, optional): Specific quote currency to filter options.
                If not provided, returns data for all quote currencies.

        Returns:
            dict | np.ndarray:
                A dictionary or array with all options for the specified selection.
                If selection is None, returns a dictionary with unique values for all fields.
                If selection is specified, returns an array of unique values for that field.
        """
        selection_values = ["base_currency", "quote_currency"]

        if selection is not None and selection not in selection_values:
            raise ValueError(
                f"The selection variable ({selection}) provided is not valid, "
                f"choose from {', '.join(selection_values)}"
            )

        currencies = self.select(
            base_currency=base_currency,
            quote_currency=quote_currency,
        )

        return (
            {
                column: currencies[column].dropna().sort_values().unique()
                for column in selection_values
            }
            if selection is None
            else currencies[selection].dropna().sort_values().unique()
        )

        Retrieve all options for the specified selection.

        This method returns a series containing all available options for the specified
        selection, which can be one of the following: "base_currency", "quote_currency", "exchange", "market".

        Args:
            selection (str. optional): The selection you want to see the options for.
                Choose from: "base_currency" or "quote_currency"
                If not provided, returns data for all base and quote currencies.
            base_currency (str | list | None, optional): Specific base currency to filter options.
                If not provided, returns data for all base currencies.
            quote_currency (str | list | None, optional): Specific quote currency to filter options.
                If not provided, returns data for all quote currencies.

        Returns:
            dict | np.ndarray:
                A dictionary or array with all options for the specified selection.
                If selection is None, returns a dictionary with unique values for all fields.
                If selection is specified, returns an array of unique values for that field.
        
financedatabase/Currencies.py