parmentelat / moocpython

16 stars 7 forks source link

corriges2rst #1

Open Karduin opened 6 years ago

Karduin commented 6 years ago

Thierry je n'ai pas les droits en écriture sur le directory 'fangh'. Il m'a fait un fork, c'est le fonctionnement voulu ? pour être plus précis avec upload j'ai :

Uploads are disabled. File uploads require push access to this repository.

Et pour new file :

You’re creating a file in a project you don’t have write access to. Submitting a change will create the file in a new branch in your fork Karduin/moocpython, so you can send a pull request.

parmentelat commented 6 years ago

je suis très étonné; non ce n’est pas l’intention que d’utiliser un fork dans ce cas précis, je m’attendais à t’avoir donné les droits de ‘collaborator’

par contre il me dit ceci

alors que pour jeang07 il ne dit pas ‘awaiting response’; il n’y aurait pas une étape à faire de ton coté ?

On 14 Dec 2017, at 16:17, Karduin notifications@github.com wrote:

Thierry je n'ai pas les droits en écriture sur le directory 'fangh'. Il m'a fait un fork, c'est le fonctionnement voulu ?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or mute the thread.

Karduin commented 6 years ago

OK autant pour moi, il fallait que j'accepte ton invitation à partir de ma messagerie. Merci

jgorene commented 6 years ago

Bonjour à vous ;)

@Fangh, Je te laisse t'organiser avant tout mais juste savoir si c'est ok pour le principe d'un seul dossier commun... Sinon, j'ai aussi travaillé sur un petit script de départ... on verra comment s'organiser ensuite en fonction, pas de souci pour moi J'avoue que je ne suis pas trop à l'aise non plus et pas encore collaboré au travers de github ;)

Karduin commented 6 years ago

@jgorene, Oui pas de souci, on fait comme ça. C'est l'occasion pour nous de se familiariser avec l'outil ;-)

jgorene commented 6 years ago

Ok =)

Fangh commented 6 years ago

Bonjour. Depuis quand suis-je un directory ? (vous venez de mentionner un utilisateur à travers l'univers github.com : moi, sans faire exprès je crois.)

jgorene commented 6 years ago

Bonjour, Oui en effet... il s'agit d'une erreur, désolé ,)

Karduin commented 6 years ago

Comment fait on pour changer le non d'un directory ?

jgorene commented 6 years ago

Il me semble qu'il n'y a que Thierry à pouvoir le faire mais sous réserve quand même ;)

parmentelat commented 6 years ago

non, vous le faites avec git:

git mv olddir newdir
git commit
git push
jgorene commented 6 years ago

ok, merci ;)

Karduin commented 6 years ago

ok c'est fait, pas trop intuitif au départ, mais bon j’apprends ;-) Bah zut, ça change d'autre truc, ton commentaire et les remarques que j'avais mis à la suite de ton code on disparus... Bon si on va dans la listes des commits on retrouve tout. Faut s'y faire....

jgorene commented 6 years ago

Vu que ça commence à bouger... j'ai amendé le README du dossier pour avoir une description minimum pour les futurs participant(e)s ou même visiteurs éventuels. Bien sûr à modifier le cas échéant... Bonne soirée ;)

Karduin commented 6 years ago

Bon je commence enfin à résoudre mes problèmes avec les regex, grâce à ce site : https://regex101.com/

jgorene commented 6 years ago

Oui très pratique... je m'en sers aussi car je ne suis pas non plus un foudre sur les regex ;)

Sinon pour l'instant, j'ai mis le code de côté car ça fonctionne pas mal et pour le moment ça me va ! Bien qu'on doit pouvoir encore optimiser tout ça... ne serait-ce que pour la gestion des erreurs éventuelles. J'avoue que j'ai défini un cadre d'utilisation hyper simple simple pour démarrer ;)

Pour l'instant, je me bagarre plutôt avec la personnalisation des éditions avec le config.py de Sphinx... En passant ton tuto sur le mooc m'a vraiment bien aidé pour démarrer... je ne connaissais pas du tout ;)

Ok, on se tient au courant...

Karduin commented 6 years ago

Bon ! je vais repartir de zéro, passer par un chaine unique comme j'ai tenté de le faire n'est pas souple du tout ! Ton code est bien plus efficace.

jgorene commented 6 years ago

Oui, je pense aussi pour le code mais j'ai fonctionné plus "par habitude" en fait ;) Bien souvent, il me semble qu'il est préférable de bien préparer et regrouper ses données dans 1 seul objet avant "écriture" proprement... pour ce type d'actions en tout cas et sous réserve :D Quoiqu'il en soit, on doit pouvoir aller encore un plus loin au niveau du code .. à voir en tout cas ?

