Repository navigation
Commit e38be20
authored
Support pickle and deepcopy on Triangulation (#11)
* fix: support pickle and deepcopy on Triangulation
adaptive's LearnerND does deepcopy(self.__dict__) in _get_data, which
backs learner.save(), copy.deepcopy(learner), and pickling learners
for distributed runners - all of which crashed with
'cannot pickle builtins.Triangulation' under the Rust backend (the
reference is a plain Python class, so it pickles for free).
- the constructor gains an optional simplices argument that restores
an exact prior state via from_simplices instead of triangulating
(no scipy, no re-insertion; hand-modified simplex sets and
unconnected vertices survive)
- __reduce__ serializes (vertices, simplices) and reconstructs through
that argument; this covers pickle, copy.copy, and copy.deepcopy
- the pyclass declares module = 'adaptive_triangulation._rust' so
pickle can resolve the class by reference (it previously advertised
itself as builtins.Triangulation)
Tested: pickle/deepcopy round-trips (including a hand-deleted simplex
and an unconnected duplicate vertex), clone independence, and an
end-to-end LearnerND _get_data/_set_data + deepcopy cycle that keeps
learning afterwards.
* style: noqa for deliberate pickle/private-member use in tests
* refactor: tidy __reduce__ and make pickle bytes deterministic
- return Bound values directly instead of unbind/into_any noise, with
a PickleReduction type alias for the pickle protocol shape
- sort the simplices before serializing so equal triangulations pickle
to identical bytes (the hash-map iteration order is arbitrary)1 parent 4ee0bf2 commit e38be20
2 files changed
Lines changed: 122 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
294 | 294 | | |
295 | 295 | | |
296 | 296 | | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
297 | 301 | | |
298 | 302 | | |
299 | 303 | | |
300 | | - | |
| 304 | + | |
301 | 305 | | |
302 | 306 | | |
303 | 307 | | |
| |||
569 | 573 | | |
570 | 574 | | |
571 | 575 | | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
572 | 579 | | |
573 | | - | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
574 | 586 | | |
575 | 587 | | |
576 | 588 | | |
577 | 589 | | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
578 | 596 | | |
579 | 597 | | |
580 | 598 | | |
581 | 599 | | |
582 | 600 | | |
583 | 601 | | |
584 | 602 | | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
| 614 | + | |
| 615 | + | |
| 616 | + | |
| 617 | + | |
| 618 | + | |
| 619 | + | |
| 620 | + | |
| 621 | + | |
| 622 | + | |
| 623 | + | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
585 | 631 | | |
586 | 632 | | |
587 | 633 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
966 | 966 | | |
967 | 967 | | |
968 | 968 | | |
| 969 | + | |
| 970 | + | |
| 971 | + | |
| 972 | + | |
| 973 | + | |
| 974 | + | |
| 975 | + | |
| 976 | + | |
| 977 | + | |
| 978 | + | |
| 979 | + | |
| 980 | + | |
| 981 | + | |
| 982 | + | |
| 983 | + | |
| 984 | + | |
| 985 | + | |
| 986 | + | |
| 987 | + | |
| 988 | + | |
| 989 | + | |
| 990 | + | |
| 991 | + | |
| 992 | + | |
| 993 | + | |
| 994 | + | |
| 995 | + | |
| 996 | + | |
| 997 | + | |
| 998 | + | |
| 999 | + | |
| 1000 | + | |
| 1001 | + | |
| 1002 | + | |
| 1003 | + | |
| 1004 | + | |
| 1005 | + | |
| 1006 | + | |
| 1007 | + | |
| 1008 | + | |
| 1009 | + | |
| 1010 | + | |
| 1011 | + | |
| 1012 | + | |
| 1013 | + | |
| 1014 | + | |
| 1015 | + | |
| 1016 | + | |
| 1017 | + | |
| 1018 | + | |
| 1019 | + | |
| 1020 | + | |
| 1021 | + | |
| 1022 | + | |
| 1023 | + | |
| 1024 | + | |
| 1025 | + | |
| 1026 | + | |
| 1027 | + | |
| 1028 | + | |
| 1029 | + | |
| 1030 | + | |
| 1031 | + | |
| 1032 | + | |
| 1033 | + | |
| 1034 | + | |
| 1035 | + | |
| 1036 | + | |
| 1037 | + | |
| 1038 | + | |
| 1039 | + | |
| 1040 | + | |
| 1041 | + | |
| 1042 | + | |
0 commit comments