From 479024b77e6f04712308a895616ae18ae2d61500 Mon Sep 17 00:00:00 2001
From: shinedday <shinedday@gmail.com>
Date: Fri, 21 May 2021 14:03:16 +0200
Subject: [PATCH] Release 0.1.12 : better saving and loading

---
 pyAmakCore/classes/scheduler_tool/callable.py |  15 +++++++++--
 pyAmakCore/classes/scheduler_tool/savable.py  |  22 ++++++++++++---
 .../classes/scheduler_tool/scheduler_core.py  |  15 ++++++++---
 .../classes/scheduler_tool/scheduler_state.py |  25 ++++++++++++++++++
 pyAmakCore/tests/memory_leak/main.py          |   8 +++++-
 release/changelog.txt                         |   6 ++++-
 release/pyAmakCore-0.1.2-py3-none-any.whl     | Bin 0 -> 30185 bytes
 setup.py                                      |   2 +-
 8 files changed, 82 insertions(+), 11 deletions(-)
 create mode 100644 pyAmakCore/classes/scheduler_tool/scheduler_state.py
 create mode 100644 release/pyAmakCore-0.1.2-py3-none-any.whl

diff --git a/pyAmakCore/classes/scheduler_tool/callable.py b/pyAmakCore/classes/scheduler_tool/callable.py
index f6f4a51..b57e894 100644
--- a/pyAmakCore/classes/scheduler_tool/callable.py
+++ b/pyAmakCore/classes/scheduler_tool/callable.py
@@ -1,15 +1,24 @@
 """
 class Callable
 """
+import pathlib
+import sys
 from threading import Semaphore
 
 
-class Callable:
+sys.path.insert(0, str(pathlib.Path(__file__).parent))
+
+from pyAmakCore.classes.scheduler_tool.scheduler_state import State
+from pyAmakCore.classes.scheduler_tool.savable import Savable
+
+
+class Callable(Savable):
     """
     Class that implement useful method to interact with the program
     """
 
-    def __init__(self) -> None:
+    def __init__(self, amas) -> None:
+        super().__init__(amas)
         self.exit_bool: bool = False
         self.sleep_time: float = 0
 
@@ -26,12 +35,14 @@ class Callable:
         """
         Unlock the scheduler
         """
+        self.state = State.RUNNING
         self.semaphore_start_stop.release()
 
     def stop(self) -> None:
         """
         Lock the scheduler
         """
+        self.state = State.WAITING
         self.semaphore_start_stop.acquire()
 
     def set_sleep(self, sleep_time: int) -> None:
diff --git a/pyAmakCore/classes/scheduler_tool/savable.py b/pyAmakCore/classes/scheduler_tool/savable.py
index ade7702..4c1294b 100644
--- a/pyAmakCore/classes/scheduler_tool/savable.py
+++ b/pyAmakCore/classes/scheduler_tool/savable.py
@@ -2,20 +2,25 @@
 Savable Class
 """
 import pickle
+
 import sys
 import pathlib
 
 sys.path.insert(0, str(pathlib.Path(__file__).parent))
 
 from pyAmakCore.classes.amas import Amas
+from pyAmakCore.classes.scheduler_tool.scheduler_state import State
 
 
 class Savable:
     """
     Class that implement convenient method to save and load an amas
     """
+
     def __init__(self, amas: Amas) -> None:
-        self.amas = amas
+        self.amas: Amas = amas
+        self.state: State = State.RUNNING
+        self.save_path = None
 
     def get_amas(self):
         """
@@ -23,12 +28,23 @@ class Savable:
         """
         return self.amas
 
-    def save(self, file="filename.pickle") -> None:
+    def _dump(self, file):
         """
         Save the current state of the system
         """
         with open(file, 'wb') as handle:
-                pickle.dump(self.amas, handle, protocol=pickle.HIGHEST_PROTOCOL)
+            pickle.dump(self.amas, handle, protocol=pickle.HIGHEST_PROTOCOL)
+
+    def save(self, file="filename.pickle") -> None:
+        """
+        try to save if scheduler is not working
+        """
+
+        if self.state == State.RUNNING:
+            self.save_path = file
+            self.state = State.NEED_TO_SAVE
+        if self.state == State.WAITING:
+            self._dump(file)
 
     @classmethod
     def load(cls, file="filename.pickle") -> 'Savable':
diff --git a/pyAmakCore/classes/scheduler_tool/scheduler_core.py b/pyAmakCore/classes/scheduler_tool/scheduler_core.py
index 15ef702..c95aa13 100644
--- a/pyAmakCore/classes/scheduler_tool/scheduler_core.py
+++ b/pyAmakCore/classes/scheduler_tool/scheduler_core.py
@@ -6,6 +6,8 @@ from time import sleep
 import sys
 import pathlib
 
+from pyAmakCore.classes.scheduler_tool.scheduler_state import State
+
 sys.path.insert(0, str(pathlib.Path(__file__).parent))
 
 from pyAmakCore.classes.scheduler_tool.callable import Callable
@@ -19,9 +21,7 @@ class SchedulerCore(Callable, Savable):
     """
 
     def __init__(self, amas: Amas) -> None:
