]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
Integration Noyau du 01/12
authorPascale Noyret <pascale.noyret@edf.fr>
Mon, 5 Dec 2011 10:34:59 +0000 (10:34 +0000)
committerPascale Noyret <pascale.noyret@edf.fr>
Mon, 5 Dec 2011 10:34:59 +0000 (10:34 +0000)
Noyau/N_ASSD.py
Noyau/N_JDC.py
Noyau/N_MACRO_ETAPE.py
Noyau/__init__.py
Noyau/context.py
Noyau/nommage.py

index 780d5ad2583a3ff5c89172448f79df4e77d0e4e6..89266a11d328e34a721d85fc9f005a5cfaf4e9be 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF N_ASSD Noyau  DATE 30/08/2011   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF N_ASSD Noyau  DATE 25/10/2011   AUTEUR COURTOIS M.COURTOIS 
 # -*- coding: iso-8859-1 -*-
 # RESPONSABLE COURTOIS M.COURTOIS
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
@@ -103,25 +103,6 @@ class ASSD(object):
       """Type connu a posteriori (type CO)."""
       self.__class__ = new_type
 
-   def reparent_sd(self):
-      """Repositionne le parent des attributs de la SD associée.
-      """
-      sup = super(ASSD, self)
-      if hasattr(sup, 'nomj'):   # == AsBase
-         sup.reparent(None, None)
-
-   def rebuild_sd(self):
-      """Reconstruit les attributs de la SD associée.
-      """
-      etape = getattr(self, "etape", None)
-      sd = getattr(self, "sd", None)
-      new = self.__class__(etape=etape, sd=sd)
-      new.set_name(self.nom)
-      datt = new.__dict__
-      for nam in datt.keys():
-          if hasattr(self, nam) and getattr(self, nam) is None:
-              setattr(self, nam, getattr(new, nam))
-      self.reparent_sd()
    def get_name(self):
       """
           Retourne le nom de self, éventuellement en le demandant au JDC
@@ -187,8 +168,7 @@ class ASSD(object):
 
 
    def par_lot(self):
-      """Conserver uniquement pour la compatibilite avec le catalogue v9 dans eficas.
-      """
+      """Conserver uniquement pour la compatibilite avec le catalogue v9 dans eficas."""
       #XXX eficas
       if not hasattr(self, 'jdc') or self.jdc == None:
          val = None
@@ -196,6 +176,9 @@ class ASSD(object):
          val = self.jdc.par_lot
       return val == 'OUI'
 
+   def rebuild_sd(self):
+      """Conserver uniquement pour la compatibilite avec le catalogue v10 dans eficas."""
+
 
 class assd(ASSD):
     def __convert__(cls, valeur):
index 4efa4842f3128c82c12bcd2dc8036d4153bc42cb..e5b967e20534d9e520ac71e715bfe071a2cda502 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF N_JDC Noyau  DATE 28/06/2011   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF N_JDC Noyau  DATE 25/10/2011   AUTEUR COURTOIS M.COURTOIS 
 # -*- coding: iso-8859-1 -*-
 # RESPONSABLE COURTOIS M.COURTOIS
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
@@ -491,7 +491,15 @@ Causes possibles :
       return d
 
    def get_global_contexte(self):
-      return self.g_context.copy()
+      """Retourne "un" contexte global ;-)"""
+      # N'est utilisé que par INCLUDE (sauf erreur).
+      # g_context est remis à {} en PAR_LOT='OUI'. const_context permet
+      # de retrouver ce qui y a été mis par exec_compile.
+      # Les concepts n'y sont pas en PAR_LOT='OUI'. Ils sont ajoutés
+      # par get_global_contexte de la MACRO.
+      d = self.const_context.copy()
+      d.update(self.g_context)
+      return d
 
 
    def get_contexte_courant(self, etape_courante=None):
index 585d5135e131a5b51855502b690803c24ccd2f83..efc0380f1aaceaa1698a4e79dd43904cc7758caa 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF N_MACRO_ETAPE Noyau  DATE 12/10/2011   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF N_MACRO_ETAPE Noyau  DATE 07/11/2011   AUTEUR COURTOIS M.COURTOIS 
 # -*- coding: iso-8859-1 -*-
 # RESPONSABLE COURTOIS M.COURTOIS
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
@@ -619,12 +619,14 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" %(t,co
       # on execute le texte fourni dans le contexte forme par
       # le contexte de l etape pere (global au sens Python)
       # et le contexte de l etape (local au sens Python)
-      code=compile(text,f,'exec')
-      d={}
+      code = compile(text,f,'exec')
+      d = self.macro_const_context
       self.g_context = d
       self.contexte_fichier_init = d
-      globs=self.parent.get_global_contexte()
-      exec code in globs,d
+      globs = self.get_global_contexte()
+      exec code in globs, d
+      # pour ne pas conserver des références sur tout
+      self.macro_const_context = {}
 
    def get_global_contexte(self):
       """
