summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormontezdesousa <79287829+montezdesousa@users.noreply.github.com>2024-03-14 16:41:01 +0000
committerGitHub <noreply@github.com>2024-03-14 16:41:01 +0000
commiteca4ea9d2d54b06f7fe13c980f2ea5207a716357 (patch)
treed479eea1a8e6ff19e7f09bf31f2dc5fc769c82bc
parentf62f6d7308e297bf1dd389ea41cf831fa1877b9f (diff)
[BugFix] - Json schema extra broken in standard models (#6212)
* Separate standard models in registry map * fix --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com>
-rw-r--r--openbb_platform/core/openbb_core/provider/registry_map.py21
-rw-r--r--openbb_platform/openbb/assets/reference.json4
-rw-r--r--openbb_platform/openbb/package/economy.py10
3 files changed, 17 insertions, 18 deletions
diff --git a/openbb_platform/core/openbb_core/provider/registry_map.py b/openbb_platform/core/openbb_core/provider/registry_map.py
index 0742c54d849..38c49aadef2 100644
--- a/openbb_platform/core/openbb_core/provider/registry_map.py
+++ b/openbb_platform/core/openbb_core/provider/registry_map.py
@@ -1,6 +1,7 @@
"""Provider registry map."""
import sys
+from copy import deepcopy
from inspect import getfile, isclass
from pathlib import Path
from typing import Any, Dict, List, Literal, Optional, Tuple, get_origin
@@ -82,9 +83,10 @@ class RegistryMap:
standard_data, extra_data = self.extract_info(fetcher, "data")
if model_name not in map_:
map_[model_name] = {}
+ # The deepcopy avoids modifications from one model to affect another
map_[model_name]["openbb"] = {
- "QueryParams": standard_query,
- "Data": standard_data,
+ "QueryParams": deepcopy(standard_query),
+ "Data": deepcopy(standard_data),
}
map_[model_name][p] = {
"QueryParams": extra_query,
@@ -98,7 +100,7 @@ class RegistryMap:
{p: {"model": provider_model, "is_list": is_list}}
)
- self._merge_json_schema_extra(p, fetcher, standard_query, extra_query)
+ self._merge_json_schema_extra(p, fetcher, map_[model_name])
return map_, return_schemas
@@ -106,17 +108,18 @@ class RegistryMap:
self,
provider: str,
fetcher: Fetcher,
- standard_query: dict,
- extra_query: dict,
+ model_map: dict,
):
"""Merge json schema extra for different providers"""
model: BaseModel = RegistryMap._get_model(fetcher, "query_params")
+ std_fields = model_map["openbb"]["QueryParams"]["fields"]
+ extra_fields = model_map[provider]["QueryParams"]["fields"]
for f, props in getattr(model, "__json_schema_extra__", {}).items():
for p in props:
- if f in standard_query["fields"]:
- model_field = standard_query["fields"][f]
- elif f in extra_query["fields"]:
- model_field = extra_query["fields"][f]
+ if f in std_fields:
+ model_field = std_fields[f]
+ elif f in extra_fields:
+ model_field = extra_fields[f]
else:
continue
diff --git a/openbb_platform/openbb/assets/reference.json b/openbb_platform/openbb/assets/reference.json
index 465a0f4bb6f..6b304444527 100644
--- a/openbb_platform/openbb/assets/reference.json
+++ b/openbb_platform/openbb/assets/reference.json
@@ -2855,8 +2855,8 @@
"standard": [
{
"name": "symbol",
- "type": "Union[str, List[str]]",
- "description": "Symbol to get data for. Multiple items allowed for provider(s): fred.",
+ "type": "str",
+ "description": "Symbol to get data for.",
"default": "",
"optional": false
},
diff --git a/openbb_platform/openbb/package/economy.py b/openbb_platform/openbb/package/economy.py
index d5c9b9e9122..b14cf8a76bd 100644
--- a/openbb_platform/openbb/package/economy.py
+++ b/openbb_platform/openbb/package/economy.py
@@ -429,10 +429,7 @@ class ROUTER_economy(Container):
def fred_regional(
self,
symbol: Annotated[
- Union[str, List[str]],
- OpenBBCustomParameter(
- description="Symbol to get data for. Multiple items allowed for provider(s): fred."
- ),
+ str, OpenBBCustomParameter(description="Symbol to get data for.")
],
start_date: Annotated[
Union[datetime.date, None, str],
@@ -464,8 +461,8 @@ class ROUTER_economy(Container):
Parameters
----------
- symbol : Union[str, List[str]]
- Symbol to get data for. Multiple items allowed for provider(s): fred.
+ symbol : str
+ Symbol to get data for.
start_date : Union[datetime.date, None, str]
Start date of the data, in YYYY-MM-DD format.
end_date : Union[datetime.date, None, str]
@@ -579,7 +576,6 @@ class ROUTER_economy(Container):
"limit": limit,
},
extra_params=kwargs,
- extra_info={"symbol": {"multiple_items_allowed": ["fred"]}},
)
)