File size: 1,994 Bytes
2eec8c3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4106e0f
 
 
2eec8c3
 
4106e0f
 
 
 
 
 
 
2eec8c3
 
4106e0f
2eec8c3
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
from __future__ import annotations

import unittest
from pathlib import Path


class EnvExampleContractTests(unittest.TestCase):
    @classmethod
    def setUpClass(cls) -> None:
        cls.env_example = (Path(__file__).resolve().parent.parent / ".env.example").read_text(
            encoding="utf-8",
        )

    def test_env_example_includes_required_runtime_keys(self) -> None:
        self.assertIn("ADMIN_TOKEN=replace-with-a-long-random-secret", self.env_example)
        self.assertIn("HOST=127.0.0.1", self.env_example)
        self.assertIn("PORT=8000", self.env_example)
        self.assertIn("AIFORECAST_START_WITH_WINDOWS=true", self.env_example)
        self.assertIn("DEFAULT_FORECAST_CONTEXT_LENGTH=384", self.env_example)
        self.assertIn("ALLOWED_FORECAST_CONTEXT_LENGTHS=128,256,384,512", self.env_example)
        self.assertIn("FORECAST_WORKER_IDLE_TTL_MS=120000", self.env_example)

    def test_env_example_includes_model_and_provider_placeholders(self) -> None:
        self.assertIn("PRELOAD_TIMESFM=false", self.env_example)
        self.assertIn("PRELOAD_KRONOS=false", self.env_example)
        self.assertIn("PRELOAD_CHRONOS=false", self.env_example)
        self.assertIn("TORCH_NUM_THREADS=2", self.env_example)
        self.assertIn("TORCH_NUM_INTEROP_THREADS=1", self.env_example)
        self.assertIn("OMP_NUM_THREADS=2", self.env_example)
        self.assertIn("MKL_NUM_THREADS=2", self.env_example)
        self.assertIn("TIMESFM_MODEL_HF_ID=google/timesfm-2.5-200m-pytorch", self.env_example)
        self.assertIn("KRONOS_MODEL_HF_ID=NeoQuasar/Kronos-base", self.env_example)
        self.assertIn("CHRONOS_MODEL_HF_ID=amazon/chronos-2", self.env_example)
        self.assertIn("TWELVEDATA_API_KEY=", self.env_example)
        self.assertIn("FINNHUB_API_KEY=", self.env_example)
        self.assertIn("BINANCE_API_KEY=", self.env_example)
        self.assertIn("BYBIT_API_KEY=", self.env_example)


if __name__ == "__main__":
    unittest.main()