From f86816607b5ac84f7565062a3af1144621ba71fb Mon Sep 17 00:00:00 2001 From: bxvtr Date: Fri, 20 Feb 2026 23:28:13 +0000 Subject: [PATCH 1/2] Chore: rework devcontainer setup and clean up development environment --- .devcontainer/Dockerfile | 3 + .devcontainer/dev.Dockerfile | 27 -- .devcontainer/devcontainer.json | 28 +- docker-compose.override.yaml | 5 - docker-compose.yaml | 15 - examples/local/backtest.py | 6 +- examples/local/local.json | 10 +- requirements-dev.txt | 403 ------------------ requirements.txt | 376 ---------------- scripts/compile-requirements.sh | 15 - scripts/post-create.sh | 22 - .../models/test_models_against_schemas.py | 2 +- 12 files changed, 24 insertions(+), 888 deletions(-) create mode 100644 .devcontainer/Dockerfile delete mode 100644 .devcontainer/dev.Dockerfile delete mode 100644 docker-compose.override.yaml delete mode 100644 docker-compose.yaml delete mode 100644 requirements-dev.txt delete mode 100644 requirements.txt delete mode 100755 scripts/compile-requirements.sh delete mode 100755 scripts/post-create.sh diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000..0e313f1 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,3 @@ +FROM mcr.microsoft.com/devcontainers/python:3.11 + +RUN pip install --upgrade pip setuptools wheel \ No newline at end of file diff --git a/.devcontainer/dev.Dockerfile b/.devcontainer/dev.Dockerfile deleted file mode 100644 index e4b21da..0000000 --- a/.devcontainer/dev.Dockerfile +++ /dev/null @@ -1,27 +0,0 @@ -# syntax=docker/dockerfile:1.4 - -FROM python:3.11.14-slim-trixie - -# Environment configuration -ENV PYTHONUNBUFFERED=1 \ - VIRTUAL_ENV=/opt/venv \ - PATH="/opt/venv/bin:$PATH" - -# Install system dependencies -RUN apt-get update && \ - apt-get install -y --no-install-recommends \ - build-essential \ - curl \ - git \ - ca-certificates && \ - rm -rf /var/lib/apt/lists/* - -# Create and activate virtual environment -RUN python -m venv "$VIRTUAL_ENV" && \ - pip install --upgrade pip - -# Set working directory for trading-platform -WORKDIR /workspace/trading-platform - -# Default command for the devcontainer (keeps container alive) -CMD ["sleep", "infinity"] diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 32ae9b6..1747ef4 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,26 +1,18 @@ { - "name": "trading-platform devcontainer", - "dockerComposeFile": [ - "../docker-compose.yaml", - "../docker-compose.override.yaml" - ], - "service": "app", - "workspaceFolder": "/workspace/trading-platform", - "remoteUser": "root", + "name": "Trading Platform Dev", + "build": { + "dockerfile": "Dockerfile", + "context": ".." + }, + + "postCreateCommand": "pip install -e .[dev]", + "customizations": { "vscode": { - "settings": { - "python.defaultInterpreterPath": "/opt/venv/bin/python", - "python.testing.pytestEnabled": true, - "python.testing.pytestArgs": [ - "tests" - ] - }, "extensions": [ "ms-python.python", "ms-python.debugpy" ] } - }, - "postCreateCommand": "/bin/bash scripts/post-create.sh" -} + } +} \ No newline at end of file diff --git a/docker-compose.override.yaml b/docker-compose.override.yaml deleted file mode 100644 index 27f73eb..0000000 --- a/docker-compose.override.yaml +++ /dev/null @@ -1,5 +0,0 @@ -services: - app: - volumes: - # SELinux-specific volume mount - - .:/workspace/trading-platform:Z diff --git a/docker-compose.yaml b/docker-compose.yaml deleted file mode 100644 index 8253363..0000000 --- a/docker-compose.yaml +++ /dev/null @@ -1,15 +0,0 @@ -version: "3.8" - -services: - app: - build: - context: . - dockerfile: .devcontainer/dev.Dockerfile - - # Mount both repositories into the container - volumes: - # trading-platform (this repo) into /workspace/trading-platform - - .:/workspace/trading-platform - - # Keep the container running for the devcontainer - command: sleep infinity diff --git a/examples/local/backtest.py b/examples/local/backtest.py index 5eee1cc..08d360f 100644 --- a/examples/local/backtest.py +++ b/examples/local/backtest.py @@ -3,10 +3,14 @@ from __future__ import annotations import argparse -import json +import json, sys from pathlib import Path from typing import TYPE_CHECKING +# Enable importing plugin-style modules outside the core package (e.g. examples/) +PROJECT_ROOT = Path(__file__).resolve().parents[2] +sys.path.insert(0, str(PROJECT_ROOT)) + if TYPE_CHECKING: from trading_platform import BacktestResult diff --git a/examples/local/local.json b/examples/local/local.json index 47eca60..07e397b 100644 --- a/examples/local/local.json +++ b/examples/local/local.json @@ -5,9 +5,9 @@ "engine": { "initial_snapshot": null, "data_files": [ - "/workspace/trading-platform/tests/data/parts/part-000.npz", - "/workspace/trading-platform/tests/data/parts/part-001.npz", - "/workspace/trading-platform/tests/data/parts/part-002.npz" + "/workspaces/trading-platform/tests/data/parts/part-000.npz", + "/workspaces/trading-platform/tests/data/parts/part-001.npz", + "/workspaces/trading-platform/tests/data/parts/part-002.npz" ], "instrument": "BTC_USDC-PERPETUAL", @@ -32,8 +32,8 @@ "roi_lb": 40000, "roi_ub": 80000, - "stats_npz_path": "/workspace/trading-platform/tests/data/results/stats.npz", - "event_bus_path": "/workspace/trading-platform/tests/data/results/events.json" + "stats_npz_path": "/workspaces/trading-platform/tests/data/results/stats.npz", + "event_bus_path": "/workspaces/trading-platform/tests/data/results/events.json" }, "risk": { diff --git a/requirements-dev.txt b/requirements-dev.txt deleted file mode 100644 index 929b9a2..0000000 --- a/requirements-dev.txt +++ /dev/null @@ -1,403 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.11 -# by the following command: -# -# pip-compile --extra=dev --output-file=requirements-dev.txt pyproject.toml -# -alembic==1.18.4 - # via mlflow -annotated-doc==0.0.4 - # via fastapi -annotated-types==0.7.0 - # via pydantic -anyio==4.12.1 - # via starlette -attrs==25.4.0 - # via - # jsonschema - # referencing -bleach==6.3.0 - # via panel -blinker==1.9.0 - # via flask -bokeh==3.8.2 - # via - # holoviews - # panel -cachetools==6.2.6 - # via - # mlflow-skinny - # mlflow-tracing -certifi==2026.1.4 - # via - # oci - # requests -cffi==2.0.0 - # via cryptography -charset-normalizer==3.4.4 - # via requests -circuitbreaker==2.1.3 - # via oci -click==8.3.1 - # via - # flask - # import-linter - # mlflow-skinny - # uvicorn -cloudpickle==3.1.2 - # via mlflow-skinny -colorcet==3.1.0 - # via holoviews -contourpy==1.3.3 - # via - # bokeh - # matplotlib -cryptography==45.0.7 - # via - # google-auth - # mlflow - # oci - # pyopenssl -cycler==0.12.1 - # via matplotlib -databricks-sdk==0.86.0 - # via - # mlflow-skinny - # mlflow-tracing -docker==7.1.0 - # via mlflow -fastapi==0.128.7 - # via mlflow-skinny -flask==3.1.2 - # via - # flask-cors - # mlflow -flask-cors==6.0.2 - # via mlflow -fonttools==4.61.1 - # via matplotlib -gitdb==4.0.12 - # via gitpython -gitpython==3.1.46 - # via mlflow-skinny -google-auth==2.48.0 - # via databricks-sdk -graphene==3.4.3 - # via mlflow -graphql-core==3.2.7 - # via - # graphene - # graphql-relay -graphql-relay==3.2.0 - # via graphene -greenlet==3.3.1 - # via sqlalchemy -grimp==3.14 - # via import-linter -gunicorn==23.0.0 - # via mlflow -h11==0.16.0 - # via uvicorn -hftbacktest==2.4.4 - # via trading-platform (pyproject.toml) -holoviews==1.22.1 - # via hftbacktest -huey==2.6.0 - # via mlflow -idna==3.11 - # via - # anyio - # requests -import-linter==1.12.1 - # via trading-platform (pyproject.toml) -importlib-metadata==8.7.1 - # via - # mlflow-skinny - # opentelemetry-api -iniconfig==2.3.0 - # via pytest -itsdangerous==2.2.0 - # via flask -jinja2==3.1.6 - # via - # bokeh - # flask -joblib==1.5.3 - # via scikit-learn -jsonschema==4.25.1 - # via trading-platform (pyproject.toml) -jsonschema-specifications==2025.9.1 - # via jsonschema -kiwisolver==1.4.9 - # via matplotlib -librt==0.7.8 - # via mypy -linkify-it-py==2.0.3 - # via panel -llvmlite==0.46.0 - # via numba -mako==1.3.10 - # via alembic -markdown==3.10.2 - # via panel -markdown-it-py==4.0.0 - # via - # mdit-py-plugins - # panel -markupsafe==3.0.3 - # via - # flask - # jinja2 - # mako - # werkzeug -matplotlib==3.10.8 - # via - # hftbacktest - # mlflow -mdit-py-plugins==0.5.0 - # via panel -mdurl==0.1.2 - # via markdown-it-py -mlflow==3.9.0 - # via trading-platform (pyproject.toml) -mlflow-skinny==3.9.0 - # via mlflow -mlflow-tracing==3.9.0 - # via mlflow -mypy==1.19.1 - # via trading-platform (pyproject.toml) -mypy-extensions==1.1.0 - # via mypy -narwhals==2.16.0 - # via - # bokeh - # holoviews - # panel -numba==0.63.1 - # via hftbacktest -numpy==2.2.2 - # via - # bokeh - # contourpy - # hftbacktest - # holoviews - # matplotlib - # mlflow - # numba - # pandas - # pyarrow - # scikit-learn - # scipy - # skops - # trading-platform (pyproject.toml) -oci==2.164.0 - # via trading-platform (pyproject.toml) -opentelemetry-api==1.39.1 - # via - # mlflow-skinny - # mlflow-tracing - # opentelemetry-sdk - # opentelemetry-semantic-conventions -opentelemetry-proto==1.39.1 - # via - # mlflow-skinny - # mlflow-tracing -opentelemetry-sdk==1.39.1 - # via - # mlflow-skinny - # mlflow-tracing -opentelemetry-semantic-conventions==0.60b1 - # via opentelemetry-sdk -packaging==25.0 - # via - # bokeh - # gunicorn - # holoviews - # matplotlib - # mlflow-skinny - # mlflow-tracing - # panel - # pytest - # skops -pandas==2.3.3 - # via - # bokeh - # holoviews - # mlflow - # panel -panel==1.8.7 - # via holoviews -param==2.3.2 - # via - # holoviews - # panel - # pyviz-comms -pathspec==1.0.4 - # via mypy -pillow==12.1.0 - # via - # bokeh - # matplotlib -pluggy==1.6.0 - # via pytest -polars==1.38.1 - # via hftbacktest -polars-runtime-32==1.38.1 - # via polars -prettytable==3.17.0 - # via skops -prometheus-client==0.24.1 - # via trading-platform (pyproject.toml) -protobuf==6.33.5 - # via - # databricks-sdk - # mlflow-skinny - # mlflow-tracing - # opentelemetry-proto -pyarrow==16.1.0 - # via - # mlflow - # trading-platform (pyproject.toml) -pyasn1==0.6.2 - # via - # pyasn1-modules - # rsa -pyasn1-modules==0.4.2 - # via google-auth -pycparser==3.0 - # via cffi -pydantic==2.12.5 - # via - # fastapi - # mlflow-skinny - # mlflow-tracing - # trading-platform (pyproject.toml) -pydantic-core==2.41.5 - # via pydantic -pygments==2.19.2 - # via pytest -pyopenssl==25.1.0 - # via oci -pyparsing==3.3.2 - # via matplotlib -pytest==9.0.2 - # via trading-platform (pyproject.toml) -python-dateutil==2.9.0.post0 - # via - # graphene - # holoviews - # matplotlib - # oci - # pandas -python-dotenv==1.2.1 - # via mlflow-skinny -pytz==2025.2 - # via - # oci - # pandas -pyviz-comms==3.0.6 - # via - # holoviews - # panel -pyyaml==6.0.3 - # via - # bokeh - # mlflow-skinny -referencing==0.37.0 - # via - # jsonschema - # jsonschema-specifications -requests==2.32.5 - # via - # databricks-sdk - # docker - # mlflow-skinny - # panel -rpds-py==0.30.0 - # via - # jsonschema - # referencing -rsa==4.9.1 - # via google-auth -ruff==0.15.0 - # via trading-platform (pyproject.toml) -scikit-learn==1.8.0 - # via - # mlflow - # skops -scipy==1.17.0 - # via - # mlflow - # scikit-learn - # skops -six==1.17.0 - # via python-dateutil -skops==0.13.0 - # via mlflow -smmap==5.0.2 - # via gitdb -sqlalchemy==2.0.46 - # via - # alembic - # mlflow -sqlparse==0.5.5 - # via mlflow-skinny -starlette==0.52.1 - # via fastapi -threadpoolctl==3.6.0 - # via scikit-learn -tornado==6.5.4 - # via bokeh -tqdm==4.67.1 - # via - # panel - # trading-platform (pyproject.toml) -typing-extensions==4.15.0 - # via - # alembic - # anyio - # fastapi - # graphene - # grimp - # import-linter - # mlflow-skinny - # mypy - # opentelemetry-api - # opentelemetry-sdk - # opentelemetry-semantic-conventions - # panel - # pydantic - # pydantic-core - # pyopenssl - # referencing - # sqlalchemy - # starlette - # typing-inspection -typing-inspection==0.4.2 - # via - # fastapi - # pydantic -tzdata==2025.3 - # via pandas -uc-micro-py==1.0.3 - # via linkify-it-py -ujson==5.0.0 - # via trading-platform (pyproject.toml) -urllib3==2.6.3 - # via - # docker - # requests -uvicorn==0.40.0 - # via mlflow-skinny -wcwidth==0.6.0 - # via prettytable -webencodings==0.5.1 - # via bleach -werkzeug==3.1.5 - # via - # flask - # flask-cors -xyzservices==2025.11.0 - # via bokeh -zipp==3.23.0 - # via importlib-metadata diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 412dc89..0000000 --- a/requirements.txt +++ /dev/null @@ -1,376 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.11 -# by the following command: -# -# pip-compile --output-file=requirements.txt pyproject.toml -# -alembic==1.18.4 - # via mlflow -annotated-doc==0.0.4 - # via fastapi -annotated-types==0.7.0 - # via pydantic -anyio==4.12.1 - # via starlette -attrs==25.4.0 - # via - # jsonschema - # referencing -bleach==6.3.0 - # via panel -blinker==1.9.0 - # via flask -bokeh==3.8.2 - # via - # holoviews - # panel -cachetools==6.2.6 - # via - # mlflow-skinny - # mlflow-tracing -certifi==2026.1.4 - # via - # oci - # requests -cffi==2.0.0 - # via cryptography -charset-normalizer==3.4.4 - # via requests -circuitbreaker==2.1.3 - # via oci -click==8.3.1 - # via - # flask - # mlflow-skinny - # uvicorn -cloudpickle==3.1.2 - # via mlflow-skinny -colorcet==3.1.0 - # via holoviews -contourpy==1.3.3 - # via - # bokeh - # matplotlib -cryptography==45.0.7 - # via - # google-auth - # mlflow - # oci - # pyopenssl -cycler==0.12.1 - # via matplotlib -databricks-sdk==0.86.0 - # via - # mlflow-skinny - # mlflow-tracing -docker==7.1.0 - # via mlflow -fastapi==0.128.7 - # via mlflow-skinny -flask==3.1.2 - # via - # flask-cors - # mlflow -flask-cors==6.0.2 - # via mlflow -fonttools==4.61.1 - # via matplotlib -gitdb==4.0.12 - # via gitpython -gitpython==3.1.46 - # via mlflow-skinny -google-auth==2.48.0 - # via databricks-sdk -graphene==3.4.3 - # via mlflow -graphql-core==3.2.7 - # via - # graphene - # graphql-relay -graphql-relay==3.2.0 - # via graphene -greenlet==3.3.1 - # via sqlalchemy -gunicorn==23.0.0 - # via mlflow -h11==0.16.0 - # via uvicorn -hftbacktest==2.4.4 - # via trading-platform (pyproject.toml) -holoviews==1.22.1 - # via hftbacktest -huey==2.6.0 - # via mlflow -idna==3.11 - # via - # anyio - # requests -importlib-metadata==8.7.1 - # via - # mlflow-skinny - # opentelemetry-api -itsdangerous==2.2.0 - # via flask -jinja2==3.1.6 - # via - # bokeh - # flask -joblib==1.5.3 - # via scikit-learn -jsonschema==4.25.1 - # via trading-platform (pyproject.toml) -jsonschema-specifications==2025.9.1 - # via jsonschema -kiwisolver==1.4.9 - # via matplotlib -linkify-it-py==2.0.3 - # via panel -llvmlite==0.46.0 - # via numba -mako==1.3.10 - # via alembic -markdown==3.10.2 - # via panel -markdown-it-py==4.0.0 - # via - # mdit-py-plugins - # panel -markupsafe==3.0.3 - # via - # flask - # jinja2 - # mako - # werkzeug -matplotlib==3.10.8 - # via - # hftbacktest - # mlflow -mdit-py-plugins==0.5.0 - # via panel -mdurl==0.1.2 - # via markdown-it-py -mlflow==3.9.0 - # via trading-platform (pyproject.toml) -mlflow-skinny==3.9.0 - # via mlflow -mlflow-tracing==3.9.0 - # via mlflow -narwhals==2.16.0 - # via - # bokeh - # holoviews - # panel -numba==0.63.1 - # via hftbacktest -numpy==2.2.2 - # via - # bokeh - # contourpy - # hftbacktest - # holoviews - # matplotlib - # mlflow - # numba - # pandas - # pyarrow - # scikit-learn - # scipy - # skops - # trading-platform (pyproject.toml) -oci==2.164.0 - # via trading-platform (pyproject.toml) -opentelemetry-api==1.39.1 - # via - # mlflow-skinny - # mlflow-tracing - # opentelemetry-sdk - # opentelemetry-semantic-conventions -opentelemetry-proto==1.39.1 - # via - # mlflow-skinny - # mlflow-tracing -opentelemetry-sdk==1.39.1 - # via - # mlflow-skinny - # mlflow-tracing -opentelemetry-semantic-conventions==0.60b1 - # via opentelemetry-sdk -packaging==25.0 - # via - # bokeh - # gunicorn - # holoviews - # matplotlib - # mlflow-skinny - # mlflow-tracing - # panel - # skops -pandas==2.3.3 - # via - # bokeh - # holoviews - # mlflow - # panel -panel==1.8.7 - # via holoviews -param==2.3.2 - # via - # holoviews - # panel - # pyviz-comms -pillow==12.1.0 - # via - # bokeh - # matplotlib -polars==1.38.1 - # via hftbacktest -polars-runtime-32==1.38.1 - # via polars -prettytable==3.17.0 - # via skops -prometheus-client==0.24.1 - # via trading-platform (pyproject.toml) -protobuf==6.33.5 - # via - # databricks-sdk - # mlflow-skinny - # mlflow-tracing - # opentelemetry-proto -pyarrow==16.1.0 - # via - # mlflow - # trading-platform (pyproject.toml) -pyasn1==0.6.2 - # via - # pyasn1-modules - # rsa -pyasn1-modules==0.4.2 - # via google-auth -pycparser==3.0 - # via cffi -pydantic==2.12.5 - # via - # fastapi - # mlflow-skinny - # mlflow-tracing - # trading-platform (pyproject.toml) -pydantic-core==2.41.5 - # via pydantic -pyopenssl==25.1.0 - # via oci -pyparsing==3.3.2 - # via matplotlib -python-dateutil==2.9.0.post0 - # via - # graphene - # holoviews - # matplotlib - # oci - # pandas -python-dotenv==1.2.1 - # via mlflow-skinny -pytz==2025.2 - # via - # oci - # pandas -pyviz-comms==3.0.6 - # via - # holoviews - # panel -pyyaml==6.0.3 - # via - # bokeh - # mlflow-skinny -referencing==0.37.0 - # via - # jsonschema - # jsonschema-specifications -requests==2.32.5 - # via - # databricks-sdk - # docker - # mlflow-skinny - # panel -rpds-py==0.30.0 - # via - # jsonschema - # referencing -rsa==4.9.1 - # via google-auth -scikit-learn==1.8.0 - # via - # mlflow - # skops -scipy==1.17.0 - # via - # mlflow - # scikit-learn - # skops -six==1.17.0 - # via python-dateutil -skops==0.13.0 - # via mlflow -smmap==5.0.2 - # via gitdb -sqlalchemy==2.0.46 - # via - # alembic - # mlflow -sqlparse==0.5.5 - # via mlflow-skinny -starlette==0.52.1 - # via fastapi -threadpoolctl==3.6.0 - # via scikit-learn -tornado==6.5.4 - # via bokeh -tqdm==4.67.1 - # via - # panel - # trading-platform (pyproject.toml) -typing-extensions==4.15.0 - # via - # alembic - # anyio - # fastapi - # graphene - # mlflow-skinny - # opentelemetry-api - # opentelemetry-sdk - # opentelemetry-semantic-conventions - # panel - # pydantic - # pydantic-core - # pyopenssl - # referencing - # sqlalchemy - # starlette - # typing-inspection -typing-inspection==0.4.2 - # via - # fastapi - # pydantic -tzdata==2025.3 - # via pandas -uc-micro-py==1.0.3 - # via linkify-it-py -ujson==5.0.0 - # via trading-platform (pyproject.toml) -urllib3==2.6.3 - # via - # docker - # requests -uvicorn==0.40.0 - # via mlflow-skinny -wcwidth==0.6.0 - # via prettytable -webencodings==0.5.1 - # via bleach -werkzeug==3.1.5 - # via - # flask - # flask-cors -xyzservices==2025.11.0 - # via bokeh -zipp==3.23.0 - # via importlib-metadata diff --git a/scripts/compile-requirements.sh b/scripts/compile-requirements.sh deleted file mode 100755 index dae95f4..0000000 --- a/scripts/compile-requirements.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -echo "🔧 Compiling requirements with pip-tools..." - -python -m pip install --upgrade \ - "pip>=23.3,<25" \ - "setuptools>=68,<81" \ - "wheel>=0.41,<1" \ - "pip-tools>=7.3,<7.6" - -python -m piptools compile pyproject.toml -o requirements.txt -python -m piptools compile pyproject.toml --extra dev -o requirements-dev.txt - -echo "✅ requirements.txt and requirements-dev.txt updated" diff --git a/scripts/post-create.sh b/scripts/post-create.sh deleted file mode 100755 index a8058c1..0000000 --- a/scripts/post-create.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -echo "[post-create] Using venv at /opt/venv" -# shellcheck disable=SC1091 -source /opt/venv/bin/activate - -cd /workspace/trading-platform - -echo "[post-create] Installing dev requirements..." -python -m pip install -r requirements-dev.txt - -# If this repo is a Python package, install it in editable mode -if [ -f pyproject.toml ] || [ -f setup.py ] || [ -f setup.cfg ]; then - echo "[post-create] Installing trading-platform in editable mode..." - python -m pip install -e . -fi - -echo "[post-create] Running import-linter..." -lint-imports || true - -echo "[post-create] Dev container setup completed." diff --git a/tests/semantics/models/test_models_against_schemas.py b/tests/semantics/models/test_models_against_schemas.py index 1c51ba4..b33b681 100644 --- a/tests/semantics/models/test_models_against_schemas.py +++ b/tests/semantics/models/test_models_against_schemas.py @@ -43,7 +43,7 @@ def load_schema(name: str) -> dict: """ global SCHEMA_REGISTRY - root = Path(__file__).parent.parent.parent.parent # /workspace/trading-platform + root = Path(__file__).parent.parent.parent.parent # /workspaces/trading-platform name = "trading_platform/core/schemas/" + name schema_path = root / name From 2c42882f7b281f70cdedc06fc5543dcccbb50a3e Mon Sep 17 00:00:00 2001 From: bxvtr Date: Fri, 20 Feb 2026 23:43:44 +0000 Subject: [PATCH 2/2] Chore: clean up in example backtest script to satisfy linter --- examples/local/backtest.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/examples/local/backtest.py b/examples/local/backtest.py index 08d360f..47932ac 100644 --- a/examples/local/backtest.py +++ b/examples/local/backtest.py @@ -3,13 +3,15 @@ from __future__ import annotations import argparse -import json, sys +import json +import sys from pathlib import Path from typing import TYPE_CHECKING # Enable importing plugin-style modules outside the core package (e.g. examples/) -PROJECT_ROOT = Path(__file__).resolve().parents[2] -sys.path.insert(0, str(PROJECT_ROOT)) +if __name__ == "__main__" or True: + PROJECT_ROOT = Path(__file__).resolve().parents[2] + sys.path.insert(0, str(PROJECT_ROOT)) if TYPE_CHECKING: from trading_platform import BacktestResult