From: Jean-Philippe ARGAUD Date: Mon, 5 Jun 2017 19:46:19 +0000 (+0200) Subject: Python 3 compatibility improvement (Salome/Adao) X-Git-Tag: V8_4_0~15 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=b2afd4ac886c8b14f3239dc7a1f84f91892a6ba6;p=modules%2Fadao.git Python 3 compatibility improvement (Salome/Adao) --- diff --git a/bin/AdaoCatalogGenerator.py b/bin/AdaoCatalogGenerator.py index cfa54e2..923be68 100644 --- a/bin/AdaoCatalogGenerator.py +++ b/bin/AdaoCatalogGenerator.py @@ -1,4 +1,4 @@ -#-*-coding:iso-8859-1-*- +# -*- coding: utf-8 -*- # # Copyright (C) 2008-2017 EDF R&D # @@ -25,15 +25,18 @@ import logging import traceback import sys -import string -import StringIO +import io +import os import module_version logging.basicConfig(level=logging.WARNING) +if sys.version_info.major > 2: + def unicode(text, encoding='utf-8'): return text + #----------- Templates Part ---------------# -begin_catalog_file = """#-*-coding:iso-8859-1-*- +begin_catalog_file = """# -*- coding: utf-8 -*- # # Copyright (C) 2008-2017 EDF R&D # @@ -58,7 +61,7 @@ begin_catalog_file = """#-*-coding:iso-8859-1-*- # Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D # -------------------------------------------------------- -# Generated by AdaoCatalogGenerator on ${date} +# Generated by AdaoCatalogGenerator on {date} # -------------------------------------------------------- import os, re @@ -74,7 +77,7 @@ VERSION_CATALOGUE='%s' def NoCheckInNS(filename): return 1 -NoCheckInNS.info = "" +NoCheckInNS.info = u"" def DirectOperatorInNS(filename): if os.path.exists(filename): fc = open(filename, 'r').readlines() @@ -110,27 +113,27 @@ def AdjointOperatorInNS(filename): AdjointOperatorInNS.info = u"The Python file has to contain explicitly an \\"AdjointOperator\\" function definition with only one pair of vectors as argument." """%(module_version.name,module_version.version) -# Important : validators=[...] pour que les conditions soient traitées simultanément, en "ET", et pas en "OU" (choisi dans le cas du tuple à la place de la liste) +# Important : validators=[...] pour que les conditions soient traitees simultanement, en "ET", et pas en "OU" (choisi dans le cas du tuple a la place de la liste) # validators=[OnlyStr(), FileExtVal('py'), FunctionVal(fv)] data_method = """ -def F_${data_name}(statut, fv=NoCheckInNS) : return FACT( +def F_{data_name}(statut, fv=NoCheckInNS) : return FACT( statut = statut, - FROM = SIMP(statut = "o", typ = "TXM", into=(${data_into}), defaut=${data_default}), + FROM = SIMP(statut = "o", typ = "TXM", into=({data_into}), defaut={data_default}), SCRIPT_DATA = BLOC ( condition = " FROM in ( 'Script', ) ", - SCRIPT_FILE = SIMP(statut = "o", typ = "FichierNoAbs", validators=[OnlyStr(), FileExtVal('py'), FunctionVal(fv)], fr="En attente d'un nom de fichier script, avec ou sans le chemin complet pour le trouver, contenant si nécessaire la définition d'une variable interne de même nom que le concept parent", ang="Waiting for a script file name, with or without the full path to find it, containing if necessary the definition of an internal variable of the same name as the parent concept"), + SCRIPT_FILE = SIMP(statut = "o", typ = "FichierNoAbs", validators=[OnlyStr(), FileExtVal('py'), FunctionVal(fv)], fr="En attente d'un nom de fichier script, avec ou sans le chemin complet pour le trouver, contenant si nécessaire la définition d'une variable interne de même nom que le concept parent", ang="Waiting for a script file name, with or without the full path to find it, containing if necessary the definition of an internal variable of the same name as the parent concept"), ), STRING_DATA = BLOC ( condition = " FROM in ( 'String', ) ", - STRING = SIMP(statut = "o", typ = "TXM",${ms_default} fr="En attente d'une chaine de caractères entre guillements. Pour construire un vecteur ou une matrice, ce doit être une suite de nombres, utilisant un espace ou une virgule pour séparer deux éléments et un point-virgule pour séparer deux lignes", ang="Waiting for a string in quotes. To build a vector or a matrix, it has to be a float serie, using a space or comma to separate two elements in a line, a semi-colon to separate rows"), + STRING = SIMP(statut = "o", typ = "TXM",{ms_default} fr="En attente d'une chaine de caractères entre guillements. Pour construire un vecteur ou une matrice, ce doit être une suite de nombres, utilisant un espace ou une virgule pour séparer deux éléments et un point-virgule pour séparer deux lignes", ang="Waiting for a string in quotes. To build a vector or a matrix, it has to be a float serie, using a space or comma to separate two elements in a line, a semi-colon to separate rows"), ), SCRIPTWITHFUNCTIONS_DATA = BLOC ( condition = " FROM in ( 'ScriptWithFunctions', ) ", - SCRIPTWITHFUNCTIONS_FILE = SIMP(statut = "o", typ = "FichierNoAbs", validators=[OnlyStr(), FileExtVal('py'), FunctionVal(DirectOperatorInNS), FunctionVal(TangentOperatorInNS), FunctionVal(AdjointOperatorInNS)], fr="En attente d'un nom de fichier script, avec ou sans le chemin complet pour le trouver, contenant en variables internes trois fonctions de calcul nommées DirectOperator, TangentOperator et AdjointOperator", ang="Waiting for a script file name, with or without the full path to find it, containing as internal variables three computation functions named DirectOperator, TangentOperator and AdjointOperator"), + SCRIPTWITHFUNCTIONS_FILE = SIMP(statut = "o", typ = "FichierNoAbs", validators=[OnlyStr(), FileExtVal('py'), FunctionVal(DirectOperatorInNS), FunctionVal(TangentOperatorInNS), FunctionVal(AdjointOperatorInNS)], fr="En attente d'un nom de fichier script, avec ou sans le chemin complet pour le trouver, contenant en variables internes trois fonctions de calcul nommées DirectOperator, TangentOperator et AdjointOperator", ang="Waiting for a script file name, with or without the full path to find it, containing as internal variables three computation functions named DirectOperator, TangentOperator and AdjointOperator"), ), SCRIPTWITHONEFUNCTION_DATA = BLOC ( condition = " FROM in ( 'ScriptWithOneFunction', ) ", - SCRIPTWITHONEFUNCTION_FILE = SIMP(statut = "o", typ = "FichierNoAbs", validators=[OnlyStr(), FileExtVal('py'), FunctionVal(DirectOperatorInNS)], fr="En attente d'un nom de fichier script, avec ou sans le chemin complet pour le trouver, contenant en variable interne une seule fonction de calcul nommée DirectOperator", ang="Waiting for a script file name, with or without the full path to find it, containing as internal variable only one function named DirectOperator"), - DifferentialIncrement = SIMP(statut="o", typ = "R", val_min=0, val_max=1, defaut=0.01, fr="Incrément de la perturbation dX pour calculer la dérivée, construite en multipliant X par l'incrément en évitant les valeurs nulles", ang="Increment of dX perturbation to calculate the derivative, build multiplying X by the increment avoiding null values"), - CenteredFiniteDifference = SIMP(statut="o", typ = "I", into=(0, 1), defaut=0, fr="Formulation centrée (1) ou décentrée (0) pour la méthode des différences finies", ang="Centered (1) or uncentered (0) formulation for the finite differences method"), - EnableMultiProcessing = SIMP(statut="f", typ = "I", into=(0, 1), defaut=0, fr="Calculs élémentaires effectués en séquentiel (0) ou en parallèle (1) dans la méthode des différences finies", ang="Elementary calculations done sequentially (0) or in parallel (1) in the finite differences method"), - NumberOfProcesses = SIMP(statut="f", typ = "I", val_min=0, defaut=0, fr="Nombre de processus parallèles, 0 pour un contrôle automatique", ang="Number of parallel processes, 0 for automatic control"), + SCRIPTWITHONEFUNCTION_FILE = SIMP(statut = "o", typ = "FichierNoAbs", validators=[OnlyStr(), FileExtVal('py'), FunctionVal(DirectOperatorInNS)], fr="En attente d'un nom de fichier script, avec ou sans le chemin complet pour le trouver, contenant en variable interne une seule fonction de calcul nommée DirectOperator", ang="Waiting for a script file name, with or without the full path to find it, containing as internal variable only one function named DirectOperator"), + DifferentialIncrement = SIMP(statut="o", typ = "R", val_min=0, val_max=1, defaut=0.01, fr="Incrément de la perturbation dX pour calculer la dérivée, construite en multipliant X par l'incrément en évitant les valeurs nulles", ang="Increment of dX perturbation to calculate the derivative, build multiplying X by the increment avoiding null values"), + CenteredFiniteDifference = SIMP(statut="o", typ = "I", into=(0, 1), defaut=0, fr="Formulation centrée (1) ou décentrée (0) pour la méthode des différences finies", ang="Centered (1) or uncentered (0) formulation for the finite differences method"), + EnableMultiProcessing = SIMP(statut="f", typ = "I", into=(0, 1), defaut=0, fr="Calculs élémentaires effectués en séquentiel (0) ou en parallèle (1) dans la méthode des différences finies", ang="Elementary calculations done sequentially (0) or in parallel (1) in the finite differences method"), + NumberOfProcesses = SIMP(statut="f", typ = "I", val_min=0, defaut=0, fr="Nombre de processus parallèles, 0 pour un contrôle automatique", ang="Number of parallel processes, 0 for automatic control"), ), SCRIPTWITHSWITCH_DATA = BLOC ( condition = " FROM in ( 'ScriptWithSwitch', ) ", SCRIPTWITHSWITCH_FILE = SIMP(statut = "o", typ = "FichierNoAbs", validators=[OnlyStr(), FileExtVal('py')], fr="En attente d'un nom de fichier script, avec ou sans le chemin complet pour le trouver, contenant un switch pour les calculs direct, tangent et adjoint", ang="Waiting for a script file name, with or without the full path to find it, containing a switch for direct, tangent and adjoint computations"), @@ -169,31 +172,31 @@ def F_Init(statut) : return FACT(statut = statut, """ assim_data_method = """ -def ${assim_name}InNS(filename): +def {assim_name}InNS(filename): if os.path.exists(filename): fc = open(filename, 'r').readlines() - cr = re.compile("^${assim_name}[\s]*=") + cr = re.compile("^{assim_name}[\s]*=") for ln in fc: if cr.match(ln): return 1 return 0 -${assim_name}InNS.info = u"The Python file has to contain explicitly a \\"${assim_name}\\" variable." -def F_${assim_name}(statut, fv=NoCheckInNS) : return FACT( +{assim_name}InNS.info = u"The Python file has to contain explicitly a \\"{assim_name}\\" variable." +def F_{assim_name}(statut, fv=NoCheckInNS) : return FACT( statut=statut, -${storage} - INPUT_TYPE = SIMP(statut="o", typ = "TXM", into=(${choices}), defaut=${default_choice}),${decl_choices} +{storage} + INPUT_TYPE = SIMP(statut="o", typ = "TXM", into=({choices}), defaut={default_choice}),{decl_choices} ) """ assim_data_choice = """ - ${choice_name} = BLOC ( condition = " INPUT_TYPE in ( '${choice_name}', ) ", - data = F_${choice_name}("o", fv), + {choice_name} = BLOC ( condition = " INPUT_TYPE in ( '{choice_name}', ) ", + data = F_{choice_name}("o", fv), ),""" observers_choice = """ - ${var_name} = BLOC (condition=" '${var_name}' in set(SELECTION) ", - ${var_name}_data = FACT(statut = "o", + {var_name} = BLOC (condition=" '{var_name}' in set(SELECTION) ", + {var_name}_data = FACT(statut = "o", Scheduler = SIMP(statut = "f", typ = "TXM"), - Info = SIMP(statut = "o", typ = "TXM", defaut = "${var_name}"), + Info = SIMP(statut = "o", typ = "TXM", defaut = "{var_name}"), NodeType = SIMP(statut = "o", typ = "TXM", min=1, max=1, defaut = "Template", into=("String", "Script", "Template")), PythonScript = BLOC (condition = " NodeType == 'String' ", Value = SIMP(statut = "o", typ = "TXM") @@ -224,7 +227,7 @@ def F_ObserverTemplate() : return BLOC(condition = " NodeType == 'Template' ", def F_Observers(statut) : return FACT( statut=statut, - SELECTION = SIMP(statut="o", defaut=[], typ="TXM", min=0, max="**", homo="SansOrdreNiDoublon", validators=NoRepeat(), into=(${choices})),${decl_choices} + SELECTION = SIMP(statut="o", defaut=[], typ="TXM", min=0, max="**", homo="SansOrdreNiDoublon", validators=NoRepeat(), into=({choices})),{decl_choices} ) """%(observers_list,observers_cont) @@ -244,13 +247,13 @@ def F_AlgorithmParameters(statut, algos_names, fv=NoCheckInNS) : return FACT( Dict = BLOC ( condition = " Parameters == 'Dict' ", statut="f", data = F_Dict("o", fv), - ),${all_algo_defaults} + ),{all_algo_defaults} ) """ one_algo_choices = """ - Parameters${algo_name} = BLOC (condition = " (Parameters == 'Defaults') and (Algorithm == '${algo_name}') ", + Parameters{algo_name} = BLOC (condition = " (Parameters == 'Defaults') and (Algorithm == '{algo_name}') ", statut="f", -${algo_parameters} ),""" +{algo_parameters} ),""" assim_study = """ def F_variables(statut) : return FACT( @@ -270,7 +273,7 @@ ASSIMILATION_STUDY = PROC(nom="ASSIMILATION_STUDY", StudyName = SIMP(statut="o", typ = "TXM", defaut="ADAO Calculation Case"), StudyRepertory = SIMP(statut="f", typ = "Repertoire", validators=FunctionVal(ChDir), min=1, max=1), Debug = SIMP(statut="f", typ = "I", into=(0, 1), defaut=0), - AlgorithmParameters = F_AlgorithmParameters("o",(${algos_names}), AlgorithmParametersInNS), + AlgorithmParameters = F_AlgorithmParameters("o",({algos_names}), AlgorithmParametersInNS), Background = F_Background("o", BackgroundInNS), BackgroundError = F_BackgroundError("o", BackgroundErrorInNS), Observation = F_Observation("o", ObservationInNS), @@ -292,7 +295,7 @@ CHECKING_STUDY = PROC(nom="CHECKING_STUDY", StudyName = SIMP(statut="o", typ = "TXM", defaut="ADAO Checking Case"), StudyRepertory = SIMP(statut="f", typ = "Repertoire", validators=FunctionVal(ChDir), min=1, max=1), Debug = SIMP(statut="f", typ = "I", into=(0, 1), defaut=0), - AlgorithmParameters = F_AlgorithmParameters("o", (${check_names}), AlgorithmParametersInNS), + AlgorithmParameters = F_AlgorithmParameters("o", ({check_names}), AlgorithmParametersInNS), CheckingPoint = F_CheckingPoint("o", CheckingPointInNS), BackgroundError = F_BackgroundError("f", BackgroundErrorInNS), Observation = F_Observation("f", ObservationInNS), @@ -303,22 +306,12 @@ CHECKING_STUDY = PROC(nom="CHECKING_STUDY", ) """ -begin_catalog_file = string.Template(begin_catalog_file) -data_method = string.Template(data_method) -assim_data_method = string.Template(assim_data_method) -assim_data_choice = string.Template(assim_data_choice) -assim_study = string.Template(assim_study) -observers_method = string.Template(observers_method) -observers_choice = string.Template(observers_choice) -algo_choices = string.Template(algo_choices) -one_algo_choices = string.Template(one_algo_choices) - #----------- End of Templates Part ---------------# #----------- Begin generation script -----------# -print "-- Starting AdaoCalatogGenerator.py --" +print("-- Starting AdaoCalatogGenerator.py --") try: import daEficas @@ -331,29 +324,22 @@ except: traceback.print_exc() sys.exit(1) -def check_args(args): - logging.debug("Arguments are :" + str(args)) - if len(args) != 2: - logging.fatal("Bad number of arguments: you have to provide two arguments (%d given)" % (len(args))) - sys.exit(1) - # Parse arguments -from optparse import OptionParser -usage = "usage: %prog [options] catalog_path catalog_name" -version="%prog 0.1" -my_parser = OptionParser(usage=usage, version=version) -(options, args) = my_parser.parse_args() -check_args(args) - -catalog_path = args[0] -catalog_name = args[1] +from argparse import ArgumentParser +usage = "usage: %(prog)s [options] catalog_path catalog_name" +version="%(prog)s 0.1" +my_parser = ArgumentParser(usage=usage) +my_parser.add_argument('-v', '--version', action='version', version=version) +my_parser.add_argument('catalog_path') +my_parser.add_argument('catalog_name') +args = my_parser.parse_args() # Generates into a string -mem_file = StringIO.StringIO() +mem_file = io.StringIO() # Start file from time import strftime -mem_file.write(begin_catalog_file.substitute(date=strftime("%Y-%m-%d %H:%M:%S"))) +mem_file.write(unicode(begin_catalog_file, 'utf-8').format(**{'date':strftime("%Y-%m-%d %H:%M:%S")})) # Step initial: on obtient la liste des algos algos_names = "" @@ -374,7 +360,7 @@ for algo_name in algos_list: # Step 1: A partir des infos, on cree les fonctions qui vont permettre # d'entrer les donnees utilisateur -for data_input_name in infos.DataTypeDict.keys(): +for data_input_name in infos.DataTypeDict: logging.debug('A data input Type is found: ' + data_input_name) data_name = data_input_name data_into = "" @@ -387,19 +373,21 @@ for data_input_name in infos.DataTypeDict.keys(): # On choisit le default data_default = "\"" + infos.DataTypeDefaultDict[data_input_name] + "\"" - if infos.DataSValueDefaultDict.has_key(data_input_name): + if data_input_name in infos.DataSValueDefaultDict: ms_default = " defaut=\"" + infos.DataSValueDefaultDict[data_input_name] + "\"," - mem_file.write(data_method.substitute(data_name = data_name, - data_into = data_into, - data_default = data_default, - ms_default = ms_default, - algos_names = algos_names+check_names)) + mem_file.write(unicode(data_method, 'utf-8').format(**{ + 'data_name' : data_name, + 'data_into' : data_into, + 'data_default' : data_default, + 'ms_default' : ms_default, + 'algos_names' : algos_names+check_names, + })) # Step 2: On cree les fonctions qui permettent de rentrer les donnees des algorithmes -for assim_data_input_name in infos.AssimDataDict.keys(): +for assim_data_input_name in infos.AssimDataDict: logging.debug("An input function data input is found: " + assim_data_input_name) - # assim_name = assim_data_input_name + # assim_name = assim_data_input_name storage = "" choices = "" default_choice = "" @@ -409,19 +397,21 @@ for assim_data_input_name in infos.AssimDataDict.keys(): storage = " Stored = SIMP(statut=\"f\", typ = \"I\", into=(0, 1), defaut=0, fr=\"Choix de stockage interne ou non du concept parent\", ang=\"Choice of the storage or not of the parent concept\")," for choice in infos.AssimDataDict[assim_data_input_name]: choices += "\"" + choice + "\", " - decl_choices += assim_data_choice.substitute(choice_name = choice) + decl_choices += assim_data_choice.format(**{'choice_name' : choice}) if choice in infos.StoredAssimData: storage = " Stored = SIMP(statut=\"f\", typ = \"I\", into=(0, 1), defaut=0, fr=\"Choix de stockage interne ou non du concept parent\", ang=\"Choice of the storage or not of the parent concept\")," default_choice = "\"" + infos.AssimDataDefaultDict[assim_data_input_name] + "\"" - mem_file.write(assim_data_method.substitute(assim_name = assim_data_input_name, - storage = storage, - choices = choices, - decl_choices = decl_choices, - default_choice = default_choice)) + mem_file.write(unicode(assim_data_method, 'utf-8').format(**{ + 'assim_name' : assim_data_input_name, + 'storage' : storage, + 'choices' : choices, + 'decl_choices' : decl_choices, + 'default_choice' : default_choice, + })) # Step 3: On ajoute les fonctions representant les options possibles -for opt_name in infos.OptDict.keys(): +for opt_name in infos.OptDict: logging.debug("An optional node is found: " + opt_name) data_name = opt_name data_into = "" @@ -433,25 +423,29 @@ for opt_name in infos.OptDict.keys(): # On choisit le default data_default = "\"" + infos.OptDefaultDict[opt_name] + "\"" - if infos.DataSValueDefaultDict.has_key(opt_name): + if opt_name in infos.DataSValueDefaultDict: ms_default = " defaut=\"" + infos.DataSValueDefaultDict[opt_name] + "\"," - mem_file.write(data_method.substitute(data_name = data_name, - data_into = data_into, - data_default = data_default, - ms_default = ms_default, - algos_names = algos_names+check_names)) + mem_file.write(unicode(data_method, 'utf-8').format(**{ + 'data_name' : data_name, + 'data_into' : data_into, + 'data_default' : data_default, + 'ms_default' : ms_default, + 'algos_names' : algos_names+check_names, + })) # Step 4: On ajoute la methode optionnelle init # TODO uniformiser avec le step 3 -mem_file.write(init_method) +mem_file.write(unicode(init_method, 'utf-8')) # Step 5: Add observers decl_choices = "" for obs_var in infos.ObserversList: - decl_choices += observers_choice.substitute(var_name=obs_var) -mem_file.write(observers_method.substitute(choices = infos.ObserversList, - decl_choices = decl_choices)) + decl_choices += observers_choice.format(**{'var_name':obs_var}) +mem_file.write(unicode(observers_method, 'utf-8').format(**{ + 'choices' : infos.ObserversList, + 'decl_choices' : decl_choices, + })) # Step 5: Add algorithmic choices @@ -459,21 +453,20 @@ all_names = eval((algos_names+check_names)) all_algo_defaults = "" for algo in all_names: assim_study_object = daCore.AssimilationStudy.AssimilationStudy() - assim_study_object.setAlgorithm(choice=algo) - par_dict = assim_study_object.getAlgorithmParameters(False) - par_keys = par_dict.keys() - par_keys.sort() + assim_study_object.setAlgorithmParameters(Algorithm=algo) + par_dict = assim_study_object.get("AlgorithmRequiredParameters",False) + par_keys = sorted(par_dict.keys()) algo_parameters = "" for pn in par_keys: if pn in ("StoreInternalVariables", "PlotAndSave", "ResultFile", "ResultTitle", "ResultLabel"): continue # Cles a supprimer - pt = par_dict[pn]["typecast"] + pt = par_dict[pn]["typecast"] # Pointeur de type pd = par_dict[pn]["default"] pm = par_dict[pn]["message"] - if par_dict[pn].has_key("minval") and par_dict[pn]["minval"] is not None: + if "minval" in par_dict[pn] and par_dict[pn]["minval"] is not None: vi = ", val_min=%s"%par_dict[pn]["minval"] else: vi = "" - if par_dict[pn].has_key("minval") and par_dict[pn]["maxval"] is not None: + if "minval" in par_dict[pn] and par_dict[pn]["maxval"] is not None: vs = ", val_max=%s"%par_dict[pn]["maxval"] else: vs = "" @@ -483,28 +476,32 @@ for algo in all_names: algo_parameters += """ %s = SIMP(statut="f", typ="R"%s%s, min=1, max=1, defaut=%s, fr="%s"),\n"""%(pn,vi,vs,float(pd),pm) elif pt is bool: algo_parameters += """ %s = SIMP(statut="f", typ="I", min=1, max=1, defaut=%s, fr="%s"),\n"""%(pn,int(pd),pm) - elif pt is str and par_dict[pn].has_key("listval"): - algo_parameters += """ %s = SIMP(statut="f", typ="TXM", min=1, max=1, defaut="%s", into=%s, fr="%s"),\n"""%(pn,str(pd),par_dict[pn]["listval"],pm) - elif pt is tuple and par_dict[pn].has_key("listval"): + elif pt is str and "listval" in par_dict[pn]: + algo_parameters += """ %s = SIMP(statut="f", typ="TXM", min=1, max=1, defaut="%s", into=%s, fr="%s"),\n"""%(pn,pd,par_dict[pn]["listval"],pm) + elif pt is tuple and "listval" in par_dict[pn]: algo_parameters += """ %s = SIMP(statut="f", typ="TXM", max="**", into=%s, fr="%s"),\n"""%(pn,par_dict[pn]["listval"],pm) else: algo_parameters += """ %s = SIMP(statut="f", typ="TXM", fr="%s"),\n"""%(pn,pm) del assim_study_object if algo_parameters != "": - all_algo_defaults += one_algo_choices.substitute( - algo_name=algo, - algo_parameters=algo_parameters, - ) - -mem_file.write(algo_choices.substitute(all_algo_defaults=all_algo_defaults)) + all_algo_defaults += one_algo_choices.format(**{ + 'algo_name':algo, + 'algo_parameters':algo_parameters, + }) +mem_file.write(unicode(algo_choices, 'utf-8').format(**{'all_algo_defaults':unicode(all_algo_defaults, 'utf-8')})) # Final step: Add algorithm and assim_study -mem_file.write(assim_study.substitute(algos_names=algos_names, - check_names=check_names, - decl_algos=decl_algos)) +mem_file.write(unicode(assim_study, 'utf-8').format(**{ + 'algos_names':algos_names, + 'check_names':check_names, + 'decl_algos':decl_algos, + })) + # Write file -final_file = open(catalog_path + "/" + catalog_name, "wr") -final_file.write(mem_file.getvalue()) +if sys.version_info.major > 2: + with open(os.path.join(args.catalog_path, args.catalog_name), "w", encoding='utf8') as final_file: + final_file.write(mem_file.getvalue()) +else: + with open(os.path.join(args.catalog_path, args.catalog_name), "wr") as final_file: + final_file.write(mem_file.getvalue().encode('utf-8')) mem_file.close() -final_file.close() - diff --git a/bin/AdaoYacsSchemaCreator.py b/bin/AdaoYacsSchemaCreator.py index d41b05e..c66e3f1 100644 --- a/bin/AdaoYacsSchemaCreator.py +++ b/bin/AdaoYacsSchemaCreator.py @@ -1,4 +1,4 @@ -#-*-coding:iso-8859-1-*- +# -*- coding: utf-8 -*- # # Copyright (C) 2008-2017 EDF R&D # @@ -20,7 +20,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -# Author: André Ribes, andre.ribes@edf.fr, EDF R&D +# Author: André Ribes, andre.ribes@edf.fr, EDF R&D import sys import os @@ -45,13 +45,12 @@ except: sys.exit(1) # Parse arguments -from optparse import OptionParser -usage = "usage: %prog [options] config_file yacs_schema_filename" -version="%prog 0.1" -my_parser = OptionParser(usage=usage, version=version) -(options, args) = my_parser.parse_args() -check_args(args) +from argparse import ArgumentParser +usage = "usage: %(prog)s [options] config_file yacs_schema_filename" +version="%(prog)s 0.1" +my_parser = ArgumentParser(usage=usage, version=version) +my_parser.add_argument('config_file') +my_parser.add_argument('yacs_schema_filename') +args = my_parser.parse_args() -config_file = args[0] -yacs_schema_filename = args[1] -create_schema(config_file, yacs_schema_filename) +create_schema(args.config_file, args.yacs_schema_filename) diff --git a/bin/module_version.py b/bin/module_version.py index f5cc3ff..bb12920 100644 --- a/bin/module_version.py +++ b/bin/module_version.py @@ -1,4 +1,4 @@ -#-*-coding:iso-8859-1-*- +# -*- coding: utf-8 -*- # # Copyright (C) 2008-2017 EDF R&D # diff --git a/resources/ADAOSchemaCatalog.xml b/resources/ADAOSchemaCatalog.xml index 4505e6a..595332d 100644 --- a/resources/ADAOSchemaCatalog.xml +++ b/resources/ADAOSchemaCatalog.xml @@ -1,4 +1,4 @@ - + @@ -60,7 +60,7 @@ @@ -243,10 +249,16 @@ logging.debug("CREATE Matrix is %s"%matrix) @@ -257,10 +269,16 @@ logging.debug("CREATE ScalarSparseMatrix is %s"%matrix) @@ -271,7 +289,7 @@ logging.debug("CREATE DiagonalSparseMatrix is %s"%matrix) @@ -357,7 +381,7 @@ logging.debug("Vector is %s"%vector) @@ -463,7 +487,7 @@ dico = eval(dict_in_string)