@@ -636,6 +638,9 @@ Le type demande (%s) et le type du concept (%s) devraient etre derives""" %(t,co
       # du parent de self et de celui de l'etape elle meme (self)
       d=self.parent.get_global_contexte()
       d.update(self.g_context)
+      # en PAR_LOT='OUI', les concepts n'étant pas dans jdc.g_context,
+      # on demande au parent le contexte courant.
+      d.update(self.parent.get_contexte_avant(self))
       return d
 
    def get_contexte_courant(self, etape_fille_du_jdc=None):
index 5a85d29d4bed69e9e937633ee91e5318ff2bc930..e956f6ca600335a663bac95071664f89ef0a3fc1 100644 (file)
@@ -1,27 +1,27 @@
-#@ MODIF __init__ Noyau  DATE 16/05/2007   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF __init__ Noyau  DATE 12/10/2011   AUTEUR COURTOIS M.COURTOIS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
-# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
+# COPYRIGHT (C) 1991 - 2011  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR   
-# (AT YOUR OPTION) ANY LATER VERSION.                                 
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
 #
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT 
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF          
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU    
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                            
 #
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE   
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,       
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.      
-#                                                                       
-#                                                                       
 # ======================================================================
 
 
-""" 
+"""
     Ce package fournit les classes de base d'EFICAS.
     Ces classes permettent d'effectuer quelques opérations basiques :
 
@@ -38,6 +38,12 @@ import context
 import __builtin__
 __builtin__.CONTEXT=context
 
+def _(msg):
+    """Differs translation."""
+    # 'codex' should install its translation functions later
+    return msg
+__builtin__._ = _
+
 # Classes de base
 from N_SIMP import SIMP
 from N_FACT import FACT
index 315829dedc0f863103c2d83c754d5cdbaefd5af4..bdd8c50e572075cbefe85bececa6cd32461015f1 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF context Noyau  DATE 28/06/2011   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF context Noyau  DATE 15/11/2011   AUTEUR COURTOIS M.COURTOIS 
 # -*- coding: iso-8859-1 -*-
 # RESPONSABLE COURTOIS M.COURTOIS
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
@@ -39,8 +39,7 @@ def set_current_step(step):
    global _root
    if _root : raise "Impossible d'affecter _root. Il devrait valoir None"
    _root=step
-   if step is not None:
-     message.debug(SUPERV, "current_step = %s", step.nom, stack_id=-1)
+   message.debug(SUPERV, "current_step = %s", step and step.nom, stack_id=-1)
 
 def get_current_step():
    """
index 56988b6dae8713a7b5da3c93c6d33d6d4f26e3d2..431d3b067a823d0ca3857b665d1a9cbaac6504d2 100644 (file)
@@ -1,24 +1,24 @@
-#@ MODIF nommage Noyau  DATE 07/09/2009   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF nommage Noyau  DATE 25/10/2011   AUTEUR COURTOIS M.COURTOIS 
 # -*- coding: iso-8859-1 -*-
 # RESPONSABLE COURTOIS M.COURTOIS
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
-# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
+# COPYRIGHT (C) 1991 - 2011  EDF R&D                  WWW.CODE-ASTER.ORG
 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR   
-# (AT YOUR OPTION) ANY LATER VERSION.                                 
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
 #
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT 
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF          
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU    
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                            
 #
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE   
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,       
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.      
-#                                                                       
-#                                                                       
 # ======================================================================
 
 
@@ -26,7 +26,7 @@
    Ce module sert à nommer les concepts produits par les commandes.
    Le nom du concept est obtenu en appelant la fonction GetNomConceptResultat
    du module avec le nom de la commande en argument.
-   
+
    Cette fonction parcourt le source dans lequel la commande se trouve, parse le
    fichier et retrouve le nom du concept qui se trouve à gauche du signe = précédant
    le nom de la commande.
@@ -40,6 +40,7 @@
 # Modules Python
 import re,string
 import linecache
+from functools import partial
 
 # Modules EFICAS
 import N_utils
@@ -48,7 +49,7 @@ regex1='=?\s*%s\s*\('
 #commentaire standard precede d'un nombre quelconque de blancs (pas multiligne)
 pattern_comment   = re.compile(r"^\s*#.*")
 
-def GetNomConceptResultat(ope):
+def _GetNomConceptResultat(ope, level=2):
   """
      Cette fonction recherche dans la pile des appels, l'appel à la commande
      qui doit etre situé à 2 niveaux au-dessus (cur_frame(2)).
@@ -58,14 +59,14 @@ def GetNomConceptResultat(ope):
      et on vérifie que cette ligne correspond véritablement à l'appel.
 
      En effet, lorsque les commandes tiennent sur plusieurs lignes, on retrouve
-     la dernière ligne. Il faut donc remonter dans le source jusqu'à la première 
+     la dernière ligne. Il faut donc remonter dans le source jusqu'à la première
      ligne.
 
      Enfin la fonction evalnom forme un nom acceptable lorsque le concept est un
      élément d'une liste, par exemple.
 
   """
-  f=N_utils.cur_frame(2)
+  f=N_utils.cur_frame(level)
   lineno = f.f_lineno     # XXX Too bad if -O is used
   #lineno = f_lineno(f)  # Ne marche pas toujours
   co = f.f_code
@@ -148,3 +149,24 @@ def f_lineno(f):
        line = line + ord(tab[i+1])
    return line
 
+
+class NamingSystem:
+    """Cette classe définit un système de nommage dynamique des concepts."""
+    def __init__(self):
+        """Initialisation"""
+        self.native = _GetNomConceptResultat
+        self.use_global_naming()
+
+    def use_naming_function(self, function):
+        """Utilise une fonction particulière de nommage."""
+        self.naming_func = function
+
+    def use_global_naming(self):
+        """Utilise la fonction native de nommage."""
+        self.naming_func = partial(self.native, level=3)
+
+    def __call__(self, *args):
+        """Appel à la fonction de nommage."""
+        return self.naming_func(*args)
+
+GetNomConceptResultat = NamingSystem()