Sinon aucun rapport direct, je vais uploader mes fichiers .txt et le corriges.rst généré dans le dossier... ce sera je pense +pratique à l'usage et on pourra faire des tests de part et d'autre ;)

Karduin commented 6 years ago

Je ne sais pas si ma nouvelle version est très 'pythonique' mais bon elle fonctionne.

Si je me fis à ton pdf, les titres de niveau 3 ne sont pas complets. c'est pas très grave, c'est plus pour la lisibilité dans la table des matières.

jgorene commented 6 years ago

Je viens de la tester... comme sur des roulettes, donc c'est bien ! Bien mieux que ma solution (beaucoup trop rapide)... et d'accord pour les titres 3 en effet, il en manque un bout... d'ailleurs dans le sommaire... ça me gênait sans trop voir ce qui clochait :D Pour l'écriture "pythonique"... je préfère ne pas me prononcer pour le moment ;)

Je vais prendre un peu de temps pour étudier ta version, il me semble déjà qu'il faudrait ne pas avoir à saisir les fichiers d'entrée manuellement... mais plutôt par un appel et une sélection du fichier concerné. Si on peut le faire... Sinon une seule petite erreur à la génération du pdf "corriges_all.rst:1239: WARNING: Explicit markup ends without a blank line; unexpected unindent." ... non bloquante par contre Corriges.pdf

Bon, on avance en tout cas ;)

jgorene commented 6 years ago

Pour les titres 3 c'est rectifié, merci ;) Corriges.pdf

Sinon je vais voir comment améliorer tout ça en partant du principe d'exécution de ta solution, qui pour moi est bien plus adaptée pour une utilisation "en production", à suivre donc...

jgorene commented 6 years ago

@Karduin Mon script a un peu évolué en m'inspirant de la "présélection" que tu as mis en place sur ton script... indispensable à l'usage en effet ! (à mon humble avis) Par contre je garde la logique de mon script pour le moment et j'adapte en fonction... je verrais ensuite à changer suivant l'évolution... Sinon pythonique ? J'aurais aimé passer avec une fonction lambda pour la demande de sélection avec l'input, si c'est possible... mais rien trouvé pour l'instant en tout cas.

jgorene commented 6 years ago

J'ai fait évolué le script avant le "break" pour ajouter une vérification du dossier concerné (à y être;) Le script marche toujours bien mais j'expérimente en fait et on peut encore bien améliorer tout ça...

Finalement, je trouve que ce "petit travail" ouvre un tas de perspectives à l'usage voire de variantes applicatives et du coup ça devient vraiment intéressant...

parmentelat commented 6 years ago

tant mieux si vous trouvez ça intéressant :)

je vous suggère deux directions d'améliorations

Quelque chose comme

translator = Corriges2Rst(directory)
translator.add_file("corriges-w1.txt") 
# et / ou
translator.add_all_txt_files()
translator.run('myoutput.rst')

C'est un prétexte naturellement, pour vous montrer qu'une classe ça peut servir à faire juste du tri dans les espaces de noms, pour rendre un code réutilisable. Ça n'est pas important si l'interface est différente de ce que je propose, c'est jute une direction générale que je vous donne.

parmentelat commented 6 years ago

fausse manipe, je n'avais pas l'intention de fermer cette discussion

jgorene commented 6 years ago

Je préfère pour la fausse manip...

Bon ok pour essayer de créer une classe... essayer car j'ai encore quelques notions à voir et même à bien revoir ! Sinon intéressant et passionnant car créatif pour ma part... merci pour les suggestions ;)

Karduin commented 6 years ago

Effectivement, intéressant ! parce-qu’en essayant d'être généraliste sur le sujet (ne pas s'en tenir qu’aux fichiers de corrections), sa ouvre des perspectives vers d'autres thèmes. Comme quoi même sur un besoin plutôt basique au départ ça peut déboucher sur des techniques utiles pour d'autre développements.

Karduin commented 6 years ago

Bon premier coup d’œil sur pathlib... un truc m’échappe... pour mettre les fichiers dans une liste, à priori on fait :

from pathlib import Path
p=Path('.')
list(p.glob('*.py'))

OK mais dans la liste j'ai :

[WindowsPath('dispatch.py'), WindowsPath('robots.py'), WindowsPath('robots2.py'), WindowsPath('test1.py'), WindowsPath('test2.py'), WindowsPath('test3.py'), WindowsPath('test4.py'), WindowsPath('test9.py')]

