MakeMake The Dwarf Planet is a feed agregator.

Dans les coulisses de Python : Comment fonctionne async/await ?

by Camille Roux from Human coders

Plongez dans les mécanismes internes de Python pour comprendre le fonctionnement d’async/await. Cet article technique explore comment la simple utilisation des mots-clés async et await transforme votre code en programme asynchrone, permettant aux développeur·se·s d’optimiser leurs applications en exécutant des tâches pendant les temps d’attente.


Commentaires
L'article Dans les coulisses de Python : Comment fonctionne async/await ? a été posté dans la catégorie Python de Human Coders News

Lire la suite…

Nouveau livre sur Python et Numpy

by petermaths from AFPy discuss

Bonjour le forum

Je viens de faire publier sur amazon.fr la 2e édition de mon livre “Invitation au calcul numérique avec Python et Numpy” (en version kindle et brochée de 828 pages comprenant 1500 exemples). Ce livre est composé de trois parties, la première concerne une introduction à Python, la deuxième concerne Numpy et la dernière est orientée vers les mathématiques numériques (polynôme, matrice, intégrale) avec différentes méthodes (certaines n’avaient encore jamais été présentées en langue française). Je tiens préciser que l’IA n’a jamais été utilisée pour la rédaction, pourquoi ? j’en ai horreur et ne me sentirai pas légitime en tant qu’auteur.

En cas d’acquisition, je serai bien entendu ravi d’accueillir toutes critiques constructives (positives et négatives).

Peter

3 messages - 2 participant(e)s

Lire le sujet en entier

Lire la suite…

Jupyter, notebooks quelle formations / vidéos.

by colin from AFPy discuss

Bonjour tout le monde, j’essaie de me former a jupyter lab et j’ai un peu de mal a trouver un support qui me convienne.

Je suis navré le message suivant est assez confus, c’est lié au fait que j’ai bien l’impression de passer a coté de quelque chose mais je n’arrive pas a le nommer.

Reprennons :

Quand j’ai effleuré les notebooks c’etait encore des “notebook ipythons” ou des notebooks jupyter, en gros un python plus sympa avec des couleurs plus la notion de cellule que j’avais aussi pu voir dans matlab a l’époque (un peu comme dans spyder).

Bref j’utilise parfois ipython pour de la mise au point :

  • Je fais mes commandes puis des %save fichier.py je curette ensuite.
  • pour des scripts système parce qu’on peut facilement recuprer les sorties et interpoler dans des commances tyquement fichiers = ! ls puis
for f in fichiers:
   ! mv  {f} {f.replace('mp3', 'csv')}

Quand je cherche des vidéos sur jupyter suis souvent assez déçu, on expliquer comment manier l’interface. Parfois des subtiltés sur l’environnement du lab, non pas que cela ne soit pas intéressant mais j’ai pas vraiment l’impression d’avancer.

Pour moi c’est un peu comme si on m’apprenait python sans me parler de dir() ou __dict__ , getattr ni de inspect ni de itertools ou collections.

Comment faire des notebook propres et faciliter leur export ? / Partage ?
Versionner les notebooks ? Les bonnes pratiques ?
Bref tout un tas de question sur l’artisanat jupyteresque…

https://www.youtube.com/watch?v=RFabWieskak Typiquement cette vidéo semble intéressante et est faite par des pointures pourtant j’en sors assez frustré, je ne vois pas trop comment un.e debutant.e. va aller faire son propre widget (le sujet est abordé a la fin) .

Bref quelles seraient les connaissances fondamentales qu’une personne expérimentée en jupyterlab / notebook suggérerait de connaître. Les trucs simples qu’on oublie ou qu’on ne voit pas forcément au début.

Typiquement l’equivalent notebook de ceci : https://www.youtube.com/watch?v=OSGv2VnC0go ou bien cela https://www.youtube.com/watch?v=w5J_WrcjwR0

3 messages - 3 participant(e)s

Lire le sujet en entier

Lire la suite…

Kivy : un cadriciel graphique unique en Python

by Goffi,vmagnin,BAud,Julien Jorge,orfenor,tisaac,palm123,dovik from Linuxfr.org

