 name: Continuous Integration
 
 on:
   push:
     branches:
     - '*'
   pull_request:
     branches:
     - '*'
   schedule:
     - cron: '59 23 * * *'
   workflow_dispatch:
    inputs:
      version:
        description: Manual CI Run
        default: test
        required: false

 jobs:
   tests:
     name: ${{ matrix.os }}, ${{ matrix.environment-file }}
     runs-on: ${{ matrix.os }}
     timeout-minutes: 30
     strategy:
       matrix:
         os: [ubuntu-latest]
         environment-file: [
            ci/310-oldest.yaml,
            ci/310-latest.yaml,
            ci/311-latest.yaml,
            ci/312-latest.yaml,
            ci/312-dev.yaml,
         ]
         include:
           - environment-file: ci/312-latest.yaml
             os: macos-13 # Intel
           - environment-file: ci/312-latest.yaml
             os: macos-14 # Apple Silicon
           - environment-file: ci/312-latest.yaml
             os: windows-latest
       fail-fast: false

     defaults:
       run:
         shell: bash -l {0}

     steps:
       - name: checkout repo
         uses: actions/checkout@v4
         with:
           fetch-depth: 0 # Fetch all history for all branches and tags.
       
       - name: setup micromamba
         uses: mamba-org/setup-micromamba@v2
         with:
           environment-file: ${{ matrix.environment-file }}
           micromamba-version: 'latest'
        
       
       - name: environment info
         run: |
           micromamba info
           micromamba list
       
       - name: spatial versions
         run: 'python -c "import geopandas; geopandas.show_versions();"'
       
       - name: install pysal
         run: |
           pip install -e .
       
       - name: run tests
         run: |
           pytest pysal \
           -v \
           -r a \
           -n logical \
           --color yes \
           --cov pysal \
           --cov-append \
           --cov-report term-missing \
           --cov-report xml .
       
       - name: codecov
         uses: codecov/codecov-action@v5
