Plugin API feature requests
まだ誰も着手していません。
- 主要言語
- Python
- スター
- 20.6k
- フォーク
- 3.3k
- PR マージ指標
- PR 指標を取得中
説明
I recently wrote a plugin that used get_function_hook() to intercept instantiations of a certain set of classes (recognized by name), and found a bunch of functionality missing. Here's a list.
-
I needed the names of the arguments but they were not directly available. I ended up using
rtype.type.names['__init__'].node.arg_names(with various type andNoneguards) and subtracting 1 to compensate forself, which looked very hacky. It would be nice ifFunctionContextalso has anarg_namesargument. -
CheckerPluginInterfacehas nofail()method. It exists on the implementation, and the similarTypeAnalyzerPluginInterfacedoes define it. -
I needed to look up a name in the module's global namespace; I ended up calling
ctx.api.lookup_qualified()but that's not in the interface, and perhaps it's not the thing to use. -
I needed the functionality of
parse_bool()but it's not there (it only exists onSemanticAnalyzerPluginInterface). -
I needed something similar to what's in mypy/plugins/common.py as
_get_bool_argument()_get_argument()but had to write my own because the starting point was aFunctionContextinstead of aClassDefContext. -
(Not directly a plugin issue, but this happened.) I was also bitten by the error message
The type alias{} is invalid in runtime context-- this seems a bit inconsistent because expanding theUnionthat the alias references makes it go away. I.e. ifA = Optional[int],foo(A)gives that error, butfoo(Optional[int])doesn't.
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
FunctionContext、CheckerPluginInterface、SemanticAnalyzerPluginInterface に関連するプラグインインターフェースと、mypy/plugins/common.py、および報告されている実行時の型エイリアスの動作を確認してください。この issue には、単一の範囲が定められた変更ではなく、複数の個別の API リクエストが含まれています。完了するには、どのリクエストをサポートするかを判断し、それらの期待される動作を定義する必要があります。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- python
- 領域
- tooling
- issue の種類
- 機能追加
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 活発さ
- 停滞
- 明瞭さ
- 説明が足りない
- 初心者へのやさしさ
- 25/100