タグ

2025年12月31日のブックマーク (2件)

  • [Python]網羅性チェック(Exhaustiveness Checking)を静的解析で担保する - Qiita

    はじめに この記事は静岡大学情報学部ITソルーション室アドベントカレンダーの2日目の記事として執筆されました。他の記事もぜひ御覧ください。 Pythonで条件分岐を書くとき、全てのケースを網羅したつもりが漏れていた——そんな経験はありませんか?RustやHaskellならコンパイラが網羅性を検証してくれますが、Pythonでは実行時まで気づけません。 この記事では assert_never を使って、分岐の網羅性を静的解析で担保する方法を紹介します。 問題例:Union型の変更がコードを壊す 以下のようなコードを考えてみましょう。 class Pending: ... class Approved: ... OrderStatus = Pending | Approved def to_response(status: OrderStatus) -> dict: if isinsta

    [Python]網羅性チェック(Exhaustiveness Checking)を静的解析で担保する - Qiita
    igrep
    igrep 2025/12/31
    TypeScriptでもよくやるあのテクニックはPythonにもあるのね。
  • uvのキャッシュがアグレッシブすぎる - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに uv は速い。速さの一つが、キャッシュをアグレッシブに使っていることにあります。そのアグレッシブさゆえに、ユーザーがuvのキャッシュ機構を把握していないと、無関係なプロジェクトを知らず知らず破壊することがあります。 キャッシュを通じたプロジェクト破壊 uvのキャッシュは、デフォルトでプロジェクトを跨いで共有されます。特にLinuxWindowsの場合 (macOSについては後述)、プロジェクトで uv add foo を実行してインストールしたパッケージ foo のファイルは、キャッシュファイルのハードリンクとなります。2回

    igrep
    igrep 2025/12/31
    依存パッケージのソースをいじるの、確かにたまにやりたくなってしまうねぇ。