1name: CI
  2on:
  3  push:
  4    branches-ignore:
  5      - 'generated'
  6      - 'codegen/**'
  7      - 'integrated/**'
  8      - 'stl-preview-head/**'
  9      - 'stl-preview-base/**'
 10  pull_request:
 11    branches-ignore:
 12      - 'stl-preview-head/**'
 13      - 'stl-preview-base/**'
 14
 15jobs:
 16  lint:
 17    timeout-minutes: 10
 18    name: lint
 19    runs-on: ${{ github.repository == 'stainless-sdks/openai-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
 20    if: github.event_name == 'push' || github.event.pull_request.head.repo.fork
 21    steps:
 22      - uses: actions/checkout@v4
 23
 24      - name: Install Rye
 25        run: |
 26          curl -sSf https://rye.astral.sh/get | bash
 27          echo "$HOME/.rye/shims" >> $GITHUB_PATH
 28        env:
 29          RYE_VERSION: '0.44.0'
 30          RYE_INSTALL_OPTION: '--yes'
 31
 32      - name: Install dependencies
 33        run: rye sync --all-features
 34
 35      - name: Run lints
 36        run: ./scripts/lint
 37
 38  build:
 39    if: github.event_name == 'push' || github.event.pull_request.head.repo.fork
 40    timeout-minutes: 10
 41    name: build
 42    permissions:
 43      contents: read
 44      id-token: write
 45    runs-on: ${{ github.repository == 'stainless-sdks/openai-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
 46    steps:
 47      - uses: actions/checkout@v4
 48
 49      - name: Install Rye
 50        run: |
 51          curl -sSf https://rye.astral.sh/get | bash
 52          echo "$HOME/.rye/shims" >> $GITHUB_PATH
 53        env:
 54          RYE_VERSION: '0.44.0'
 55          RYE_INSTALL_OPTION: '--yes'
 56
 57      - name: Install dependencies
 58        run: rye sync --all-features
 59
 60      - name: Run build
 61        run: rye build
 62
 63      - name: Get GitHub OIDC Token
 64        if: github.repository == 'stainless-sdks/openai-python'
 65        id: github-oidc
 66        uses: actions/github-script@v6
 67        with:
 68          script: core.setOutput('github_token', await core.getIDToken());
 69
 70      - name: Upload tarball
 71        if: github.repository == 'stainless-sdks/openai-python'
 72        env:
 73          URL: https://pkg.stainless.com/s
 74          AUTH: ${{ steps.github-oidc.outputs.github_token }}
 75          SHA: ${{ github.sha }}
 76        run: ./scripts/utils/upload-artifact.sh
 77
 78  test:
 79    timeout-minutes: 10
 80    name: test
 81    runs-on: ${{ github.repository == 'stainless-sdks/openai-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
 82    if: github.event_name == 'push' || github.event.pull_request.head.repo.fork
 83    steps:
 84      - uses: actions/checkout@v4
 85
 86      - name: Install Rye
 87        run: |
 88          curl -sSf https://rye.astral.sh/get | bash
 89          echo "$HOME/.rye/shims" >> $GITHUB_PATH
 90        env:
 91          RYE_VERSION: '0.44.0'
 92          RYE_INSTALL_OPTION: '--yes'
 93
 94      - name: Bootstrap
 95        run: ./scripts/bootstrap
 96
 97      - name: Run tests
 98        run: ./scripts/test
 99
100  examples:
101    timeout-minutes: 10
102    name: examples
103    runs-on: ${{ github.repository == 'stainless-sdks/openai-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
104    if: github.repository == 'openai/openai-python' && (github.event_name == 'push' || github.event.pull_request.head.repo.fork)
105
106    steps:
107      - uses: actions/checkout@v4
108
109      - name: Install Rye
110        run: |
111          curl -sSf https://rye.astral.sh/get | bash
112          echo "$HOME/.rye/shims" >> $GITHUB_PATH
113        env:
114          RYE_VERSION: '0.44.0'
115          RYE_INSTALL_OPTION: '--yes'
116      - name: Install dependencies
117        run: |
118          rye sync --all-features
119
120      - env:
121          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
122        run: |
123            rye run python examples/demo.py
124      - env:
125          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
126        run: |
127            rye run python examples/async_demo.py