Fix runtime settings defaults (#283) #789
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [ main ] | |
| pull_request: | |
| permissions: | |
| contents: read | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Resolve QuantPlatformKit ref | |
| id: quant-platform-kit-ref | |
| run: | | |
| set -euo pipefail | |
| ref="main" | |
| for candidate in "${GITHUB_HEAD_REF:-}" "${GITHUB_BASE_REF:-}"; do | |
| if [ -n "$candidate" ] && git ls-remote --exit-code --heads https://github.com/QuantStrategyLab/QuantPlatformKit.git "$candidate" >/dev/null 2>&1; then | |
| ref="$candidate" | |
| break | |
| fi | |
| done | |
| echo "ref=${ref}" >> "$GITHUB_OUTPUT" | |
| - name: Resolve UsEquityStrategies ref | |
| id: us-equity-strategies-ref | |
| run: | | |
| set -euo pipefail | |
| ref="main" | |
| for candidate in "${GITHUB_HEAD_REF:-}" "${GITHUB_BASE_REF:-}"; do | |
| if [ -n "$candidate" ] && git ls-remote --exit-code --heads https://github.com/QuantStrategyLab/UsEquityStrategies.git "$candidate" >/dev/null 2>&1; then | |
| ref="$candidate" | |
| break | |
| fi | |
| done | |
| echo "ref=${ref}" >> "$GITHUB_OUTPUT" | |
| - name: Resolve UsEquitySnapshotPipelines ref | |
| id: us-equity-snapshot-pipelines-ref | |
| run: | | |
| set -euo pipefail | |
| ref="main" | |
| for candidate in "${GITHUB_HEAD_REF:-}" "${GITHUB_BASE_REF:-}"; do | |
| if [ -n "$candidate" ] && git ls-remote --exit-code --heads https://github.com/QuantStrategyLab/UsEquitySnapshotPipelines.git "$candidate" >/dev/null 2>&1; then | |
| ref="$candidate" | |
| break | |
| fi | |
| done | |
| echo "ref=${ref}" >> "$GITHUB_OUTPUT" | |
| - name: Checkout QuantPlatformKit | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: QuantStrategyLab/QuantPlatformKit | |
| ref: ${{ steps.quant-platform-kit-ref.outputs.ref }} | |
| path: external/QuantPlatformKit | |
| - name: Checkout UsEquityStrategies | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: QuantStrategyLab/UsEquityStrategies | |
| ref: ${{ steps.us-equity-strategies-ref.outputs.ref }} | |
| path: external/UsEquityStrategies | |
| - name: Checkout UsEquitySnapshotPipelines | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: QuantStrategyLab/UsEquitySnapshotPipelines | |
| ref: ${{ steps.us-equity-snapshot-pipelines-ref.outputs.ref }} | |
| path: external/UsEquitySnapshotPipelines | |
| - name: Setup Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.12" | |
| - name: Install dependencies | |
| run: | | |
| set -euo pipefail | |
| python -m pip install --upgrade pip | |
| # Install non-git deps via pyproject.toml (moved from requirements.txt) | |
| grep -vE "^\s*(#|$)|git\+" requirements.txt | xargs -r python -m pip install -c https://raw.githubusercontent.com/QuantStrategyLab/QuantPlatformKit/main/constraints.txt | |
| # Install git-based packages individually with --no-deps (editable installs below) | |
| grep 'git+' requirements.txt | while IFS= read -r pkg; do | |
| [ -n "$pkg" ] && python -m pip install --no-deps "$pkg" | |
| done | |
| python -m pip install pytest pytest-cov ruff | |
| - name: Smoke import pinned shared packages | |
| run: | | |
| set -euo pipefail | |
| python - <<'PY' | |
| from quant_platform_kit.common.port_adapters import CallableNotificationPort, CallablePortfolioPort | |
| from hk_equity_strategies import resolve_canonical_profile as resolve_hk_canonical_profile | |
| from us_equity_strategies import resolve_canonical_profile | |
| assert CallableNotificationPort | |
| assert CallablePortfolioPort | |
| assert resolve_canonical_profile("russell_top50_leader_rotation") == "russell_top50_leader_rotation" | |
| assert resolve_hk_canonical_profile("hk_global_etf_tactical_rotation") == "hk_global_etf_tactical_rotation" | |
| PY | |
| - name: Install editable shared repositories | |
| run: | | |
| set -euo pipefail | |
| python -m pip install --no-deps -e external/QuantPlatformKit -e external/UsEquityStrategies -e external/UsEquitySnapshotPipelines | |
| - name: Run ruff | |
| run: | | |
| set -euo pipefail | |
| ruff check --exclude external . | |
| - name: Check QPK pin consistency | |
| run: python scripts/check_qpk_pin_consistency.py | |
| continue-on-error: true | |
| - name: Run unit tests | |
| run: | | |
| set -euo pipefail | |
| PYTHONPATH=. PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q tests --ignore=tests/test_request_handling.py --ignore=tests/test_event_loop.py --ignore=tests/test_monitor_dispatcher.py --ignore=tests/test_notifications.py --ignore=tests/test_connect_timeout_alert.py || true |