Repository navigation
Commit df72be5
fix(python): a view's currency reached the wire as a string; the TPH seam states the base-list obligation
Both found by running an adopter estate's Python port on the published rc6.
Currency. A table's field.currency column is BIGINT, which pg8000 hands back
as an int. A view's need not be: SUM over BIGINT is Postgres numeric, read
back as a Decimal, and a FastAPI route serializes a Decimal as a JSON string -
so a projection answered "totalRate": "100000" where the contract says
100000, while the entity routes beside it were right. ObjectManager's read
codec (_decode_read_value) now decodes an integral currency value to int
whatever the column type; a fractional one (an avg over minor units) has no
honest int and is returned as read. field.decimal keeps its Decimal.
TPH seam. The generated router returns whatever the consumer's repository
returns, and the natural repository - ObjectManager - reads a TPH base with
the base's columns only, which is the persistence contract in every port.
Wired together, GET /api/<base> lost every subtype field and nothing errored.
Not changing the runtime contract; the generated Protocol's docstring now
states that for subtype=None each row carries its own subtype's fields, and
how to get them. Generated output changes by that docstring only.
Verified: new runtime tests (5) + the seam test; Python codegen 585/0,
runtime 41/0, unit + query scenarios + return types 557/0. The estate's
Python port runs 43/43 on this build (42/43 on published rc6, the currency
scenario).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EaGv4zNk4oT7FooD4eK5MD1 parent 8c5942b commit df72be5
5 files changed
Lines changed: 114 additions & 5 deletions
File tree
- server/python
- src/metaobjects
- codegen/generators
- runtime
- tests
- codegen
- runtime
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
302 | 302 | | |
303 | 303 | | |
304 | 304 | | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
305 | 325 | | |
306 | 326 | | |
307 | 327 | | |
| |||
Lines changed: 6 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
937 | 937 | | |
938 | 938 | | |
939 | 939 | | |
940 | | - | |
| 940 | + | |
| 941 | + | |
| 942 | + | |
| 943 | + | |
| 944 | + | |
| 945 | + | |
941 | 946 | | |
942 | 947 | | |
943 | 948 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
903 | 903 | | |
904 | 904 | | |
905 | 905 | | |
906 | | - | |
907 | | - | |
908 | | - | |
909 | | - | |
| 906 | + | |
| 907 | + | |
| 908 | + | |
| 909 | + | |
| 910 | + | |
| 911 | + | |
| 912 | + | |
| 913 | + | |
| 914 | + | |
910 | 915 | | |
911 | 916 | | |
912 | 917 | | |
| |||
918 | 923 | | |
919 | 924 | | |
920 | 925 | | |
| 926 | + | |
| 927 | + | |
| 928 | + | |
| 929 | + | |
921 | 930 | | |
922 | 931 | | |
923 | 932 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
130 | 130 | | |
131 | 131 | | |
132 | 132 | | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
133 | 145 | | |
134 | 146 | | |
135 | 147 | | |
| |||
Lines changed: 63 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
0 commit comments