"bug" dans system.py

Les propositions de correctifs ou d'exercices pour Pyromaths.

Modérateur: Développeurs

"bug" dans system.py

Messagede jbreizh » Sam 30 Mar 2013, 12:42

hello,
juste d'un retour d'un bug bien velu (surtout à détecter) mais gentil dans la fonction nettoyage de system.py. Voici le code actuel:
def nettoyage(basefilename):
"""Supprime les fichiers temporaires créés par LaTeX"""
try:
for ext in ('.aux', '.dvi', '.out', '.ps'):
os.remove(basefilename+ext)
if os.path.getsize('%s.pdf' % basefilename) > 1000 :
os.remove('%s.log' % basefilename)
os.remove('%s-pyromaths.log' % basefilename)
except OSError:
pass
#le fichier à supprimer n'existe pas et on s'en moque.

Si jamais, il y a une suppression qui echoue le nettoyage s'arrete. Par exemple, il n'y a pas de .dvi, du coup le nettoyage s'arrete et l'eventuel .out et .ps reste. Du coup, une correction simple est (plus d'autre fichier temporaire possible):
## Supprime les fichiers temporaires créés par LaTeX
def nettoyage(basefilename):
"""Supprime les fichiers temporaires créés par LaTeX"""
for ext in ('.aux', '.dvi', '.out', '.ps','.nav','.snm','.toc'):
try:
os.remove(basefilename+ext)
if os.path.getsize('%s.pdf' % basefilename) > 1000 :
os.remove('%s.log' % basefilename)
os.remove('%s-actimaths.log' % basefilename)
except OSError:
pass
#le fichier à supprimer n'existe pas et on s'en moque.

Autre chose, je ne comprends pas l'intérêt de différencier ce cas
if os.path.getsize('%s.pdf' % basefilename) > 1000 :
. Une explication?
Bonne journée
JB
jbreizh
 
Messages: 51
Inscription: Ven 14 Déc 2012, 23:46

Re: "bug" dans system.py

Messagede Jérôme » Sam 30 Mar 2013, 14:30

Bonjour,
merci pour ce retour. En effet, la modification semble plus appropriée. Cela dit, il ne devrait jamais ne pas y avoir de dvi, car la procédure est tex -> dvi -> ps -> pdf.

Concernant la dernière question, il est arrivé plusieurs fois que des pdf vierges soient créés. Dans ce cas, leur taille est petite (disons inférieure à 1000 octets) et j'ai besoin de conserver le fichier log afin de comprendre ce qui s'est passé.
Pyromaths génère des fiches d'exercices et leur corrigé en toute simplicité.
Un programme multi-plateformes libre et gratuit sous licence GPL
Avatar de l’utilisateur
Jérôme
Administrateur - Site Admin
 
Messages: 1071
Inscription: Sam 26 Aoû 2006, 13:10
Localisation: Nantes

Re: "bug" dans system.py

Messagede Jérôme » Sam 30 Mar 2013, 14:34

Après relecture, je propose la modification suivante :
def nettoyage(basefilename):
"""Supprime les fichiers temporaires créés par LaTeX"""
for ext in ('.aux', '.dvi', '.out', '.ps','.nav','.snm','.toc'):
try:
os.remove(basefilename+ext)
except OSError:
pass
#le fichier à supprimer n'existe pas et on s'en moque.
if os.path.getsize('%s.pdf' % basefilename) > 1000 :
os.remove('%s.log' % basefilename)
os.remove('%s-pyromaths.log' % basefilename)

Sinon, il tente de supprimer le pdf à chaque tour.
Pyromaths génère des fiches d'exercices et leur corrigé en toute simplicité.
Un programme multi-plateformes libre et gratuit sous licence GPL
Avatar de l’utilisateur
Jérôme
Administrateur - Site Admin
 
Messages: 1071
Inscription: Sam 26 Aoû 2006, 13:10
Localisation: Nantes

Re: "bug" dans system.py

Messagede jbreizh » Sam 30 Mar 2013, 22:01

hello,
merci pour l'explication et ta modification est meilleure.
En fait ce "problème" n'est jamais apparu sur Pyromaths en lui même, mais sur mon fork, j'ai fais des modifications importantes dans la façon dont system.py produit le tex. Ce qui fait que j'ai des templates tres différents avec beamer et sans beamer qui génèrent des fichiers temporaires différents. Du coup, j'ai mis un certain temps à comprendre comment cela se faisait que selon le template choisit, une fois il y avait nettoyage et une fois il etait incomplet.

Deux autres petits bug dans interface.py
ligne 729
if f0 != None:
peut être remplacer par
if f0:
d'ailleurs chez moi la première forme engendre une erreur.
ligne 351
QtCore.QObject.connect(self.actionAcceder_au_site, QtCore.SIGNAL("activated()"), self.site)
peut être remplacer par
QtCore.QObject.connect(self.actionAcceder_au_site, QtCore.SIGNAL("triggered()"), self.site)
activated() est visiblement un signal de compatibilité avec qt3 qui est obsolète et les menus ne réagissait pas quand j'executais le source sous xp(peut etre une histoire de version python ou qt)

Sinon je suis un peu embété, car j'ai fais beaucoup de modification qui pourrait être intéressante pour Pyromath, mais il y en a aussi beaucoup qui sont spécifique de mon fork. Du coup je ne sais pas par ou commencer.....
Bonne soiré
Dernière édition par jbreizh le Lun 01 Avr 2013, 11:19, édité 1 fois.
jbreizh
 
Messages: 51
Inscription: Ven 14 Déc 2012, 23:46

Re: "bug" dans system.py

Messagede Jérôme » Lun 01 Avr 2013, 10:35

La classe ! ;) Je teste cela dès que possible. Un immense merci pour cette information.
Pyromaths génère des fiches d'exercices et leur corrigé en toute simplicité.
Un programme multi-plateformes libre et gratuit sous licence GPL
Avatar de l’utilisateur
Jérôme
Administrateur - Site Admin
 
Messages: 1071
Inscription: Sam 26 Aoû 2006, 13:10
Localisation: Nantes


Retourner vers Propositions

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron