Skip to content

Commit 78829a0

Browse files
authored
Merge branch 'main' into grpc-resiliency-pr708-impl
2 parents bdb37e2 + ccbff41 commit 78829a0

15 files changed

Lines changed: 762 additions & 262 deletions

File tree

.github/copilot-instructions.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,3 +128,18 @@ python -m pytest
128128
- `examples/` — example orchestrations (see `examples/README.md`)
129129
- `tests/` — test suite
130130
- `dev-requirements.txt` — development dependencies
131+
132+
## Cross-Package Compatibility
133+
134+
The `durabletask-azuremanaged` package extends the core `durabletask`
135+
package (e.g. `DurableTaskSchedulerWorker` subclasses
136+
`TaskHubGrpcWorker`). When adding or changing features in
137+
`durabletask/`, always verify that `durabletask-azuremanaged` still
138+
works correctly:
139+
140+
- Check whether the azuremanaged worker, client, or tests override or
141+
depend on the code you changed.
142+
- Run the azuremanaged unit tests if they exist for the affected area.
143+
- If a new public API is added to the core SDK (e.g. a method on
144+
`OrchestrationContext`), confirm it is accessible through the
145+
azuremanaged package and add a test or example if appropriate.

CHANGELOG.md

Lines changed: 55 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@
22

33
All notable changes to this project will be documented in this file.
44

5-
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6-
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project
6+
adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

88
## Unreleased
99

1010
ADDED
1111

12+
- Added `ReplaySafeLogger` and `OrchestrationContext.create_replay_safe_logger()`
13+
for suppressing duplicate log messages during orchestrator replay
1214
- Added `GrpcChannelOptions` and `GrpcRetryPolicyOptions` for configuring
1315
gRPC transport behavior, including message-size limits, keepalive settings,
1416
and channel-level retry policy service configuration.
@@ -56,15 +58,17 @@ ADDED
5658
package with `BlobPayloadStore` and `BlobPayloadStoreOptions`
5759
- Added `PayloadStore` abstract base class in
5860
`durabletask.payload` for custom storage backends
59-
- Added `durabletask.testing` module with `InMemoryOrchestrationBackend` for testing orchestrations without a sidecar process
61+
- Added `durabletask.testing` module with `InMemoryOrchestrationBackend` for testing orchestrations
62+
without a sidecar process
6063
- Added `AsyncTaskHubGrpcClient` for asyncio-based applications using `grpc.aio`
6164
- Added `DefaultAsyncClientInterceptorImpl` for async gRPC metadata interceptors
6265
- Added `get_async_grpc_channel` helper for creating async gRPC channels
6366
- Added orchestration restart client support
6467
- Added batch client actions for purge and query operations across orchestrations and entities
6568
- Added worker work item filtering support
6669
- Added new `work_item_filtering` sample
67-
- Improved distributed tracing support with full span coverage for orchestrations, activities, sub-orchestrations, timers, and events
70+
- Improved distributed tracing support with full span coverage for orchestrations, activities,
71+
sub-orchestrations, timers, and events
6872

6973
CHANGED
7074

@@ -137,7 +141,8 @@ FIXED:
137141

138142
## v0.4.1
139143

140-
- Fixed an issue where orchestrations would still throw non-determinism errors even when versioning logic should have prevented it
144+
- Fixed an issue where orchestrations would still throw non-determinism errors even when versioning
145+
logic should have prevented it
141146

142147
## v0.4.0
143148

@@ -148,7 +153,8 @@ FIXED:
148153

149154
ADDED
150155

151-
- Added `ConcurrencyOptions` class for fine-grained concurrency control with separate limits for activities and orchestrations. The thread pool worker count can also be configured.
156+
- Added `ConcurrencyOptions` class for fine-grained concurrency control with separate limits for
157+
activities and orchestrations. The thread pool worker count can also be configured.
152158

153159
FIXED
154160

@@ -158,15 +164,29 @@ FIXED
158164

159165
ADDED
160166

