Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Produire une fichier Python autonome (si besoin) #59

Open
projetmbc opened this issue Jun 18, 2018 · 3 comments
Open

Produire une fichier Python autonome (si besoin) #59

projetmbc opened this issue Jun 18, 2018 · 3 comments
Labels
enhancement New feature or request

Comments

@projetmbc
Copy link

projetmbc commented Jun 18, 2018

Bonjour.

A-t-on la possibilité de rendre le fichier Python utilisable en dehors de Turing ?

Si ce n'est pas le cas, il suffirait de créer un package Python disponible sur pypi qui serait une interface entre les scripts Python à la sauce Turing et des scripts Python "standards" qui apparaitrait via "from turingtools import *" qui dans Turing ne servirait à rien mais qui avec Python utilisé seule ferait le boulot.

Si besoin, je me propose de contribuer car cela devrait être assez rapide à faire à condition d'accepter un truc rudimentaire. Je pense à l'utilisation de matplotlib pour le graphisme.

@zdimension
Copy link
Member

Ce n'est pas encore possible, mais ça serait effectivement pas mal comme fonction parce que ça permettrait de lancer les scripts sans avoir tout le paquetage Turing autour.

Toutefois, la bibliothèque de fonctions de Turing (tout est dans le dossier maths/lib) a été conçue depuis le départ pour être utilisable "en externe", sans le reste du logiciel (dans le but de pouvoir lancer les scripts en dehors de Turing). À priori donc, un script peut utiliser la bibliothèque tout seul comme un grand, il faudrait juste nettoyer le code des éventuelles dépendances inutiles et ajouter le wrapper au début pour importer les fonctions dans le champ global.

En interne, on utilise le module runpy pour lancer les scripts, et on ajoute un bout de code au début du fichier pour importer automatiquement toutes les fonctions de la lib de Turing, puis on remplace quelques fonctions de base (print, input, sleep, etc) par des fonctions qui gèrent l'interface de Turing (ces fonctions de substitution ne sont pas dans la bibliothèque elle-même mais dans le code principal de Turing, elles ont des noms commençant par python_).

Je peux vous assigner à cette issue si vous le souhaitez. Dès que vous avez un code fonctionnel, faites une PR et je fusionnerai dès que possible. Une nouvelle release est prévue pour bientôt (c'est vague hein, dans une semaine comme dans un mois), donc en plus on pourra mettre le code en prod directement.

@projetmbc
Copy link
Author

Je suis partant. Il faudrait juste m'indiquer en plus la partie qui crée le script en interne pour que je fasse une version produisant le script autonome. Ce sea pour demain ou ce soir car je pars pédaler.

PS: avez-vous des règles internes de codage ?

@zdimension
Copy link
Member

C'est grosso modo ici : https://github.com/TuringApp/Turing/blob/master/src/forms/mainwindow.py#L888

La fonction python_wrapper ajoute code qui importe les fonctions de la lib. Ensuite, on écrit ça dans dans un fichier temporaire qu'on donne à runpy pour l'exécuter. Les fonctions indiquées dans init_globals ne servent que pour l'interface graphique. C'est pas très propre et y'a largement mieux mais c'est ce qui a le mieux marché pour nous jusqu'ici (meilleur compromis sécurité/perfs).

Pour les conventions de code, on n'en a pas vraiment écrit parce qu'on avait pas prévu que le projet intéresse d'autres contributeurs mais pour résumer :

  • snake_case pour variables et fonctions
  • PascalCase pour les classes
  • entête utf8 au début des fichiers

Et pour le reste on essaie de coller au mieux à la PEP8.

Ps: merci encore pour l'intérêt que vous portez à notre projet, à la base c'était juste un petit projet de spé mais on dirait qu'il va peut-être finir par servir a quelque chose

@zdimension zdimension added the enhancement New feature or request label Jun 19, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants