X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=convert%2Fconvert_python.py;h=1384ee9bf25eae3a3b5edda954900b9ab136251d;hb=d006ad319d107d64b0f47657d058157dbb365ae7;hp=a5a69cb216917fe1060050ace2ee35ca1e47c737;hpb=fcd054a825fbe171652108194c0204f8e3fd955a;p=tools%2Feficas.git diff --git a/convert/convert_python.py b/convert/convert_python.py index a5a69cb2..1384ee9b 100644 --- a/convert/convert_python.py +++ b/convert/convert_python.py @@ -1,68 +1,93 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2007-2013 EDF R&D +# +# 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. +# +# 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 le plugin convertisseur de fichier au format python pour EFICAS. Un plugin convertisseur doit fournir deux attributs de classe : - extensions et formats et deux méthodes : readfile,convert. + extensions et formats et deux methodes : readfile,convert. L'attribut de classe extensions est une liste d'extensions - de fichiers préconisées pour ce type de format. Cette information + de fichiers preconisees pour ce type de format. Cette information est seulement indicative. L'attribut de classe formats est une liste de formats de sortie - supportés par le convertisseur. Les formats possibles sont : + supportes par le convertisseur. Les formats possibles sont : eval, dict ou exec. - Le format eval est un texte source Python qui peut etre evalué. Le - résultat de l'évaluation est un objet Python quelconque. + Le format eval est un texte source Python qui peut etre evalue. Le + resultat de l'evaluation est un objet Python quelconque. Le format dict est un dictionnaire Python. - Le format exec est un texte source Python qui peut etre executé. + Le format exec est un texte source Python qui peut etre execute. - La méthode readfile a pour fonction de lire un fichier dont le - nom est passé en argument de la fonction. - convertisseur.readfile(nom_fichier) + La methode readfile a pour fonction de lire un fichier dont le + nom est passe en argument de la fonction. + - convertisseur.readfile(nom_fichier) - La méthode convert a pour fonction de convertir le fichier - préalablement lu dans un objet du format passé en argument. - objet=convertisseur.convert(outformat) + La methode convert a pour fonction de convertir le fichier + prealablement lu dans un objet du format passe en argument. + - objet=convertisseur.convert(outformat) Ce convertisseur supporte le format de sortie exec """ -import sys,string,traceback - -import parseur_python +from __future__ import absolute_import +try : + from builtins import str + from builtins import object +except : + pass +import sys,traceback + +from .parseur_python import PARSEUR_PYTHON from Noyau import N_CR +from Extensions.i18n import tr +from Extensions.eficas_exception import EficasException def entryPoint(): """ - Retourne les informations nécessaires pour le chargeur de plugins - Ces informations sont retournées dans un dictionnaire + Retourne les informations necessaires pour le chargeur de plugins + Ces informations sont retournees dans un dictionnaire """ return { # Le nom du plugin 'name' : 'python', - # La factory pour créer une instance du plugin + # La factory pour creer une instance du plugin 'factory' : PythonParser, } -class PythonParser: +class PythonParser(object): """ Ce convertisseur lit un fichier au format python avec la methode readfile : convertisseur.readfile(nom_fichier) et retourne le texte au format outformat avec la methode convertisseur.convert(outformat) - Ses caractéristiques principales sont exposées dans 2 attributs + Ses caracteristiques principales sont exposees dans 2 attributs de classe : - - - extensions : qui donne une liste d'extensions de fichier préconisées - - - formats : qui donne une liste de formats de sortie supportés + - extensions : qui donne une liste d'extensions de fichier preconisees + - formats : qui donne une liste de formats de sortie supportes """ - # Les extensions de fichier préconisées + # Les extensions de fichier preconisees extensions=('.py',) - # Les formats de sortie supportés (eval dict ou exec) + # Les formats de sortie supportes (eval dict ou exec) # Le format exec est du python executable (commande exec) converti avec PARSEUR_PYTHON # Le format execnoparseur est du python executable (commande exec) non converti formats=('exec','execnoparseur') @@ -82,26 +107,24 @@ class PythonParser: try: self.text=open(filename).read() except: - self.cr.fatal("Impossible ouvrir fichier %s" % filename) + self.cr.exception(tr("Impossible d'ouvrir le fichier %s" ,str(filename))) + self.cr.fatal(tr("Impossible d'ouvrir le fichier %s" ,str(filename))) return - - def convert(self,outformat): + + def convert(self,outformat,appli=None): if outformat == 'exec': try: - return parseur_python.PARSEUR_PYTHON(self.text).get_texte() - except: + return PARSEUR_PYTHON(self.text).get_texte(appli) + except EficasException: # Erreur lors de la conversion l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1], sys.exc_info()[2]) - self.cr.exception("Impossible de convertir le fichier python \ - qui doit contenir des erreurs.\n \ - On retourne le fichier non converti \n \ - Prévenir la maintenance. \n" + string.join(l)) - # On retourne néanmoins le source initial non converti (au cas où) + self.cr.exception(tr("Impossible de convertir le fichier Python qui doit contenir des erreurs.\n\ + On retourne le fichier non converti. Prevenir la maintenance.\n\n %s", ''.join(l))) + # On retourne neanmoins le source initial non converti (au cas ou) return self.text elif outformat == 'execnoparseur': return self.text else: - raise "Format de sortie : %s, non supporté" + raise EficasException(tr("Format de sortie : %s, non supporte", outformat)) return None -