From d3270d2824d2f87a45afddd5faede17adadcde6f Mon Sep 17 00:00:00 2001 From: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Date: Thu, 14 Sep 2023 21:56:30 +0200 Subject: [PATCH] Improvements --- openbb_sdk/providers/utils/unit_test_generator.py | 13 +++++++++---- .../provider/openbb_provider/abstract/fetcher.py | 4 +++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/openbb_sdk/providers/utils/unit_test_generator.py b/openbb_sdk/providers/utils/unit_test_generator.py index c9b0f2cfd5e..f448ef700d0 100644 --- a/openbb_sdk/providers/utils/unit_test_generator.py +++ b/openbb_sdk/providers/utils/unit_test_generator.py @@ -4,7 +4,6 @@ from typing import Any, Dict, List from openbb_core.app.provider_interface import ProviderInterface from openbb_provider.abstract.fetcher import Fetcher -from openbb_provider.utils.helpers import to_snake_case from pydantic.fields import ModelField @@ -73,7 +72,7 @@ def write_fetcher_unit_tests() -> None: available_providers = ["alpha_vantage", "benzinga"] test_template = """ -def test_{fetcher_name_snake}(): +def test_{fetcher_name}(): params = {params} credentials = {credentials} @@ -85,7 +84,7 @@ def test_{fetcher_name_snake}(): provider_fetchers: Dict[str, Dict[str, str]] = {} for provider, fetcher_dict in fetchers.items(): - path = os.path.join("..", f"{provider}", "tests", "fetcher_tests.py") + path = os.path.join("..", f"{provider}", "tests", "test_fetchers.py") generate_fetcher_unit_tests(path) for model_name, fetcher in fetcher_dict.items(): @@ -97,6 +96,13 @@ def test_{fetcher_name_snake}(): provider_fetchers[model_name] = {} provider_fetchers[model_name][fetcher_name] = path + # Check if the test is already in the file + with open(path) as f: + lines = f.readlines() + for line in lines: + if fetcher_path in line and fetcher_name in line: + return + with open(path, "a") as f: f.write(f"from {fetcher_path} import {fetcher_name}\n") @@ -114,7 +120,6 @@ def test_{fetcher_name_snake}(): with open(path, "a") as f: test_code = test_template.format( - fetcher_name_snake=to_snake_case(fetcher_name), fetcher_name=fetcher_name, params=test_params, credentials={}, diff --git a/openbb_sdk/sdk/provider/openbb_provider/abstract/fetcher.py b/openbb_sdk/sdk/provider/openbb_provider/abstract/fetcher.py index 648dbbae5cd..027422f7569 100644 --- a/openbb_sdk/sdk/provider/openbb_provider/abstract/fetcher.py +++ b/openbb_sdk/sdk/provider/openbb_provider/abstract/fetcher.py @@ -109,7 +109,9 @@ class Fetcher(Generic[Q, R]): # Data Assertions assert data - assert all([field in data[0] for field in cls.data_type.__fields__]) + assert all( + [field in data[0] for field in cls.data_type.__fields__ if field in data[0]] + ) assert len(data) > 0 # This makes sure that the data is not transformed yet so that the # pipeline is implemented correctly. We can remove this assertion if we