Consider contracts when evaluating Optional
まだ誰も着手していません。
評価
調査の方向性
ファイル、テスト、エントリポイントは指定されていません。まず、assert 文による mypy の既存の Optional の絞り込みと、提案されている icontract/deal 統合を把握します。完了の条件は、排他性など、コントラクトから導出されるプロパティの限定的な集合を定義してテストすることです。
索引モデルが issue の本文から書いたものです。
説明
While mypy considers assert to infer properties (e.g., is not None for Optional's), it would be great if it could also take contracts into account. Some properties can be easily inferred from contracts, in particular exclusivity.
Here is an example:
@icontract.ensure(lambda result: (result[0] is None) ^ (result[1] is None))
def some_func() -> Tuple[Optional[str], Optional[str]]:
...
return something, errors
...
result, errors = some_func()
if errors is not None:
...
# We know here according to the contract that ``result`` can not be None.
The exclusivity is only but one example, and there are many more possible. I don't expect mypy to infer all the possible conclusions, but it would be already very nice to have at least some of the basic properties inferred.
There are a few contracts libraries around (e.g., icontract, for which I am the main author and maintainer, or deal) and they are gaining slowly some popularity.
I would be glad to help out on integration with icontract.
- 主要言語
- Python
- スター
- 20.6k
- フォーク
- 3.3k
- 平均マージ
- 1日 18時間
- マージ済み PR(30日)
- 54
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
python/mypy のほかの issue
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
-
documentation
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
-
bug topic-configuration topic-error-reporting
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
似ている issue
-
area/auth bug comp/agent P3 platform/discord type/security
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
NousResearch/hermes-agent#117848 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
bancolombia/sentinel#23 ·
-
test md オープンCI
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
-
integration:quickjs org:external priority:backlog topic:code-interpreter topic:middleware type:feature
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
langchain-ai/deepagents#6450 ·
-
bug client
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100