-
-        Callable.__init__(self)
-        Savable.__init__(self, amas)
+        Callable.__init__(self, amas)
 
     def first_part(self) -> None:
         """
@@ -38,6 +38,13 @@ class SchedulerCore(Callable, Savable):
         last part of a cycle
         """
 
+    def try_to_save(self):
+        """
+        try to save scheduler if need to
+        """
+        if self.state == State.NEED_TO_SAVE:
+            self._dump(self.save_path)
+
     def run(self) -> None:
         """
         main part of amak core
@@ -45,6 +52,7 @@ class SchedulerCore(Callable, Savable):
         while not self.exit_bool:
             print("Cycle : ", self.amas.get_cycle())
 
+            self.try_to_save()
             self.semaphore_start_stop.acquire()
             if self.exit_bool:
                 break
@@ -54,4 +62,5 @@ class SchedulerCore(Callable, Savable):
             self.main_part()
             self.last_part()
 
+            self.try_to_save()
             sleep(self.sleep_time)
diff --git a/pyAmakCore/classes/scheduler_tool/scheduler_state.py b/pyAmakCore/classes/scheduler_tool/scheduler_state.py
new file mode 100644
index 0000000..af657e3
--- /dev/null
+++ b/pyAmakCore/classes/scheduler_tool/scheduler_state.py
@@ -0,0 +1,25 @@
+"""
+Scheduler State
+"""
+from enum import Enum, auto
+
+
+class State(Enum):
+    """
+    Scheduler State
+    """
+
+    """
+    Scheduler is waiting
+    """
+    WAITING = auto()
+
+    """
+    Scheduler is running
+    """
+    RUNNING = auto()
+
+    """
+    Scheduler is running and should save as soon as possible
+    """
+    NEED_TO_SAVE = auto()
diff --git a/pyAmakCore/tests/memory_leak/main.py b/pyAmakCore/tests/memory_leak/main.py
index bf6126a..7ca9c88 100644
--- a/pyAmakCore/tests/memory_leak/main.py
+++ b/pyAmakCore/tests/memory_leak/main.py
@@ -23,6 +23,12 @@ class SimpleAmas(Amas):
 class SimpleEnv(Environment):
     pass
 
+class SimpleSchedulerMono(SchedulerMono):
+
+    def last_part(self) -> None:
+        super().last_part()
+        self.save("test.pickle")
+
 import time
 start_time = time.time()
 ToOverrideWarning.enable_warning(False)
@@ -31,7 +37,7 @@ env = SimpleEnv()
 amas = SimpleAmas(env)
 
 #scheduler = Scheduler(amas)
-scheduler = SchedulerMono(amas)
+scheduler = SimpleSchedulerMono(amas)
 
 scheduler.start()
 scheduler.run()
diff --git a/release/changelog.txt b/release/changelog.txt
index 25aa62f..2848db1 100644
--- a/release/changelog.txt
+++ b/release/changelog.txt
@@ -1,9 +1,13 @@
+v0.1.2:
+ * Add : Save & load can now accept path to save & load file
+ * Fix : You could save in a middle of a cycle, which makes the backup file corrupted
+
 V0.1.1:
  * Add mono threading scheduler
  * Add seed in environment
 
 v0.1.0:
- WARNING : all previous example will no longer work in this version, and all v0.1.0+ example won't work in previous version
+ WARNING : all previous example will no longer work in this version, and all v0.1.0+ example won't work in previous version (need to create a scheduler)
  * Way better thread management
  * Add save and load
 
diff --git a/release/pyAmakCore-0.1.2-py3-none-any.whl b/release/pyAmakCore-0.1.2-py3-none-any.whl
new file mode 100644
index 0000000000000000000000000000000000000000..3b37e35a090234ae91a75ed970e6898c197c17a3
GIT binary patch
literal 30185
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
NhM7VP3|7e?9sr)95zhbs

literal 0
HcmV?d00001

diff --git a/setup.py b/setup.py
index 0ffadb0..39a2835 100644
--- a/setup.py
+++ b/setup.py
@@ -3,7 +3,7 @@ from setuptools import setup, find_packages
 setup(
     name='pyAmakCore',
     packages=find_packages(),
-    version='0.1.1',
+    version='0.1.2',
     description='AmakFramework in python',
     author='BE',
     install_requires=[],
-- 
GitLab