You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Prompt: "Let’s add one parent issue for caliope and file focused issues for individual topics or link existing ones."
Note
The following content was generated by AI.
What can be improved?
A bounds: entry refuses a missing row, so data prep fills Calliope's defaults (0, .inf). Every row then exists, and a bare-name where: can no longer see which rows were given. The proposal: default: on a parameter.
Case, the two rules that collide, proposal, alternatives
Case. In Calliope v0.7.0, a parameter's default: has two readings at once. It is the value that arithmetic and bounds read, and a where: treats the parameter as "not given". Calliope's area_use has the bounds area_use_min (default 0) and area_use_max (default .inf). It is built where either of them, or some other parameter, is given.
Two rules on main collide.
absence.md: "A missing parameter row … reads as the value that contributes nothing". A bounds: entry is one of the four positions where no such value exists, so a missing row there is refused.
expressions.md: a bare numeric parameter in a where: is true where it "has a row and [is] finite".
Rule 2 already states "given at all". But rule 1 makes data prep fill every bound, and a filled column has a row everywhere. The port in #770 therefore builds area_use where area_use_min > 0. That is a different mask: an explicit 0 no longer builds the variable. distance_only_for_transmission checks the filled values, not the values the modeller wrote. Each Calliope parameter that is both a bound and a mask has the same problem.
Arithmetic, bounds and every other position that reads a value read default where the table has no row.
A bare name in a where: still means "the table has a row here".
A parameter with no default: keeps today's rule.
Alternatives.
Data prep ships a bool column per default, area_use_min_given, and the mask reads it. This works today, at the cost of one more parameter for each default.
Triage against limits.md: is a default something "the spec cannot state" (data prep), or something the language can state? Calliope says the second, because its defaults are in its math files. Open questions:
Note
The following content was generated by AI.
What can be improved?
A
bounds:entry refuses a missing row, so data prep fills Calliope's defaults (0,.inf). Every row then exists, and a bare-namewhere:can no longer see which rows were given. The proposal:default:on a parameter.Case, the two rules that collide, proposal, alternatives
Case. In Calliope v0.7.0, a parameter's
default:has two readings at once. It is the value that arithmetic and bounds read, and awhere:treats the parameter as "not given". Calliope'sarea_usehas the boundsarea_use_min(default0) andarea_use_max(default.inf). It is built where either of them, or some other parameter, is given.Two rules on
maincollide.absence.md: "A missing parameter row … reads as the value that contributes nothing". Abounds:entry is one of the four positions where no such value exists, so a missing row there is refused.expressions.md: a bare numeric parameter in awhere:is true where it "has a row and [is] finite".Rule 2 already states "given at all". But rule 1 makes data prep fill every bound, and a filled column has a row everywhere. The port in #770 therefore builds
area_usewherearea_use_min > 0. That is a different mask: an explicit0no longer builds the variable.distance_only_for_transmissionchecks the filled values, not the values the modeller wrote. Each Calliope parameter that is both a bound and a mask has the same problem.Proposal.
default:on a parameter declaration.defaultwhere the table has no row.where:still means "the table has a row here".default:keeps today's rule.Alternatives.
boolcolumn per default,area_use_min_given, and the mask reads it. This works today, at the cost of one more parameter for each default.absence: undefinedon a parameter, makes a missing row absent. That is a third reading, not a value. It does not cover a bound that must be.inf.Triage against
limits.md: is a default something "the spec cannot state" (data prep), or something the language can state? Calliope says the second, because its defaults are in its math files. Open questions:strorboolparameter?default:interact with a declaration cannot say its table must be complete, so a row lost in preparation reads as a mask #296/feat(language): a parameter and a relation each say whether their data must be complete, so a row lost in preparation is not read as a mask #671 (coverage:)?Version
mainat5fce82b. Found by the Calliope port, #770 (gap 2 in its description).