Skip to content

Commit dc4d410

Browse files
[executors] fix: implement python3.9 specific plugin loading
1 parent ab82134 commit dc4d410

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

libs/executors/garf_executors/fetchers.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,17 @@
1313
# limitations under the License.
1414

1515
import inspect
16+
import sys
1617
from importlib.metadata import entry_points
1718

1819
from garf_core import exceptions, report_fetcher
1920

2021

2122
def find_fetchers() -> set[str]:
2223
"""Identifiers all available report fetchers."""
23-
return {fetcher.name for fetcher in entry_points(group='garf')}
24+
if entrypoints := _get_entrypoints('garf'):
25+
return {fetcher.name for fetcher in entrypoints}
26+
return set()
2427

2528

2629
def get_report_fetcher(source: str) -> type[report_fetcher.ApiReportFetcher]:
@@ -38,8 +41,7 @@ def get_report_fetcher(source: str) -> type[report_fetcher.ApiReportFetcher]:
3841
"""
3942
if source not in find_fetchers():
4043
raise report_fetcher.MissingApiReportFetcherError(source)
41-
fetchers = entry_points(group='garf')
42-
for fetcher in fetchers:
44+
for fetcher in _get_entrypoints('garf'):
4345
if fetcher.name == source:
4446
try:
4547
fetcher_module = fetcher.load()
@@ -53,3 +55,14 @@ def get_report_fetcher(source: str) -> type[report_fetcher.ApiReportFetcher]:
5355
raise exceptions.ApiReportFetcherError(
5456
f'No fetcher available for the source "{source}"'
5557
)
58+
59+
60+
def _get_entrypoints(group='garf'):
61+
if sys.version_info.major == 3 and sys.version_info.minor == 9:
62+
try:
63+
fetchers = entry_points()[group]
64+
except KeyError:
65+
fetchers = []
66+
else:
67+
fetchers = entry_points(group=group)
68+
return fetchers

0 commit comments

Comments
 (0)