Files
OpenBB/openbb_platform/tests/test_pyproject_toml.py
montezdesousa bd75a9746f Move files used in gh actions from root (#6346)
* Move files used in gh actions from root

* keep this

* pydocstyle

* ^

* fix: relative path, os independent

* use relative root path

* ^

* move noxfile.py to .github/scripts

* remove flag
2024-04-26 17:18:00 +00:00

67 lines
2.4 KiB
Python

"""Test the pyproject.toml file for consistency and its dependencies."""
import glob
import os
from pathlib import Path
import toml
ROOT_DIR = Path(__file__).parent.parent
def test_optional_packages():
"""Ensure only required extensions are built and versions respect pyproject.toml"""
data = toml.load(ROOT_DIR / "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(Path(ROOT_DIR / "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."
)