161-
- Added `set_custom_status` orchestrator API ([#31](https://github.com/microsoft/durabletask-python/pull/31)) - contributed by [@famarting](https://github.com/famarting)
162-
- Added `purge_orchestration` client API ([#34](https://github.com/microsoft/durabletask-python/pull/34)) - contributed by [@famarting](https://github.com/famarting)
163-
- Added new `durabletask-azuremanaged` package for use with the [Durable Task Scheduler](https://learn.microsoft.com/azure/azure-functions/durable/durable-task-scheduler/durable-task-scheduler) - by [@RyanLettieri](https://github.com/RyanLettieri)
167+
- Added `set_custom_status` orchestrator API
168+
([#31](https://github.com/microsoft/durabletask-python/pull/31)) - contributed by
169+
[@famarting](https://github.com/famarting)
170+
- Added `purge_orchestration` client API
171+
([#34](https://github.com/microsoft/durabletask-python/pull/34)) - contributed by
172+
[@famarting](https://github.com/famarting)
173+
- Added new `durabletask-azuremanaged` package for use with the [Durable Task
174+
Scheduler](https://learn.microsoft.com/azure/azure-functions/durable/durable-task-scheduler/durable-task-scheduler)
175+
- by [@RyanLettieri](https://github.com/RyanLettieri)
164176

165177
CHANGED
166178

167-
- Protos are compiled with gRPC 1.62.3 / protobuf 3.25.X instead of the latest release. This ensures compatibility with a wider range of grpcio versions for better compatibility with other packages / libraries ([#36](https://github.com/microsoft/durabletask-python/pull/36)) - by [@berndverst](https://github.com/berndverst)
168-
- Http and grpc protocols and their secure variants are stripped from the host name parameter if provided. Secure mode is enabled if the protocol provided is https or grpcs ([#38](https://github.com/microsoft/durabletask-python/pull/38) - by [@berndverst)(https://github.com/berndverst)
169-
- Improve ProtoGen by downloading proto file directly instead of using submodule ([#39](https://github.com/microsoft/durabletask-python/pull/39) - by [@berndverst](https://github.com/berndverst)
179+
- Protos are compiled with gRPC 1.62.3 / protobuf 3.25.X instead of the latest release. This ensures
180+
compatibility with a wider range of grpcio versions for better compatibility with other packages /
181+
libraries ([#36](https://github.com/microsoft/durabletask-python/pull/36)) - by
182+
[@berndverst](https://github.com/berndverst)
183+
- Http and grpc protocols and their secure variants are stripped from the host name parameter if
184+
provided. Secure mode is enabled if the protocol provided is https or grpcs
185+
([#38](https://github.com/microsoft/durabletask-python/pull/38)) - by
186+
[@berndverst](https://github.com/berndverst)
187+
- Improve ProtoGen by downloading proto file directly instead of using submodule
188+
([#39](https://github.com/microsoft/durabletask-python/pull/39) - by
189+
[@berndverst](https://github.com/berndverst)
170190

171191
CHANGED
172192

@@ -176,45 +196,59 @@ CHANGED
176196

177197
ADDED
178198

179-
- Add recursive flag in terminate_orchestration to support cascade terminate ([#27](https://github.com/microsoft/durabletask-python/pull/27)) - contributed by [@shivamkm07](https://github.com/shivamkm07)
199+
- Add recursive flag in terminate_orchestration to support cascade terminate
200+
([#27](https://github.com/microsoft/durabletask-python/pull/27)) - contributed by
201+
[@shivamkm07](https://github.com/shivamkm07)
180202

181203
## v0.1.0
182204

183205
ADDED
184206

185-
- Retry policies for activities and sub-orchestrations ([#11](https://github.com/microsoft/durabletask-python/pull/11)) - contributed by [@DeepanshuA](https://github.com/DeepanshuA)
207+
- Retry policies for activities and sub-orchestrations
208+
([#11](https://github.com/microsoft/durabletask-python/pull/11)) - contributed by
209+
[@DeepanshuA](https://github.com/DeepanshuA)
186210

187211
FIXED
188212

189-
- Fix try/except in orchestrator functions not being handled correctly ([#21](https://github.com/microsoft/durabletask-python/pull/21)) - by [@cgillum](https://github.com/cgillum)
190-
- Updated `durabletask-protobuf` submodule reference to latest distributed tracing commit - by [@cgillum](https://github.com/cgillum)
213+
- Fix try/except in orchestrator functions not being handled correctly
214+
([#21](https://github.com/microsoft/durabletask-python/pull/21)) - by
215+
[@cgillum](https://github.com/cgillum)
216+
- Updated `durabletask-protobuf` submodule reference to latest distributed tracing commit - by
217+
[@cgillum](https://github.com/cgillum)
191218

192219
## v0.1.0a5
193220

194221
ADDED
195222

196-
- Adds support for secure channels ([#18](https://github.com/microsoft/durabletask-python/pull/18)) - contributed by [@elena-kolevska](https://github.com/elena-kolevska)
223+
- Adds support for secure channels ([#18](https://github.com/microsoft/durabletask-python/pull/18))
224+
- contributed by [@elena-kolevska](https://github.com/elena-kolevska)
197225

198226
FIXED
199227

200-
- Fix zero argument values sent to activities as None ([#13](https://github.com/microsoft/durabletask-python/pull/13)) - contributed by [@DeepanshuA](https://github.com/DeepanshuA)
228+
- Fix zero argument values sent to activities as None
229+
([#13](https://github.com/microsoft/durabletask-python/pull/13)) - contributed by
230+
[@DeepanshuA](https://github.com/DeepanshuA)
201231

202232
## v0.1.0a3
203233

204234
ADDED
205235

206-
- Add gRPC metadata option ([#16](https://github.com/microsoft/durabletask-python/pull/16)) - contributed by [@DeepanshuA](https://github.com/DeepanshuA)
236+
- Add gRPC metadata option ([#16](https://github.com/microsoft/durabletask-python/pull/16)) -
237+
contributed by [@DeepanshuA](https://github.com/DeepanshuA)
207238

208239
CHANGED
209240

210-
- Removed Python 3.7 support due to EOL ([#14](https://github.com/microsoft/durabletask-python/pull/14)) - contributed by [@berndverst](https://github.com/berndverst)
241+
- Removed Python 3.7 support due to EOL
242+
([#14](https://github.com/microsoft/durabletask-python/pull/14)) - contributed by
243+
[@berndverst](https://github.com/berndverst)
211244

212245
## v0.1.0a2
213246

214247
ADDED
215248

216249
- Continue-as-new ([#9](https://github.com/microsoft/durabletask-python/pull/9))
217-
- Support for Python 3.7+ ([#10](https://github.com/microsoft/durabletask-python/pull/10)) - contributed by [@DeepanshuA](https://github.com/DeepanshuA)
250+
- Support for Python 3.7+ ([#10](https://github.com/microsoft/durabletask-python/pull/10)) -
251+
contributed by [@DeepanshuA](https://github.com/DeepanshuA)
218252

219253
## v0.1.0a1
220254

CONTRIBUTING.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@
22

33
This project welcomes contributions and suggestions. Most contributions require you to agree to a
44
Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us
5-
the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.
5+
the rights to use your contribution. For details, visit
6+
[https://cla.opensource.microsoft.com](https://cla.opensource.microsoft.com).
67

7-
When you submit a pull request, a CLA bot will automatically determine whether you need to provide
8-
a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions
8+
When you submit a pull request, a CLA bot will automatically determine whether you need to provide a
9+
CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions
910
provided by the bot. You will only need to do this once across all repos using our CLA.
1011

11-
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
12-
For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or
13-
contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
12+
This project has adopted the [Microsoft Open Source Code of
13+
Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of
14+
Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact
15+
[opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.

README.md

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,47 @@
11
# Durable Task SDK for Python
22

3-
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
4-
[![Build Validation](https://github.com/microsoft/durabletask-python/actions/workflows/pr-validation.yml/badge.svg)](https://github.com/microsoft/durabletask-python/actions/workflows/pr-validation.yml)
3+
[![License:
4+
MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
5+
[![Build
6+
Validation](https://github.com/microsoft/durabletask-python/actions/workflows/pr-validation.yml/badge.svg)](https://github.com/microsoft/durabletask-python/actions/workflows/pr-validation.yml)
57
[![PyPI version](https://badge.fury.io/py/durabletask.svg)](https://badge.fury.io/py/durabletask)
68

7-
This repo contains a Python SDK for use with the [Azure Durable Task Scheduler](https://github.com/Azure/Durable-Task-Scheduler). With this SDK, you can define, schedule, and manage durable orchestrations using ordinary Python code.
9+
This repo contains a Python SDK for use with the [Azure Durable Task
10+
Scheduler](https://github.com/Azure/Durable-Task-Scheduler). With this SDK, you can define,
11+
schedule, and manage durable orchestrations using ordinary Python code.
812

9-
> Note that this SDK is **not** currently compatible with [Azure Durable Functions](https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-overview). If you are looking for a Python SDK for Azure Durable Functions, please see [this repo](https://github.com/Azure/azure-functions-durable-python).
13+
> Note that this SDK is **not** currently compatible with [Azure Durable
14+
Functions](https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-overview). If
15+
you are looking for a Python SDK for Azure Durable Functions, please see [this
16+
repo](https://github.com/Azure/azure-functions-durable-python).
17+
18+
## References
1019

11-
# References
1220
- [Supported Patterns](./docs/supported-patterns.md)
1321
- [Available Features](./docs/features.md)
1422
- [Getting Started](./docs/getting-started.md)
15-
- [Development Guide](./docs/development.md)
23+
- [Development Guide](./docs/development.md)
1624
- [Contributing Guide](./CONTRIBUTING.md)
1725

1826
## Optional Features
1927

2028
### Large Payload Externalization
2129

22-
Install the `azure-blob-payloads` extra to automatically offload
23-
oversized orchestration payloads to Azure Blob Storage:
30+
Install the `azure-blob-payloads` extra to automatically offload oversized orchestration payloads to
31+
Azure Blob Storage:
2432

2533
```bash
2634
pip install durabletask[azure-blob-payloads]
2735
```
2836

29-
See the [feature documentation](./docs/features.md#large-payload-externalization)
30-
and the [example](./examples/large_payload/) for usage details.
37+
See the [feature documentation](./docs/features.md#large-payload-externalization) and the
38+
[example](./examples/large_payload/) for usage details.
3139

3240
## Trademarks
33-
This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft
34-
trademarks or logos is subject to and must follow
35-
[Microsoft's Trademark & Brand Guidelines](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general).
36-
Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.
37-
Any use of third-party trademarks or logos are subject to those third-party's policies.
41+
42+
This project may contain trademarks or logos for projects, products, or services. Authorized use of
43+
Microsoft trademarks or logos is subject to and must follow [Microsoft's Trademark & Brand
44+
Guidelines](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general).
45+
Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion
46+
or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those
47+
third-party's policies.

0 commit comments

Comments
 (0)