summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanglewood <85772166+deeleeramone@users.noreply.github.com>2024-07-02 21:56:57 -0700
committerDanglewood <85772166+deeleeramone@users.noreply.github.com>2024-07-02 21:56:57 -0700
commitd47f8c3876e5799bce7561ab57df0ce9a5205f26 (patch)
tree72763664f8c4c88b397ae5dd757765e096629b06
parent926b1029b71a354a0fd7a41cc4f22d71b3660ec7 (diff)
parentecede0b4e41169c5acacd0b5def49dc4058b5bf0 (diff)
merge branch develop
-rw-r--r--.github/scripts/noxfile.py4
-rw-r--r--.github/workflows/test-unit-cli.yml2
-rw-r--r--.github/workflows/test-unit-platform.yml2
-rw-r--r--openbb_platform/core/openbb_core/app/static/utils/decorators.py2
-rw-r--r--openbb_platform/core/tests/app/test_command_runner.py17
-rw-r--r--openbb_platform/extensions/derivatives/integration/test_derivatives_api.py2
-rw-r--r--openbb_platform/extensions/derivatives/integration/test_derivatives_python.py2
-rw-r--r--openbb_platform/extensions/derivatives/openbb_derivatives/futures/futures_router.py2
-rw-r--r--openbb_platform/extensions/tests/utils/helpers.py35
-rw-r--r--openbb_platform/obbject_extensions/charting/integration/test_charting_python.py1
-rw-r--r--openbb_platform/providers/intrinio/openbb_intrinio/models/options_snapshots.py2
-rw-r--r--openbb_platform/providers/polygon/openbb_polygon/models/currency_snapshots.py4
12 files changed, 49 insertions, 26 deletions
diff --git a/.github/scripts/noxfile.py b/.github/scripts/noxfile.py
index 5bc4af2ce43..7e315394f11 100644
--- a/.github/scripts/noxfile.py
+++ b/.github/scripts/noxfile.py
@@ -13,7 +13,7 @@ CLI_DIR = ROOT_DIR / "cli"
CLI_TESTS = CLI_DIR / "tests"
-@nox.session(python=["3.9", "3.10", "3.11"])
+@nox.session(python=["3.9", "3.10", "3.11", "3.12"])
def unit_test_platform(session):
"""Run the test suite."""
session.install("poetry", "toml")
@@ -31,7 +31,7 @@ def unit_test_platform(session):
)
-@nox.session(python=["3.9", "3.10", "3.11"])
+@nox.session(python=["3.9", "3.10", "3.11", "3.12"])
def unit_test_cli(session):
"""Run the test suite."""
session.install("poetry", "toml")
diff --git a/.github/workflows/test-unit-cli.yml b/.github/workflows/test-unit-cli.yml
index fece7a9397a..fb0562c40ac 100644
--- a/.github/workflows/test-unit-cli.yml
+++ b/.github/workflows/test-unit-cli.yml
@@ -19,7 +19,7 @@ jobs:
matrix:
python_version:
- ["3.9", "3.10", "3.11"]
+ ["3.9", "3.10", "3.11", "3.12"]
steps:
- name: Checkout code
uses: actions/checkout@v4
diff --git a/.github/workflows/test-unit-platform.yml b/.github/workflows/test-unit-platform.yml
index 0e8f9002091..a22cc673ea9 100644
--- a/.github/workflows/test-unit-platform.yml
+++ b/.github/workflows/test-unit-platform.yml
@@ -19,7 +19,7 @@ jobs:
matrix:
python_version:
- ["3.9", "3.10", "3.11"]
+ ["3.9", "3.10", "3.11", "3.12"]
steps:
- name: Checkout code
uses: actions/checkout@v4
diff --git a/openbb_platform/core/openbb_core/app/static/utils/decorators.py b/openbb_platform/core/openbb_core/app/static/utils/decorators.py
index d82f90d5a6b..0b2ea4f0ddd 100644
--- a/openbb_platform/core/openbb_core/app/static/utils/decorators.py
+++ b/openbb_platform/core/openbb_core/app/static/utils/decorators.py
@@ -57,7 +57,7 @@ def exception_handler(func: Callable[P, R]) -> Callable[P, R]:
while tb.tb_next is not None:
tb = tb.tb_next
- if isinstance(e, ValidationError):
+ if isinstance(e, ValidationError) and "Data" not in e.title:
error_list = []
validation_error = f"{e.error_count()} validations error(s)"
for err in e.errors(include_url=False):
diff --git a/openbb_platform/core/tests/app/test_command_runner.py b/openbb_platform/core/tests/app/test_command_runner.py
index 25bfcce178d..092a9d549df 100644
--- a/openbb_platform/core/tests/app/test_command_runner.py
+++ b/openbb_platform/core/tests/app/test_command_runner.py
@@ -254,14 +254,12 @@ def test_parameters_builder_build(mock_func, execution_context):
}
-@patch("openbb_core.app.command_runner.CommandRunner")
-def test_command_runner(_):
+def test_command_runner():
"""Test command runner."""
assert CommandRunner()
-@patch("openbb_core.app.logs.logging_service.LoggingService")
-def test_command_runner_properties(mock_logging_service):
+def test_command_runner_properties():
"""Test properties."""
sys = SystemSettings()
user = UserSettings()
@@ -272,7 +270,6 @@ def test_command_runner_properties(mock_logging_service):
assert runner.system_settings == sys
assert runner.user_settings == user
assert runner.command_map == cmd_map
- assert mock_logging_service.called_once()
@patch("openbb_core.app.command_runner.CommandRunner")
@@ -353,14 +350,14 @@ async def test_static_command_runner_execute_func(
mock_chart.return_value = None
result = await StaticCommandRunner._execute_func(
- "mock/route", (1, 2, 3, 4), execution_context, mock_func, {}
+ "mock/route", (1, 2, 3, 4), execution_context, mock_func, {"chart": True}
)
assert result.results == [1, 2, 3, 4]
- assert mock_logging_service.called_once()
- assert mock_parameters_builder_build.called_once()
- assert mock_command.called_once()
- assert mock_chart.called_once()
+ mock_logging_service.assert_called_once()
+ mock_parameters_builder_build.assert_called_once()
+ mock_command.assert_called_once()
+ mock_chart.assert_called_once()
def test_static_command_runner_chart():
diff --git a/openbb_platform/extensions/derivatives/integration/test_derivatives_api.py b/openbb_platform/extensions/derivatives/integration/test_derivatives_api.py
index 8e52112ead0..bc753851c3b 100644
--- a/openbb_platform/extensions/derivatives/integration/test_derivatives_api.py
+++ b/openbb_platform/extensions/derivatives/integration/test_derivatives_api.py
@@ -139,7 +139,7 @@ def test_derivatives_futures_historical(params, headers):
{
"provider": "cboe",
"symbol": "VX_EOD",
- "date": None,
+ "date": "2024-06-25",
}
),
],
diff --git a/openbb_platform/extensions/derivatives/integration/test_derivatives_python.py b/openbb_platform/extensions/derivatives/integration/test_derivatives_python.py
index 0ba718e01fc..004e2727087 100644
--- a/openbb_platform/extensions/derivatives/integration/test_derivatives_python.py
+++ b/openbb_platform/extensions/derivatives/integration/test_derivatives_python.py
@@ -116,7 +116,7 @@ def test_derivatives_futures_historical(params, obb):
"params",
[
({"provider": "yfinance", "symbol": "ES", "date": None}),
- ({"provider": "cboe", "symbol": "VX", "date": None}),
+ ({"provider": "cboe", "symbol": "VX", "date": "2024-06-25"}),
],
)
@pytest.mark.integration
diff --git a/openbb_platform/extensions/derivatives/openbb_derivatives/futures/futures_router.py b/openbb_platform/extensions/derivatives/openbb_derivatives/futures/futures_router.py
index bc47e4531a9..b5ec30ddbed 100644
--- a/openbb_platform/extensions/derivatives/openbb_derivatives/futures/futures_router.py
+++ b/openbb_platform/extensions/derivatives/openbb_derivatives/futures/futures_router.py
@@ -46,7 +46,7 @@ async def historical(
@router.command(
model="FuturesCurve",
examples=[
- APIEx(parameters={"symbol": "VX", "provider": "cboe"}),
+ APIEx(parameters={"symbol": "VX", "provider": "cboe", "date": "2024-06-25"}),
APIEx(
description="Enter a date to get the term structure from a historical date.",
parameters={"symbol": "NG", "provider": "yfinance", "date": "2023-01-01"},
diff --git a/openbb_platform/extensions/tests/utils/helpers.py b/openbb_platform/extensions/tests/utils/helpers.py
index 35f73ca8b69..a00ba7c5583 100644
--- a/openbb_platform/extensions/tests/utils/helpers.py
+++ b/openbb_platform/extensions/tests/utils/helpers.py
@@ -9,10 +9,12 @@ import os
import re
from ast import AsyncFunctionDef, Call, FunctionDef, Name, parse, unparse
from dataclasses import dataclass
-from importlib.metadata import entry_points
+from importlib.metadata import EntryPoint, entry_points
from inspect import getmembers, isfunction
-from typing import Any, Dict, List, Optional, Set, Tuple
+from sys import version_info
+from typing import Any, Dict, List, Optional, Set, Tuple, Union
+from importlib_metadata import EntryPoints
from openbb_core.app.provider_interface import ProviderInterface
pi = ProviderInterface()
@@ -68,12 +70,18 @@ def check_docstring_examples() -> List[str]:
return errors
+def filter_eps(eps: Union[EntryPoints, dict], group: str) -> Tuple[EntryPoint, ...]:
+ if version_info[:2] == (3, 12):
+ return eps.select(group=group) or () # type: ignore[union-attr]
+ return eps.get(group, ()) # type: ignore[union-attr]
+
+
def list_openbb_extensions() -> Tuple[Set[str], Set[str], Set[str]]:
"""List installed openbb extensions and providers.
Returns
-------
- Tuple[Set[str], Set[str]]
+ Tuple[Set[str], Set[str], Set[str]]
First element: set of installed core extensions.
Second element: set of installed provider extensions.
Third element: set of installed obbject extensions.
@@ -82,15 +90,30 @@ def list_openbb_extensions() -> Tuple[Set[str], Set[str], Set[str]]:
core_extensions = set()
provider_extensions = set()
obbject_extensions = set()
+
entry_points_dict = entry_points()
- for entry_point in entry_points_dict.get("openbb_core_extension", []):
+ # Compatibility for different Python versions
+ if hasattr(entry_points_dict, "select"): # Python 3.12+
+ core_entry_points = entry_points_dict.select(group="openbb_core_extension")
+ provider_entry_points = entry_points_dict.select(
+ group="openbb_provider_extension"
+ )
+ obbject_entry_points = entry_points_dict.select(
+ group="openbb_obbject_extension"
+ )
+ else:
+ core_entry_points = entry_points_dict.get("openbb_core_extension", [])
+ provider_entry_points = entry_points_dict.get("openbb_provider_extension", [])
+ obbject_entry_points = entry_points_dict.get("openbb_obbject_extension", [])
+
+ for entry_point in core_entry_points:
core_extensions.add(f"{entry_point.name}")
- for entry_point in entry_points_dict.get("openbb_provider_extension", []):
+ for entry_point in provider_entry_points:
provider_extensions.add(f"{entry_point.name}")
- for entry_point in entry_points_dict.get("openbb_obbject_extension", []):
+ for entry_point in obbject_entry_points:
obbject_extensions.add(f"{entry_point.name}")
return core_extensions, provider_extensions, obbject_extensions
diff --git a/openbb_platform/obbject_extensions/charting/integration/test_charting_python.py b/openbb_platform/obbject_extensions/charting/integration/test_charting_python.py
index 6b95902bf2c..277f65ea9fe 100644
--- a/openbb_platform/obbject_extensions/charting/integration/test_charting_python.py
+++ b/openbb_platform/obbject_extensions/charting/integration/test_charting_python.py
@@ -661,6 +661,7 @@ def test_charting_derivatives_futures_historical(params, obb):
{
"provider": "cboe",
"symbol": "VX",
+ "date": "2024-06-25",
}
),
],
diff --git a/openbb_platform/providers/intrinio/openbb_intrinio/models/options_snapshots.py b/openbb_platform/providers/intrinio/openbb_intrinio/models/options_snapshots.py
index 9cf96ee639e..476e65d599b 100644
--- a/openbb_platform/providers/intrinio/openbb_intrinio/models/options_snapshots.py
+++ b/openbb_platform/providers/intrinio/openbb_intrinio/models/options_snapshots.py
@@ -327,7 +327,7 @@ class IntrinioOptionsSnapshotsFetcher(
strike = f"{front}{_strike[0]}{_strike[1]}{back}"
return symbol + exp + cp + strike
- if symbols.str.contains(r"\.").any():
+ if symbols.str.contains(r"\.").any(): # noqa # pylint: disable=W1401
df["contract_symbol"] = df["contract_symbol"].apply(apply_contract_symbol)
else:
df["contract_symbol"] = symbols.str.replace("_", "")
diff --git a/openbb_platform/providers/polygon/openbb_polygon/models/currency_snapshots.py b/openbb_platform/providers/polygon/openbb_polygon/models/currency_snapshots.py
index 4e82332ee93..f9078adf7bb 100644
--- a/openbb_platform/providers/polygon/openbb_polygon/models/currency_snapshots.py
+++ b/openbb_platform/providers/polygon/openbb_polygon/models/currency_snapshots.py
@@ -183,7 +183,9 @@ class PolygonCurrencySnapshotsFetcher(
for item in filtered_data:
new_item = {}
new_item["base_currency"] = item.get("base_currency")
- new_item["counter_currency"] = item.get("counter_currency")
+ new_item["counter_currency"] = item.get("counter_currency") or item.get(
+ "index"
+ )
new_item["change"] = item.get("todaysChange", None)
change_percent = item.get("todaysChangePerc", None)
new_item["change_percent"] = (