Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Lancement du projet Brython

111 views
Skip to first unread message

Pierre Quentel

unread,
Nov 25, 2012, 3:06:40 PM11/25/12
to
Bonjour,

J'annonce par ce message le lancement du projet Brython (Browser Python) qui a pour objectif de remplacer Javascript par Python comme langage de programmation des navigateurs web, y compris sur mobile. Rien que ça !

Par exemple, pour afficher "Hello world" en cliquant sur un bouton, on peut écrire ce script dans une page HTML

<script type="text/python">
def hello():
alert('Hello world')
</script>

Pour que ce script fonctionne, il faut simplement inclure le script brython.js dans le document HTML, et exécuter la fonction brython() quand la page est chargée

Techniquement, Brython est un interpréteur Python écrit en Javascript, et adapté à l'environnement du navigateur : l'essentiel du langage Python (version 3) est implémenté, sauf ce qui n'a pas de sens dans ce contexte (print, open, input) ; on y ajoute quelques mots clés comme "win" (l'équivalent de "win" en Javascript), "doc" (document), "alert", "log" (pour console.log), et tout ce qu'il faut pour construire une page HTML et interagir avec elle

Toutes les balises HTML sont représentées par une fonction intégrée ; par exemple pour créer un lien on utilise la syntaxe

link = A('Site Python',href="htt://www.python.org")

et pour ajouter ce lien dans la page HTML on l'ajoute au document (à l'objet doc) par l'opérateur <= (ça rappellera quelque chose aux utilisateurs de Karrigell et de son module HTMLTags...) :

doc <= link

Les erreurs de syntaxe et d'exécution sont affichées dans la console Javascript, en essayant de refléter les messages Python

Brython est différent de Pyjamas, qui génère une page HTML ne contenant que des scripts Javascript à partir de scripts Python. Il est plus proche de Skulpt, mais l'objectif de Skulpt n'est pas de créer des applications web, mais de développer un interpréteur Python exécutable dans un navigateur, et je n'ai pas réussi à entrer dans le code Javascript de Skulpt

Je travaille sur ce projet depuis quelques mois. Evidemment il est loin d'être complètement au point : écrire un interpréteur, ce n'est pas simple, et je découvre des bugs tous les jours. J'ai quand même implémenté quelques exemples, donc un de près de 400 lignes ; ils sont visibles sur le site http://www.brython.info (le code source des exemples est évidemment accessible par la fonction "voir source" du navigateur)

Une documentation plus complète est également disponible sur ce site. Pour l'instant tout est en français, je traduirai en anglais plus tard

