Source code for ax.exceptions.data_provider
#!/usr/bin/env python3
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.
# pyre-strict
from collections.abc import Iterable
from typing import Any
[docs]class DataProviderError(Exception):
"""Base Exception for Ax DataProviders.
The type of the data provider must be included.
The raw error is stored in the data_provider_error section,
and an Ax-friendly message is stored as the actual error message.
"""
def __init__(
self,
message: str,
data_provider: str,
# pyre-fixme[2]: Parameter annotation cannot be `Any`.
data_provider_error: Any,
) -> None:
self.message = message
self.data_provider = data_provider
self.data_provider_error = data_provider_error
def __str__(self) -> str:
return (
"{message}. \n Error thrown by: {dp} data provider \n"
+ "Native {dp} data provider error: {dp_error}"
).format(
dp=self.data_provider,
message=self.message,
dp_error=self.data_provider_error,
)
[docs]class MissingDataError(Exception):
def __init__(self, missing_trial_indexes: Iterable[int]) -> None:
missing_trial_str = ", ".join([str(index) for index in missing_trial_indexes])
self.message: str = (
f"Unable to find data for the following trials: {missing_trial_str} "
"consider updating the data fetching kwargs or manually fetching "
"data via `refetch_data()`"
)
def __str__(self) -> str:
return self.message