|
22 | 22 | import yaml |
23 | 23 | from yaml.loader import Loader |
24 | 24 |
|
25 | | -from plumpy.persistence import ensure_object_loader |
26 | 25 | from plumpy.process_comms import KillMessage, MessageType |
27 | 26 |
|
28 | 27 | try: |
|
41 | 40 | auto_load, |
42 | 41 | auto_persist, |
43 | 42 | auto_save, |
| 43 | + ensure_object_loader, |
44 | 44 | ) |
45 | 45 | from .utils import SAVED_STATE_TYPE |
46 | 46 |
|
@@ -98,8 +98,8 @@ def recreate_from(cls, saved_state: SAVED_STATE_TYPE, load_context: Optional[Loa |
98 | 98 | :return: The recreated instance |
99 | 99 |
|
100 | 100 | """ |
101 | | - obj = cls.__new__(cls) |
102 | | - auto_load(obj, saved_state, load_context) |
| 101 | + load_context = ensure_object_loader(load_context, saved_state) |
| 102 | + obj = auto_load(cls, saved_state, load_context) |
103 | 103 | return obj |
104 | 104 |
|
105 | 105 | def save(self, save_context: Optional[LoadSaveContext] = None) -> SAVED_STATE_TYPE: |
@@ -171,15 +171,15 @@ def recreate_from(cls, saved_state: SAVED_STATE_TYPE, load_context: Optional[Loa |
171 | 171 |
|
172 | 172 | """ |
173 | 173 | load_context = ensure_object_loader(load_context, saved_state) |
174 | | - obj = cls.__new__(cls) |
175 | | - auto_load(obj, saved_state, load_context) |
| 174 | + obj = auto_load(cls, saved_state, load_context) |
176 | 175 |
|
177 | | - obj.state_machine = load_context.process |
178 | 176 | try: |
179 | 177 | obj.continue_fn = utils.load_function(saved_state[obj.CONTINUE_FN]) |
180 | 178 | except ValueError: |
181 | | - process = load_context.process |
182 | | - obj.continue_fn = getattr(process, saved_state[obj.CONTINUE_FN]) |
| 179 | + if load_context is not None: |
| 180 | + obj.continue_fn = getattr(load_context.proc, saved_state[obj.CONTINUE_FN]) |
| 181 | + else: |
| 182 | + raise |
183 | 183 | return obj |
184 | 184 |
|
185 | 185 |
|
@@ -235,12 +235,8 @@ def recreate_from(cls, saved_state: SAVED_STATE_TYPE, load_context: Optional[Loa |
235 | 235 |
|
236 | 236 | """ |
237 | 237 | load_context = ensure_object_loader(load_context, saved_state) |
238 | | - obj = cls.__new__(cls) |
239 | | - |
240 | | - auto_load(obj, saved_state, load_context) |
241 | | - |
| 238 | + obj = auto_load(cls, saved_state, load_context) |
242 | 239 | obj.process = load_context.process |
243 | | - |
244 | 240 | obj.run_fn = getattr(obj.process, saved_state[obj.RUN_FN]) |
245 | 241 |
|
246 | 242 | return obj |
@@ -306,15 +302,12 @@ def recreate_from(cls, saved_state: SAVED_STATE_TYPE, load_context: Optional[Loa |
306 | 302 |
|
307 | 303 | """ |
308 | 304 | load_context = ensure_object_loader(load_context, saved_state) |
309 | | - obj = cls.__new__(cls) |
310 | | - auto_load(obj, saved_state, load_context) |
311 | | - |
| 305 | + obj = auto_load(cls, saved_state, load_context) |
312 | 306 | obj.process = load_context.process |
313 | | - |
314 | 307 | obj.run_fn = getattr(obj.process, saved_state[obj.RUN_FN]) |
315 | 308 | if obj.COMMAND in saved_state: |
316 | | - # FIXME: typing |
317 | 309 | obj._command = persistence.load(saved_state[obj.COMMAND], load_context) # type: ignore |
| 310 | + |
318 | 311 | return obj |
319 | 312 |
|
320 | 313 | def interrupt(self, reason: Any) -> None: |
@@ -444,9 +437,7 @@ def recreate_from(cls, saved_state: SAVED_STATE_TYPE, load_context: Optional[Loa |
444 | 437 |
|
445 | 438 | """ |
446 | 439 | load_context = ensure_object_loader(load_context, saved_state) |
447 | | - obj = cls.__new__(cls) |
448 | | - auto_load(obj, saved_state, load_context) |
449 | | - |
| 440 | + obj = auto_load(cls, saved_state, load_context) |
450 | 441 | obj.process = load_context.process |
451 | 442 |
|
452 | 443 | callback_name = saved_state.get(obj.DONE_CALLBACK, None) |
@@ -550,8 +541,7 @@ def recreate_from(cls, saved_state: SAVED_STATE_TYPE, load_context: Optional[Loa |
550 | 541 |
|
551 | 542 | """ |
552 | 543 | load_context = ensure_object_loader(load_context, saved_state) |
553 | | - obj = cls.__new__(cls) |
554 | | - auto_load(obj, saved_state, load_context) |
| 544 | + obj = auto_load(cls, saved_state, load_context) |
555 | 545 |
|
556 | 546 | obj.exception = yaml.load(saved_state[obj.EXC_VALUE], Loader=Loader) |
557 | 547 | if _HAS_TBLIB: |
@@ -610,8 +600,7 @@ def recreate_from(cls, saved_state: SAVED_STATE_TYPE, load_context: Optional[Loa |
610 | 600 |
|
611 | 601 | """ |
612 | 602 | load_context = ensure_object_loader(load_context, saved_state) |
613 | | - obj = cls.__new__(cls) |
614 | | - auto_load(obj, saved_state, load_context) |
| 603 | + obj = auto_load(cls, saved_state, load_context) |
615 | 604 | return obj |
616 | 605 |
|
617 | 606 | def save(self, save_context: Optional[LoadSaveContext] = None) -> SAVED_STATE_TYPE: |
@@ -659,8 +648,7 @@ def recreate_from(cls, saved_state: SAVED_STATE_TYPE, load_context: Optional[Loa |
659 | 648 |
|
660 | 649 | """ |
661 | 650 | load_context = ensure_object_loader(load_context, saved_state) |
662 | | - obj = cls.__new__(cls) |
663 | | - auto_load(obj, saved_state, load_context) |
| 651 | + obj = auto_load(cls, saved_state, load_context) |
664 | 652 | return obj |
665 | 653 |
|
666 | 654 | def save(self, save_context: Optional[LoadSaveContext] = None) -> SAVED_STATE_TYPE: |
|
0 commit comments