Skip to content

Pass per-operation StateItem metadata in async execute_state_transact… #177

Pass per-operation StateItem metadata in async execute_state_transact…

Pass per-operation StateItem metadata in async execute_state_transact… #177

Workflow file for this run

name: dapr-python-release
on:
push:
tags:
- v*
workflow_dispatch:
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Set up Python 3.10
uses: actions/setup-python@v6
with:
python-version: '3.10'
- name: Install uv
uses: astral-sh/setup-uv@v7
- name: Install dependencies
run: uv sync --frozen --all-packages --group dev
- name: Verify tag matches a stable VERSION
if: startsWith(github.ref, 'refs/tags/v')
run: |
uv run python -c "
import os
from importlib.metadata import version
tag = os.environ['GITHUB_REF'].removeprefix('refs/tags/v')
package_version = version('dapr')
assert tag == package_version, (
f'Tag {os.environ[\"GITHUB_REF\"]!r} expects version={tag!r}, got {package_version!r}. '
'Bump VERSION before tagging, see RELEASE.md'
)
assert '.dev' not in package_version, (
f'Version {package_version!r} contains .dev. Release tags must point to a stable or rc version'
)
"
- name: Run Autoformatter
run: |
uv run ruff check --fix && uv run ruff format
statusResult=$(git status -u --porcelain)
if [ -z "$statusResult" ]
then
exit 0
else
echo "Source files are not formatted correctly. Run 'uv run ruff check --fix && uv run ruff format'."
exit 1
fi
build:
needs: lint
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python_ver: ["3.10", "3.11", "3.12", "3.13", "3.14"]
steps:
- uses: actions/checkout@v6
- name: Set up Python ${{ matrix.python_ver }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python_ver }}
- name: Install uv
uses: astral-sh/setup-uv@v7
- name: Install dependencies
run: uv sync --frozen --all-packages --group dev
- name: Check Typing
run: uv run mypy
- name: Run unit-tests
run: |
uv run coverage run -m pytest tests ext -m "not e2e" --ignore=tests/integration --ignore=tests/examples --import-mode=importlib
uv run coverage xml
- name: Upload test coverage
uses: codecov/codecov-action@v6
publish:
needs: build
if: github.event_name != 'pull_request'
runs-on: ubuntu-latest
env:
TWINE_USERNAME: "__token__"
steps:
- uses: actions/checkout@v6
- name: Set up Python 3.10
uses: actions/setup-python@v6
with:
python-version: '3.10'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install build twine
- name: Build and publish Dapr Python SDK
env:
TWINE_PASSWORD: ${{ secrets.PYPI_UPLOAD_PASS }}
run: |
python -m build --wheel
twine upload dist/*
- name: Build and publish dapr-ext-workflow
env:
TWINE_PASSWORD: ${{ secrets.PYPI_UPLOAD_PASS }}
run: |
cd ext/dapr-ext-workflow
python -m build --wheel
twine upload dist/*
- name: Build and publish Dapr Flask Extension
env:
TWINE_PASSWORD: ${{ secrets.PYPI_UPLOAD_PASS }}
run: |
cd ext/flask_dapr
python -m build --wheel
twine upload dist/*
- name: Build and publish dapr-ext-grpc
env:
TWINE_PASSWORD: ${{ secrets.PYPI_UPLOAD_PASS }}
run: |
cd ext/dapr-ext-grpc
python -m build --wheel
twine upload dist/*
- name: Build and publish dapr-ext-fastapi
env:
TWINE_PASSWORD: ${{ secrets.PYPI_UPLOAD_PASS }}
run: |
cd ext/dapr-ext-fastapi
python -m build --wheel
twine upload dist/*
- name: Build and publish dapr-ext-langgraph
env:
TWINE_PASSWORD: ${{ secrets.PYPI_UPLOAD_PASS }}
run: |
cd ext/dapr-ext-langgraph
python -m build --wheel
twine upload dist/*
- name: Build and publish dapr-ext-strands
env:
TWINE_PASSWORD: ${{ secrets.PYPI_UPLOAD_PASS }}
run: |
cd ext/dapr-ext-strands
python -m build --wheel
twine upload dist/*