mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-05-16 21:48:24 +08:00
64 lines
2.4 KiB
Python
64 lines
2.4 KiB
Python
"""Test the pyproject.toml file for consistency and its dependencies."""
|
|
|
|
import glob
|
|
import os
|
|
|
|
import toml
|
|
|
|
|
|
def test_optional_packages():
|
|
"""Ensure only required extensions are built and versions respect pyproject.toml"""
|
|
data = toml.load("openbb_platform/pyproject.toml")
|
|
dependencies = data["tool"]["poetry"]["dependencies"]
|
|
extras = data["tool"]["poetry"]["extras"]
|
|
all_packages = extras["all"]
|
|
|
|
default_packages = []
|
|
optional_packages = []
|
|
|
|
for package, details in dependencies.items():
|
|
if isinstance(details, dict) and details.get("optional") is True:
|
|
optional_packages.append(package)
|
|
else:
|
|
default_packages.append(package)
|
|
|
|
# check that optional packages have the same content as all_packages and extras
|
|
assert sorted(optional_packages) == sorted(all_packages)
|
|
assert sorted(optional_packages) == sorted(extras["all"])
|
|
|
|
# assert that there is no overlap between default and optional packages
|
|
assert set(default_packages).isdisjoint(set(optional_packages))
|
|
|
|
|
|
def test_default_package_files():
|
|
"""Ensure only required extensions are built and versions respect pyproject.toml"""
|
|
data = toml.load("openbb_platform/pyproject.toml")
|
|
dependencies = data["tool"]["poetry"]["dependencies"]
|
|
package_files = glob.glob("openbb_platform/openbb/package/*.py")
|
|
|
|
invalid_packages = []
|
|
default_packages = []
|
|
|
|
for package, details in dependencies.items():
|
|
if isinstance(details, dict) is False:
|
|
default_packages.append(package)
|
|
|
|
for file_path in package_files:
|
|
package_name = os.path.basename(file_path).replace(".py", "")
|
|
if package_name.startswith("_"):
|
|
continue
|
|
if "_" in package_name:
|
|
base_package = package_name.split("_")[0]
|
|
if "openbb-" + base_package not in default_packages:
|
|
invalid_packages.append(package_name)
|
|
elif "openbb-" + package_name not in default_packages:
|
|
invalid_packages.append(package_name)
|
|
|
|
assert not invalid_packages, (
|
|
f"If not making a PR, ignore this error -> "
|
|
f"Found non-required extension static assets: {invalid_packages}. "
|
|
f"Only required packages should be committed."
|
|
f"Please create a new environment with only required extensions, "
|
|
f"rebuild the static assets, and commit the changes."
|
|
)
|