Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Lancement du projet Brython

9 réponses
Avatar
Pierre Quentel
Bonjour,

J'annonce par ce message le lancement du projet Brython (Browser Python) qu=
i a pour objectif de remplacer Javascript par Python comme langage de progr=
ammation des navigateurs web, y compris sur mobile. Rien que =E7a !

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

<script type=3D"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=E9cuter la fonction brython() quand la pag=
e est charg=E9e

Techniquement, Brython est un interpr=E9teur Python =E9crit en Javascript, =
et adapt=E9 =E0 l'environnement du navigateur : l'essentiel du langage Pyth=
on (version 3) est impl=E9ment=E9, sauf ce qui n'a pas de sens dans ce cont=
exte (print, open, input) ; on y ajoute quelques mots cl=E9s comme "win" (l=
'=E9quivalent de "win" en Javascript), "doc" (document), "alert", "log" (po=
ur console.log), et tout ce qu'il faut pour construire une page HTML et int=
eragir avec elle

Toutes les balises HTML sont repr=E9sent=E9es par une fonction int=E9gr=E9e=
; par exemple pour cr=E9er un lien on utilise la syntaxe

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

et pour ajouter ce lien dans la page HTML on l'ajoute au document (=E0 l'ob=
jet doc) par l'op=E9rateur <=3D (=E7a rappellera quelque chose aux utilisat=
eurs de Karrigell et de son module HTMLTags...) :

doc <=3D link

Les erreurs de syntaxe et d'ex=E9cution sont affich=E9es dans la console Ja=
vascript, en essayant de refl=E9ter les messages Python

Brython est diff=E9rent de Pyjamas, qui g=E9n=E8re une page HTML ne contena=
nt que des scripts Javascript =E0 partir de scripts Python. Il est plus pro=
che de Skulpt, mais l'objectif de Skulpt n'est pas de cr=E9er des applicati=
ons web, mais de d=E9velopper un interpr=E9teur Python ex=E9cutable dans un=
navigateur, et je n'ai pas r=E9ussi =E0 entrer dans le code Javascript de =
Skulpt

Je travaille sur ce projet depuis quelques mois. Evidemment il est loin d'=
=EAtre compl=E8tement au point : =E9crire un interpr=E9teur, ce n'est pas s=
imple, et je d=E9couvre des bugs tous les jours. J'ai quand m=EAme impl=E9m=
ent=E9 quelques exemples, donc un de pr=E8s de 400 lignes ; ils sont visibl=
es sur le site http://www.brython.info (le code source des exemples est =E9=
videmment accessible par la fonction "voir source" du navigateur)

Une documentation plus compl=E8te est =E9galement disponible sur ce site. P=
our l'instant tout est en fran=E7ais, je traduirai en anglais plus tard

Je recherche des contributeurs, =E0 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=E9veloppeurs (Python et Javascript) qui am=E9liorent le code
- et toute personne int=E9ress=E9e par le projet et qui peut donner des con=
seils, des avis sur l'interface de programmation, etc

C'est un projet ambitieux qui, s'il atteint un stade de maturit=E9 suffisan=
t, peut prendre une certaine importance dans la communaut=E9 Python. J'esp=
=E8re que plusieurs d'entre vous seront int=E9ress=E9s ; ils peuvent se sig=
naler sur la liste de diffusion : https://groups.google.com/forum/?fromgrou=
ps#!forum/brython-fr

Le d=E9veloppement est g=E9r=E9 sur Google Code : http://code.google.com/p/=
brython/
T=E9l=E9charger brython.js : http://code.google.com/p/brython/downloads/det=
ail?name=3Dbrython.js#makechanges

Cordialement,
Pierre

9 réponses

Avatar
Nicolas
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
Avatar
PiLS
Pierre Quentel à 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
Avatar
Laurent Pointal
Pierre Quentel wrote:
<zip>

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

A+
Laurent.
Avatar
Pierre Quentel
Le lundi 26 novembre 2012 23:09:48 UTC+1, Laurent Pointal a écrit :
Pierre Quentel wrote:

<zip>



Intéressant, tu devrais dupliquer l'annonce sur , sur l' afpy

(si tu veux je peux faire ces deux là) - voir sur c.l.p.announce.



A+

Laurent.



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 laiss e quelques semaines d'échanges et d'avis avant de publier plus largement sur les listes clp et clp-announce

A+
Pierre
Avatar
|-| /-\\ |_ ()7 [°¿°]
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
Avatar
Nicolas
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... ?
Avatar
michel.claveau
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 so urce d'inspiration. D'autant plus que Brython devra utiliser différentes techniques, selon les navigateurs (par exemple, Opera et Chrome ont des arc hitectures très différentes)

Ensuite, l'Active-scripting n'existe que pour IE (6, 7, 8, 9 et 10), Maxtho n, 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 Chr omium et SRware-Iron), il faut installer, respectivement, IE-frame ou Chrom e-frame.

Ceci dit, lorsque j'ai voulu tester Brython avec IE-10, ça répond que H TML-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
Avatar
Pierre Quentel
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 c e point.

Donc, je me demande quels navigateurs seront ciblés par Brython...



Bonjour,

Brython cible naturellement tous les navigateurs. Jusqu'à présent j'ava is 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 O pera, 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, HT MLHtmlElement, 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 r ien vu de concluant sur Internet

- Pierre Quentel
Avatar
Laurent Pointal
Pierre Quentel wrote:

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



? JQuery peut-être ?


- Pierre Quentel


--
Laurent POINTAL -