summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenrique Joaquim <henriquecjoaquim@gmail.com>2024-07-03 09:36:46 +0100
committerGitHub <noreply@github.com>2024-07-03 09:36:46 +0100
commit2a275fac86bf851284b453ae4212e2b4398ddb11 (patch)
tree9c48f83150dcfceb2d261ae04185e404fd1347ab
parent7b2e77a2b33e032dc239faef97de0fd0bff75184 (diff)
parentecede0b4e41169c5acacd0b5def49dc4058b5bf0 (diff)
Merge branch 'develop' into bugfix/uncover-cmd-len-warnbugfix/uncover-cmd-len-warn
-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 7c20059c100..ac792869aa2 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.LoggingService")
-def test_command_runner(_):
+def test_command_runner():
"""Test command runner."""
assert CommandRunner()
-@patch("openbb_core.app.command_runner.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.LoggingService")
@@ -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 590b5f15764..3bef6a72611 100644
--- a/openbb_platform/providers/intrinio/openbb_intrinio/models/options_snapshots.py
+++ b/openbb_platform/providers/intrinio/openbb_intrinio/models/options_snapshots.py
@@ -316,7 +316,7 @@ class IntrinioOptionsSnapshotsFetcher(
strike = f"{front}{_strike[0]}{_strike[1]}{back}"
return symbol + exp + cp + strike
- if symbols.str.contains("\.").any(): # noqa # pylint: disable=W1401
+ 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 4f024bfc3a8..7acae46e95a 100644
--- a/openbb_platform/providers/polygon/openbb_polygon/models/currency_snapshots.py
+++ b/openbb_platform/providers/polygon/openbb_polygon/models/currency_snapshots.py
@@ -177,7 +177,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"] = (