Je recherche des contributeurs, à plusieurs niveaux :
- des testeurs qui essaient des bouts de code Python sur la console (http://www.brython.info/test/console.html) et signalent des bugs en cliquant sur le bouton "report bug"
- des développeurs (Python et Javascript) qui améliorent le code
- et toute personne intéressée par le projet et qui peut donner des conseils, des avis sur l'interface de programmation, etc

C'est un projet ambitieux qui, s'il atteint un stade de maturité suffisant, peut prendre une certaine importance dans la communauté Python. J'espère que plusieurs d'entre vous seront intéressés ; ils peuvent se signaler sur la liste de diffusion : https://groups.google.com/forum/?fromgroups#!forum/brython-fr

Le développement est géré sur Google Code : http://code.google.com/p/brython/
Télécharger brython.js : http://code.google.com/p/brython/downloads/detail?name=brython.js#makechanges

Cordialement,
Pierre

Nicolas

unread,
Nov 26, 2012, 4:00:11 AM11/26/12
to
Le 25/11/2012 21:06, Pierre Quentel a �crit :
> Bonjour,
>
> J'annonce par ce message le lancement du projet Brython (Browser Python) qui a pour objectif de remplacer Javascript par Python comme langage de programmation des navigateurs web, y compris sur mobile. Rien que �a !
>
> Par exemple, pour afficher "Hello world" en cliquant sur un bouton, on peut �crire ce script dans une page HTML
>
> <script type="text/python">
> def hello():
> alert('Hello world')
> </script>
>
> Pour que ce script fonctionne, il faut simplement inclure le script brython.js dans le document HTML, et ex�cuter la fonction brython() quand la page est charg�e
>
> Techniquement, Brython est un interpr�teur Python �crit en Javascript, et adapt� � l'environnement du navigateur : l'essentiel du langage Python (version 3) est impl�ment�, sauf ce qui n'a pas de sens dans ce contexte (print, open, input) ; on y ajoute quelques mots cl�s comme "win" (l'�quivalent de "win" en Javascript), "doc" (document), "alert", "log" (pour console.log), et tout ce qu'il faut pour construire une page HTML et interagir avec elle
>
> Toutes les balises HTML sont repr�sent�es par une fonction int�gr�e ; par exemple pour cr�er un lien on utilise la syntaxe
>
> link = A('Site Python',href="htt://www.python.org")
>
> et pour ajouter ce lien dans la page HTML on l'ajoute au document (� l'objet doc) par l'op�rateur <= (�a rappellera quelque chose aux utilisateurs de Karrigell et de son module HTMLTags...) :
>
> doc <= link
>
> Les erreurs de syntaxe et d'ex�cution sont affich�es dans la console Javascript, en essayant de refl�ter les messages Python
>
> Brython est diff�rent de Pyjamas, qui g�n�re une page HTML ne contenant que des scripts Javascript � partir de scripts Python. Il est plus proche de Skulpt, mais l'objectif de Skulpt n'est pas de cr�er des applications web, mais de d�velopper un interpr�teur Python ex�cutable dans un navigateur, et je n'ai pas r�ussi � entrer dans le code Javascript de Skulpt
>
> Je travaille sur ce projet depuis quelques mois. Evidemment il est loin d'�tre compl�tement au point : �crire un interpr�teur, ce n'est pas simple, et je d�couvre des bugs tous les jours. J'ai quand m�me impl�ment� quelques exemples, donc un de pr�s de 400 lignes ; ils sont visibles sur le site http://www.brython.info (le code source des exemples est �videmment accessible par la fonction "voir source" du navigateur)
>
> Une documentation plus compl�te est �galement disponible sur ce site. Pour l'instant tout est en fran�ais, je traduirai en anglais plus tard
>
> Je recherche des contributeurs, � plusieurs niveaux :
> - des testeurs qui essaient des bouts de code Python sur la console (http://www.brython.info/test/console.html) et signalent des bugs en cliquant sur le bouton "report bug"
> - des d�veloppeurs (Python et Javascript) qui am�liorent le code
> - et toute personne int�ress�e par le projet et qui peut donner des conseils, des avis sur l'interface de programmation, etc
>
> C'est un projet ambitieux qui, s'il atteint un stade de maturit� suffisant, peut prendre une certaine importance dans la communaut� Python. J'esp�re que plusieurs d'entre vous seront int�ress�s ; ils peuvent se signaler sur la liste de diffusion : https://groups.google.com/forum/?fromgroups#!forum/brython-fr
>
> Le d�veloppement est g�r� sur Google Code : http://code.google.com/p/brython/
> T�l�charger brython.js : http://code.google.com/p/brython/downloads/detail?name=brython.js#makechanges
>
> Cordialement,
> Pierre
>
Bonjour Pierre,

C'est super ambitieux mais �a me plait bien comme id�e. Je regarde �a de
plus pr�s d�s que j'ai un moment.

Nicolas

PiLS

unread,
Nov 26, 2012, 12:06:01 PM11/26/12
to
Pierre Quentel <pierre....@gmail.com> ᅵ ploppᅵ:
> Bonjour,
Bonjour

> - des testeurs qui essaient des bouts de code Python sur la console (http://www.brython.info/test/console.html) et signalent des bugs en cliquant sur le bouton "report bug"

Ca devrait ï¿œtre dans mes cordes. Je peux faire un peu de traduction
aussi, au besoin.


--
PiLS

Laurent Pointal

unread,
Nov 26, 2012, 5:09:47 PM11/26/12
to
Pierre Quentel wrote:
<zip>

Intéressant, tu devrais dupliquer l'annonce sur pyt...@aful.org, sur l'afpy
(si tu veux je peux faire ces deux là) - voir sur c.l.p.announce.

A+
Laurent.

Pierre Quentel

unread,
Nov 27, 2012, 3:25:47 AM11/27/12
to laurent...@laposte.net
Bonjour Laurent,

Bonne idée, si tu peux faire l'annonce vers l'AFUL et l'AFPY ça m'intéresse. Pour démarrer je me limite aux listes francophones, je me laisse quelques semaines d'échanges et d'avis avant de publier plus largement sur les listes clp et clp-announce

A+
Pierre

|-| /-\\ |_ ()7 [°¿°]

unread,
Dec 25, 2012, 4:28:33 PM12/25/12
to
Bonsoir !

D'abord, je m'excuse du d�lai, mais je n'ai plus acc�s � ce newsgroup que de
temps � autre...

Pour le projet, l'id�e est excellente. utiliser Python comme langage de
script d'un navigateur ouvre plein d'horizons.

Mais, ce serait-ce pas ce qui est d�j� disponible sous Internet-Explorer,
avec l'Active-scripting ?
Voici le code-source d'un exemple qui fonctionne (le fichier peut s'appeler
"meteopython.hta") :

<hta:application
windowstate="normal"
caption="no"
singleinstance="yes"
/>
<html>
<head>

<script language=Python>
def Init():
self.resizeTo(480,270);
self.moveTo(10,10)

def meteo(num):
obj = document.getElementById('METEODIV')
st = '<a href="http://ponx.org/ponx/guie.htm"><img
src="http://meteo.region-nord.com/webmestre/prev/j'+num+'.jpg"
alt="prevision meteo" style="border:none"> </a>'
obj.innerHTML = st

</script>
</head>

<body bgColor=#FFFFFF background="" scroll=no onload="Init();">
<FORM>
<input ID="bt1" name="bt1" type="button" style="width:100px"
VALUE="Aujourd'hui" onmousedown="meteo('1')" />
<input ID="bt2" name="bt2" type="button" style="width:100px" VALUE="Demain"
onmousedown="meteo('2')" />
<input ID="bt3" name="bt3" type="button" style="width:100px"
VALUE="Apr�s-Demain" onmousedown="meteo('3')" /><br>

<blockquote>
<DIV id="METEODIV">MMEETTEEOO</DIV>
</blockquote>
</FORM>

<script language=Python>
meteo('1')
</script>
</body></html>



---------------------------------------
(test� sous Windows 7 & IE-9 et sous Windows 8 et IE-10, avec Python 2.7)
---------------------------------------
@-salutations
--
Michel Claveau



Nicolas

unread,
Dec 26, 2012, 5:44:28 AM12/26/12
to
Le 25/12/2012 22:28, |-| /-\ |_ ()7 [���] a �crit :
> Bonsoir !
>
> D'abord, je m'excuse du d�lai, mais je n'ai plus acc�s � ce newsgroup
> que de temps � autre...
>
> Pour le projet, l'id�e est excellente. utiliser Python comme langage de
> script d'un navigateur ouvre plein d'horizons.
>
> Mais, ce serait-ce pas ce qui est d�j� disponible sous
> Internet-Explorer, avec l'Active-scripting ?
>
> ---------------------------------------
> (test� sous Windows 7 & IE-9 et sous Windows 8 et IE-10, avec Python 2.7)
> ---------------------------------------
> @-salutations

Et avec Firefox, Chrome, Opera... ?
Et sous Linux, OS-X, Android... ?


michel....@gmail.com

unread,
Dec 26, 2012, 8:53:02 AM12/26/12
to
Le mercredi 26 décembre 2012 11:44:28 UTC+1, Nicolas a écrit :

> Et avec Firefox, Chrome, Opera... ?
> Et sous Linux, OS-X, Android... ?

Re !

D'abord, ma réponse n'était pas une critique, mais une suggestion de source d'inspiration. D'autant plus que Brython devra utiliser différentes techniques, selon les navigateurs (par exemple, Opera et Chrome ont des architectures très différentes)

Ensuite, l'Active-scripting n'existe que pour IE (6, 7, 8, 9 et 10), Maxthon, Lavig, Avant-Browser, World-browser, celui d'Orange et quelques autres.
Alors, pour opera, ben non, ça ne marchera pas. Pour FF ou Chrome (et Chromium et SRware-Iron), il faut installer, respectivement, IE-frame ou Chrome-frame.

Ceci dit, lorsque j'ai voulu tester Brython avec IE-10, ça répond que HTML-5 n'est pas supporté, or c'est le navigateur le plus avancé sur ce point.
Donc, je me demande quels navigateurs seront ciblés par Brython...

@+
--
Michel Claveau

Pierre Quentel

unread,
Dec 31, 2012, 8:59:09 AM12/31/12
to
> Ceci dit, lorsque j'ai voulu tester Brython avec IE-10, ça répond que HTML-5 n'est pas supporté, or c'est le navigateur le plus avancé sur ce point.
>
> Donc, je me demande quels navigateurs seront ciblés par Brython...

Bonjour,

Brython cible naturellement tous les navigateurs. Jusqu'à présent j'avais testé sur Chrome et Firefox sur un PC sous Windows XP, le navigateur Android sur un Samsung Galaxy et Safari sur Apple. Quand j'ai testé sur Opera, tout a marché du premier coup. En voyant ton message, j'ai essayé sur IE8 et là, patatras : j'ai des messages d'erreur en pagaille

Le problème vient du fait que IE, contrairement aux autres navigateurs, n'a pas l'air de supporter les classes DOM standard : Node, HTMLDocument, HTMLHtmlElement, que j'utilise dans Brython : au chargement, j'ai le message d'erreur "Error: 'HTMLDocument' is undefined"

Est-ce normal, et y a-t-il un moyen de contourner le problème ? Je n'ai rien vu de concluant sur Internet

- Pierre Quentel

Laurent Pointal

unread,
Jan 1, 2013, 1:44:52 PM1/1/13
to
? JQuery peut-être ?

>
> - Pierre Quentel
--
Laurent POINTAL - laurent...@laposte.net

Michel Claveau - MVP

unread,
Jan 10, 2013, 6:18:44 PM1/10/13
to
Re !

> j'ai essayé sur IE8

IE-8 est trop limité, côté HTML-5 ; sur ce point, il vaut mieux utiliser
IE-9 ou IE-10 (attention, il y a deux versions).

Pour IE-8, JQuery, signalé par Laurent Pointal peut aider, en émulant
plusieurs aspect de HTML-5. Mais, AMHA, il vaut mieux miser sur le
futur, avec IE-9/10 (d'ailleurs, qui utilisent les anciennes versions de
FF ?)

Il y aurait aussi la possibilité d'utiliser des approches techniques
différentes selon le navigateur (exemple : COM avec IE, NaCl avec Chrome,
etc.) Un peu comme Pyglet, qui a des accès pour linux et d'autres pour
Windows. Mais, cette démarche interessera t'elle les développeurs ?

@+
--
MCi






Pierre Quentel

unread,
Jan 11, 2013, 5:26:52 AM1/11/13
to
> Pour IE-8, JQuery, signalé par Laurent Pointal peut aider, en émulant
> plusieurs aspect de HTML-5. Mais, AMHA, il vaut mieux miser sur le
> futur, avec IE-9/10 (d'ailleurs, qui utilisent les anciennes versions de
> FF ?)
J'aimerais bien passer à IE9 ou +, mais je suis sur XP et je ne vais pas changer de PC juste pour avec la dernière version d'IE...
Pour Brython je souhaite rester sur les standards HTML5, c'est trop compliqué de gérer les alternatives
- Pierre
0 new messages