Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

`get_field_type` and `get_attribute_access_type` read `__fields__` and emit `PydanticDeprecatedSince20` on each field access

オープン 初心者向け
#7,561 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
72/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
python
領域
backend

調査の方向性

非推奨の読み取りは reflex_base/utils/types.py にあります。get_field_type の589-594行目と get_attribute_access_type の710行目にある __fields__ へのアクセスです。まず issue の再現スクリプトを実行し、警告の件数を確認してください。スクリプトが PydanticDeprecatedSince20 の警告を0件と報告し、フィールド型が以前と同じように解決されれば完了です。

索引モデルが issue の本文から書いたものです。

説明

Describe the bug
Reflex reads cls.__fields__ when it resolves the type of a field on a Pydantic v2 model. Pydantic v2 deprecates __fields__, so each read emits PydanticDeprecatedSince20. One field access on a Var emits 7 warnings.

The reads are in reflex_base/utils/types.py (reflex-base 0.9.12):

  • get_attribute_access_type, line 710: 2 reads.
  • get_field_type, lines 589 to 594: 5 reads.

The same code is in 0.9.13 and 0.10.0. In 0.10.0, the lines are 580 to 585 and 701.

To Reproduce

import warnings

import pydantic
import reflex as rx


class Item(pydantic.BaseModel):
    name: str
    size: int


class ItemState(rx.State):
    items: list[Item] = []


with warnings.catch_warnings(record=True) as caught:
    warnings.simplefilter("always")
    rx.foreach(ItemState.items, lambda item: rx.text(item.name, " ", item.size))

deprecations = [record for record in caught if issubclass(record.category, pydantic.warnings.PydanticDeprecatedSince20)]
print(f"{len(deprecations)} PydanticDeprecatedSince20 warnings")
for warning in deprecations:
    print(f"  {warning.filename.split('site-packages/')[-1]}:{warning.lineno}")

Output with Python 3.14.6, reflex 0.9.12, reflex-base 0.9.12 and pydantic 2.14.0:

14 PydanticDeprecatedSince20 warnings
  reflex_base/utils/types.py:710
  reflex_base/utils/types.py:710
  reflex_base/utils/types.py:589
  reflex_base/utils/types.py:590
  reflex_base/utils/types.py:591
  reflex_base/utils/types.py:592
  reflex_base/utils/types.py:594
  (the same 7 lines again for the second field)

The script accesses 2 fields, and each access emits 7 warnings. In our app, one page compile does 176 field accesses and emits 1,232 warnings.

Expected behavior
Reflex resolves field types on Pydantic v2 models without deprecation warnings.

Specifics (please complete the following information):

  • Python Version: 3.14.6
  • Reflex Version: 0.9.12
  • OS: macOS 26.6.2 (build 25G83), on Apple Silicon (arm64)

Additional context
Related: #6241, #6135.

主要言語
Python
スター
28.9k
フォーク
1.8k
平均マージ
2日 14時間
マージ済み PR(30日)
211

環境構築

Codespaces で開く

このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

reflex-dev/reflex のほかの issue

reflex-dev/reflex の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。