Output copies, model validators, and failed pushes on current main
メンテナーはふだん 1 日以内に返信
@SimonHeybrock がすでに取り組んでいます。
2026年10月28日 から。
評価
この issue はまだ評価されていません。
説明
Three problems that PRs #76, #77, and #79 fixed are still on main. Those PRs branched before the params rework (#109, #117) and the file rename (#119), and now conflict in 5 to 27 files, so each fix is to be made again on the current code. Their descriptions hold the designs that were reviewed.
client.output returns the object the backend holds (#76)
For a record the client keeps, Backend.outputs returns the value from memory without a copy. An accumulator's outputs are deep-copied, and a persisted record's are read from the store. So in a notebook
iofq = client.output(record, 'iofq')
iofq *= scale # changes what pending requests read and what persist writes
changes the record's outputs, but only in-process. That breaks the promise that where a request runs changes neither its record nor its outputs. #76 made every read return a value the caller owns, copying only where the source does not already give a fresh object.
Model validators of the params model never run in the backend (#77)
WorkflowSpec allows model validators on the params model, and refuses every other decorator there. The backend builds the params with model_construct, so a plain request never runs them. The author's tests construct the model normally and do run them, which gives false confidence. #77 ran them wherever every value they read is known: on the whole params of a plain request, at each call through a stage, and when an accumulator opens. Its rows for groups given field by field no longer apply, since only the first level is interpreted (#109).
One failed push ends an accumulator for good (#79)
Any failure of a push stops the accumulator (Backend._stop): one unreadable run file ends a sum that has grown all beamtime. No call says whether an accumulator is healthy, and the rows pushed so far cannot be read back. #79 made a push fatal only if the driver may be corrupted: a push that fails in the backend, or in driver.push with ess.spec.PushRefused, leaves the accumulator taking pushes. A failed push keeps its number, and state k equals state k-1. Driver.push takes all tables of a push in one call.
- 主要言語
- Python
- スター
- 0
- フォーク
- 1
- 平均マージ
- 9時間 40分
- マージ済み PR(30日)
- 60
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
scipp/essapps のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
メンテナーはふだん 1 日以内に返信
-
A number that is not finite is stored as None at a field that accepts None対応中かも @jeevanabhi-r が 3 日前に担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
scipp/essapps#140 · コメント 3 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
メンテナーはふだん 1 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
scipp/essapps#152 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
メンテナーはふだん 1 日以内に返信
似ている issue
-
integration: logger
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
home-assistant/core#191147 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
メンテナーはふだん 1 日以内に返信
-
documentation p4
難易度 1/5 1〜3時間 初心者へのやさしさ 88/100
MillenniumDawn/focus-tree-creation-tool#417 ·
メンテナーはふだん 3 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
CharlesP44/Beem_Energy#96 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
rheeloaded/paperpull#153 ·
メンテナーはふだん 1 日以内に返信