Je ne peux pas avoir juste le nom des fichiers sans le WindowsPath ?

parmentelat commented 6 years ago

vous convertissez un Path en str:

[str(path) for path in your_list]

mais bon c'est pas vraiment la peine en fait, vous pouvez directement ouvrir un Path !

Karduin commented 6 years ago

OK, il faut que je creuse l'utilisation... edit : Pour les noms on peut faire comme ça :

from pathlib import Path
p = Path('.')
z = list(p.glob('*.py'))
for i in z:
    print(i.name)

Cool, il y a un attribut pour récupérer le nom.

jgorene commented 6 years ago

Pour pathlib ... j'avance doucement et par ailleurs encore très loin de savoir comment bien utiliser les modules importés, bref ;) A titre indicatif seulement, quelques exemples réalisés que j'arrive à comprendre "en gros" mais quand même que je creuse encore pour bien en comprendre toutes les subtilités :P

p = Path(__file__).parent
paths_files = list(p.glob('*.txt'))
paths_list = [str(path) for path in paths_files]
print(f"chemin dossier => {p}\n\nliste chemins fichiers :\n{paths_list}")

# en effet après retour et (re)édition, c'est mieux avec l'attribut name ;)
files = [file.name for file in paths_files]
print(f"chemin dossier => {p}\nliste fichiers : {files}")

Sinon complètement d'accord ! ;)

Comme quoi même sur un besoin plutôt basique au départ ça peut déboucher sur des techniques utiles pour d'autre développements.

jgorene commented 6 years ago

J'ai fait une mise à jour toujours sans "classe" pour le moment. J'ai bien déjà un truc qui tient la route... mais je préfère peaufiner encore peu et ce sera pour l'année prochaine du coup ! Sinon, la maj tient compte (en principe) des fichiers "non conforme" aux précédents comme la semaine 6 par exemple ;) J'ai testé bien sûr et sur ma machine ça fonctionne à fortiori... Surement encore pas mal de choses à voir ou revoir de toute façon, j'espère seulement que le code est suffisamment "pythonique" ! Quoiqu'il en soit, excellentes fêtes de fin d'année et bon bout d'an !

jgorene commented 6 years ago

@Karduin J'ai mis à jour la compilation des corrigés avec les notebooks et exercices... Ça déborde un peu du cadre de départ mais cela m'a semblé complémentaire, à y être ;)

Pour info, avant de me mettre aux "corrigés", j'avais déjà commencé à travailler sur une compile des notebooks à partir du "tuto" que tu avais gracieusement mis à dispo, ceci expliquant cela.

Au départ, je le prenais pour un excellent exercice, potentiellement utile par et pour la suite du mooc... Depuis le script n'a plus rien à voir car j'ai essayé d'aller un peu plus loin... Comme "checker les niveaux de titres" pour pouvoir les modifier le cas échéant (entre autres choses)

Par contre, beaucoup de choses connexes à prendre en compte car je suis loin de parler couramment le latex, je balbutie le sphinx... et avec python je progresse lentement mais surement, je pense Bref, j'avoue que je patine un peu mais pas de souci ;) C'est quand même comme ça qu'on voit le gros chantier que ça représente ;)

Je mets le script à dispo si ça t'intéresse... Pas d'urgence de toute façon...

Karduin commented 6 years ago

@jgorene Beau boulot, comment as tu fait pour avoir une table des matières qui ne pose pas de problème d'espacement à partir du chapitre 100 ? J'ai essayé de mette book à la place de report mais cela ne change pas grand chose. J'ai cherché aussi comment et où modifier le template de sphinx ou latex mais je ne trouve pas vraiment d'infos à ce sujet. Si tu as une piste...

jgorene commented 6 years ago

Merci @Karduin, Le résultat en plutôt sympa c'est vrai et il me semble plus "user friendly" au final (toujours important;)...

Sinon, pour l'espacement je pense que cela vient des "entêtes" sur chaque fichier mais sous réserve de .. raw:: html jusqu'à </div> Je les "supprime" à partir du mon script et j'ajoute la licence en une seule fois sur la page de couverture (nouveau doc joint) à partir de conf.py Python3.pdf J'en ai profité pour supprimer le sommaire beaucoup trop long à mon avis que l'on retrouve en général sur une barre latérale d'une application à la lecture d'un pdf sur toutes les plateformes.. à voir ?

