Infer descriptor type
まだ誰も着手していません。
- 主要言語
- Python
- スター
- 20.6k
- フォーク
- 3.3k
- PR マージ指標
- PR 指標を取得中
説明
Feature
For the common case of a descriptor which behaves like a normal attribute, infer:
class X:
y: int = descriptor()
to:
class X:
y: descriptor[int] = descriptor()
if descriptor is a Generic with one parameter. Extra checks should also be done to make sure that the descriptor is properly typed to behave like an attribute of that type (__get__ and __set__ expect that type on an instance).
Pitch
Type annotations apply to object instances by default, so it's strange to see y: descriptor[int] as type annotation while x.y returns an int.
You could also see a normal attribute as an invisible descriptor whose behavior is to set __dict__[name] (and raise AttributeError on the class), so this could be a way to unify these things.
It's also related to:
https://github.com/python/mypy/issues/7724
https://github.com/python/mypy/issues/5481
I implemented it partially as a plugin but only for my custom descriptors.
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
この issue では実装ファイル、テスト、エントリーポイントが示されていないため、まず issue #7724 と #5481 の descriptor 関連の議論と、ここで説明されている既存の plugin の動作を確認する。完了とするには、汎用 descriptor 型を推論し、その get と set のシグネチャを検証するための方針が決定されている必要がある。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- python
- 領域
- devtools
- issue の種類
- 機能追加
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 活発さ
- 停滞
- 明瞭さ
- 説明が足りない
- 初心者へのやさしさ
- 25/100