fix predict
This commit is contained in:
@@ -1,6 +1,12 @@
|
||||
import json
|
||||
import tempfile
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
from unittest.mock import patch
|
||||
|
||||
from cbpred.latest_predict import OUTPUT_COLUMNS
|
||||
import pandas as pd
|
||||
|
||||
from cbpred.latest_predict import OUTPUT_COLUMNS, build_predictions
|
||||
|
||||
|
||||
class LatestPredictTests(unittest.TestCase):
|
||||
@@ -21,6 +27,51 @@ class LatestPredictTests(unittest.TestCase):
|
||||
),
|
||||
)
|
||||
|
||||
def test_batch_skips_symbols_without_training_profiles(self):
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
root = Path(directory)
|
||||
data_dir = root / "data"
|
||||
output_dir = root / "output"
|
||||
data_dir.mkdir()
|
||||
for symbol, filename in (
|
||||
("TRAIN/USDT:USDT", "train.csv"),
|
||||
("STALE/USDT:USDT", "stale.csv"),
|
||||
):
|
||||
pd.DataFrame(
|
||||
[{"timestamp": 1, "quote": 10.0, "close": 100.0}]
|
||||
).to_csv(data_dir / filename, index=False)
|
||||
(data_dir / "manifest.json").write_text(
|
||||
json.dumps(
|
||||
{
|
||||
"symbols": [
|
||||
{"symbol": "TRAIN/USDT:USDT", "path": "train.csv"},
|
||||
{"symbol": "STALE/USDT:USDT", "path": "stale.csv"},
|
||||
]
|
||||
}
|
||||
)
|
||||
)
|
||||
|
||||
result = {
|
||||
"symbol": "TRAIN/USDT:USDT",
|
||||
"timestamp": 1,
|
||||
"close": 100.0,
|
||||
"volatility_rank_200": 0.5,
|
||||
"eligible_for_model": False,
|
||||
}
|
||||
with patch(
|
||||
"cbpred.latest_predict.joblib.load",
|
||||
return_value={"asset_profiles": {"TRAIN/USDT:USDT": {}}},
|
||||
), patch(
|
||||
"cbpred.latest_predict.predict_from_csv", return_value=result
|
||||
) as predict:
|
||||
summary = build_predictions(data_dir, root / "model.joblib", output_dir)
|
||||
|
||||
predict.assert_called_once_with(
|
||||
root / "model.joblib", data_dir / "train.csv", symbol="TRAIN/USDT:USDT"
|
||||
)
|
||||
self.assertEqual(summary["symbols"], 1)
|
||||
self.assertEqual(summary["skipped_symbols"], ["STALE/USDT:USDT"])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user