Pour le template et la page de couverture du pdf... ça se passe justement sur le fichier conf.py que je paramètre ensuite "à la main" mais je suis loin de tout maîtriser car difficile de trouver de la doc en anglais déjà et encore moins en français... en effet :-/ De toute façon, je rajoute le script et le conf.py sur lesquels je travaille (opérationnel mais absolument pas finalisés par contre) avec quelques indications en commentaires déjà pour le script.

Pour le reste faut encore gratter mais à deux... on devrait y arriver :D A suivre en tout cas...

jgorene commented 6 years ago

@Karduin, Pour info, les 2 fichiers toc-test.py et conf.py sont dans le repo... N'hésites pas à les amender ou les modifier si besoin, au contraire;) A suivre...

jgorene commented 6 years ago

@Karduin J'ai mis à jour 2 fichiers toc et conf... pour un peu de nettoyage sans réelles modifications. Bon loin d'être parfait mais je suis un peu à la limite de ce que je peux faire pour le moment en python déjà et j'ai aussi un peu de mal pour tout dire avec la doc us sur sphinx en l'état.

A y être et pour voir, j'ai généré un dossier html avec le "rtd_theme" qui rend plutôt bien "par défaut" sans avoir à trop le personnaliser... donc parfait pour moi ;) En tout cas je trouve que la recherche est très efficace sur le site généré. Est-ce que ça pourrait être utile... à voir ? Sinon un avis ... Thierry @parmentelat, merci ;) python3-funmooc-recherche

parmentelat commented 6 years ago

Bonjour

J'ai un peu perdu le fil je vous l'avoue; je suis retourné voir le projet sur github mais je n'ai pas trouvé au premier coup d'oeil comment je pouvais me faire une idée du résultat produit par sphinx;

je suppose qu'il me faut lancer le code moi-même mais je ne vois nulle part la recette pour le faire ?

c'est vrai que ça pourrait être une idée pour diffuser les contenus aux étudiants; d'ailleurs je suis un peu troublé car le sujet concernait au départ les corrigés mais le screenshot référence semble-t-il aussi (seulement?) des notebooks de cours, qu'en est-il exactement ?

jgorene commented 6 years ago

Bonjour,

@parmentelat , Oui c'est normal car cela a un peu évolué depuis 1 semaine; voir sur le post du 06/01 un peu plus avant où je faisais part à Fangh @Karduin de "mes productions" sortant un peu du cadre du projet initial ;)

C'est vrai aussi que c'est un peu le bazar (j'espère seulement "vu" de l'extérieur pour l'instant) et faut mettre ça "en ordre" en effet; revoir au minimum le README; tous conseils ou suggestions à ce sujet pour une démarche la plus appropriée sont bienvenus !

Sinon il y a bien un travail sur le script pour générer un fichier récapitulatif en rst à partir des fichiers txt des corrigés correspond au projet initial; en parallèle un "travail optionnel mais complémentaire" pour une compilation globale... notebooks, exercices et corrigés à y être ! Si tout le monde en est d'accord, bien sûr ;)

Pour finir, il me semble que proposer voire mettre à dispo un support HTML généré par Sphinx en plus du PDF me paraît être une "expérience utilisateur" intéressante pour les mooceurs Python 3... à voir ? Pour tout dire quand j'ai commencé sur Sphinx... que des découvertes mais bon... encore du boulot !! Voilà pour quelques explications...

Karduin commented 6 years ago

Effectivement, nous sommes partis bille en tête (en tous cas moi ;-)) sans donner beaucoup d'explications !

Je vais donc rédiger un petit how to pour l'utilisation du script que j'ai ecrit.(txt_to_rst2.py) qui rest encore à perfectionner ! Nous avons chacun de notre côté compilé un fichier pdf intégrant la semaine et les corrigés.

J'ai rajouter un dossier, il y a un dizaine de jours contenant le pdf du cours. J'en ai modifié la structure hier car j'explore une nouvelle piste pour générer le pdf directement en latex importé depuis les cours (sauf les corrigés). Je vais donner plus de détails (pourquoi et comment) dans readme du dossier _from_latex_ . @parmentelat @jgorene J’espère que vous irez tous les deux y jeter un coup d’œil, j’aimerai bien avoir votre avis.

jgorene commented 6 years ago

J'ai mis à jour le pdf des seuls corrigés à retrouver dans le dossier corriges2rst

Au final tout compiler notebooks avec exercices + corrigés rend le pdf un peu (trop) dense, je trouve! Pour un support HTML le rendu est intéressant par contre... ne serait-ce que pour montrer une des (nombreuses) possibilités de Sphinx... à voir ? sphinx-html-mooc_python