Open JeromeJ opened 11 years ago
Non, tu as raison d'ouvrir une issue pour ce genre de truc, ca permet de discuter plus librement que dans le code.
Pour e debugouillage, j'avais vu un truc qui permettait de voir en detail ce que faisait python, mais je me souviens plus…
@Eijebong Il y a plusieurs façons de faire, je sais qu'il y a des déboggueurs mais y a aussi moyen de surcharger la méthode, je crois, __getattribute__
d'un objet pour savoir tous les accès qui lui sont fait (si sa méthode machin est appelée, ou une autre, etc)
C'était ptetre avec ipython que j'avais reussi... Je regarde ca ce soir, quand j'aurais le temps
Pour ceux intéressés par l'avancement de notre enquête, on a trouvé les sources : /usr/lib/python3.X/_pyio.py
Les fonctions concernées TextIOWrapper.__next__
, TextIOWrapper.readline
et TextIOWrapper._read_chunk
principalement.
L'idée serait de trouver le meilleur moyen de surcharger ça pour éviter un _read_chunk
infini.
J'essayais de changer la méthode __getattribute__
d'un TextIOWrapper
et me demandait pourquoi Python me snobait >.>
http://www.olissea.com/mb/links/1/?yx_vmg
→ You cannot modify magic method directly from an instance.
→ When a magic method is used and not called explicitely, then all special methods like __getattribute__
are also bypassed.
Donc je me suis doublement avoir pour le coup :p J'aurais du me contenter du code source ^^
https://github.com/JeromeJ/Devutopia/blob/master/wsgi-scripts/helloworld.py#L143
Une des solutions à laquelle je viens de penser (car le paramètre
opener
deopen
ne vas pas aider je crois) serait de faire: 1) Du débogouillage et voir ce qu'appellefor line in hello_world
, 2) S'il appelle en effet bienread()
3) Si oui (et peut-être à l'aide deopener
du coup), lui passer une classe enfant qui surchage les dites méthodes afin de pouvoir passer un paramètre à read ?(Bon j'ai tag ça enhancement (du code), mais j'ai aucune idée dans il fallait poster ça (d'ailleurs c'est ptet pas la meilleure chose de reporter une issue pour ça mais je me voyais mal faire un commit rien que pour ça et écrire tout ça dans le code ;D))
EDIT: Au fait, c'est suite à ça que je chipote : http://sebsauvage.net/python/snyppets/#bound_read