Kivy est un cadriciel (framework) graphique, permettant de développer des interfaces tactiles (ou utilisable à la souris) sur toutes les plateformes, y compris mobiles. Il s'accompagne d'une suite de logiciels très pratiques que nous allons présenter ici.

logo Kivy

Sommaire

Kivy : boîte à outils graphique multi-plateformes

Kivy permet de créer des interfaces graphiques naturellement adaptées aux écrans tactiles (mais qui restent utilisables sur un environnement de bureau traditionnel, à la souris et sans écran tactile). Il est écrit principalement en Python mais les parties critiques sont écrites en Cython, ce qui lui permet d’avoir de bonnes performances.

Une interface Kivy peut s’écrire de deux façons (ou, plus couramment, par une combinaison de ces deux façons) : en Python directement, ou via kv, une syntaxe déclarative dont nous parlons plus bas.

Pour vous donner une idée, voici un exemple de hello world repris du site officiel de Kivy :

from kivy.app import App
from kivy.uix.button import Button

class TestApp(App):
    def build(self):
        return Button(text='Hello World')

TestApp().run()

Ce qui donnera :
capture d’écran du hello world

Une interface est composée de « widgets » agencés via des « layouts ». Certains widgets permettent de facilement mettre en place des composants communs de nos jours, comme par exemple le widget Carousel :
capture d’un widget Carousel

D’autre part, Kivy fournit des outils qui simplifient la vie du développeur ou de la développeuse, en particulier un système de propriétés (à ne pas confondre avec les propriétés Python) qui permet de mettre automatiquement l’interface à jour quand elles sont modifiées, ou de facilement attacher une fonction de rappel (« callback »), voir plus bas pour un exemple simple. On peut aussi citer un mécanisme d’animations très pratique et efficace.

kv : interface graphique en déclaratif

kv est un langage permettant de décrire des interfaces, il met à profit les propriétés mentionnées plus haut et l’interface va se mettre à jour automatiquement quand des propriétés utilisées dans kv sont modifiées.

Reprenons le hello world vu plus haut, et faisons-le avec kv:

Widget:
    Button:
        text: "Hello World"

Plutôt simple non ?
Le code kv est généralement mis dans des fichiers séparés avec l’extension .kv.

Les propriétés

Kivy a donc un concept de propriété, qui permettent la liaison de données bidirectionnelles (two-way data binding), ou en d’autres termes de facilement avoir l’état mis à jour entre le code python et l’interface décrite dans le fichier kv. C’est à l’usage très pratique et facile.

Un exemple va sans doute aider à comprendre.

Commençons par faire un environnement virtuel Python avec Kivy:

$ mkdir demo

$ cd demo

$ python -m venv env

$ source env/bin/activate

$ pip install kivy

Ensuite créez le fichier demo.py suivant :

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import NumericProperty

class CompteurWidget(BoxLayout):
    compteur = NumericProperty(0)

    def increment(self):
        self.compteur += 1

class DemoApp(App):
    def build(self):
        return CompteurWidget()

DemoApp().run()

Et maintenant, dans le même répertoire, ajoutez le fichier demo.kv suivant, ce dernier sera automatiquement découvert par Kivy parce qu’il s’appelle comme notre application (DemoApp) sans le suffixe App et en minuscule :


<CompteurWidget>:
    orientation: 'vertical'
    padding: 20

    Label:
        text: str(root.compteur)
        font_size: 30

    Button:
        text: "Incrémenter"
        on_press: root.increment()

Il ne nous reste plus qu’à lancer le programme :

python demo.py

Et à admirer :

capture d’écran du programme de démo

Le label se met automatiquement à jour quand le compteur compteur est incrémenté.

La lectrice ou le lecteur assidu de DLFP pourra faire un TapTempo en exercice.

Note: Ne vous arrêtez pas au fait que l’UI est un peu "moche" par défaut, il y a des extensions beaucoup plus attractives (cf. KivyMD plus bas), et il est très facile de personnaliser l’interface et d’en faire une très belle en modifiant un peu ses fichiers .kv.

Plyer : accéder facilement aux fonctionnalités matérielles de votre appareil

