Commit 2a58aaf
committed
fix: preserve literal dotted keys, reject dotenv collections, quote tabs
- loader.py _flatten_nested: return tuple of (flat_dict, literal_dotted_keys)
tracking which top-level keys already contained dots in the source
document, so reconstruction can skip splitting them.
- loader.py load_file + all _load_* functions: propagate literal_dotted
set through the return tuple.
- cli.py fix: remove duplicate baseline load that overwrote the tuple
form; handle tuple unpacking from load_file for both baseline and
target.
- cli.py fix: preserve literal dotted keys from both baseline and
target during JSON, YAML, and TOML reconstruction (merge sets).
- cli.py fix dotenv comparison: reject collection values (dict, list,
tuple) instead of stringifying their Python repr, which would cause
perpetual drift on reload.
- cli.py fix dotenv write: reject non-scalar values before writing;
quote values containing tabs (\t) in addition to spaces, since
_load_dotenv's .strip() would otherwise truncate leading/trailing tabs.
Addresses Codex review: cli.py:496 (P1), cli.py:387 (P2),
cli.py:600 (P2)1 parent 792df27 commit 2a58aaf
2 files changed
Lines changed: 66 additions & 33 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
322 | 322 | | |
323 | 323 | | |
324 | 324 | | |
325 | | - | |
326 | | - | |
327 | | - | |
328 | | - | |
329 | | - | |
330 | | - | |
331 | | - | |
332 | | - | |
333 | | - | |
334 | | - | |
335 | 325 | | |
336 | | - | |
| 326 | + | |
337 | 327 | | |
338 | 328 | | |
339 | 329 | | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
340 | 334 | | |
341 | 335 | | |
342 | 336 | | |
| |||
352 | 346 | | |
353 | 347 | | |
354 | 348 | | |
355 | | - | |
| 349 | + | |
356 | 350 | | |
357 | 351 | | |
358 | 352 | | |
| |||
379 | 373 | | |
380 | 374 | | |
381 | 375 | | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
382 | 381 | | |
383 | 382 | | |
384 | 383 | | |
| |||
488 | 487 | | |
489 | 488 | | |
490 | 489 | | |
| 490 | + | |
| 491 | + | |
491 | 492 | | |
492 | 493 | | |
493 | | - | |
| 494 | + | |
494 | 495 | | |
495 | 496 | | |
496 | 497 | | |
| |||
503 | 504 | | |
504 | 505 | | |
505 | 506 | | |
| 507 | + | |
506 | 508 | | |
507 | 509 | | |
508 | | - | |
| 510 | + | |
509 | 511 | | |
510 | 512 | | |
511 | 513 | | |
| |||
540 | 542 | | |
541 | 543 | | |
542 | 544 | | |
543 | | - | |
| 545 | + | |
544 | 546 | | |
545 | 547 | | |
546 | | - | |
| 548 | + | |
547 | 549 | | |
548 | 550 | | |
549 | 551 | | |
| |||
592 | 594 | | |
593 | 595 | | |
594 | 596 | | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
595 | 605 | | |
596 | 606 | | |
597 | 607 | | |
598 | 608 | | |
599 | 609 | | |
600 | | - | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
| 614 | + | |
601 | 615 | | |
602 | 616 | | |
603 | 617 | | |
604 | 618 | | |
605 | | - | |
| 619 | + | |
| 620 | + | |
| 621 | + | |
606 | 622 | | |
607 | 623 | | |
608 | 624 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
13 | | - | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
14 | 19 | | |
15 | 20 | | |
16 | 21 | | |
| |||
20 | 25 | | |
21 | 26 | | |
22 | 27 | | |
23 | | - | |
| 28 | + | |
24 | 29 | | |
25 | 30 | | |
26 | 31 | | |
27 | 32 | | |
28 | 33 | | |
29 | 34 | | |
30 | 35 | | |
31 | | - | |
| 36 | + | |
32 | 37 | | |
33 | | - | |
| 38 | + | |
34 | 39 | | |
35 | | - | |
| 40 | + | |
| 41 | + | |
36 | 42 | | |
37 | 43 | | |
38 | | - | |
| 44 | + | |
39 | 45 | | |
40 | 46 | | |
41 | 47 | | |
42 | 48 | | |
43 | 49 | | |
44 | | - | |
| 50 | + | |
45 | 51 | | |
46 | 52 | | |
47 | 53 | | |
48 | | - | |
| 54 | + | |
49 | 55 | | |
50 | 56 | | |
51 | 57 | | |
52 | | - | |
| 58 | + | |
53 | 59 | | |
54 | 60 | | |
55 | 61 | | |
56 | | - | |
| 62 | + | |
57 | 63 | | |
58 | 64 | | |
59 | | - | |
| 65 | + | |
60 | 66 | | |
61 | 67 | | |
62 | 68 | | |
| |||
114 | 120 | | |
115 | 121 | | |
116 | 122 | | |
117 | | - | |
| 123 | + | |
118 | 124 | | |
119 | 125 | | |
120 | 126 | | |
121 | 127 | | |
122 | 128 | | |
123 | 129 | | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
124 | 134 | | |
125 | 135 | | |
| 136 | + | |
126 | 137 | | |
127 | 138 | | |
128 | 139 | | |
| |||
131 | 142 | | |
132 | 143 | | |
133 | 144 | | |
134 | | - | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
135 | 148 | | |
136 | 149 | | |
137 | 150 | | |
| |||
140 | 153 | | |
141 | 154 | | |
142 | 155 | | |
143 | | - | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
0 commit comments