From 4c7f3bc0a62a11e5eb952a57a1fa8636f1ff10f7 Mon Sep 17 00:00:00 2001 From: eficas <> Date: Mon, 22 Nov 2004 15:38:36 +0000 Subject: [PATCH] PN version 7.3.29 d aster --- Noyau/N_FONCTION.py | 43 +++++++++++++++++++++++++++++++++++++----- Noyau/N_MCCOMPO.py | 2 +- Noyau/properties.py | 4 ++-- Validation/V_MCSIMP.py | 17 +---------------- 4 files changed, 42 insertions(+), 24 deletions(-) diff --git a/Noyau/N_FONCTION.py b/Noyau/N_FONCTION.py index fc75656c..00a82552 100644 --- a/Noyau/N_FONCTION.py +++ b/Noyau/N_FONCTION.py @@ -1,4 +1,4 @@ -#@ MODIF N_FONCTION Noyau DATE 28/09/2004 AUTEUR DURAND C.DURAND +#@ MODIF N_FONCTION Noyau DATE 20/10/2004 AUTEUR DURAND C.DURAND # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -30,19 +30,52 @@ class formule(ASSD): ASSD.__init__(self,**args) self.nompar =None self.expression=None + def __call__(self,*val): - context=self.jdc.const_context + context={} i=0 for param in self.nompar : context[param]=val[i] i=i+1 try : - exec(self.expression) in context + res=eval(self.expression,self.jdc.const_context, context) except : print 75*'!' print '! '+string.ljust('Erreur evaluation formule '+self.nom,72)+'!' print 75*'!' raise - res=context['____x'] - del(context) return res + + def setFormule(self,nom_para,texte): + """ + Cette methode sert a initialiser les attributs + nompar, expression et code qui sont utilisés + dans l'évaluation de la formule + """ + self.nompar = nom_para + self.expression = texte + try : + self.code=compile(texte,texte,'eval') + except SyntaxError : + print 75*'!' + print '! '+string.ljust('Erreur evaluation formule '+self.nom,72)+'!' + print 75*'!' + raise + + def __setstate__(self,state): + """ + Cette methode sert a restaurer l'attribut code + lors d'un unpickle + """ + self.__dict__.update(state) # update attributes + self.setFormule(self.nompar,self.expression) # restore code attribute + + def __getstate__(self): + """ + Pour les formules, il faut enlever l'attribut code + qui n'est pas picklable + """ + d=ASSD.__getstate__(self) + del d['code'] + return d + diff --git a/Noyau/N_MCCOMPO.py b/Noyau/N_MCCOMPO.py index dfc371ed..a587e0d7 100644 --- a/Noyau/N_MCCOMPO.py +++ b/Noyau/N_MCCOMPO.py @@ -1,4 +1,4 @@ -#@ MODIF N_MCCOMPO Noyau DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS +#@ MODIF N_MCCOMPO Noyau DATE 20/10/2004 AUTEUR DURAND C.DURAND # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== diff --git a/Noyau/properties.py b/Noyau/properties.py index f6bb7c46..1cb28aa2 100644 --- a/Noyau/properties.py +++ b/Noyau/properties.py @@ -19,6 +19,6 @@ # # # ====================================================================== -version = "6.2.24" -date = "15/03/2002" +version = "7.4.0" +date = "22/11/2004" diff --git a/Validation/V_MCSIMP.py b/Validation/V_MCSIMP.py index c3e28c59..97353645 100644 --- a/Validation/V_MCSIMP.py +++ b/Validation/V_MCSIMP.py @@ -112,12 +112,6 @@ class MCSIMP: valid=0 # fin des validateurs # - # cas d un item Parametre - if self.valeur.__class__.__name__ == 'ITEM_PARAMETRE': - valid=self.valeur.isvalid() - if valid == 0: - if cr == 'oui' : - self.cr.fatal(string.join( repr (self.valeur), " a un indice incorrect")) self.set_valid(valid) return self.valid @@ -273,11 +267,7 @@ class MCSIMP: return 0 elif type(valeur) not in (types.IntType,types.FloatType,types.LongType): # ce n'est pas un réel - try : - valeur=valeur +1 - return 1 - except: - return 0 + return 0 else: return 1 @@ -331,11 +321,6 @@ class MCSIMP: # on a à faire à un PARAMETRE qui définit une liste d'items # --> on teste sur la première car on n'accepte que les liste homogènes valeur = valeur.valeur[0] - - if valeur.__class__.__name__ == 'PARAMETRE' or valeur.__class__.__name__ == 'ITEM_PARAMETRE': - # on admet que c'est OK - return 1 - if type_permis == 'R': return self.is_reel(valeur) elif type_permis == 'I': -- 2.39.2