Plyer est une bibliothèque permettant d’accéder à nombre de fonctions utiles de manière indépendante de la plateforme. Ainsi vous avez une API commune pour afficher une notification, demander l’état de la batterie, faire vibrer l’appareil, faire de la synthèse vocale de texte (« text-to-speech »), ouvrir un fichier avec le dialogue natif de la plateforme, etc.

Bien que développé par la même équipe que Kivy, ce paquet est utilisable indépendamment et est donc particulièrement utile pour n’importe quel projet multi-plateformes. Référez-vous à la page du projet pour avoir un tableau des fonctionnalités supportées selon les plateformes, et à la documentation pour plus de détails.

Python For Android : utiliser Python… sur Android

Si vous souhaitez distribuer votre application sur Android, vous allez devoir avoir une version de Python compilée pour cette plateforme, ainsi que de tous les paquets nécessitant une compilation.

C’est le rôle de Python pour Android, qui est une collection d’outils qui s’appuient sur l’Android SDK pour permettre d’utiliser Kivy ou d’autre paquets Python sur Android, et ainsi faire votre propre distribution Python.

Si vous utilisez un paquet qui n’est pas en pur Python (c’est-à-dire qu’il y a des parties à compiler) et qui n’est pas encore disponible ou qui l’est mais dans une version trop ancienne, vous pouvez écrire ou mettre à jour des « recettes » (recipes en anglais) qui indiquent comment compiler. Référez-vous à la documentation pour voir comment faire.

Notez toutefois qu’il y a une pénalité à utiliser du Python par rapport à une application dans un langage compilé : il faut charger l’interprète au démarrage, et au tout premier lancement de votre application (et uniquement au premier) il y a aura une phase de décompression de vos fichiers. En dehors de ces petits inconvénients, ça fonctionne très bien.

Là encore, le projet est indépendant de Kivy et peut être utilisé avec un autre cadriciel.

Kivy for iOS : déployez sur les appareils Apple

À l’instar d’Android, l’équipe de Kivy fournit les outils pour faire votre distribution Python pour iOS.

Il vous faudra posséder une machine Apple pour les utiliser, à cause des restrictions imposées par cette plateforme (ceci n’est pas spécifique à Kivy pour iOS, mais s’applique à tous les outils pour développer sur iOS).

Ainsi avec une seule base de code (et après avoir passé un peu de temps pour configurer correctement les outils de compilation), vous pouvez déployer votre application Kivy/Python sur toutes les plateformes majeures (hormis le web, pour lequel il existe d’autres options comme Brython, Pyodide ou PyScript, mais c’est un sujet pour une autre dépêche).

Pyjnius : utiliser l’API Java Android depuis Python

Parfois l’utilisation de Plyer mentionné plus haut et de la bibliothèque standard Python ne suffisent pas, et vous avez besoin d’accéder à l’API d’Android, mais cette dernière est faite pour être utilisée avec Java ou Kotlin.

Pour pouvoir utiliser l’API d’Android depuis Python, PyJNIus est disponible. Ce paquet permet d’accéder aux classes Java comme à des classes Python en utilisant JNI (« Java Native Interface » ou « Interface Native de Java »).

Ce paquet fournit une méthode autoclass qui convertit automatiquement une classe Java en Python, c’est très facile à utiliser et souvent suffisant pour les cas simples.

KivyMD, des widgets Material Design

KivyMD n’est pas un projet officiel de l’équipe Kivy, mais un projet tiers dédié à la création d’un ensemble de Widgets thémables adoptant Material Design.

Image d’exemple de KivyMD issue de la documentation

L'image ci-dessus est issue de la documentation de KivyMD, vous trouverez également des démos vidéo sur le dépôt du projet.

Quelques limitations

