Skip to content

chore(deps): bump pypdf from 5.8.0 to 6.7.3 in /packages/uipath-llamaindex/testcases/quickstart-agent #870

chore(deps): bump pypdf from 5.8.0 to 6.7.3 in /packages/uipath-llamaindex/testcases/quickstart-agent

chore(deps): bump pypdf from 5.8.0 to 6.7.3 in /packages/uipath-llamaindex/testcases/quickstart-agent #870

Workflow file for this run

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 }}