08:20 <cyp> plop
08:46 <jpcw> matin café
11:34 <No`> chblam
13:38 <cED___> Bonjout à tous
14:27 <cED___> J'ai d'un côté une fonction qui me permet de créer des objets qui représente à un moment donné l'état d'un système externe à python (dans mon cas, les points de montage). Ce système se modifie avec le temps, sans pour autant informer mon programme python. De nouveaux FS sont créés, ou leur point de montage sont changés... En instant plus tard, je souhaite pouvoir recréer ces objets pythons basé à nouveau sur le nouvel Ã
14:28 <gawel> t'as comme un problème d'encoding
14:32 <yuhl> Bonjour à tous,
14:32 <yuhl> J'ai d'un côté une fonction qui me permet de créer des objets qui représente à un moment donné l'état d'un système externe à python (dans mon cas, les points de montage).
14:32 <yuhl> Ce système se modifie avec le temps, sans pour autant informer mon programme python. De nouveaux FS sont créés, ou leur point de montage sont changés...
14:32 <yuhl> En instant plus tard, je souhaite pouvoir recréer ces objets pythons basé à nouveau sur le nouvel état du système.
14:32 <yuhl> J'imaginais une utilisation genre:
14:32 <yuhl> # il est 8h40
14:32 <yuhl> lmount_object=[]
14:32 <yuhl> for mount_output_str in lmount_output_str:
14:32 <yuhl> lmount_object.append(Mount(mount_ouput_str))
14:33 <yuhl> mount_object_1=lmount_object[0]
14:33 <yuhl> print mount_object.refresh_time
14:33 <yuhl> >> 8h40
14:33 <yuhl> print mount_object.mountpoint
14:33 <yuhl> >> '/mnt'
14:33 <yuhl> ..
14:33 <yuhl> # il est 9heure
14:33 <yuhl> for mount_output_str in lmount_output_str:
14:33 <yuhl> lmount_object.append(Mount(mount_ouput_str))
14:33 <yuhl> print mount_object_1.refresh_time
14:33 <yuhl> >> 9h00
14:33 <yuhl> print mount_object.mountpoint
14:33 <yuhl> >> '/mnt_nouveau'
14:34 <gawel> et ou est le problème avec python ?
14:34 <gawel> c'est un problème purement système la. si tu bouge un point de montage sans que je le sache, bah je peux pas le deviner
14:36 <yuhl> oui... scuse... j'aurais du mettre la fonction : lmount_output_str=get_from_system_the_mount() avant les boucles for
14:37 <gawel> ça change rien au problème
14:37 <yuhl> mmh comment me faire comprendre.
14:38 <yuhl> Je cherche à créer des objets en python que tu puisses mettre à jour non pas en modifiant l'objet, mais en l'interchangeant avec un autre
14:39 <No`> les stocker quelque part, sous forme d'objets ?
14:39 <No`> le module pickle est-il la réponse à ta question ?
14:40 <yuhl> No`: non pas du tout.
14:40 <gawel> ca reste un objet différent. pickle ca load un objet
14:40 <yuhl> je pensais faire un truc genre ça. http://pastebin.com/BYeTSSz7
14:41 <yuhl> mais je n'arrive pas à le faire fonctionner du au fait que la classe de base redéfini __getattr__ et que mon soft rentre dans une boucle sans fin
14:42 <benoitc> yuhl: teste le ctime plutot que le mtime ...
14:42 <benoitc> man stat
14:42 <benoitc> +f
14:42 <yuhl> c'est juste un exemple... le point c'est de définir dans la classe dérivée, comment on définit le identifiant.
14:42 <benoitc> man fstat
14:43 <benoitc> euh
14:43 <benoitc> normal
14:43 <gawel> comment tu te fais chier, damn
14:44 <yuhl> tu parles de masturbation intelectuelle ?
14:44 <gawel> t'as juste a setter un attr dans .replace() et aller chercher les attr de cet objet dans __getattr__
14:44 <benoitc> faut que tu fasses une classmethod
14:44 <benoitc> enfin genre https://github.com/benoitc/couchdbkit/blob/master/couchdbkit/schema/base.py#L308
14:45 <benoitc> et une metaclass pour stocker les proprietes initiales
14:45 <gawel> t'initialise une nouvelle instance la
14:46 <gawel> il veut la meme
14:47 <benoitc> ah
14:47 <benoitc> https://github.com/benoitc/couchdbkit/blob/master/couchdbkit/schema/base.py#L347
14:47 <benoitc> donc
14:48 <gawel> bah non c'est une nouvelle instance aussi
14:48 <benoitc> non
14:48 <benoitc> c la meme instance
14:48 <gawel> obj = self.__class__(**kwargs)
14:48 <gawel> .. :D
14:48 <benoitc> et ?
14:48 <gawel> bah c'est une nouvelle instance..
14:48 <benoitc> non
14:48 <gawel> id(obj) == id(self) ???
14:49 <gawel> tu craque
14:49 <yuhl> j'ai de la difficulté à vous suivre... :) pas facile de causer de ça sur IRC.
14:50 <yuhl> gawel: oui, l'idée est de maintenir le même id de l'obj, mais que celui-ci se comporte comme l'objet qu'il reférence
14:51 <benoitc> gawel: euh c evident . vu que ce sont 2 weakref diff
14:51 <benoitc> yuhl:compare __hash__ plutot
14:51 <gawel> donc c'est pas la même instance...
14:51 <benoitc> et bon sinon donc tu upgrade
14:51 <benoitc> gawel: c une copie de l'instance, mais modifie l'une tu auras les modifs sur l'autre
14:52 <benoitc> sur des proprietes equiv
14:52 <benoitc> hrm
14:52 <benoitc> non.
14:52 <yuhl> tu veux dire que je redéfinisse __hash__ au lieu d'utiliser le nom de fonction que j'ai donné soit: _get_inst_id
14:52 <gawel> non, au lieu de id()
14:53 <benoitc> http://docs.python.org/reference/datamodel.html#object.__hash__
14:53 <yuhl> mais je n'utilise pas id
14:53 <gawel> je sais, il est perdu :)
14:53 <benoitc> enfin bon "[14:42:46] yuhl: c'est juste un exemple... le point c'est de définir dans la classe dérivée, comment on définit le identifiant."
14:53 <yuhl> bloup, bloup,,, plutôt noyé
14:53 <benoitc> me laisse perplexe
14:54 <benoitc> ça veut dire quoi?
14:56 <gawel> yuhl: http://friendpaste.com/1cZ2DQRkfIu0CI44oI5i16
14:56 <gawel> je sais pas si ca te va, mais bon, c'est le problème que j'ai compris
15:00 <yuhl> benoitc: Dans le pastebin que je vous ai donné, j'ai deux classes. La première définit une classe wrapper, et la deuxième en est dérivé. Cette construction me permet de pouvoir faire un "wrapper" assez simple à mettre en place, car j'ai dans la classe dérivée qu'une seule fonction a ajouter "_get_inst_id" pour que cette dernière soit "wrappée"
15:02 <benoitc> mais si c une classe derivee pq tu la veux identique?
15:02 <benoitc> et pq pas utiliser un decorateur de classe ?
15:06 <yuhl> gawel: merci pour ta proposition, mais elle n'a pas le comportement souhaité qui est: je crée des objets, à chaque type d'objet créé, je défini ce qui identifie un objet comme unique. ceci ce fait à travers la methode _get_inst_id. Donc si je crée un objet Personne, dont l'identité est construite de son nom et son prénom... et que plus tard je crée une autre instance de Personne qui a le même nom et prénom que ma première perso
15:06 <yuhl> nne, mais que sa taille est différente, je souhaite que ma première instance se trouve avec la taille modifiée.
15:07 <benoitc> bah ma methode clone fonctionne alors ...
15:07 <benoitc> ce sont 2 instances diff mais 2 classes identiques
15:08 <benoitc> err s/classes/objets
15:08 <yuhl> tu avais fait une reférence dans l'IRC que j'ai du loupé..
15:12 <gawel> dans ce cas fais une registry d'instance et override __new__ pour renvoyer l'instance existante modifié si elle existe et en créer une nouvelle sinon
15:14 <yuhl> gawel: Moi qui croyais que new était fait pour les objets immuable.
15:15 <yuhl> gawel: est-ce que tu accepterais de me faire un petit exemple ?
15:15 <benoitc> pq passer apr une registry ?
15:16 <yuhl> benoitc: gawel: registry, c'est juste un dico ? naon !
15:17 <gawel> bah ouais
15:18 <yuhl> ok... je viens de perdre qque points à vos yeux :(
15:23 <gawel> yuhl: http://friendpaste.com/1CCqZOLR7Jog7kDLe0gJrD
15:24 <gawel> un peu tordu, mais bon
15:27 <gawel> sinon doit y avoir moyen de jouer avec les weakrefs, surement
15:33 <yuhl> gawel: un grand merci pour ton bout de code.... je me sens aspiré vers un niveau supérieur :)
15:33 <yuhl> à tous, merci mille fois pour votre temps.
15:35 <yuhl> je vais tenté de m'inspirer de ton dernier pastebin et je vais jouer avec.
15:35 <benoitc> ssinon tu enregistre directement en utilisant une meta classe
15:35 <benoitc> mais bon
15:36 <yuhl> oui après le coup de baffe du __new__ :D, je vais aller me prendre de la mata classe.
15:37 <yuhl> benoitc: si tu as un exemple fonctionnel, ce serait parfait, car j'aurais l'occasion de tester le bidule pour une 1ère fois.
21:11 <No`> ...