perpetual 2.0.0

A self-generalizing gradient boosting machine that doesn't need hyperparameter optimization
Documentation
name: docs
on:
  release:
    types: [published]
  workflow_dispatch:

permissions:
  contents: write

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.11'

      - name: Install latest nightly Rust
        uses: dtolnay/rust-toolchain@nightly
        with:
          toolchain: nightly

      - name: Set up R
        uses: r-lib/actions/setup-r@v2
        with:
          use-public-rspm: true

      - name: Set up Pandoc
        uses: r-lib/actions/setup-pandoc@v2

      - name: Vendor core Rust logic
        run: python scripts/vendor_r.py

      - name: Install R dependencies
        uses: r-lib/actions/setup-r-dependencies@v2
        with:
          extra-packages: any::pkgdown, any::devtools, any::roxygen2
          working-directory: package-r
      
      - name: Generate R Documentation
        run: |
          cp README.md package-r/README.md
          Rscript -e 'roxygen2::roxygenise("package-r")'
        shell: bash

      - name: Build R Documentation
        run: |
          Rscript -e 'pkgdown::build_site("package-r")'
        shell: bash

      - name: Prepare Build Files
        run: |
          cp README.md package-python/README_PYTHON.md
          cp LICENSE package-python/LICENSE

      - name: Build wheels with maturin
        uses: PyO3/maturin-action@v1
        with:
          command: build
          args: --release --out dist --interpreter python3.11 --manifest-path package-python/Cargo.toml

      - name: Install dependencies
        run: |
          cd package-python
          cp ../README.md README_PYTHON.md
          python -m venv .venv
          source .venv/bin/activate
          # Install dependencies manually to avoid pip build isolation issues with relative paths
          pip install numpy typing-extensions pandas polars pyarrow pytest seaborn scikit-learn mkdocs-material "mkdocstrings[python]" mkdocs-autorefs ruff xgboost onnxmltools onnx onnxruntime
          pip install sphinx sphinx_rtd_theme numpydoc nbsphinx ipykernel optuna lightgbm scipy ucimlrepo
          pip install ../dist/*.whl

      - name: Build Python Documentation
        run: |
          cd package-python
          source .venv/bin/activate
          cd docs
          sphinx-build -b html source build/html

      - name: Move R Documentation
        run: |
          mkdir -p package-python/docs/build/html/r
          cp -r package-r/docs/* package-python/docs/build/html/r/
        shell: bash

      - name: Deploy to GitHub Pages
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: package-python/docs/build/html