Skip to content
This repository has been archived by the owner on Nov 6, 2018. It is now read-only.

corriges2rst #1

Open
Karduin opened this issue Dec 14, 2017 · 40 comments
Open

corriges2rst #1

Karduin opened this issue Dec 14, 2017 · 40 comments

Comments

@Karduin
Copy link
Collaborator

Karduin commented Dec 14, 2017

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
Copy link
Owner

parmentelat commented Dec 14, 2017 via email

@Karduin
Copy link
Collaborator Author

Karduin commented Dec 14, 2017

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

@Karduin Karduin closed this as completed Dec 14, 2017
@jgorene jgorene reopened this Dec 14, 2017
@jgorene
Copy link
Collaborator

jgorene commented Dec 14, 2017

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
Copy link
Collaborator Author

Karduin commented Dec 14, 2017

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

@jgorene
Copy link
Collaborator

jgorene commented Dec 14, 2017

Ok =)

@Fangh
Copy link

Fangh commented Dec 14, 2017

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
Copy link
Collaborator

jgorene commented Dec 14, 2017

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

@Karduin
Copy link
Collaborator Author

Karduin commented Dec 14, 2017

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

@jgorene
Copy link
Collaborator

jgorene commented Dec 15, 2017

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

@parmentelat
Copy link
Owner

parmentelat commented Dec 15, 2017

non, vous le faites avec git:

git mv olddir newdir
git commit
git push

@jgorene
Copy link
Collaborator

jgorene commented Dec 15, 2017

ok, merci ;)

@Karduin
Copy link
Collaborator Author

Karduin commented Dec 15, 2017

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....

@parmentelat parmentelat changed the title Acces au directory corriges2rst Dec 15, 2017
@jgorene
Copy link
Collaborator

jgorene commented Dec 16, 2017

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
Copy link
Collaborator Author

Karduin commented Dec 18, 2017

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

@jgorene
Copy link
Collaborator

jgorene commented Dec 18, 2017

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
Copy link
Collaborator Author

Karduin commented Dec 18, 2017

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
Copy link
Collaborator

jgorene commented Dec 19, 2017

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
Copy link
Collaborator Author

Karduin commented Dec 20, 2017

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
Copy link
Collaborator

jgorene commented Dec 20, 2017

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
Copy link
Collaborator

jgorene commented Dec 20, 2017

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
Copy link
Collaborator

jgorene commented Dec 21, 2017

@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
Copy link
Collaborator

jgorene commented Dec 22, 2017

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
Copy link
Owner

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

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

  • from pathlib import Path plutôt que le vieux (et un peu ringard) os.path; ça c'est assez superficiel et ça ira vite

  • ensuite et surtout, mais c'est plus lourd comme changements, ce serait de transformer ce script en une classe. Ça le rendrait beaucoup plus réutilisable.

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 parmentelat reopened this Dec 22, 2017
@parmentelat
Copy link
Owner

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

@jgorene
Copy link
Collaborator

jgorene commented Dec 22, 2017

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
Copy link
Collaborator Author

Karduin commented Dec 22, 2017

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
Copy link
Collaborator Author

Karduin commented Dec 22, 2017

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
Copy link
Owner

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
Copy link
Collaborator Author

Karduin commented Dec 22, 2017

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.

@Karduin Karduin reopened this Dec 22, 2017
@jgorene
Copy link
Collaborator

jgorene commented Dec 22, 2017

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
Copy link
Collaborator

jgorene commented Dec 28, 2017

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
Copy link
Collaborator

jgorene commented Jan 6, 2018

@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
Copy link
Collaborator Author

Karduin commented Jan 10, 2018

@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
Copy link
Collaborator

jgorene commented Jan 10, 2018

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
Copy link
Collaborator

jgorene commented Jan 10, 2018

@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
Copy link
Collaborator

jgorene commented Jan 12, 2018

@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
Copy link
Owner

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
Copy link
Collaborator

jgorene commented Jan 12, 2018

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
Copy link
Collaborator Author

Karduin commented Jan 13, 2018

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
Copy link
Collaborator

jgorene commented Jan 14, 2018

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

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

4 participants