|
42 | 42 | auto_load, |
43 | 43 | auto_persist, |
44 | 44 | auto_save, |
| 45 | + ensure_object_loader, |
45 | 46 | ) |
46 | 47 | from .utils import SAVED_STATE_TYPE |
47 | 48 |
|
@@ -102,8 +103,8 @@ def recreate_from(cls, saved_state: SAVED_STATE_TYPE, load_context: Optional[Loa |
102 | 103 | :return: The recreated instance |
103 | 104 |
|
104 | 105 | """ |
105 | | - obj = cls.__new__(cls) |
106 | | - auto_load(obj, saved_state, load_context) |
| 106 | + load_context = ensure_object_loader(load_context, saved_state) |
| 107 | + obj = auto_load(cls, saved_state, load_context) |
107 | 108 | return obj |
108 | 109 |
|
109 | 110 | def save(self, save_context: Optional[LoadSaveContext] = None) -> SAVED_STATE_TYPE: |
@@ -175,15 +176,15 @@ def recreate_from(cls, saved_state: SAVED_STATE_TYPE, load_context: Optional[Loa |
175 | 176 |
|
176 | 177 | """ |
177 | 178 | load_context = ensure_object_loader(load_context, saved_state) |
178 | | - obj = cls.__new__(cls) |
179 | | - auto_load(obj, saved_state, load_context) |
| 179 | + obj = auto_load(cls, saved_state, load_context) |
180 | 180 |
|
181 | | - obj.state_machine = load_context.process |
182 | 181 | try: |
183 | 182 | obj.continue_fn = utils.load_function(saved_state[obj.CONTINUE_FN]) |
184 | 183 | except ValueError: |
185 | | - process = load_context.process |
186 | | - obj.continue_fn = getattr(process, saved_state[obj.CONTINUE_FN]) |
| 184 | + if load_context is not None: |
| 185 | + obj.continue_fn = getattr(load_context.proc, saved_state[obj.CONTINUE_FN]) |
| 186 | + else: |
| 187 | + raise |
187 | 188 | return obj |
188 | 189 |
|
189 | 190 |
|
@@ -239,12 +240,8 @@ def recreate_from(cls, saved_state: SAVED_STATE_TYPE, load_context: Optional[Loa |
239 | 240 |
|
240 | 241 | """ |
241 | 242 | load_context = ensure_object_loader(load_context, saved_state) |
242 | | - obj = cls.__new__(cls) |
243 | | - |
244 | | - auto_load(obj, saved_state, load_context) |
245 | | - |
| 243 | + obj = auto_load(cls, saved_state, load_context) |
246 | 244 | obj.process = load_context.process |
247 | | - |
248 | 245 | obj.run_fn = getattr(obj.process, saved_state[obj.RUN_FN]) |
249 | 246 |
|
250 | 247 | return obj |
@@ -312,15 +309,13 @@ def recreate_from(cls, saved_state: SAVED_STATE_TYPE, load_context: Optional[Loa |
312 | 309 |
|
313 | 310 | """ |
314 | 311 | load_context = ensure_object_loader(load_context, saved_state) |
315 | | - obj = cls.__new__(cls) |
316 | | - auto_load(obj, saved_state, load_context) |
317 | | - |
| 312 | + obj = auto_load(cls, saved_state, load_context) |
318 | 313 | obj.process = load_context.process |
319 | 314 |
|
320 | 315 | obj.run_fn = ensure_coroutine(getattr(self.process, saved_state[self.RUN_FN])) |
321 | 316 | if obj.COMMAND in saved_state: |
322 | | - # FIXME: typing |
323 | 317 | obj._command = persistence.load(saved_state[obj.COMMAND], load_context) # type: ignore |
| 318 | + |
324 | 319 | return obj |
325 | 320 |
|
326 | 321 | def interrupt(self, reason: Any) -> None: |
@@ -450,9 +445,7 @@ def recreate_from(cls, saved_state: SAVED_STATE_TYPE, load_context: Optional[Loa |
450 | 445 |
|
451 | 446 | """ |
452 | 447 | load_context = ensure_object_loader(load_context, saved_state) |
453 | | - obj = cls.__new__(cls) |
454 | | - auto_load(obj, saved_state, load_context) |
455 | | - |
| 448 | + obj = auto_load(cls, saved_state, load_context) |
456 | 449 | obj.process = load_context.process |
457 | 450 |
|
458 | 451 | callback_name = saved_state.get(obj.DONE_CALLBACK, None) |
@@ -556,8 +549,7 @@ def recreate_from(cls, saved_state: SAVED_STATE_TYPE, load_context: Optional[Loa |
556 | 549 |
|
557 | 550 | """ |
558 | 551 | load_context = ensure_object_loader(load_context, saved_state) |
559 | | - obj = cls.__new__(cls) |
560 | | - auto_load(obj, saved_state, load_context) |
| 552 | + obj = auto_load(cls, saved_state, load_context) |
561 | 553 |
|
562 | 554 | obj.exception = yaml.load(saved_state[obj.EXC_VALUE], Loader=Loader) |
563 | 555 | if _HAS_TBLIB: |
@@ -616,8 +608,7 @@ def recreate_from(cls, saved_state: SAVED_STATE_TYPE, load_context: Optional[Loa |
616 | 608 |
|
617 | 609 | """ |
618 | 610 | load_context = ensure_object_loader(load_context, saved_state) |
619 | | - obj = cls.__new__(cls) |
620 | | - auto_load(obj, saved_state, load_context) |
| 611 | + obj = auto_load(cls, saved_state, load_context) |
621 | 612 | return obj |
622 | 613 |
|
623 | 614 | def save(self, save_context: Optional[LoadSaveContext] = None) -> SAVED_STATE_TYPE: |
@@ -665,8 +656,7 @@ def recreate_from(cls, saved_state: SAVED_STATE_TYPE, load_context: Optional[Loa |
665 | 656 |
|
666 | 657 | """ |
667 | 658 | load_context = ensure_object_loader(load_context, saved_state) |
668 | | - obj = cls.__new__(cls) |
669 | | - auto_load(obj, saved_state, load_context) |
| 659 | + obj = auto_load(cls, saved_state, load_context) |
670 | 660 | return obj |
671 | 661 |
|
672 | 662 | def save(self, save_context: Optional[LoadSaveContext] = None) -> SAVED_STATE_TYPE: |
|
0 commit comments