Une petite note sur mon expérience personnelle (Goffi). Kivy est un excellent cadriciel, et l’équipe est accueillante et réactive : c’est un projet que je recommanderais en général. Ceci dit, dans mon cas particulier (un client XMPP ayant de nombreuses fonctionnalités), j’ai quelques limitations qui me poussent actuellement à chercher des alternatives, notamment basées sur Qt (PyQt et PySide) :

  • l’accessibilité est un problème majeur. L’équipe y travaille, mais aujourd’hui les applications Kivy ne sont pas accessibles. C’est notamment dû au fait que l’interface utilisateur est entièrement gérée par Kivy, au lieu d’utiliser des composants natifs, et c’est un point complètement bloquant pour moi.
  • il n’y a pas de webview ou de rendu HTML natif, ce qui est bloquant parce que je fais du rendu de blogs.
  • le rendu de texte est incomplet, notamment sur les plateformes mobiles. C’est compliqué de faire un rendu riche avec des émojis, par exemple, un gros problème pour une application de messagerie de nos jours.
  • le support des portails Freedesktop est inexistant : il faut faire l’implémentation à la main, alors qu’il est natif sur des cadriciels majeurs comme GTK ou Qt. Je pense par exemple à l’ouverture ou l’enregistrement de fichier. Les portails sont particulièrement nécessaires si on veut voir son application sur Flatpak. Plus de détails sur ce ticket.
  • le support Wayland existe, mais lors de mes tests sur des distributions GNU/Linux sur Pinephone, il n’a pas fonctionné et je n’ai pas pu afficher l’application.
  • le chargement de l’interprète Python prend un certain temps, ce qui rend le lancement de l’application sur plateformes mobiles telle qu’Android et probablement iOS (que je n’ai pas testé) un peu lent. Sachant que sur ces plateformes l’application peut être tuée à n’importe quel moment auquel cas il faut tout relancer, cela peut mener à une mauvaise expérience utilisateur. Ceci dit, avec une distribution optimisée (en enlevant les paquets non utilisés), et sur les téléphones actuels qui sont très puissants, le problème est sans doute moindre.

Notez que je n’ai pas eu l’occasion de travailler avec Kivy récemment, peut-être que ces remarques ne sont plus à jour. Merci d’indiquer en commentaires s’il y a eu de l’évolution sur ces points.

Aussi, mon cas d’utilisation est très demandant (rendu HTML, affichage de texte performant, etc). Dans la plupart des cas, Kivy remplit sans problème toutes les cases (sauf l’accessibilité, qui reste son problème le plus important à mon sens).

Conclusion

Comme vous pouvez le voir, un travail considérable a été effectué sur Kivy et son écosystème, et il en sort un cadriciel performant, pratique, et qui peut potentiellement fonctionner sur la plupart des plateformes. Kivy est agréable à utiliser, et dispose d’une communauté très active et disponible.

Ce cadriciel mérite de s’y attarder, et est une option sérieuse si vous voulez développer un projet rapidement pour une ou plusieurs plateformes.

Une note d’histoire

Cette dépêche a été commencée le 04 octobre 2018 à 14:19 (au premier jour de la Pycon FR 2018, à Lille, où une partie de l’équipe de Kivy était présente). Je crois que c’est haut la main la dépêche qui est restée le plus longtemps dans l’espace de rédaction. Comme quoi, tout vient à point à qui sait attendre, comme dirait l’autre.

Merci à toutes les personnes qui ont participé à la correction de la dépêche.

Télécharger ce contenu au format EPUB

Commentaires : voir le flux Atom ouvrir dans le navigateur

Lire la suite…

PyConFR 2025, à Lyon du 30 octobre au 2 novembre

by grewn0uille,Benoît Sibaud from Linuxfr.org

L’Association Francophone Python (AFPy) organise la PyConFR 2025 du jeudi 30 octobre au dimanche 2 novembre. Pour cette 16e édition, nous sommes accueillis par le Campus René Cassin de Lyon !

Logo de la PyConFR 2025

La PyConFR, c’est un évènement gratuit sur 4 jours autour du langage de programmation Python. Elle est composée deux jours de développements participatifs (sprints), puis de deux jours de conférences et ateliers.

L’appel à propositions est ouvert jusqu’au 20 juillet. Peu importe votre niveau en Python, vous pouvez proposer un sujet de sprint, de conférence ou d’atelier ! Venez parler de développement logiciel, de diversité, de communauté, faire un retour d’expérience sur un outil, présenter votre projet, un domaine d’activité…

