diff --git a/openbb_sdk/openbb/__init__.py b/openbb_sdk/openbb/__init__.py index 0c30e50eb83..6937de92af8 100644 --- a/openbb_sdk/openbb/__init__.py +++ b/openbb_sdk/openbb/__init__.py @@ -5,7 +5,10 @@ import os from pathlib import Path from typing import List, Optional, Union -from openbb_core.app.static.utils import auto_build as _auto_build, build as _build +from openbb_core.app.static.build_utils import ( + auto_build as _auto_build, + build as _build, +) from openbb_core.app.static.app_factory import ( create_app as _create_app, BaseApp as _BaseApp, diff --git a/openbb_sdk/openbb/package/extension_map.json b/openbb_sdk/openbb/package/extension_map.json index 916016bf1fc..508b6e9bfa8 100644 --- a/openbb_sdk/openbb/package/extension_map.json +++ b/openbb_sdk/openbb/package/extension_map.json @@ -1,16 +1,16 @@ { "openbb_core_extension": [ - "crypto", - "economy", - "fixedincome", - "forex", - "news", - "stocks" + "crypto@0.1.0", + "economy@0.1.0", + "fixedincome@0.1.0", + "forex@0.1.0", + "news@0.1.0", + "stocks@0.1.0" ], "openbb_provider_extension": [ - "benzinga", - "fmp", - "fred", - "polygon" + "benzinga@0.1.0", + "fmp@0.1.0", + "fred@0.1.0", + "polygon@0.1.0" ] } \ No newline at end of file diff --git a/openbb_sdk/sdk/core/openbb_core/app/static/utils.py b/openbb_sdk/sdk/core/openbb_core/app/static/build_utils.py similarity index 96% rename from openbb_sdk/sdk/core/openbb_core/app/static/utils.py rename to openbb_sdk/sdk/core/openbb_core/app/static/build_utils.py index ffd74be87a8..52f16640114 100644 --- a/openbb_sdk/sdk/core/openbb_core/app/static/utils.py +++ b/openbb_sdk/sdk/core/openbb_core/app/static/build_utils.py @@ -41,7 +41,9 @@ def package_diff(package: Path) -> Tuple[Set[str], Set[str]]: groups = ("openbb_core_extension", "openbb_provider_extension") for g in groups: built = set(ext_map.get(g, {})) - installed = entry_points(group=g).names + installed = set( + f"{e.name}@{getattr(e.dist, 'version', '')}" for e in entry_points(group=g) + ) add = add.union(installed - built) remove = remove.union(built - installed) diff --git a/openbb_sdk/sdk/core/openbb_core/app/static/package_builder.py b/openbb_sdk/sdk/core/openbb_core/app/static/package_builder.py index a9297b2af55..29b3cb114d9 100644 --- a/openbb_sdk/sdk/core/openbb_core/app/static/package_builder.py +++ b/openbb_sdk/sdk/core/openbb_core/app/static/package_builder.py @@ -75,7 +75,15 @@ class PackageBuilder: def save_extension_map(self): """Save the map of extensions available at build time""" groups = ("openbb_core_extension", "openbb_provider_extension") - ext_map = {g: sorted(list(entry_points(group=g).names)) for g in groups} + ext_map = { + g: sorted( + [ + f"{e.name}@{getattr(e.dist, 'version', '')}" + for e in entry_points(group=g) + ] + ) + for g in groups + } code = dumps(obj=dict(sorted(ext_map.items())), indent=4) self.console.log("Writing extension map...") self.write_to_package(code=code, name="extension_map", extension="json") diff --git a/openbb_sdk/sdk/core/tests/app/static/test_static_utils.py b/openbb_sdk/sdk/core/tests/app/static/test_build_utils.py similarity index 73% rename from openbb_sdk/sdk/core/tests/app/static/test_static_utils.py rename to openbb_sdk/sdk/core/tests/app/static/test_build_utils.py index c20b4656b46..ebedee36922 100644 --- a/openbb_sdk/sdk/core/tests/app/static/test_static_utils.py +++ b/openbb_sdk/sdk/core/tests/app/static/test_build_utils.py @@ -3,14 +3,14 @@ from pathlib import Path -from unittest.mock import mock_open, patch +from unittest.mock import PropertyMock, mock_open, patch import pytest from importlib_metadata import EntryPoint, EntryPoints -from openbb_core.app.static.utils import auto_build, get_ext_map, package_diff +from openbb_core.app.static.build_utils import auto_build, get_ext_map, package_diff from openbb_core.env import Env -PATH = "openbb_core.app.static.utils." +PATH = "openbb_core.app.static.build_utils." @pytest.fixture(scope="function") @@ -29,17 +29,17 @@ def test_get_ext_map(tmp_dir): @pytest.mark.parametrize( - "ext_built, ext_installed, expected_add, expected_remove", + "ext_built, ext_installed, ext_inst_version, expected_add, expected_remove", [ ( { "openbb_core_extension": [ - "ext_1", - "ext_2", + "ext_1@0.0.0", + "ext_2@0.0.0", ], "openbb_provider_extension": [ - "prov_1", - "prov_2", + "prov_1@0.0.0", + "prov_2@1.1.1", ], }, EntryPoints( @@ -52,13 +52,14 @@ def test_get_ext_map(tmp_dir): ), ) ), - set(), - {"ext_1", "prov_1"}, + "0.0.0", + {"prov_2@0.0.0"}, + {"ext_1@0.0.0", "prov_1@0.0.0", "prov_2@1.1.1"}, ), ( { - "openbb_core_extension": ["ext_1"], - "openbb_provider_extension": ["prov_2"], + "openbb_core_extension": ["ext_1@9.9.9"], + "openbb_provider_extension": ["prov_2@0.0.0"], }, EntryPoints( ( @@ -70,12 +71,20 @@ def test_get_ext_map(tmp_dir): ), ) ), - {"ext_2", "prov_1"}, - {"ext_1", "prov_2"}, + "5.5.5", + {"ext_2@5.5.5", "prov_1@5.5.5"}, + {"ext_1@9.9.9", "prov_2@0.0.0"}, ), ], ) -def test_package_diff(tmp_dir, ext_built, ext_installed, expected_add, expected_remove): +def test_package_diff( + tmp_dir, + ext_built, + ext_installed, + ext_inst_version, + expected_add, + expected_remove, +): """Test package differences.""" def mock_entry_points(group): @@ -83,7 +92,12 @@ def test_package_diff(tmp_dir, ext_built, ext_installed, expected_add, expected_ with patch(PATH + "get_ext_map") as mock_get_ext_map, patch( PATH + "entry_points", mock_entry_points - ): + ), patch.object(EntryPoint, "dist", new_callable=PropertyMock) as mock_obj: + + class MockPathDistribution: + version = ext_inst_version + + mock_obj.return_value = MockPathDistribution() mock_get_ext_map.return_value = ext_built add, remove = package_diff(tmp_dir)