Tracking UI returns HTTP 500 on all pages with Starlette ≥1.0 (TemplateResponse signature)
メンテナーはふだん 2 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 85/100
調査の方向性
react_app エントリポイントの burr/tracking/server/run.py を読み、341 行目付近の TemplateResponse 呼び出しを確認してください。Starlette 1.0 以降で tracking UI の障害を再現し、その後、提供される index.html が HTTP 200 を返すことを確認してください。提案されている Starlette の下限バージョンを追加する場合は、burr[start] の依存関係設定も確認してください。
索引モデルが issue の本文から書いたものです。
説明
Summary
The tracking UI server (burr / burr-admin-server) returns HTTP 500 on every page when Starlette ≥1.0 is installed. The JSON API is unaffected — only the served React app (index.html) fails. Because burr[start] doesn't pin Starlette (it arrives transitively via an unpinned fastapi), a fresh pip install "burr[start]" resolves to a current Starlette and the UI is broken out of the box.
Environment
- burr 0.40.2 (via
burr[start]) - starlette 1.3.0, jinja2 3.1.6, fastapi 0.136.3
- Reproduced on Python 3.13 and 3.14 (version-independent)
Root cause
burr/tracking/server/run.py:341 uses the pre-1.0 Starlette signature:
return templates.TemplateResponse("index.html", {"request": req})
Starlette 0.29 made request the first positional argument and 1.0 removed the old form, so "index.html" binds to request and the context dict binds to name; Jinja2 then tries to load a template whose name is a dict and raises TypeError: unhashable type: 'dict'. (Same break FastAPI hit in fastapi/fastapi#15198.)
Fix
return templates.TemplateResponse(request=req, name="index.html")
This is the only TemplateResponse call site in the package; with it the UI renders (HTTP 200) on Python 3.14 + Starlette 1.3.0. Verified locally. Worth pairing with a starlette>=0.29 floor, since the keyword form requires it.
Traceback
File ".../burr/tracking/server/run.py", line 341, in react_app
return templates.TemplateResponse("index.html", {"request": req})
File ".../starlette/templating.py", line 148, in TemplateResponse
template = self.get_template(name)
File ".../jinja2/environment.py", line 1016, in get_template
return self._load_template(name, globals)
TypeError: unhashable type: 'dict'
Happy to send a PR if useful.
- 主要言語
- Python
- スター
- 2.6k
- フォーク
- 203
- 平均マージ
- 3日 10時間
- マージ済み PR(30日)
- 6
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
apache/burr のほかの issue
-
Streaming Event type, type hint, should support union type対応中かも @mvanhorn が 184 日前に担当しました。 オープンarea/streaming area/typing good first issue help wanted kind/bug priority/high
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
メンテナーはふだん 2 日以内に返信
-
Add more instructions for applying ORM migrations for S3 deployment対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープンarea/storage area/ui help wanted kind/documentation priority/low
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 2 日以内に返信
-
Add documentation on how to run the Burr UI server再び着手できるかも @iamSerafinnn が 123 日前に担当しましたが、オープン中のプルリクエストはありません。 オープンarea/ui good first issue kind/documentation priority/low
難易度 2/5 半日 初心者へのやさしさ 68/100
メンテナーはふだん 2 日以内に返信
-
status/needs-triage
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
メンテナーはふだん 2 日以内に返信
-
status/needs-triage
難易度 3/5 1〜2日 初心者へのやさしさ 35/100
メンテナーはふだん 2 日以内に返信
似ている issue
-
documentation
難易度 1/5 1時間未満 初心者へのやさしさ 65/100
ansys/pydpf-core#3547 ·
メンテナーはふだん 1 日以内に返信
-
core
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
vectorize-io/hindsight#5457 ·
メンテナーはふだん 1 日以内に返信
-
[Bug]: LangChain drops OpenAI Responses text blocks from session recording対応中かも @ktz03 が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
volcengine/OpenViking#5806 ·
メンテナーはふだん 1 日以内に返信
-
HTML: <template> content is extracted as document text対応中かも @ryanmeowy が今日担当しました。 オープンbug html
難易度 1/5 1時間未満 初心者へのやさしさ 82/100
docling-project/docling#4714 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
APIv2 event data accepts a non-string reply and a NaN upper_bound対応中かも @awss1i が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
freedomofpress/securedrop#7946 · コメント 1 件 ·
メンテナーはふだん 2 日以内に返信