chore(deps): bump pypdf from 5.8.0 to 6.7.3 in /packages/uipath-llamaindex/testcases/quickstart-agent #870
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Publish Dev Build | |
| on: | |
| pull_request: | |
| types: [opened, synchronize, reopened, labeled] | |
| paths: | |
| - 'packages/**' | |
| - '.github/workflows/publish-dev.yml' | |
| - '.github/scripts/detect_changed_packages.py' | |
| permissions: | |
| contents: read | |
| pull-requests: write | |
| jobs: | |
| detect-changed-packages: | |
| if: contains(github.event.pull_request.labels.*.name, 'build:dev') | |
| runs-on: ubuntu-latest | |
| outputs: | |
| packages: ${{ steps.detect.outputs.packages }} | |
| count: ${{ steps.detect.outputs.count }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Setup Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - name: Detect changed packages | |
| id: detect | |
| env: | |
| GITHUB_EVENT_NAME: ${{ github.event_name }} | |
| BASE_SHA: ${{ github.event.pull_request.base.sha }} | |
| HEAD_SHA: ${{ github.event.pull_request.head.sha }} | |
| run: python .github/scripts/detect_changed_packages.py | |
| publish-dev: | |
| name: Publish Dev Build - ${{ matrix.package }} | |
| needs: detect-changed-packages | |
| if: contains(github.event.pull_request.labels.*.name, 'build:dev') && needs.detect-changed-packages.outputs.count > 0 | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: packages/${{ matrix.package }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| package: ${{ fromJson(needs.detect-changed-packages.outputs.packages) }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup uv | |
| uses: astral-sh/setup-uv@v5 | |
| with: | |
| enable-cache: true | |
| - name: Setup Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version-file: "packages/${{ matrix.package }}/.python-version" | |
| - name: Install dependencies | |
| run: uv sync --all-extras | |
| - name: Set development version | |
| shell: pwsh | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| $pyprojPath = "pyproject.toml" | |
| $pyprojcontent = Get-Content $pyprojPath -Raw | |
| $PROJECT_NAME = ($pyprojcontent | Select-String -Pattern '(?m)^\[(project|tool\.poetry)\][^\[]*?name\s*=\s*"([^"]*)"' -AllMatches).Matches[0].Groups[2].Value | |
| $CURRENT_VERSION = ($pyprojcontent | Select-String -Pattern '(?m)^\[(project|tool\.poetry)\][^\[]*?version\s*=\s*"([^"]*)"' -AllMatches).Matches[0].Groups[2].Value | |
| # Get PR number and run number with proper padding | |
| $PR_NUM = [int]"${{ github.event.pull_request.number }}" | |
| $PADDED_PR = "{0:D5}" -f [int]"${{ github.event.pull_request.number }}" | |
| $PADDED_RUN = "{0:D4}" -f [int]"${{ github.run_number }}" | |
| $PADDED_NEXT_PR = "{0:D5}" -f ($PR_NUM + 1) | |
| # Create version range strings for PR | |
| $MIN_VERSION = "$CURRENT_VERSION.dev1$PADDED_PR" + "0000" | |
| $MAX_VERSION = "$CURRENT_VERSION.dev1$PADDED_NEXT_PR" + "0000" | |
| # Create unique dev version with PR number and run ID | |
| $DEV_VERSION = "$CURRENT_VERSION.dev1$PADDED_PR$PADDED_RUN" | |
| # Update version in pyproject.toml | |
| (Get-Content $pyprojPath) -replace "version = `"$CURRENT_VERSION`"", "version = `"$DEV_VERSION`"" | Set-Content $pyprojPath | |
| Write-Output "Package $PROJECT_NAME version set to $DEV_VERSION" | |
| $dependencyMessage = @" | |
| ### $PROJECT_NAME | |
| ``````toml | |
| [project] | |
| dependencies = [ | |
| # Exact version: | |
| "$PROJECT_NAME==$DEV_VERSION", | |
| # Any version from PR | |
| "$PROJECT_NAME>=$MIN_VERSION,<$MAX_VERSION" | |
| ] | |
| [[tool.uv.index]] | |
| name = "testpypi" | |
| url = "https://test.pypi.org/simple/" | |
| publish-url = "https://test.pypi.org/legacy/" | |
| explicit = true | |
| [tool.uv.sources] | |
| $PROJECT_NAME = { index = "testpypi" } | |
| `````` | |
| "@ | |
| # Get the owner and repo from the GitHub repository | |
| $owner = "${{ github.repository_owner }}" | |
| $repo = "${{ github.repository }}".Split('/')[1] | |
| $prNumber = $PR_NUM | |
| # Get the current PR description | |
| $prUri = "https://api.github.com/repos/$owner/$repo/pulls/$prNumber" | |
| $headers = @{ | |
| Authorization = "token $env:GITHUB_TOKEN" | |
| Accept = "application/vnd.github.v3+json" | |
| } | |
| $pr = Invoke-RestMethod -Uri $prUri -Method Get -Headers $headers | |
| $currentBody = $pr.body | |
| # Define regex patterns for matching package sections | |
| $devPackagesHeader = "## Development Packages" | |
| $packageHeaderPattern = "### $PROJECT_NAME\s*\n" | |
| # Find if the package section exists using multiline regex | |
| $packageSectionRegex = "(?ms)### $PROJECT_NAME\s*\n``````toml.*?``````" | |
| if ($currentBody -match $devPackagesHeader) { | |
| # Development Packages section exists | |
| if ($currentBody -match $packageSectionRegex) { | |
| # Replace existing package section | |
| Write-Output "Updating existing $PROJECT_NAME section" | |
| $newBody = $currentBody -replace $packageSectionRegex, $dependencyMessage.Trim() | |
| } else { | |
| # Append new package section after the Development Packages header | |
| Write-Output "Adding new $PROJECT_NAME section" | |
| $insertPoint = $currentBody.IndexOf($devPackagesHeader) + $devPackagesHeader.Length | |
| $newBody = $currentBody.Insert($insertPoint, "`n`n$dependencyMessage") | |
| } | |
| } else { | |
| # Create the Development Packages section | |
| Write-Output "Creating Development Packages section with $PROJECT_NAME" | |
| $packageSection = @" | |
| ## Development Packages | |
| $dependencyMessage | |
| "@ | |
| $newBody = if ($currentBody) { "$currentBody`n`n$packageSection" } else { $packageSection } | |
| } | |
| # Update the PR description with retry logic | |
| $maxRetries = 3 | |
| $retryCount = 0 | |
| $success = $false | |
| while (-not $success -and $retryCount -lt $maxRetries) { | |
| try { | |
| $updateBody = @{ | |
| body = $newBody | |
| } | ConvertTo-Json | |
| Invoke-RestMethod -Uri $prUri -Method Patch -Headers $headers -Body $updateBody -ContentType "application/json" | Out-Null | |
| $success = $true | |
| Write-Output "Successfully updated PR description with $PROJECT_NAME information" | |
| } catch { | |
| $retryCount++ | |
| if ($retryCount -lt $maxRetries) { | |
| Write-Output "Failed to update PR description, retrying ($retryCount/$maxRetries)..." | |
| Start-Sleep -Seconds 2 | |
| # Re-fetch PR body in case another job updated it | |
| $pr = Invoke-RestMethod -Uri $prUri -Method Get -Headers $headers | |
| $currentBody = $pr.body | |
| # Recompute newBody with fresh data | |
| if ($currentBody -match $packageSectionRegex) { | |
| $newBody = $currentBody -replace $packageSectionRegex, $dependencyMessage.Trim() | |
| } elseif ($currentBody -match $devPackagesHeader) { | |
| $insertPoint = $currentBody.IndexOf($devPackagesHeader) + $devPackagesHeader.Length | |
| $newBody = $currentBody.Insert($insertPoint, "`n`n$dependencyMessage") | |
| } else { | |
| $packageSection = "$devPackagesHeader`n`n$dependencyMessage" | |
| $newBody = if ($currentBody) { "$currentBody`n`n$packageSection" } else { $packageSection } | |
| } | |
| } else { | |
| Write-Output "Failed to update PR description after $maxRetries attempts" | |
| throw | |
| } | |
| } | |
| } | |
| - name: Build package | |
| run: uv build --package ${{ matrix.package }} | |
| - name: Publish | |
| run: uv publish --index testpypi | |
| env: | |
| UV_PUBLISH_TOKEN: ${{ matrix.package == 'uipath-openai-agents' && secrets.TEST_PYPI_TOKEN_OPENAI_AGENTS || matrix.package == 'uipath-google-adk' && secrets.TEST_PYPI_TOKEN_GOOGLE_ADK || matrix.package == 'uipath-agent-framework' && secrets.TEST_PYPI_TOKEN_AGENT_FRAMEWORK || secrets.TEST_PYPI_TOKEN }} |