Comme tous les ans, nous proposons aux personnes habituellement peu représentées en conférence de l’aide pour trouver un sujet, rédiger la proposition de conférence, rédiger le support de conférence et pour répéter. Vous pouvez nous contacter à l’adresse diversite@afpy.org si vous pensez en avoir besoin.

Enfin, la PyConFR est entièrement financée par les sponsors. Si vous connaissez des sponsors potentiels, n’hésitez pas à leur parler de l’évènement !

Télécharger ce contenu au format EPUB

Commentaires : voir le flux Atom ouvrir dans le navigateur

Lire la suite…

Yaal Coop accueille les journées Libre Entreprise 2025

by Sébastien Birolleau <sebastien@yaal.coop> from Yaal

Les 24 et 25 avril 2025 se sont déroulées les journées Libre Entreprises comme chaque année. C'est l'occasion pour le réseau de se retrouver pour un moment convivial et de partage. Cette année, Yaal Coop accueillait pour la première fois l'événement.

Libre Entreprise, c'est quoi ?

Le réseau Libre entreprise est un groupement d'entreprises qui partagent des valeurs communes fortes : la promotion du logiciel libre, la transparence, l'horizontalité, l'autogestion et une juste répartition de la rémunération.

Initié par 3 entreprises fondatrices, le réseau voit le jour en 2000. Aujourd'hui, 12 entreprises libres continuent de faire vivre et évoluer ces valeurs avec autant de conviction qu'il y a 25 ans.

Notre charte le raconte à sa manière.

À la découverte du réseau LE

Entre nous, on parle du réseau LE ou simplement LE que l'on prononce : "elleux". Un heureux hasard quand on défend aussi l'inclusivité au sein de nos entreprises libres.

J'ai intégré Yaal Coop il y a quelques mois, en octobre 2024. Ma rencontre du réseau Libre entreprise est une totale découverte, et les journées LE une grande première.

Au delà des personnalités engagées et ouvertes du réseau, j'ai surtout découvert un collectif porteur d'une ambition vieille de 25 ans et qui récolte aujourd'hui quelques lauriers. Le logiciel libre aurait très bien pu finir oublié ou relégué à un système marginal, mais les promoteurs et créateurs ont su, par leur engagement et leur persévérance faire connaître et reconnaître ses valeurs :

  • la liberté d'utiliser le logiciel
  • la liberté de copier le logiciel
  • la liberté d'étudier le logiciel
  • la liberté de modifier le logiciel et de redistribuer les versions modifiées.

Derrière ces principes, se dressent des idées plus grandes, plus larges, des valeurs humaines au-delà du logiciel, une vision sociétale qui vise à replacer la coopération des individus au centre et en priorité des rapports de rentabilité, de profit et de propriété.

Les journées LE

Organisées en forum ouvert (ou non-convention), plusieurs sujets ont été proposés puis traités sous formes diverses : débats, ateliers, présentation, échanges d'expériences, etc.

Le tout régit par des règles contraignantes:

  • les personnes présentes sont les bonnes personnes,
  • ça commence quand ça commence,
  • ça finit quand ça finit,
  • ce qui se passe est ce qui pouvait arriver de meilleur.

Et une loi impérative : la loi des deux pieds. Si je ne participe pas et que je n'apprends rien, alors je suis mes deux pieds pour faire autre chose, quoique ce soit. Ainsi, on peut sortir et rejoindre un sujet quand bon nous semble et personne ni ne se vexe, ni ne juge, puisque nous sommes contraints de nous soumettre à cette loi supérieure entre toutes.

Immersion

Après un temps de proposition d'ateliers et réservations de salles et créneaux, notre première journée pouvait commencer. Un suivi en direct de tout ce qui est abordé est possible grâce à une prise de note commune. Ainsi, tout en assistant à une présentation, je peux suivre le débat qui a lieu quelques mètres plus loin via le pad.

J'ai d'abord assisté à l'atelier de création d'une matrice des compte-rendus LE. Chaque mois, chaque entreprise libre produit un compte rendu à l'attention du réseau. Ces compte rendus sont l'occasion de générer des échanges et de provoquer des résolutions et conseils au sein du réseau. Il était important de revenir sur ce pilier de notre fonctionnement en proposant une matrice qui recense les sujets attendus par les lecteurs.

