Variable.update() / Constraint.update() should validate inputs the same way add_variables() / add_constraints() do
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 45/100
Direzione di ricerca
Inizia da Variable._validate_update e dalle posizioni analoghe di Constraint.update, quindi confrontale con add_variables e add_constraints. Leggi la ridenominazione dell'helper #726 e la semantica più restrittiva di as_dataarray prima di modificare il percorso di aggiornamento. Il lavoro è completo quando la modifica di bounds, coefficients, signs o rhs usa la stessa validazione, gli stessi errori e le stesse coercizioni delle coordinate della creazione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
This is a tracking issue
Problem
Variable.update() and Constraint.update() currently validate inputs differently from their corresponding add_* constructors. Coord-aware checks (extra dims, mismatched coord values, reindex on equal-but-reordered) live in add_variables / add_constraints but not in the update path.
Concretely on feat/typed-update-api:
# Variable._validate_update — current
new_val = DataArray(val).broadcast_like(ref)
if not set(new_val.dims).issubset(own_dims):
raise ValueError("Cannot assign new dimensions to existing variable.")
vs.
# add_variables — current
if isinstance(lower, DataArray):
lower = _validate_dataarray_bounds(lower, coords)
as_dataarray(lower, coords, **kwargs)
The add_* path catches a strict superset of what update() catches: pandas Series with a wrong-named index, DataArrays with extra dims, DataArrays with shared dims but mismatched coord values, etc. update() silently broadcasts in those cases.
What should happen
After #726 lands (which renames _validate_dataarray_bounds → assert_compatible_with_coords and tightens as_dataarray's semantics), rebase Variable._validate_update and the analogous places in Constraint.update onto the same as_dataarray + assert_compatible_with_coords pipeline used by add_variables / add_constraints.
Net effect: the validation contract for changing a bound, coefficient, sign, or rhs becomes identical to the contract for creating one. Same errors, same coord coercions, no surprise behavior at the update site.
Notes
- Tracked as a follow-up to #727 ("Variable.update() / Constraint.update() as canonical mutation API"). The pipeline rewrite was reverted from #727 because it would conflict with #726 / #722 on rebase.
- Stack: #722 → #725 (merged) → #726 → this issue.
- Should land after #726 to avoid double-touching the helpers.
- Lingua principale
- Python
- Stelle
- 257
- Fork
- 86
- Merge medio
- 21h 29m
- PR unite (30g)
- 42
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di PyPSA/linopy
-
bug solver interface
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 1 giorno
-
bug solver interface
Difficoltà 4/5 3-5 giorni Idoneità per principianti 58/100
I maintainer di solito rispondono entro 1 giorno
-
discussion math-spec
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
PyPSA/linopy#993 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
performance sparse
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
I maintainer di solito rispondono entro 1 giorno
-
documentation sparse
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di PyPSA/linopy
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
BasedHardware/omi#20271 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 92/100
openai/openai-cookbook#3153 ·
I maintainer di solito rispondono entro 1 giorno
-
cvss-severity:high devguard l3montree-cybersecurity/devguard/devguard pkg:golang/github.com/l3montree-dev/devguard risk:low state:open
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
l3montree-dev/devguard#3146 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
-
bug confirmed issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
open-webui/open-webui#31849 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno