Skip to content

Commit 0457415

Browse files
Merge branch 'exec-fetcher' into exec
2 parents 27d7cb5 + baa2024 commit 0457415

File tree

4 files changed

+23
-18
lines changed

4 files changed

+23
-18
lines changed

libs/garf_core/garf_core/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
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'

libs/garf_core/garf_core/report_fetcher.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff 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+
4253
class ApiReportFetcher:
4354
"""Class responsible for getting data from report API.
4455

libs/garf_executors/garf_executors/__init__.py

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,19 +22,13 @@
2222
def 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__ = [

libs/garf_executors/garf_executors/fetchers.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff 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
)

0 commit comments

Comments
 (0)