diff --git a/bcfg2new/Plugins/Python/PythonEnv.py b/bcfg2new/Plugins/Python/PythonEnv.py index bf2274dc..0136b046 100644 --- a/bcfg2new/Plugins/Python/PythonEnv.py +++ b/bcfg2new/Plugins/Python/PythonEnv.py @@ -35,6 +35,7 @@ class SafeEnvironment(dict): }, # Fonction de base pour imprimer quelque chose "out": self.out, + "_out": self._out, # Le séparateur pour la forme: variable keysep valeur "keysep": "=", # Le charactère de commentaire @@ -73,12 +74,14 @@ class SafeEnvironment(dict): """Quand on fait un export, on utilise defvar pour incorporer la variable et sa valeur dans le fichier produit""" # On écrit mavariable = toto, en appliquant une éventuelle conversion à toto - self.out("%s%s%s\n" % (variable, self['keysep'], self.tostring(value))) + self.out("%s%s%s" % (variable, self['keysep'], self.tostring(value))) - def out(self, string): - """C'est le print local. Sauf qu'on écrit dans self.stream. C'est pas - indispensable, car l'évaluation du fichier se fait déjà à sys.stdout - pointant vers ledit stream.""" + def out(self, string=""): + """C'est le print local. Sauf qu'on écrit dans self.stream""" + self._out("%s\n" % (string,)) + + def _out(self, string=""): + """C'est le print local sans retour à la ligne.""" self.stream.write(string) def tostring(self, value): diff --git a/bcfg2new/Plugins/Python/PythonFile.py b/bcfg2new/Plugins/Python/PythonFile.py index 68da571e..b18fd354 100644 --- a/bcfg2new/Plugins/Python/PythonFile.py +++ b/bcfg2new/Plugins/Python/PythonFile.py @@ -122,13 +122,6 @@ class PythonFile(Debuggable): if environment is None: environment = PythonEnv.SafeEnvironment(additionnal, self) - # On ne réaffecte stdout que sur le premier élément de la pile - have_to_get_out = False - - if sys.stdout == sys.__stdout__: - sys.stdout = environment.stream - have_to_get_out = True - # Lors de l'exécution d'un fichier, on inclut # toujours common (ie on l'exécute dans l'environnement) environment.include("common") @@ -137,12 +130,8 @@ class PythonFile(Debuggable): exec(self.data, environment) except Exception: sys.stderr.write('code: %r\n' % (self.data,)) - sys.stdout = sys.__stdout__ raise - if sys.stdout != sys.__stdout__ and have_to_get_out: - sys.stdout = sys.__stdout__ - have_to_get_out = False return environment.stream.getvalue(), environment['info'] #+---------------------------------------------+ @@ -192,7 +181,7 @@ def compileSource(source, filename="", logger=None): newsource.write(line) # Et un superbe \n. - newsource.write('\\n")') + newsource.write('")') # %, affectation. elif linetype == "%":