Nous avons ensuite enchaîné avec la Communication du réseau. Nous avons réfléchi à comment marquer notre identité et comment communiquer sur le réseau LE et ses membres au sens large. Nous allons tester à petite échelle sur notre salon public dans un premier temps. Nos efforts pourraient également aboutir à la création d'un forum LE.

J'ai ensuite suivi les échanges entre plusieurs membres historiques du réseau sur leurs problématiques liées au nombre de salariées, au besoin d'un nouveau souffle, au manque d'implication, etc. Ces échanges sont éloignées des problématiques d'une jeune coopérative comme Yaal Coop, mais il n'en reste que ces flux d'expériences et de diversité sont très enrichissants.

Cette première journée s'est poursuivi autour d'un verre suivi d'un dîner au restaurant. Miam !

Lors de la deuxième journée, l'organisation a été plus informelle. Un nouveau sujet était proposée à la volée à la clôture du précédent. S'en suivaient alors des échanges entre les participants jusqu'à clôture du sujet. Nous avons échangé sur les méthodes de communication et les formations afférentes, l'équilibre vie pro/perso, Les finances, la communication interne...

J'ai malheureusement manqué certains ateliers, dont j'ai pu saisir la teneur via les compte-rendus. Ainsi, bien d'autres sujets ont été abordés et débattus : les embauches, la protection du gérant, la gouvernance et la prise de décision, (...), et notre projet commun : le Label RSE Libre Entreprise

En conclusion

Cette expérience enrichissante (que je serai ravi de renouveler l'année prochaine) m'aura appris à mieux comprendre et connaître les motivations et les enjeux de notre réseau d'entreprises libres. Nous avons à cœur de nous soutenir et de nous entraider avec l'ambition d'agir sur notre société, de créer une proposition nouvelle. Du moins, être innovants au sein de nos structures, c'est déjà beaucoup. Chaque entité du réseau se questionne sur le rapport au travail, sur la qualité de vie, sur notre impact sociétal. chacune multiplie aussi les tentatives et reste à l'écoute pour toujours améliorer et parfaire nos fonctionnements internes et nos rapports avec nos partenaires et clients.

Le réseau Libre entreprise transcende le logiciel libre pour devenir un espace d'entraide et d'engagement afin de promouvoir des modèles plus justes et respectueux de l'humain.

Lire la suite…

AFPy

by AFPy - Mastodon from AFPy - Mastodon

PyConFR 2025 from October 30 to November 2, 2025
Call for proposals open until July 20, 2025 inclusive

Lire la suite…

AFPy

by AFPy - Mastodon from AFPy - Mastodon

PyConFR 2025 se déroulant du 30 octobre au 2 novembre 2025
Call for proposals ouvert jusqu'au 20 juillet 2025 inclus

Lire la suite…

Traductions en Python vs. accessibilité = meh

by tut-tuuut from AFPy discuss

Hello !

L’ami @thibaudcolas s’est décidé à poster ce sujet-là sur le discuss de Python Accessibility of multilingual content with mixed translation - #3 by sirosen - Ideas - Discussions on Python.org en supposant avec raison que ça aiderait mieux de le poster là-bas que sur mon épaule (même si j’ai accueilli avec grand sérieux le sujet sur mon épaule).

Le symptôme principal c’est qu’il y a des soucis d’accessibilité quand on a une page web avec du contenu partiellement traduit (la synthèse vocale de texte en anglais avec un lecteur réglé sur français par ex. c’est la lose).

Idéalement quand on a une page en français, traduite depuis l’anglais, il faudrait que l’élément html porte lang="fr", et que chaque chaîne non traduite soit enrobée dans un élément portant lang="en". Mais comment qu’on peut faire techniquement ?

Je voulais te pointer ce sujet @mdk vu que tu es ma référence pour tout le Python un peu pointu, et notamment pour les traductions.

9 messages - 6 participant(e)s

Lire le sujet en entier

Lire la suite…