mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
4b0522d62d
* Bump Python package versions to 1.5.0 for a release
* Promote orchestrations to 1.0.0rc1
* ci(python-setup): merge dynamic exclude into existing workspace exclude
The python-setup action injected exclude = [...] verbatim into
[tool.uv.workspace], producing a duplicate 'exclude' key when the
section already had a static exclude. Scope the rewrite to the
[tool.uv.workspace] section and append the package to the existing
array when present; idempotent if the package is already excluded.
* Address Copilot review feedback: raise inter-package floors to 1.5.0
- foundry, foundry-local: agent-framework-openai >=1.4.0 -> >=1.5.0
- azure-contentunderstanding: agent-framework-foundry >=1.4.0 -> >=1.5.0
- azurefunctions: pin agent-framework-durabletask to >=1.0.0b260519,<2
Keeps lockstep cohort consistent and avoids mixed 1.4.x / 1.5.0 installs.
* Re-include azurefunctions and durabletask in the uv workspace
The pinned durabletask>=1.4.0 floor is enough to make resolution succeed;
the workspace exclude was over-correction and broke CI samples and pyright
type-checking (re-exports in agent_framework/azure/__init__.pyi plus
samples/04-hosting/{azure_functions,durabletask}/ could not resolve their
imports). Dropping them from agent-framework-core[all] still stands so the
metapackage does not pull them.
* Restore azurefunctions and durabletask in agent-framework-core[all]
The durabletask floor pin keeps users on the safe 1.4.0, so they are once
again included in the metapackage. Update CHANGELOG to reflect the pin
rather than an [all] removal.
* Raise uvicorn ceiling in ag-ui and devui to allow 0.42+
The root override-dependencies pins uvicorn[standard]>=0.34.0 (no upper)
and the workspace lock resolves to 0.47.0. The package ceiling <0.42.0
meant the workspace was no longer testing the declared supported range.
Bump to <1 so the lock fits within the declared bounds.
Also picked up by validate-dependency-bounds: refresh stale orchestrations
RC pin in devui dev deps.
50 lines
2.0 KiB
YAML
50 lines
2.0 KiB
YAML
name: Reusable Setup UV
|
|
description: Reusable workflow to setup uv environment
|
|
|
|
inputs:
|
|
python-version:
|
|
description: The Python version to set up
|
|
required: true
|
|
os:
|
|
description: The operating system to set up
|
|
required: true
|
|
exclude-packages:
|
|
description: Space-separated list of packages to exclude from uv sync
|
|
required: false
|
|
default: ''
|
|
|
|
runs:
|
|
using: "composite"
|
|
steps:
|
|
- name: Set up uv
|
|
uses: astral-sh/setup-uv@v6
|
|
with:
|
|
version-file: "python/pyproject.toml"
|
|
enable-cache: true
|
|
cache-suffix: ${{ inputs.os }}-${{ inputs.python-version }}
|
|
cache-dependency-glob: "**/uv.lock"
|
|
- name: Exclude incompatible workspace packages
|
|
if: ${{ inputs.exclude-packages != '' }}
|
|
shell: bash
|
|
run: |
|
|
for pkg in ${{ inputs.exclude-packages }}; do
|
|
for f in python/packages/*/pyproject.toml; do
|
|
if grep -q "name = \"$pkg\"" "$f"; then
|
|
pkg_dir=$(dirname "$f" | sed 's|python/||')
|
|
echo "Excluding workspace package: $pkg ($pkg_dir)"
|
|
if awk '/^\[tool\.uv\.workspace\]/{f=1;next} /^\[/{f=0} f && /^exclude = \[/{found=1} END{exit !found}' python/pyproject.toml; then
|
|
if ! awk '/^\[tool\.uv\.workspace\]/{f=1;next} /^\[/{f=0} f && /^exclude = \[/ && index($0, "\"'"$pkg_dir"'\"")' python/pyproject.toml | grep -q .; then
|
|
sed -i.bak '/\[tool\.uv\.workspace\]/,/^\[/ { /^exclude = \[/ s|\]|, "'"$pkg_dir"'"]| }' python/pyproject.toml
|
|
fi
|
|
else
|
|
sed -i.bak '/\[tool\.uv\.workspace\]/a\exclude = ["'"$pkg_dir"'"]' python/pyproject.toml
|
|
fi
|
|
sed -i.bak '/'"$pkg"' = { workspace = true }/d' python/pyproject.toml
|
|
fi
|
|
done
|
|
done
|
|
- name: Install the project
|
|
shell: bash
|
|
run: |
|
|
cd python && uv sync --all-packages --all-extras --dev --prerelease=if-necessary-or-explicit
|