mirror of
https://github.com/manifoldbt/manifoldbt.git
synced 2026-08-24 14:38:04 +00:00
release: v0.10.0
This commit is contained in:
@@ -14,8 +14,21 @@ without needing a Pro license or real market data.
|
||||
import json
|
||||
import sqlite3
|
||||
|
||||
import pytest
|
||||
|
||||
import manifoldbt as bt
|
||||
from manifoldbt.diagnostics import _prepare_for_diagnostics
|
||||
from manifoldbt.exceptions import LicenseError
|
||||
|
||||
|
||||
def test_detect_lookahead_gated_on_community(monkeypatch):
|
||||
"""Look-ahead detection is Pro: Community gets a clean LicenseError before any
|
||||
work (the analysis itself is enforced natively; this is the friendly UX gate).
|
||||
"""
|
||||
monkeypatch.setattr(bt, "_is_pro", lambda: False)
|
||||
with pytest.raises(LicenseError):
|
||||
# Raises before touching strategy/config/store, so None args are fine.
|
||||
bt.diagnostics.detect_lookahead(None, None, None)
|
||||
|
||||
|
||||
def _make_metadata_db(path):
|
||||
|
||||
@@ -6,9 +6,20 @@ to the Rust-only golden test fixtures.
|
||||
import json
|
||||
import os
|
||||
|
||||
import pytest
|
||||
|
||||
import manifoldbt as bt
|
||||
from manifoldbt import run_with_parquet
|
||||
|
||||
# The golden fixtures were generated at full (Pro) resolution; the Community
|
||||
# resolution cap changes the equity-point count and the comparison is
|
||||
# meaningless. CI unlocks via BT_UNLOCKED=1 (debug builds); locally this needs
|
||||
# an activated Pro license.
|
||||
pytestmark = pytest.mark.skipif(
|
||||
bt.license_info()[0] != "Pro",
|
||||
reason="requires Pro (fixtures generated at sub-daily resolution); activate a license or use a BT_UNLOCKED dev build",
|
||||
)
|
||||
|
||||
|
||||
def test_golden_buy_and_hold_matches_fixtures(golden_buy_hold_dir):
|
||||
"""Mirror of Rust golden_buy_and_hold_equity_trade_metrics_and_manifest_match_fixture."""
|
||||
|
||||
@@ -3,9 +3,20 @@ import json
|
||||
import os
|
||||
import time
|
||||
|
||||
import pytest
|
||||
|
||||
import manifoldbt as bt
|
||||
from manifoldbt import run_sweep, run_with_parquet
|
||||
|
||||
# The golden fixtures are 1-minute bars; on a Community license the engine caps
|
||||
# resolution to daily, so these runs produce zero trades and the assertions are
|
||||
# meaningless. CI unlocks via BT_UNLOCKED=1 (debug builds); locally this needs
|
||||
# an activated Pro license.
|
||||
pytestmark = pytest.mark.skipif(
|
||||
bt.license_info()[0] != "Pro",
|
||||
reason="requires Pro (sub-daily resolution); activate a license or use a BT_UNLOCKED dev build",
|
||||
)
|
||||
|
||||
|
||||
def test_sweep_returns_one_result_per_combo(golden_buy_hold_dir):
|
||||
"""Sweep with 2x2 grid returns 4 results."""
|
||||
|
||||
Reference in New Issue
Block a user