From 0bca48977dc61a04064ed0dc98475311fb5611e8 Mon Sep 17 00:00:00 2001 From: Abhishek Jha Date: Thu, 22 Oct 2026 06:05:10 +0530 Subject: [PATCH 1/5] chore: improve PyPI metadata (keywords, project URLs) Add 13 keywords to [project] in the root pyproject.toml, expand [project.urls] with Homepage, Documentation, Source, Issues and Changelog, and add the 'Topic :: Software Development :: Libraries' classifier. Metadata-only change: no dependency, version or extras changes; uv.lock untouched. Signed-off-by: SpinachDigital Signed-off-by: Abhishek Jha --- pyproject.toml | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index fb08b3985..8499bae64 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,6 +2,21 @@ name = "dapr" dynamic = ["version"] description = "The official release of Dapr Python SDK." +keywords = [ + "dapr", + "durable-execution", + "durable-workflows", + "workflow", + "microservices", + "sidecar", + "pubsub", + "state-management", + "actors", + "ai-agents", + "langgraph", + "strands-agents", + "checkpointer", +] readme = "README.md" requires-python = ">=3.10" license = {text = "Apache-2.0"} @@ -11,6 +26,7 @@ classifiers = [ "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", + "Topic :: Software Development :: Libraries", "Programming Language :: Python", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", @@ -120,8 +136,11 @@ all = [ ] [project.urls] -Documentation = "https://github.com/dapr/docs" +Homepage = "https://dapr.io" +Documentation = "https://docs.dapr.io/developing-applications/sdks/python/" Source = "https://github.com/dapr/python-sdk" +Issues = "https://github.com/dapr/python-sdk/issues" +Changelog = "https://github.com/dapr/python-sdk/releases" [build-system] requires = ["hatchling"] From 5b34b473fb78d46ba83ddc19f95018db1e04057a Mon Sep 17 00:00:00 2001 From: Abhishek Jha Date: Thu, 22 Oct 2026 06:51:45 +0530 Subject: [PATCH 2/5] docs: make README links absolute for PyPI Rewrite all relative links in README.md as absolute URLs so they resolve on the PyPI project page. Signed-off-by: SpinachDigital Signed-off-by: Abhishek Jha --- README.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index a941dbf55..894e321de 100644 --- a/README.md +++ b/README.md @@ -18,21 +18,21 @@ Dapr SDK for Python allows you to implement the [Virtual Actor model](https://do This includes the following packages: -* [dapr.actor](./dapr/actor): Actor Framework -* [dapr.clients](./dapr/clients): Dapr clients for Dapr building blocks -* [dapr.conf](./dapr/conf): Configuration -* [dapr.serializers](./dapr/serializers): serializer/deserializer -* [dapr.proto](./dapr/proto): Dapr gRPC autogenerated gRPC clients +* [dapr.actor](https://github.com/dapr/python-sdk/blob/main/dapr/actor): Actor Framework +* [dapr.clients](https://github.com/dapr/python-sdk/blob/main/dapr/clients): Dapr clients for Dapr building blocks +* [dapr.conf](https://github.com/dapr/python-sdk/blob/main/dapr/conf): Configuration +* [dapr.serializers](https://github.com/dapr/python-sdk/blob/main/dapr/serializers): serializer/deserializer +* [dapr.proto](https://github.com/dapr/python-sdk/blob/main/dapr/proto): Dapr gRPC autogenerated gRPC clients And the following extensions, installed as extras on the core `dapr` package: -* [dapr.ext.databricks](./dapr/ext/databricks): Databricks Lakeflow streaming sink for Dapr Workflow — `pip install "dapr[databricks]"` -* [dapr.ext.fastapi](./dapr/ext/fastapi): FastAPI integration (actors, pub/sub) — `pip install "dapr[fastapi]"` -* [dapr.ext.flask](./dapr/ext/flask): Flask integration (actors, pub/sub) — `pip install "dapr[flask]"` -* [dapr.ext.grpc](./dapr/ext/grpc): gRPC AppCallback server — `pip install "dapr[grpc]"` -* [dapr.ext.langgraph](./dapr/ext/langgraph): LangGraph checkpoint persistence — `pip install "dapr[langgraph]"` -* [dapr.ext.strands](./dapr/ext/strands): Strands agent session management — `pip install "dapr[strands]"` -* [dapr.ext.workflow](./dapr/ext/workflow): Durable workflow authoring — `pip install "dapr[workflow]"` +* [dapr.ext.databricks](https://github.com/dapr/python-sdk/blob/main/dapr/ext/databricks): Databricks Lakeflow streaming sink for Dapr Workflow — `pip install "dapr[databricks]"` +* [dapr.ext.fastapi](https://github.com/dapr/python-sdk/blob/main/dapr/ext/fastapi): FastAPI integration (actors, pub/sub) — `pip install "dapr[fastapi]"` +* [dapr.ext.flask](https://github.com/dapr/python-sdk/blob/main/dapr/ext/flask): Flask integration (actors, pub/sub) — `pip install "dapr[flask]"` +* [dapr.ext.grpc](https://github.com/dapr/python-sdk/blob/main/dapr/ext/grpc): gRPC AppCallback server — `pip install "dapr[grpc]"` +* [dapr.ext.langgraph](https://github.com/dapr/python-sdk/blob/main/dapr/ext/langgraph): LangGraph checkpoint persistence — `pip install "dapr[langgraph]"` +* [dapr.ext.strands](https://github.com/dapr/python-sdk/blob/main/dapr/ext/strands): Strands agent session management — `pip install "dapr[strands]"` +* [dapr.ext.workflow](https://github.com/dapr/python-sdk/blob/main/dapr/ext/workflow): Durable workflow authoring — `pip install "dapr[workflow]"` ## Getting started @@ -96,7 +96,7 @@ to pin to a specific point in history. ### Try out examples -Go to [Examples](./examples) +Go to [Examples](https://github.com/dapr/python-sdk/blob/main/examples) ## Developing From d7a33884f39ebccab0807c02a6078d946ab3b34a Mon Sep 17 00:00:00 2001 From: Abhishek Jha Date: Fri, 23 Oct 2026 06:13:40 +0530 Subject: [PATCH 3/5] docs: use /tree/main/ for directory links per review nit Signed-off-by: Abhishek Jha --- README.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 894e321de..fe14535c6 100644 --- a/README.md +++ b/README.md @@ -18,21 +18,21 @@ Dapr SDK for Python allows you to implement the [Virtual Actor model](https://do This includes the following packages: -* [dapr.actor](https://github.com/dapr/python-sdk/blob/main/dapr/actor): Actor Framework -* [dapr.clients](https://github.com/dapr/python-sdk/blob/main/dapr/clients): Dapr clients for Dapr building blocks -* [dapr.conf](https://github.com/dapr/python-sdk/blob/main/dapr/conf): Configuration -* [dapr.serializers](https://github.com/dapr/python-sdk/blob/main/dapr/serializers): serializer/deserializer -* [dapr.proto](https://github.com/dapr/python-sdk/blob/main/dapr/proto): Dapr gRPC autogenerated gRPC clients +* [dapr.actor](https://github.com/dapr/python-sdk/tree/main/dapr/actor): Actor Framework +* [dapr.clients](https://github.com/dapr/python-sdk/tree/main/dapr/clients): Dapr clients for Dapr building blocks +* [dapr.conf](https://github.com/dapr/python-sdk/tree/main/dapr/conf): Configuration +* [dapr.serializers](https://github.com/dapr/python-sdk/tree/main/dapr/serializers): serializer/deserializer +* [dapr.proto](https://github.com/dapr/python-sdk/tree/main/dapr/proto): Dapr gRPC autogenerated gRPC clients And the following extensions, installed as extras on the core `dapr` package: -* [dapr.ext.databricks](https://github.com/dapr/python-sdk/blob/main/dapr/ext/databricks): Databricks Lakeflow streaming sink for Dapr Workflow — `pip install "dapr[databricks]"` -* [dapr.ext.fastapi](https://github.com/dapr/python-sdk/blob/main/dapr/ext/fastapi): FastAPI integration (actors, pub/sub) — `pip install "dapr[fastapi]"` -* [dapr.ext.flask](https://github.com/dapr/python-sdk/blob/main/dapr/ext/flask): Flask integration (actors, pub/sub) — `pip install "dapr[flask]"` -* [dapr.ext.grpc](https://github.com/dapr/python-sdk/blob/main/dapr/ext/grpc): gRPC AppCallback server — `pip install "dapr[grpc]"` -* [dapr.ext.langgraph](https://github.com/dapr/python-sdk/blob/main/dapr/ext/langgraph): LangGraph checkpoint persistence — `pip install "dapr[langgraph]"` -* [dapr.ext.strands](https://github.com/dapr/python-sdk/blob/main/dapr/ext/strands): Strands agent session management — `pip install "dapr[strands]"` -* [dapr.ext.workflow](https://github.com/dapr/python-sdk/blob/main/dapr/ext/workflow): Durable workflow authoring — `pip install "dapr[workflow]"` +* [dapr.ext.databricks](https://github.com/dapr/python-sdk/tree/main/dapr/ext/databricks): Databricks Lakeflow streaming sink for Dapr Workflow — `pip install "dapr[databricks]"` +* [dapr.ext.fastapi](https://github.com/dapr/python-sdk/tree/main/dapr/ext/fastapi): FastAPI integration (actors, pub/sub) — `pip install "dapr[fastapi]"` +* [dapr.ext.flask](https://github.com/dapr/python-sdk/tree/main/dapr/ext/flask): Flask integration (actors, pub/sub) — `pip install "dapr[flask]"` +* [dapr.ext.grpc](https://github.com/dapr/python-sdk/tree/main/dapr/ext/grpc): gRPC AppCallback server — `pip install "dapr[grpc]"` +* [dapr.ext.langgraph](https://github.com/dapr/python-sdk/tree/main/dapr/ext/langgraph): LangGraph checkpoint persistence — `pip install "dapr[langgraph]"` +* [dapr.ext.strands](https://github.com/dapr/python-sdk/tree/main/dapr/ext/strands): Strands agent session management — `pip install "dapr[strands]"` +* [dapr.ext.workflow](https://github.com/dapr/python-sdk/tree/main/dapr/ext/workflow): Durable workflow authoring — `pip install "dapr[workflow]"` ## Getting started @@ -96,7 +96,7 @@ to pin to a specific point in history. ### Try out examples -Go to [Examples](https://github.com/dapr/python-sdk/blob/main/examples) +Go to [Examples](https://github.com/dapr/python-sdk/tree/main/examples) ## Developing @@ -191,7 +191,7 @@ uv run ./tools/regen_grpcclient.sh ## Help & Feedback -Need help or have feedback on the SDK? Please open a GitHub issue or come chat with us in the `#python-sdk` channel of our Discord server ([click here to join](https://discord.gg/MySdVxrH)). +Need help or have feedback on the SDK? Please open a GitHub issue or come chat with us in the `#python-sdk` channel of our Discord server ([click here to join](https://discord.gg/MySdYxrH)). ## Code of Conduct From 2f0027017ddc734ef46a3db2cf87b50b35261ed3 Mon Sep 17 00:00:00 2001 From: Abhishek Jha Date: Fri, 23 Oct 2026 06:20:15 +0530 Subject: [PATCH 4/5] docs: fix Discord invite link typo in README Signed-off-by: Abhishek Jha --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fe14535c6..0b50bb051 100644 --- a/README.md +++ b/README.md @@ -191,7 +191,7 @@ uv run ./tools/regen_grpcclient.sh ## Help & Feedback -Need help or have feedback on the SDK? Please open a GitHub issue or come chat with us in the `#python-sdk` channel of our Discord server ([click here to join](https://discord.gg/MySdYxrH)). +Need help or have feedback on the SDK? Please open a GitHub issue or come chat with us in the `#python-sdk` channel of our Discord server ([click here to join](https://discord.gg/MySdVxrH)). ## Code of Conduct From a1a4b2dde9058e86d00534109b1073f542ca7dce Mon Sep 17 00:00:00 2001 From: Abhishek Jha Date: Fri, 23 Oct 2026 01:08:13 +0000 Subject: [PATCH 5/5] revert: restore original Discord invite link Signed-off-by: Abhishek Jha --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0b50bb051..fe14535c6 100644 --- a/README.md +++ b/README.md @@ -191,7 +191,7 @@ uv run ./tools/regen_grpcclient.sh ## Help & Feedback -Need help or have feedback on the SDK? Please open a GitHub issue or come chat with us in the `#python-sdk` channel of our Discord server ([click here to join](https://discord.gg/MySdVxrH)). +Need help or have feedback on the SDK? Please open a GitHub issue or come chat with us in the `#python-sdk` channel of our Discord server ([click here to join](https://discord.gg/MySdYxrH)). ## Code of Conduct