File tree Expand file tree Collapse file tree 4 files changed +23
-18
lines changed
garf_executors/garf_executors Expand file tree Collapse file tree 4 files changed +23
-18
lines changed Original file line number Diff line number Diff line change 1212# See the License for the specific language governing permissions and
1313# limitations under the License.
1414
15- __version__ = '0.1.1 '
15+ __version__ = '0.1.2 '
Original file line number Diff line number Diff line change @@ -39,6 +39,17 @@ class ApiReportFetcherError(exceptions.GarfError):
3939 """Base exception for all ApiReportFetchers."""
4040
4141
42+ class MissingApiReportFetcherError (ApiReportFetcherError ):
43+ """Exception for not found report fetcher."""
44+
45+ def __init__ (self , source : str ) -> None :
46+ """Initializes MissingApiReportFetcherError."""
47+ self .source = source
48+
49+ def __str__ (self ) -> str :
50+ return f'No fetcher available for the source "{ self .source } "'
51+
52+
4253class ApiReportFetcher :
4354 """Class responsible for getting data from report API.
4455
Original file line number Diff line number Diff line change 2222def setup_executor (source : str , fetcher_parameters : dict [str , str ]):
2323 """Initializes executors based on a source and parameters."""
2424 if source == 'bq' :
25- query_executor = bq_executor .BigQueryExecutor (** fetcher_parameters )
26- elif source == 'sqldb' :
27- query_executor = (
28- sql_executor .SqlAlchemyQueryExecutor .from_connection_string (
29- fetcher_parameters .get ('connection_string' )
30- )
25+ return bq_executor .BigQueryExecutor (** fetcher_parameters )
26+ if source == 'sqldb' :
27+ return sql_executor .SqlAlchemyQueryExecutor .from_connection_string (
28+ fetcher_parameters .get ('connection_string' )
3129 )
32- else :
33- concrete_api_fetcher = fetchers .get_report_fetcher (source )
34- query_executor = ApiQueryExecutor (
35- concrete_api_fetcher (** fetcher_parameters )
36- )
37- return query_executor
30+ concrete_api_fetcher = fetchers .get_report_fetcher (source )
31+ return ApiQueryExecutor (concrete_api_fetcher (** fetcher_parameters ))
3832
3933
4034__all__ = [
Original file line number Diff line number Diff line change @@ -33,8 +33,11 @@ def get_report_fetcher(source: str) -> type[report_fetcher.ApiReportFetcher]:
3333 Class for a found report fetcher.
3434
3535 Raises:
36- ApiReportFetcherError: When fetcher not found or cannot be loaded.
36+ ApiReportFetcherError: When fetcher cannot be loaded.
37+ MissingApiReportFetcherError: When fetcher not found.
3738 """
39+ if source not in find_fetchers ():
40+ raise report_fetcher .MissingApiReportFetcherError (source )
3841 fetchers = entry_points (group = 'garf' )
3942 for fetcher in fetchers :
4043 if fetcher .name == source :
@@ -46,10 +49,7 @@ def get_report_fetcher(source: str) -> type[report_fetcher.ApiReportFetcher]:
4649 ):
4750 return getattr (fetcher_module , name )
4851 except ModuleNotFoundError :
49- raise exceptions .ApiReportFetcherError (
50- f'Failed to load fetcher for source "{ source } "'
51- )
52- continue
52+ continue
5353 raise exceptions .ApiReportFetcherError (
5454 f'No fetcher available for the source "{ source } "'
5555 )
You can’t perform that action at this time.
0 commit comments