name: CI on: push: branches: [main] pull_request: branches: [main] jobs: test: runs-on: ubuntu-latest strategy: matrix: python-version: ["3.10", "3.11", "3.12"] fail-fast: false steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} cache: "pip" - name: Install Poetry run: | pipx install poetry - name: Configure Poetry run: | poetry config virtualenvs.create true poetry config virtualenvs.in-project true - name: Cache Poetry virtualenv uses: actions/cache@v3 with: path: ./.venv key: venv-${{ runner.os }}-${{ matrix.python-version }}-${{ hashFiles('**/poetry.lock') }} - name: Install dependencies run: | poetry install - name: Run pre-commit hooks uses: pre-commit/action@v3.0.0 with: extra_args: --all-files env: PRE_COMMIT_CACHE_KEY: ${{ hashFiles('.pre-commit-config.yaml', 'pyproject.toml') }} - name: Run tests with coverage run: | poetry run pytest --cov=llmdataparser --cov-report=xml - name: Upload coverage to Codecov uses: codecov/codecov-action@v5 with: token: ${{ secrets.CODECOV_TOKEN }} file: ./coverage.xml fail_ci_if_error: true - name: Build documentation run: | poetry add mkdocs mkdocs-material --group dev cp README.md docs/index.md poetry run mkdocs build if: matrix.python-version == '3.12' - name: Upload documentation artifact uses: actions/upload-artifact@v3 with: name: documentation path: site/ if: matrix.python-version == '3.12'