def select(
        self,
        base_currency: str | list | None = None,
        quote_currency: str | list | None = None,
    ) -> pd.DataFrame:
        """
        Retrieve currency data based on specified criteria.

        This method allows you to retrieve data for specific base or quote currencies,
        with the option to customize the capitalization of currency names. If no input
        criteria are provided, it returns data for all currencies.

        Args:
            base_currency (str | list | None, optional): Specific base currency to retrieve data for.
                If not provided, returns data for all base currencies.
            quote_currency (str | list | None, optional): Specific quote currency to retrieve data for.
                If not provided, returns data for all quote currencies.

        Raises:
            ValueError: If the specified base or quote currency is not available in the database.
                Please check the available base and quote currencies using the 'show_options' method.

        Returns:
            pd.DataFrame:
                A DataFrame containing currency data matching the specified input criteria.
        """
        currencies = self.data.copy(deep=True)

        if base_currency:
            base_currencies = (
                [base_currency] if isinstance(base_currency, str) else base_currency
            )
            base_currencies_lower = [currency.lower() for currency in base_currencies]
            options_lower = [
                option.lower()
                for option in self.show_options(selection="base_currency")
            ]

            for base_currency_lower, base_currency_actual in zip(
                base_currencies_lower, base_currencies
            ):
                if base_currency_lower not in options_lower:
                    raise ValueError(
                        f"The base currency '{base_currency_actual}' is not available in the database. "
                        "Please check the available base currencies using the 'show_options' method."
                    )

            currencies = currencies[
                currencies["base_currency"].str.lower().isin(base_currencies_lower)
            ]

        if quote_currency:
            quote_currencies = (
                [quote_currency] if isinstance(quote_currency, str) else quote_currency
            )
            quote_currencies_lower = [currency.lower() for currency in quote_currencies]
            options_lower = [
                option.lower()
                for option in self.show_options(selection="quote_currency")
            ]
            for quote_currency_lower, quote_currency_actual in zip(
                quote_currencies_lower, quote_currencies
            ):
                if quote_currency_lower not in options_lower:
                    raise ValueError(
                        f"The quote currency '{quote_currency_actual}' is not available in the database. "
                        "Please check the available quote currencies using the 'show_options' method."
                    )
            currencies = currencies[
                currencies["quote_currency"].str.lower().isin(quote_currencies_lower)
            ]

        return FinanceFrame(currencies)

        Retrieve currency data based on specified criteria.

        This method allows you to retrieve data for specific base or quote currencies,
        with the option to customize the capitalization of currency names. If no input
        criteria are provided, it returns data for all currencies.

        Args:
            base_currency (str | list | None, optional): Specific base currency to retrieve data for.
                If not provided, returns data for all base currencies.
            quote_currency (str | list | None, optional): Specific quote currency to retrieve data for.
                If not provided, returns data for all quote currencies.

        Raises:
            ValueError: If the specified base or quote currency is not available in the database.
                Please check the available base and quote currencies using the 'show_options' method.

        Returns:
            pd.DataFrame:
                A DataFrame containing currency data matching the specified input criteria.
        
financedatabase/Currencies.py