blog
py2deb just released
Fed up to try to understand distutils/setuptools/egg. I've created an automated way to build a debian package. I think it could be really useful for every one, so I released it under the gpl v2 terms, and it's available here. I'm waiting for feedback on it, because i'm really not an expert in debian packaging. It's able to generate a rpm package too (via alien), and a debian source package.
last updated 7 months ago #
Working, working ...
Some news : I'd discovered komodo edit recently, and I migrate all my projects under komodo. It's not an open source product ;-( (it's a multi-platform freeware ;-( ), but it's near perfection (bye bye eclipse/pydev and scite) ... Wymypy progress, but still no new release ... This times, I work mainly on jBrout ... And now, I'm working on a new concept for GladeApp, ability to describe easily the "widgets glade tree" in the _ doc _ string of a "gladeapp", amazing ...
last updated 1 year ago #
Working on wymypy ...
wymypy has reached the point of no return ;-). Since release 1.2 i work mainly on wymypy, which is going better and better every day. Now, I use it mainly as my main MPD frontend. A lot lot lot of things were changed since the latest release 1.2 ! For my own, i had more than 10 plugins (where release 1.2 contains 3). Now i ask myself : what to release in the next public version 1.3 ?! ;-). I'd like to publish a release soon, but i won't have the time to include all newer plugins. To give you some ideas about the future, here are the plugins i'm working on :
- find : a better finder which can use (english) soundex to retrieve some files.
- albums : which presents specific folders as albums (folders must contains a cover image) and it will be able to tag albums, to retrieve specific styles
- tags : give the ability to tag mp3 (not id3 tag), and create some playlists by using the tag system
- auto shutdown : (my favorite) finish to play the current playlist and shutdown after ...
- now playing : display info (mainly from lastfm) about the current song or any song
- options : let you edit some options (mpd, wymypy, plugins)
more specific to me :
- update : update and restart mpd (too specific because it's depends a lot of how your mpd is installed)
- radio : start/stop my ices/icecast
I work a lot on the main core too. Ajax requests are now on top, a better security access from non-localhost browser, integration of a webplayer, better interface, personnal plugins (in your home) ... And i'd like to remake wymypy "Internet Explorer compliant"
last updated 1 year ago #
Les decorateurs de python
Voilà simplement un petit article sur les decorateurs de python. C'est en qqsorte ; mes notes, mais si ça peut servir à d'autres, tant mieux.
L'idée étant de présenter les decorateurs, du plus simple au plus complexe
Le decorateur le plus simple 'dec1':
A exemple 1:
def dec1(func):
return func
@dec1
def fonction(a):
return a*3
Qui est, en fait, une fonction qui reçoit en paramètre une fonction, et retourne une fonction.
Il est alors techniquement possible de retourner une autre fonction que celle passée en paramètre, et ainsi effectuer une substitution de fonction.
A exemple 2:
def dec2(func):
def give(a):
print 10*a
return give
@dec2
def fonction(a):
return a*3
Plutôt que de retourner 'func' (la fonction d'origine), on en retourne une autre, qui a la même signature.
Maintenant, un cas plus générique, et certainement plus utile. Car il retourne une fonction acceptant toutes les signatures possibles (ce décorateur peut être utilisé sur d'autres fonctions)
A exemple 3:
def dec3(func):
def gave(*k,**a):
print "BEGIN"
a= func(*k,**a)
print "END"
return a
return gave
@dec3
def fonction(a):
return a*3
De plus, il execute la fonction passée en paramètre. C'est ce genre de décorateur qui est utilisé pour logguer des appels de fonction.
Mais on peut également passé des paramètres à un décorateur, c'est le cas de l'exemple suivant :
A exemple 4:
def dec4(mot):
def dec(func):
def gave(*k,**a):
print "BEGIN",mot
a= func(*k,**a)
print "END",mot
return a
return gave
return dec
@dec4("log")
def fonction(a):
return a*3
Le decorateur reçoit le paramètre et renvoi le decorateur de "base", qui peut alors utilisé ce paramètre en son sain.
Cet exemple montre bien le chainage d'objet "callable", et l'on obtiendrait le même résultat en appelant "fonction" ainsi :
A exemple 5:
dec4("toto")(fonction)(12)
En fait, on peut retourner n'importe quel objet du moment qu'il soit "callable" (qui implémente call), comme sur l'exemple suivant où le decorateur renvoi une instance d'une classe :
A exemple 6:
def dec5(func):
class ACallable:
def __call__(self,a):
print "call with ",a
return ACallable()
@dec5
def fonction(a):
return a*3
Un autre exemple dans le même genre où l'on retourne une classe. Ce qui aura pour conséquence, à l'appel de "fonction" de retourner une instance de cette classe.
A exemple 7:
def dec6(func):
class AClass:
def __init__(self,*a,**k):
print "call with ",a,k
return AClass
@dec6
def fonction(a):
return a*3
Je vous laisse imaginer les possibilités de design de code ;-)
last updated 1 year ago #
wymypy
First public release of wymypy. A web client for MPD which comes with its own webserver ! Only needs python2.4 or more! It brings the simple feature of mpd (except "seek", but it's a question of time), and it's ajax powered !
last updated 1 year ago #
PycasaWeb
[pycasaweb]] Python bindings for the google service [picasaweb ! I'm pretty sure it's the first python bindings to picasaweb in the python language (22/08/2006) ! For now, it is in an early stage ! But it can already be used to create albums and upload pictutes ! It's used in JBrout to upload photos on a picasaweb account ! And makes Jbrout be the first available linux program to upload to picasaweb.
last updated 2 years ago #
Ajout du script allociné
Mon premier réel post, bien que je ne suis toujours pas certain de vouloir capitaliser sur cet hébergement. C'est un script qui permet de récupérer, sous forme d'une playlist m3u, l'ensemble des flux RTSP des bandes annonces récentes issues de la première page du site allocine.fr. Il peut être très pratique pour visualiser les bandes annonces avant d'aller au cinéma ;-), (et plus pratique encore si on est sous un linux (comprendre qu'il est plus difficile, avec les outils gpl, de parcourir les bandes annonces d'allocine)).
last updated 2 years ago #
Premier post
Mon "premier blog" ;-) ... En fait ; non, car je m'y étais déjà essayé dans le passé, mais l'intérêt n'était pas très profond, car je n'avais pas grand chose à dire. De ce côté là, je pense que ça n'a pas changé ; je n'ai pas grand chose à dire en plus ;-)
Je vais plutôt utiliser cet espace pour tenir "un fil de news" sur les développements que j'ai sous le coude, et qui sont publiques. Pour l'instant tout est regroupé sur mon ancien espace, qui était une sorte de Wiki/RTE (Rich Text Edit) que j'avais réalisé en php pour l'occasion. Mais sa maintenance et sa flexibilité laisse franchement à désirer.
Cet espace est géré par infogami, qui est une sorte application "wiki/blog" réalisé autour de l'excellentissime anti-framework webpy. C'est donc un "hébergement en python" qui est plus en adéquation avec mes idées/developpements que le précédent ;-).
Pour l'instant : rien n'est fait ... tout reste dispo ici, car j'hésite encore entre cet hebergement, et un hebergement python perso ;-). Ceci était juste un premier message tel qu'il pourrait être si jamais je franchissais le pas ;-)
last updated 2 years ago #