From b517c38cb99800ed537487fbba69f847b97ec2d9 Mon Sep 17 00:00:00 2001
From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr>
Date: Tue, 26 Mar 2024 15:17:00 +0100
Subject: [PATCH] Solver: Mage: Add mage fake 7.

---
 .gitlab-ci.yml                |  2 ++
 packages/make-windows-dir.bat |  1 +
 src/Solver/Mage.py            | 53 ++++++++++++++++++++++++-----------
 src/Solver/Solvers.py         |  6 +++-
 src/config.py                 | 10 ++++++-
 5 files changed, 54 insertions(+), 18 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index c7987f56..1a9569b0 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -59,6 +59,7 @@ dl-mage8-linux:
   artifacts:
     paths:
       - mage8-linux/mage
+      - mage8-linux/mage_as7
       - mage8-linux/mage_extraire
       - mage8-linux/mailleurTT
       - mage8-linux/libbief.so
@@ -77,6 +78,7 @@ dl-mage8-windows:
   artifacts:
     paths:
       - mage8-windows/mage.exe
+      - mage8-windows/mage_as7.exe
       - mage8-windows/mage_extraire.exe
       - mage8-windows/mailleurTT.exe
       - mage8-windows/libbief.dll
diff --git a/packages/make-windows-dir.bat b/packages/make-windows-dir.bat
index 9ce537ce..eae6d8f8 100644
--- a/packages/make-windows-dir.bat
+++ b/packages/make-windows-dir.bat
@@ -41,6 +41,7 @@ copy /y ..\src\motd.txt pamhyr\_internal
 rem MAGE
 mkdir pamhyr\mage8
 copy /y ..\mage8-windows\mage.exe pamhyr\mage8\
+copy /y ..\mage8-windows\mage_as7.exe pamhyr\mage8\
 copy /y ..\mage8-windows\mage_extraire.exe pamhyr\mage8\
 copy /y ..\mage8-windows\mailleurTT.exe pamhyr\mage8\
 copy /y ..\mage8-windows\libbief.dll pamhyr\mage8\
diff --git a/src/Solver/Mage.py b/src/Solver/Mage.py
index 1a3f829b..7da2328a 100644
--- a/src/Solver/Mage.py
+++ b/src/Solver/Mage.py
@@ -876,6 +876,16 @@ class Mage8(Mage):
 
         return files
 
+    def export_func_dict(self):
+        return [
+            self._export_ST, self._export_PAR,
+            self._export_NET, self._export_bound_cond,
+            self._export_RUG, self._export_INI,
+            self._export_SIN, self._export_VAR,
+            self._export_CAS, self._export_DEV,
+            self.export_additional_files,
+        ]
+
     @timer
     def export(self, study, repertory, qlog=None, name="0"):
         self._study = study
@@ -888,20 +898,8 @@ class Mage8(Mage):
         # Generate files
         files = []
 
-        files = self._export_ST(study, repertory, qlog, name=name)
-        files = files + self._export_PAR(study, repertory, qlog, name=name)
-        files = files + self._export_NET(study, repertory, qlog, name=name)
-        files = files + \
-            self._export_bound_cond(study, repertory, qlog, name=name)
-        files = files + self._export_RUG(study, repertory, qlog, name=name)
-        files = files + self._export_INI(study, repertory, qlog, name=name)
-        files = files + self._export_SIN(study, repertory, qlog, name=name)
-        files = files + self._export_VAR(study, repertory, qlog, name=name)
-        files = files + self._export_CAS(study, repertory, qlog, name=name)
-        files = files + self._export_DEV(study, repertory, qlog, name=name)
-        files = files + self.export_additional_files(
-            study, repertory, qlog, name=name
-        )
+        for func in self.export_func_dict():
+            files = files + func(study, repertory, qlog, name=name)
 
         self.export_study_description(study, repertory, qlog, name=name)
         self._export_REP(study, repertory, files, qlog, name=name)
@@ -1219,12 +1217,35 @@ class Mage8(Mage):
             logger.info(f"read_gra: ... end with {len(ts)} timestamp read")
 
     @timer
-    def results(self, study, repertory, qlog=None, name=None):
+    def results(self, study, repertory,
+                qlog=None, name=None,
+                with_gra=True):
         self._study = study
         if name is None:
             name = study.name.replace(" ", "_")
 
         results = super(Mage8, self).results(study, repertory, qlog, name=name)
-        self.read_gra(study, repertory, results, qlog, name=name)
+        if with_gra:
+            self.read_gra(study, repertory, results, qlog, name=name)
+
+        return results
+
 
+
+class MageFake7(Mage8):
+    _type = "mage_fake7"
+
+    def __init__(self, name):
+        super(MageFake7, self).__init__(name)
+
+        self._type = "mage_fake7"
+
+    @timer
+    def results(self, study, repertory,
+                qlog=None, name=None,
+                with_gra=False):
+        results = super(MageFake7, self).results(
+            study, repertory,
+            qlog, name=name, with_gra=with_gra
+        )
         return results
diff --git a/src/Solver/Solvers.py b/src/Solver/Solvers.py
index 38f443e9..e1ced449 100644
--- a/src/Solver/Solvers.py
+++ b/src/Solver/Solvers.py
@@ -19,7 +19,9 @@
 from PyQt5.QtCore import QCoreApplication
 
 from Solver.GenericSolver import GenericSolver
-from Solver.Mage import Mage7, Mage8
+from Solver.Mage import (
+    Mage7, Mage8, MageFake7,
+)
 
 _translate = QCoreApplication.translate
 
@@ -27,10 +29,12 @@ solver_long_name = {
     # "generic": "Generic",
     # "mage7": "Mage v7",
     "mage8": "Mage v8",
+    "mage_fake7": "Mage fake v7",
 }
 
 solver_type_list = {
     # "generic": GenericSolver,
     # "mage7": Mage7,
     "mage8": Mage8,
+    "mage_fake7": MageFake7,
 }
diff --git a/src/config.py b/src/config.py
index 091542ec..f18708d7 100644
--- a/src/config.py
+++ b/src/config.py
@@ -285,16 +285,24 @@ class Config(SQL):
         posix = os.name == 'posix'
         ext = "" if posix else ".exe"
 
+        # Mage8
         ctor = solver_type_list["mage8"]
         new = ctor("default-mage")
         new._description = "Default Pamhyr2 mage 8 version"
         new._cmd_solver = f""""@install_dir/mage8/mage{ext}" @args @input"""
         self._solvers.append(new)
 
+        # Mage fake 7
+        ctor = solver_type_list["mage_fake7"]
+        new = ctor("default-mage-fake-7")
+        new._description = "Default Pamhyr2 mage fake version 7"
+        new._cmd_solver = f""""@install_dir/mage8/mage_as7{ext}" @args @input"""
+        self._solvers.append(new)
+
         # Backup
         self.backup_enable = True
         # self.backup_path = ""
-        self.backup_frequence = "00:05:00"
+        self.backup_frequence = "00:15:00"
         # self.backup_max = 10
 
         # Editor
-- 
GitLab