Warn (don't abort) on a compile-time-constant WHEN - #327
Merged
Conversation
A constant WHEN condition used to raise RuntimeError from Instance.WHEN, aborting the whole parse/translate. Per #318, "turning off" a component while keeping its position/orientation/DISPLAY is a legitimate thing to want, so this is now a logger.warning that keeps the instance and points at the alternatives (remove/comment the component, or gate it on an instrument parameter). Three related fixes: - Expr.is_constant (and .value) recognise a folded boolean literal (0 == 1 -> False, 2 > 1 -> True); SymPy's BooleanAtom reports is_number == False, so these previously slipped past every constant check even though #317 folds them. - Instance.WHEN / Instance.SPLIT coerce a non-str/non-Expr argument (e.g. an int) via Expr.best instead of raising. - Assembler.component routes its when=/split= kwargs through Instance.WHEN/SPLIT rather than the raw struct constructor, so a string is parsed to an Expr (was stored verbatim, which broke parameter_used and the {when:p} translation format).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A constant WHEN condition used to raise RuntimeError from Instance.WHEN, aborting the whole parse/translate. Per #318, "turning off" a component while keeping its position/orientation/DISPLAY is a legitimate thing to want, so this is now a logger.warning that keeps the instance and points at the alternatives (remove/comment the component, or gate it on an instrument parameter).
Three related fixes:
Exprparsing of1==0vs0==1#317 folds them.Fixes #318