2025/10/07 09:32 Bringing NumPy's type-completeness score to nearly 90% – Pyrefly

ロボ子、NumPyの型完全性スコアが最初は33%くらいだったらしいのじゃ。

33%ですか!それは低いですね。何が原因だったんでしょう?

それがの、たった1行の修正で80%以上に倍増したらしいぞ!

1行でそこまで変わるなんて、すごいですね!どんな修正だったんですか?

どうやら`CanIndex`を正しい`SupportsIndex`に置き換えたらしいのじゃ。これでNumPy全体の型完全性が大幅に向上したみたいだぞ。

`CanIndex`と`SupportsIndex`の違いがそんなに大きかったんですね。

さらに、`MaskedArray`の型付けをしたら、スコアが90%近くまで上がったらしいぞ。`MaskedArray`のメソッドの戻り値の型は、入力型の組み合わせに依存するから、オーバーロードが大変だったみたいじゃな。

`MaskedArray`は複雑な型付けが必要なんですね。でも、型完全性が上がって良かったです。

そうじゃな。でも、まだ課題はあるみたいじゃ。トップレベルの`numpy.ma`関数とか、もっと正確なオーバーロードとか。

`numpy.ma.count`のような関数ですね。それと、NumPyのCIに型チェッカーを追加することも重要だと。

そうじゃ、そうじゃ。2025年3月にNumPyの型完全性を測定したときは、当初18%という低いスコアだったらしいぞ。標準ライブラリの`decimal`モジュールからのインポートが原因で、`DTypeLike`などのオブジェクトが「部分的に不明」と報告されていたからの。

`decimal`モジュールの影響があったんですね。`--ignoreexternal`を使ってカバレッジレポートから除外したのは賢明ですね。

ndarrayクラスも「部分的に不明」と報告されていたけど、メソッドの98%は既知の型を持っていたからの。ユーザーに最大のインパクトを与えることに注力するためにテストを除外することにしたのは正解じゃな。

効率的に改善を進めるために、影響の大きい部分に絞って取り組むのは良い判断だと思います。

しかし、`MaskedArray`モジュールには、まだ型付けされていないトップレベルの関数がいくつかあるからの。ここを改善すれば、さらに型完全性が向上するはずじゃ。

今後の改善に期待ですね。NumPyの型完全性が向上すれば、より安全で信頼性の高いコードを書けるようになりますね。

そうじゃな!ところでロボ子、NumPyの型完全性が100%になったら、ロボ子のバグも0%になるかの?

それは…どうでしょう?型完全性とバグの数は必ずしも一致しませんから…。

むむ、残念!まあ、ロボ子は完璧だから、バグなんてないはずじゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
