def METHOD_NAME(
    self, token_address_1: str, token_address_2: str = ETH_TOKEN_ADDRESS
) -> float:
    if token_address_1 == token_address_2:
        return 1.0
    try:
        # Get decimals for token, estimation will be more accurate
        decimals = get_decimals(token_address_1, self.ethereum_client)
        token_unit = int(10**decimals)
        (
            expected_rate,
            _,
        ) = self.kyber_network_proxy_contract.functions.getExpectedRate(
            token_address_1, token_address_2, int(token_unit)
        ).call()
        price = expected_rate / 1e18
        if price <= 0.0:
            # Try again the opposite
            (
                expected_rate,
                _,
            ) = self.kyber_network_proxy_contract.functions.getExpectedRate(
                token_address_2, token_address_1, int(token_unit)
            ).call()
            price = (token_unit / expected_rate) if expected_rate else 0
        if price <= 0.0:
            message = (
                f"price={price} <= 0 from kyber-network-proxy={self.kyber_network_proxy_address} "
                f"for token-1={token_address_1} to token-2={token_address_2}"
            )
            logger.debug(message)
            raise InvalidPriceFromOracle(message)
        return price
    except (Web3Exception, DecodingError, ValueError) as e:
        message = (
            f"Cannot get price from kyber-network-proxy={self.kyber_network_proxy_address} "
            f"for token-1={token_address_1} to token-2={token_address_2}"
        )
        logger.debug(message)
        raise CannotGetPriceFromOracle(message) from e