# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# Continuous Integration (CI) GitHub Actions tests

name: CI

permissions:
  contents: read # Read code in PRs

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]
  schedule:
    - cron: "0 0 * * *" # Runs at 00:00 UTC every day

jobs:
  Test:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        python-version: ["3.9", "3.13"]

    steps:
      - uses: actions/checkout@v6

      - uses: actions/setup-python@v6
        with:
          python-version: ${{ matrix.python-version }}

      - uses: astral-sh/setup-uv@v7
        with:
          enable-cache: false

      - name: Install dependencies
        run: |
          uv pip install --system -e ".[dev]"

      - name: Import Package
        shell: python
        run: |
          from ultralytics_llm import __version__
          print(f"ultralytics-llm {__version__}")

      - name: Tests
        run: |
          python -m pytest tests -v --cov=./ --cov-report=xml:pytest-coverage.xml

      - name: Upload coverage to Codecov
        uses: codecov/codecov-action@v5
        with:
          token: ${{ secrets.CODECOV_TOKEN }}
          files: ./pytest-coverage.xml, # optional (default = coverage.xml)
