Azure / Azure/azure-functions-durable-python

Wrong return type on create_timer()

オープン 初心者向け
#587 コメント 2 件 リアクション 1 件 担当者 0 名 GitHub で見る
bug Debuggability fixed-in-v2 P2
主要言語
Python
スター
157
フォーク
70
平均マージ
2日 10時間
マージ済み PR(30日)
2

説明

🐛 **Describe the bug**
Type hint for return value of `create_timer()` is `TaskBase`, but that does not contain the `cancel()` function. ~Returning `TimerTask` seems more appropiate.~

_Edit: See comment below on why `TimerTask` might not be a viable type anyway_

Current source:

https://github.com/Azure/azure-functions-durable-python/blob/4ab004b6bc994b0395ee965186f8402b86b7a887/azure/durable_functions/models/DurableOrchestrationContext.py#L601

Example code:

```python
expiration = context.current_utc_datetime + timedelta(seconds=20)
timeout_task = context.create_timer(expiration)
timeout_task.cancel() # <-- Pylance shows error: "Cannot access attribute "cancel" for class "TaskBase""
```

🤔 **Expected behavior**
You should be able to call `cancel()`without linter/type checker errors.

☕ **Steps to reproduce**
See above

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

azure/durable_functions/models/DurableOrchestrationContext.py の 601 行目付近から始めて、create_timer() の戻り値アノテーションを調べてください。Pylance で例を再現し、cancel() の呼び出しで型チェックエラーが発生しなくなったこと、またアノテーションが返されるタイマータスクを正確に表していることを確認してください。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
python
領域
api
issue の種類
バグ
難易度
2/5
見積もり時間
1〜3時間
活発さ
静か
明瞭さ
明確に書かれている
初心者へのやさしさ
72/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。