X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=Noyau%2FN_PROC_ETAPE.py;h=fde2ac79b15275988a42a5c188fe49ddd49f6c1a;hb=e4f9ed44499c18435beb762c4deb1df9f1c8343a;hp=ded57551c462cf1a5d88e48156b94294737f3455;hpb=f1ca95b49f76bed371d3bc90fc94bd12a6f17523;p=tools%2Feficas.git diff --git a/Noyau/N_PROC_ETAPE.py b/Noyau/N_PROC_ETAPE.py index ded57551..fde2ac79 100644 --- a/Noyau/N_PROC_ETAPE.py +++ b/Noyau/N_PROC_ETAPE.py @@ -1,143 +1,113 @@ -#@ MODIF N_PROC_ETAPE Noyau DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS -# -*- coding: iso-8859-1 -*- -# CONFIGURATION MANAGEMENT OF EDF VERSION -# ====================================================================== -# COPYRIGHT (C) 1991 - 2002 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. +# coding=utf-8 +# Copyright (C) 2007-2021 EDF R&D # -# 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. +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. # -# 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 library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -""" - Ce module contient la classe PROC_ETAPE qui sert à vérifier et à exécuter - une procédure +""" + Ce module contient la classe PROC_ETAPE qui sert à vérifier et à exécuter + une procédure """ # Modules Python -import types,sys,string +from __future__ import absolute_import +import types +import sys import traceback # Modules EFICAS -import N_MCCOMPO, N_ETAPE -from N_Exception import AsException -import N_utils - -class PROC_ETAPE(N_ETAPE.ETAPE): - """ - Cette classe hérite de ETAPE. La seule différence porte sur le fait - qu'une procédure n'a pas de concept produit - - """ - nature = "PROCEDURE" - def __init__(self,oper=None,args={}): - """ - Attributs : - - - definition : objet portant les attributs de définition d'une étape de type opérateur. Il - est initialisé par l'argument oper. - - - valeur : arguments d'entrée de type mot-clé=valeur. Initialisé avec l'argument args. - - """ - self.definition=oper - self.valeur=args - self.nettoiargs() - self.parent=CONTEXT.get_current_step() - self.etape = self - self.nom=oper.nom - self.idracine=oper.label - self.appel=N_utils.callee_where() - self.mc_globaux={} - self.sd=None - self.actif=1 - self.make_register() - - def make_register(self): - """ - Initialise les attributs jdc, id, niveau et réalise les enregistrements - nécessaires - """ - if self.parent : - self.jdc = self.parent.get_jdc_root() - self.id=self.parent.register(self) - self.niveau=None - else: - self.jdc = self.parent =None - self.id=None - self.niveau=None - - def McBuild(self): - """ - Demande la construction des sous-objets et les stocke dans l'attribut - mc_liste. - """ - self.mc_liste=self.build_mc() - - def Build_sd(self): - """ - Cette methode applique la fonction op_init au contexte du parent - et lance l'exécution en cas de traitement commande par commande - Elle doit retourner le concept produit qui pour une PROC est toujours None - En cas d'erreur, elle leve une exception : AsException ou EOFError - """ - if not self.isactif():return - try: - if self.parent: - if type(self.definition.op_init) == types.FunctionType: - apply(self.definition.op_init,(self,self.parent.g_context)) - else: - pass - except AsException,e: - raise AsException("Etape ",self.nom,'ligne : ',self.appel[0], - 'fichier : ',self.appel[1],e) - except EOFError: - raise - except : - l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2]) - raise AsException("Etape ",self.nom,'ligne : ',self.appel[0], - 'fichier : ',self.appel[1]+'\n', - string.join(l)) - - self.Execute() - return None - - def supprime(self): - """ - Méthode qui supprime toutes les références arrières afin que l'objet puisse - etre correctement détruit par le garbage collector - """ - N_MCCOMPO.MCCOMPO.supprime(self) - self.jdc=None - self.appel=None - - def accept(self,visitor): - """ - Cette methode permet de parcourir l'arborescence des objets - en utilisant le pattern VISITEUR - """ - visitor.visitPROC_ETAPE(self) - - def update_context(self,d): - """ - Met à jour le contexte de l'appelant passé en argument (d) - Une PROC_ETAPE n ajoute pas directement de concept dans le contexte - Seule une fonction enregistree dans op_init pourrait le faire - """ - if type(self.definition.op_init) == types.FunctionType: - apply(self.definition.op_init,(self,d)) +from . import N_MCCOMPO +from . import N_ETAPE +from .N_Exception import AsException +from . import N_utils +class PROC_ETAPE(N_ETAPE.ETAPE): + """ + Cette classe hérite de ETAPE. La seule différence porte sur le fait + qu'une procédure n'a pas de concept produit + + """ + nature = "PROCEDURE" + + def __init__(self, oper=None, reuse=None, args={}): + """ + Attributs : + - definition : objet portant les attributs de définition d'une étape de type opérateur. Il + est initialisé par l'argument oper. + - valeur : arguments d'entrée de type mot-clé=valeur. Initialisé avec l'argument args. + - reuse : forcément None pour une PROC + """ + N_ETAPE.ETAPE.__init__(self, oper, reuse=None, args=args, niveau=5) + self.reuse = None + + def buildSd(self): + """ + Cette methode applique la fonction op_init au contexte du parent + et lance l'exécution en cas de traitement commande par commande + Elle doit retourner le concept produit qui pour une PROC est toujours None + En cas d'erreur, elle leve une exception : AsException ou EOFError + """ + if not self.isActif(): + return + try: + if self.parent: + if type(self.definition.op_init) == types.FunctionType: + self.definition.op_init(*( + self, self.parent.g_context)) + else: + pass + except AsException as e: + raise AsException("Etape ", self.nom, 'ligne : ', self.appel[0], + 'fichier : ', self.appel[1], e) + except EOFError: + raise + except: + l = traceback.format_exception( + sys.exc_info()[0], sys.exc_info()[1], sys.exc_info()[2]) + raise AsException("Etape ", self.nom, 'ligne : ', self.appel[0], + 'fichier : ', self.appel[1] + '\n', + ''.join(l)) + + self.Execute() + return None + + def supprime(self): + """ + Méthode qui supprime toutes les références arrières afin que l'objet puisse + etre correctement détruit par le garbage collector + """ + N_MCCOMPO.MCCOMPO.supprime(self) + self.jdc = None + self.appel = None + + def accept(self, visitor): + """ + Cette methode permet de parcourir l'arborescence des objets + en utilisant le pattern VISITEUR + """ + visitor.visitPROC_ETAPE(self) + + def updateContext(self, d): + """ + Met à jour le contexte de l'appelant passé en argument (d) + Une PROC_ETAPE n ajoute pas directement de concept dans le contexte + Seule une fonction enregistree dans op_init pourrait le faire + """ + if type(self.definition.op_init) == types.FunctionType: + self.definition.op_init(*(self, d))