Repository navigation
Commit dfa3d57
Return a typed reference's value as its model types it
A resource named with its model gives c.ref the field's type, and the
signature promises it: c.ref(cluster.status.secrets) is typed
list[Secret]. It returned the JSON observed state stores instead, a list
of dicts, so code written against the type failed at runtime, and code
written against the JSON failed type checking. Porting Modelplane hit
both.
c.ref now validates the value against the field's type with a pydantic
TypeAdapter, so a nested object comes back as its model and a list of
them as a list of models. A value that doesn't fit is an error naming
the field, rather than a model built from the wrong data. Without a
model there's no type to fit, and the value is the JSON as before.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>1 parent 58353f2 commit dfa3d57
2 files changed
Lines changed: 60 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
609 | 609 | | |
610 | 610 | | |
611 | 611 | | |
| 612 | + | |
| 613 | + | |
| 614 | + | |
| 615 | + | |
| 616 | + | |
612 | 617 | | |
613 | 618 | | |
614 | | - | |
| 619 | + | |
| 620 | + | |
615 | 621 | | |
616 | 622 | | |
617 | 623 | | |
618 | | - | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
619 | 632 | | |
620 | 633 | | |
621 | 634 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
88 | 88 | | |
89 | 89 | | |
90 | 90 | | |
| 91 | + | |
| 92 | + | |
91 | 93 | | |
92 | 94 | | |
93 | 95 | | |
| |||
514 | 516 | | |
515 | 517 | | |
516 | 518 | | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
517 | 562 | | |
518 | 563 | | |
519 | 564 | | |
| |||
0 commit comments