Repository navigation
Commit 4d37f7f
committed
fix: validate a new node before overwriting the existing one
Opening or creating a node with mode="w" or overwrite=True deleted the
existing node before the new one was validated, so an invalid argument
destroyed the existing data and created nothing. For example,
zarr.open(store, mode="w", config=...) on an existing array erased the
store and then raised TypeError from open_group.
Two deletion points ran too early:
- make_store_path(mode="w") erased the path before dispatch in open,
open_array, open_group, create and save_array. These now build the
store path with mode "a" and create the node with overwrite=True.
- overwrite=True deleted the node before its metadata was built in
AsyncArray._create_v2/_create_v3, init_array and AsyncGroup.from_store.
save_new_metadata now encodes the metadata first, then deletes, then
writes.
save_group checks its arguments before erasing the path.
Assisted-by: ClaudeCode:claude-opus-5-51 parent 156cc04 commit 4d37f7f
5 files changed
Lines changed: 234 additions & 73 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
108 | 108 | | |
109 | 109 | | |
110 | 110 | | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
111 | 123 | | |
112 | 124 | | |
113 | 125 | | |
| |||
388 | 400 | | |
389 | 401 | | |
390 | 402 | | |
391 | | - | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
392 | 409 | | |
393 | 410 | | |
394 | 411 | | |
395 | | - | |
396 | | - | |
397 | | - | |
398 | | - | |
399 | | - | |
400 | | - | |
401 | | - | |
402 | | - | |
403 | | - | |
404 | | - | |
405 | | - | |
406 | | - | |
407 | | - | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
408 | 429 | | |
409 | 430 | | |
410 | 431 | | |
| |||
500 | 521 | | |
501 | 522 | | |
502 | 523 | | |
503 | | - | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
504 | 527 | | |
505 | 528 | | |
506 | 529 | | |
| |||
549 | 572 | | |
550 | 573 | | |
551 | 574 | | |
552 | | - | |
553 | | - | |
554 | 575 | | |
555 | 576 | | |
556 | 577 | | |
| |||
565 | 586 | | |
566 | 587 | | |
567 | 588 | | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
568 | 592 | | |
569 | 593 | | |
570 | 594 | | |
| |||
856 | 880 | | |
857 | 881 | | |
858 | 882 | | |
859 | | - | |
| 883 | + | |
| 884 | + | |
| 885 | + | |
860 | 886 | | |
861 | 887 | | |
862 | 888 | | |
| |||
1062 | 1088 | | |
1063 | 1089 | | |
1064 | 1090 | | |
1065 | | - | |
| 1091 | + | |
| 1092 | + | |
| 1093 | + | |
| 1094 | + | |
1066 | 1095 | | |
1067 | 1096 | | |
1068 | 1097 | | |
| |||
1261 | 1290 | | |
1262 | 1291 | | |
1263 | 1292 | | |
1264 | | - | |
| 1293 | + | |
| 1294 | + | |
| 1295 | + | |
| 1296 | + | |
| 1297 | + | |
| 1298 | + | |
1265 | 1299 | | |
1266 | 1300 | | |
1267 | 1301 | | |
1268 | 1302 | | |
1269 | | - | |
1270 | | - | |
1271 | | - | |
1272 | | - | |
1273 | | - | |
1274 | | - | |
1275 | | - | |
1276 | | - | |
1277 | | - | |
1278 | | - | |
1279 | | - | |
1280 | | - | |
1281 | | - | |
1282 | | - | |
| 1303 | + | |
| 1304 | + | |
| 1305 | + | |
| 1306 | + | |
| 1307 | + | |
| 1308 | + | |
| 1309 | + | |
| 1310 | + | |
| 1311 | + | |
| 1312 | + | |
| 1313 | + | |
| 1314 | + | |
| 1315 | + | |
| 1316 | + | |
1283 | 1317 | | |
1284 | 1318 | | |
1285 | 1319 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
118 | 118 | | |
119 | 119 | | |
120 | 120 | | |
121 | | - | |
| 121 | + | |
122 | 122 | | |
123 | 123 | | |
124 | 124 | | |
| |||
146 | 146 | | |
147 | 147 | | |
148 | 148 | | |
149 | | - | |
| 149 | + | |
150 | 150 | | |
151 | 151 | | |
152 | 152 | | |
| |||
334 | 334 | | |
335 | 335 | | |
336 | 336 | | |
337 | | - | |
338 | | - | |
339 | | - | |
340 | | - | |
341 | | - | |
342 | | - | |
343 | | - | |
344 | | - | |
345 | | - | |
346 | | - | |
347 | | - | |
348 | | - | |
349 | | - | |
350 | | - | |
351 | | - | |
352 | | - | |
353 | 337 | | |
354 | 338 | | |
355 | 339 | | |
| |||
629 | 613 | | |
630 | 614 | | |
631 | 615 | | |
632 | | - | |
633 | | - | |
634 | 616 | | |
635 | 617 | | |
636 | 618 | | |
| |||
650 | 632 | | |
651 | 633 | | |
652 | 634 | | |
653 | | - | |
| 635 | + | |
654 | 636 | | |
655 | 637 | | |
656 | 638 | | |
| |||
704 | 686 | | |
705 | 687 | | |
706 | 688 | | |
707 | | - | |
708 | | - | |
709 | 689 | | |
710 | 690 | | |
711 | 691 | | |
| |||
733 | 713 | | |
734 | 714 | | |
735 | 715 | | |
736 | | - | |
| 716 | + | |
737 | 717 | | |
738 | 718 | | |
739 | 719 | | |
| |||
4530 | 4510 | | |
4531 | 4511 | | |
4532 | 4512 | | |
4533 | | - | |
4534 | | - | |
4535 | 4513 | | |
4536 | 4514 | | |
4537 | 4515 | | |
| |||
4645 | 4623 | | |
4646 | 4624 | | |
4647 | 4625 | | |
4648 | | - | |
| 4626 | + | |
4649 | 4627 | | |
4650 | 4628 | | |
4651 | 4629 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
51 | | - | |
| 51 | + | |
52 | 52 | | |
53 | 53 | | |
54 | 54 | | |
| |||
60 | 60 | | |
61 | 61 | | |
62 | 62 | | |
63 | | - | |
| 63 | + | |
64 | 64 | | |
65 | 65 | | |
66 | 66 | | |
| |||
477 | 477 | | |
478 | 478 | | |
479 | 479 | | |
480 | | - | |
481 | | - | |
482 | | - | |
483 | | - | |
484 | | - | |
485 | | - | |
486 | | - | |
487 | | - | |
488 | 480 | | |
489 | 481 | | |
490 | 482 | | |
491 | 483 | | |
492 | 484 | | |
493 | | - | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
494 | 488 | | |
495 | 489 | | |
496 | 490 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| 12 | + | |
12 | 13 | | |
13 | 14 | | |
14 | 15 | | |
| |||
52 | 53 | | |
53 | 54 | | |
54 | 55 | | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
55 | 98 | | |
56 | 99 | | |
57 | 100 | | |
58 | 101 | | |
59 | | - | |
| 102 | + | |
60 | 103 | | |
61 | 104 | | |
62 | 105 | | |
| |||
0 commit comments