moocpython icon indicating copy to clipboard operation
moocpython copied to clipboard

corriges2rst

Open Karduin opened this issue 8 years ago • 40 comments

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.

Karduin avatar Dec 14 '17 15:12 Karduin

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 [email protected] 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.

parmentelat avatar Dec 14 '17 15:12 parmentelat

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

Karduin avatar Dec 14 '17 15:12 Karduin

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 ;)

jgorene avatar Dec 14 '17 16:12 jgorene

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

Karduin avatar Dec 14 '17 16:12 Karduin

Ok =)

jgorene avatar Dec 14 '17 16:12 jgorene

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

Fangh avatar Dec 14 '17 16:12 Fangh

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

jgorene avatar Dec 14 '17 16:12 jgorene

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

Karduin avatar Dec 14 '17 18:12 Karduin

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

jgorene avatar Dec 15 '17 06:12 jgorene

non, vous le faites avec git:

git mv olddir newdir
git commit
git push

parmentelat avatar Dec 15 '17 08:12 parmentelat

ok, merci ;)

jgorene avatar Dec 15 '17 08:12 jgorene

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

Karduin avatar Dec 15 '17 08:12 Karduin

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 ;)

jgorene avatar Dec 16 '17 17:12 jgorene

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

Karduin avatar Dec 18 '17 10:12 Karduin

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

jgorene avatar Dec 18 '17 11:12 jgorene

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.

Karduin avatar Dec 18 '17 13:12 Karduin

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 ;)

jgorene avatar Dec 19 '17 12:12 jgorene

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.

Karduin avatar Dec 20 '17 14:12 Karduin

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 avatar Dec 20 '17 16:12 jgorene

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 avatar Dec 20 '17 16:12 jgorene

@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 avatar Dec 21 '17 09:12 jgorene

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

jgorene avatar Dec 22 '17 08:12 jgorene

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 avatar Dec 22 '17 09:12 parmentelat

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

parmentelat avatar Dec 22 '17 09:12 parmentelat

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 ;)

jgorene avatar Dec 22 '17 09:12 jgorene

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 avatar Dec 22 '17 11:12 Karduin

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 ?

Karduin avatar Dec 22 '17 11:12 Karduin

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 !

parmentelat avatar Dec 22 '17 12:12 parmentelat

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 avatar Dec 22 '17 12:12 Karduin

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 avatar Dec 22 '17 12:12 jgorene