Vous trouverez ci-dessous le programme de la Pycon-Fr 2016.
Liste complète des interventions
Contribution a CPython
Avec l'aide de contributeurs à CPython, ce sprint propose de contributer à CPython en corrigeant des bogues faciles d'accès. Cela permettra a nos amis sprinters de montrer le chemin pour devenir un contributeur de CPython.
R&D autour de mesures environnementales DIY
Munis de capteurs et de processeurs embarqués (qui font tourner Python pour certains), nous proposons de réfléchir à la conception d'un kit de mesure nomade à bas prix, en particulier parce que des capteurs PM2.5 et PM10 accessibles apparaissent sur le marché, qui ont leur pertinence tant à l'intérieur qu'à l'extérieur des bâtiments.
Les enjeux sont de santé publique et règlementaires (obligation pour les pouvoirs publics de maintenir une certaine qualité environnementale), mais soyons conscients que la mesure brute n'a pas de sens absolu et que l'analyse est toujours nécessaire.
Les défis sont nombreux, citons notamment la normalisation et la documentation du processus de mesure et d'enregistrement, la prise d'information contextuelle (il est crucial de renseigner la cause d'une déviation lorsqu'elle est comprise), le post traitement : déterminer l'incertitude, produire des photographies du réel à partir des données prises à des lieux et des dates arbitraires.
Concrètement, nous espérons avancer particulièrement sur la centralisation, la curation et la restitution de données sous forme d'alertes, cartes et graphiques accessibles au plus grand nombre (notamment sur le web, donc), constituer un groupe d'intérêt et bénéficier de vos lumières !
Intéressé par le sujet ? Nous avons besoin de vous pour effectuer des relevés, pour réfléchir, pour coder !
Rafraîchissement de memopol.org
Comme vous le savez peut-être, le site du projet Memopol est aussi bien Open Source que l'outil de Mémoire Politique utilisé par certains lobbies citoyens. C'est un projet en Pelican sur github.com/political-memory/blog-memopol qui aurait besoin d'être mis à jour autant coté contenu, que traduction, design, déploiement et marketing. Bref, qu'on comprenne de quoi diable il s'agit sans y passer trois heures en tant que visiteur lambda.
Je (James Pic) serai à votre disposition pour aider les sprinteurs du développement en local jusqu'au déploiement en production que tout contributeur doit faire pour chacun de ses patches dans la plus bleeding edge de la pratique de la livraison continue ou encore d'un authentique blues du bayou.
Common Search: un nouveau moteur de recherche open source et transparent
Common Search est un nouveau projet open source écrit principalement en Python, qui vise à créer un moteur de recherche entièrement ouvert et transparent.
Une démo est déjà en ligne, mais il y a encore beaucoup de choses à améliorer pour en faire un service utilisable par tous.
N'avez-vous jamais rêvé de comprendre comment un moteur de recherche marche de l'intérieur ? Avez-vous déjà exécuté une de vos lignes de code sur plusieurs milliards de pages web ? Ce sprint est l'occasion !
Le mainteneur du projet Sylvain Zimmer sera présent pour aider les gens de tous les niveaux à faire leur première contribution. Grâce à des images Docker toutes prêtes et une liste d'issues sur GitHub bien remplie, vous pourrez envoyer votre première Pull Request en moins d'une heure !
Memory Safety with Rust
Mise à jour des benchmarks AsyncIO de TechEmpower
TechEmpower Benchmarks suite essaie de comparer 162 frameworks Web pour faire des APIs REST/JSON.
AsyncIO et sa boite à outils participent à ce benchmark, en particulier aiohttp.
Depuis que la suite de tests a été implémenté, de nouveaux outils sont apparus (uvloop, asyncpg, compatibilité AsyncIO pour cython...) qui devraient améliorer les performances, qui sont déjà intéressantes.
Si vous voulez aider, ou que vous êtes un simple curieux de comment améliorer les performances en Python, ce sprint est fait pour vous.
De plus, si vous êtes intéressé à rajouter ou améliorer les performances de frameworks construits avec d'autres technologies qu'AsyncIO et Python, je peux également vous aider comment commencer.
Mapping Learning : la cartographie vraiment assistée
Mapping Learning est à la fois une application et un projet éducatif. Notre volonté est d’assister les utilisateurs dans leurs taches de traitement de données et de cartographie automatisée (à partir de données de télédétection ou autres) et de faciliter les échanges entre les méthodes de machine learning et ses applications (télédétection en particulier).
Ci-dessous, ma liste au père Noël :
- Portage vers Python 3
- Documentation du projet (sphinx)
- Faciliter déploiement : création d'un fichier setup.py
- Base de connaissances : créer un prototype et tester exécution d'un test stocké dans bdd
- Développement interface (CLI, Prototype de GUI, Prototype d'interface Web, Test de Junyper)
- Choix et implémentation statistiques (cf. scikit) pour : classification : ROC Curve, autre(s), Clustering, Regression.
J'ai essayé de proposer des taches avec des niveaux de difficultés différents, et dans des domaines variés... Tout le monde est bienvenu !
La première journée permettra avant tout de se connaître et de vous faire connaître l'application (vous pouvez voir le code source : https://bitbucket.org/thomas_a/maplearn/), choisir quelles propositions vous intéressent le plus, et bidouiller... Après un debrief informel le soir.
Alban THOMAS a commencé sa carrière dans les domaines du SIG et de la télédétection. Il a développé des compétences en programmation pour répondre aux besoins de ces projets et aussi par
envie. Son poste actuel d’ingénieur d’étude en cartographie à l’UMR LETG Rennes-COSTEL (Climat et Occupation du Sol par Télédétection) lui permet de travailler avec des géographes, avec
ou sans connaissance en télédétection et des informaticiens en traitements du signal.
Développement de Nova-Ideo
Nova-Ideo est une solution d'innovation participative et de démocratie participative écrite en python avec le framework Pyramid, le tout sous licence AGPL. Nous proposons de réaliser un sprint permettant à tous de comprendre comment il est fait et de pouvoir le faire évoluer.
passer d'une fiche incohérente à une fiche "au cordeau"
Je cherche à partir d'une fiche dont la trame est sous libreoffice calc mais qui est remplie par des utilisateurs indiciplinés à parvenir à une fiche totalement normée en passant par un tableau recapitulatif qui serait une alternative à une gestion de base de données. ( fichiers exemples disponibles ) en utilisant python soit en macro, soit en programme externe sous windows ( portage possible sous linux, normalement )
Sprint Nagare
Sprint sur les 2 jours.
Développements autour du framework web open-source Nagare (www.nagare.org).
Selon la demande :
- correction de bugs et évolution de Nagare
- extraction de modules de Nagare pour en faire des projets open-source indépendants (injection de services 'nagare.services', micro-framework web orienté Rest sur gevent ‘nagare.restserver' …)
- définition et développement de nouveaux modules fonctionnels (gestion des utilisateurs, moteur de recherche full-text …)
- ...
Sprint laboîte STAR
Organisation : Baptiste Gaultier, Frédéric Clec'h et Christophe Millot
Partenaires : Telecom Bretagne, Keolis Rennes
Période : Jeudi 13 et vendredi 14 octobre 2016
Tags : django, open-data, arduino, weboob, open-source, hardware, rest, api, 3D printing, fablab
laboîte est une petite horloge connectée qui permet de visualiser de nombreuses données d'un seul coup d'œil !
Intégralement open-source et open-hardware, ce projet est à la recherche de développeurs sympas et motivés pour ajouter de nouvelles fonctionnalités qui pourraient venir compléter les informations existantes :
Météo (open weather map)
Prochain rendez-vous (à partir d'un calendrier OpenCalendar, Google, Yahoo ou basé sur le standard ICS)
Prochain bus à Rennes (avec la STAR)
Nombre de vélos libre-service disponibles à Rennes (avec la STAR)
Hauteur de la houle sur un spot de surf (basé sur Allosurf)
Nombre de places disponibles dans les parkings de Rennes (avec la STAR)
Nombre d'e-mails non lus
...
Pour participer à ce sprint, une connaissance de base de Django et Python serait apprécié. Mais si vous savez également coder sur Arduino ou/et vous connaissez Weboob alors c'est le top !
Organisation :
Journée 1
Matin : rappel des technologies au cœur de laboîte (Python, Django, Weboob, Bootstrap, JQuery, Arduino, Impression 3D...) aux travers d'ateliers pratiques
Après-midi : constitution des équipes en fonction des envies des participants (s'il y en a bien sûr) et sprint sur les nouvelles fonctionnalités (le code, les dépôts, le matériel seront fournis librement)
Soirée : débriefing informel (la première tournée est pour moi)
Journée 2
Sprriiiinnnnnttt
SPRINT DJANGO-COMPATIBILITY
Django est LE framework web de référence pour python, il est bien codé, bien testé, très bien documenté, et avance à toute allure. Mais Django est aussi un large écosystème d'applications open-sources enfichables, allant du moteur de webservice au CMS, en passant par des moteurs de blog, des systèmes de commentaires, des gestionnaires de médias...
Et c'est là que les choses se compliquent. Car Django ne dispose PAS de "versions mineures" au sens du "semantic versioning" : chaque mise à jour apporte son lot de changements non-rétrocompatibles. Des changements anticipés et documentés deux versions à l'avance certes, mais qui cassent nombre d'applications django qui ne sont plus mises à jour, et compliquent énormément la tâche des mainteneurs actifs. Des modules de soutien comme django-compat (l'équivalent de "six" pour Django) existent pour les aider, mais il rajoutent une couche de complexité, et restent peu connus. Et les récents changements du système de versioning de Django, qui se focalisent sur la notion de "version LTS", ne changent pas la donne.
Bref, au final, si vous maintenez un large projet, utilisant une douzaine de dépendances (Django-cms, django-blog-zinnia, django-filer, quelques plugins pour Django-cms...), chaque upgrade peut facilement se transformer en "DLL hell", avec des conflits entre dépendances, et de multiples régressions sur des petits plugins peu maintenus. Il vous faudra forker à tout va, et espérer que vos changements seront intégrés upstream. Comparez cette situation à l'écosystème jQuery par exemple, où un module même abandonné depuis 5 ans marchera du premier coup, et vous sauvera facilement plusieurs journées de travail.
D'où l'idée de django-compatibility. Ce module va s'occuper de monkey-patcher dans Django des "shims", des micro-utilitaires permettant de garder la rétrocompatibilité malgré les changements "violents" du code : renommages d'attributs et de fonction, modifications de signatures de fonction, déplacements d'application "contrib" hors de la base de code principale... Ainsi, les vieilles applications Django retrouveront accès à des fondamentaux comme request.REQUEST, à request.raw_post_data, ou mimetype, jusqu'à ce qu'elles retrouvent un mainteneur. Des DeprecationWarnings continueront d'être émis, mais les webmaster DJango verront leur taux d'adrénaline lors des upgrades revenir dans des normes acceptables.
Le sprint se focalisera principalement sur la création des fixers, des petits utilitaires auto-documentés permettant chacun de restaurer une fonctionnalité cassée au fil des évolutions de Django (voir https://docs.djangoproject.com/en/dev/internals/deprecation/), et de leurs tests unitaires (avec py.test et tox). Le codage d'utilitaires de soutien (pour gérer automatiquement les renommages, ou le patching de sys.modules...) seront probablement aussi de la partie. Le Zen de Python sera respecté.
---
Ce sprint aura lieu les 13 et 14 octobre.
Pré-requis : connaissance intermédiaire de Python et Django, et un IDE en état de marche
Ideascube, un logiciel pour favoriser l'accès à l'information et à l'éducation
BSF est une ONG qui s'est donné pour mandat l'accès à l'éducation et à l'information. L'objectif de BSF est de donner aux populations – en particulier les plus vulnérables – des outils pour comprendre le monde et le transformer. Parmi ceux-ci, l'Ideas box et le KoomBook, deux dispositifs qui utilisent des technologies libres (on parle vraiment de changer le monde) pour donner accès à plusieurs milliers de ressources numériques (vidéos, epub, films, Moocs, sites web).
Ideascube est le logiciel commun aux projets KoomBook et IdeasBox. Il permet d'embarquer des ressources numériques offline et d'y donner accès (un peu comme une pirate box) y compris dans des contexte où Internet n'est pas accessible. Ideascube permettra à terme à toute machine qui le fera tourner d'accéder à un catalogue de ressources libres, accessible en ligne et consultable en mode déconnecté.
État des lieux, déploiement, développements futurs. Avec des bouts de python (django) et de connexion asynchrone dedans.
Qui
- Grégoire Pouget (barbayellow)
- Mathieu Bridon (bochecha)
- Matthieu Gautier (starmad)
- Steven (Steven)
Objectifs et sujets sur lesquels on souhaite être épaulés
- Analyse des logs ideascube
- Reverse engineering de la recette du coca-cola
- Meilleure administration du serveur (wifi, services, ...) via Cockpit?
- Comment développer l'aspect UX pour des personnes pas nécessairement sensibilisées au numérique? +1 !
- Développer une interface web front qui permettrait aux liseuses d'accéder à ideascube et directement aux ressources qui les concernent (epubs) Il y a en général 50 liseuses par box, avec des livres préchargés
Développement d’un outil de géolocalisation pour une balade sonore
SonoPluie est une balade sonore en parapluie géolocalisé.
Il s’agit de proposer à des promeneurs un cheminement libre qui fasse coïncider leur environnement direct avec des pistes sonores, en temps réel.
Le proto tourne sous python sur carte raspberry, il manque cependant beaucoup de fonctionnalité pour anticiper, prévenir et répondre aux divers comportements du visiteur.
A l’aide d’un prototype fonctionnel, le développement pourra être testé tout au long des deux jours du sprint.
La participation au sprint pourra se faire au long cours sur les deux jours, ou à la « micro-tâche » sur des points précis identifiés en amont.
Les jeudi 13 & vendredi 14/10
Référents projet : Philippe Lechat & Laurence Giuliani
Mise à jour de Panoramisk, binding Asterisk (AMI+FastAGI) en AsyncIO
Asterisk est un serveur de téléphonie opensource,
Panoramisk permet d'intéragir en Python+AsyncIO via les APIs propres à Asterisk (AMI+FastAGI).
Avec l'aide de
Gawel qui sera accessible par téléphone uniquement afin de rester dans le contexte, nous allons
tenter:
- Merger la dernière pull request en cours de Panoramisk en cherchant un consensus et rajoutant les tests manquants
- Fermer les issues en cours
- Discuter d'ARI (les nouvelles APIs REST/JSON d'Asterisk) et voir les synergies que nous pourrions avoir avec le binding Python officiel
- Éventuellement de faire un benchmark différentiel avec uvloop activé ou non et voir s'il y aurait des pistes d'améliorations, notamment en regardant dans d'autres implémentations de binding.
- Et peut-être même (soyons fous!) sortir une nouvelle release
Key Signing Party
Les rassemblements IRL de la communauté Python sont la meilleure occasion pour profiter de signer nos clés GPG par nos pairs et comme ça renforcer la toile de confiance (Web of Trust[1]) nécessaire pour améliorer les échanges virtuelles de façon sécurisée avec des systèmes de confiance décentralisés.
L'utilisation de GPG dans la communauté a plusieurs applications, par exemple la signature de commits (supporté récemment par Github et Gitlab), la vérification de l'intégrité des paquets, l'échange des informations sensibles comme des mot de passes ou des API keys, entre autres.
Cet événement est divisé en 2 parties, le premier jour avec la forme d'un atelier destiné à toutes les personnes qui veulent générer une clé GPG, la publier sur un serveur de clés et utiliser les commandes basiques pour signer et encrypter des fichiers.
Le deuxième jour sera une Key signing party[2] destiné à toutes les personnes aillant déjà une clé, où chacun peut vérifier, signer et assigner le niveau de confiance ultime aux clés des autres membres de la communauté.
[1] https://en.wikipedia.org/wiki/Web_of_trust
[2] https://en.wikipedia.org/wiki/Key_signing_party
Introduction au Deep Learning avec Theano
C’est indéniable, le Deep Learning c’est le sujet à la mode ! Même si cela reste un domaine de recherche très pointu heureusement à l’aide de nombreux frameworks open source et formations sur Internet les concepts deviennent de plus en plus accessibles. Cet atelier propose un tour d’horizon sur les origines du Deep Learning, quelles sont les ruptures scientifiques des 10 dernières années qui l’ont rendu aussi populaire, quelles sont les dernières architectures à la mode.
Tout au long de l'atelier vous allez pouvoir coder vos propres architectures profondes avec Theano ! Cette librairie Python est parfaite pour le Deep Learning ! Elle est même très utilisée en recherche, pour prototyper rapidement de nouveaux modèles.
L'objectif de l'atelier est de donner les bases théoriques et pratiques (via Theano) pour être autonome sur une compétition Kaggle par exemple.
Vous trouverez toutes les informations sur l'atelier (notamment les librairies à installer)
ici.
Programmer un robot mobile en python
Atelier pour découvrir la programmation Python sur un petit robot mobile. Le robot MRPi1 est un robot mobile de 10 cm de diamètre basé sur une carte Raspberry pi avec de nombreux capteurs.
Introduction aux algorithmes d'apprentissage machine
Principes de l'apprentissage machine, présentation de scikit-learn, démonstrations.
Evaluating Topic Models through python
Topic modeling in python is an upcoming and exciting field. With so many great open source libraries available, the natural language processing and topic modeling community is advancing rapidly and python has made it all the more easy! My summer work involved implementing the topic coherence pipeline in gensim which is a topic modeling library in python. I had to convert java code into efficient python code without sacrificing the mathematical correctness of the original algorithms.
Topic coherence quantifies human interpretability of topics outputted by topic models by mimicking what a human would think on reading those topics. After all what is the use of a topic model which spits out incomprehensible topics? Coherence measures have a large number of applications such as improving automatic web page translations or even improving advertising by selecting advertising links that maximize coherence of the union of the web page's word set with descriptive words of the respective ad.
While doing the project I realized the beauty of python when I noticed the fact that what required three different modules in java could be done inside just one function in python! I also experienced python's ease of use, user-friendliness and robustness while working with it. I started off thinking that it will take me two to three months to implement this pipeline in python but I finished almost one month ahead of schedule. How? Simply because python is incredible!
Faire une API REST/JSON et des WebSockets avec AsyncIO et aiohttp.web
Cet atelier sera l'opportunité pour apprendre comment architecturer un daemon avec AsyncIO ainsi que l'utilisation courante de l'API d'aiohttp.web, qui ressemble fort à celle de Flask, afin de faciliter les migrations.
Créer son API avec Django REST framework
L'atelier a pour but la construction d'API avec Django REST framework.
Il s'agit de découvrir Django REST framework.
Lors de l'atelier, différentes parties seront présentées:
- sérialisation des données
- présentation humaine des données
- pagination
- autentification / permissions
- filtrage
- gestion des relations entre les données
La connaissance de base de Django est un pré-requis.
Regarder "Créer une API publique avec Django Rest Framework"
interface graphique moderne En Qt avec python
Création d'interface bureau et mobile à l'aide du framework Qt . l'approche en Python sera traitée et le langage QML sera présenté.
Life's too short: let's patch politics
L'occasion d'apprendre à contribuer au projet de mémoire politique Memopol utilisé comme outil de lobbying citoyen par la Quadrature du Net ainsi que l'EDRi. Vous apprendrez donc à développer en local sur ce projet en Django, PostgreSQL et OpenShift et qui sait, peut-être rejoindrez-vous l'équipe ?
Prototypage rapide d'applications avec Kivy
Le but de cet atelier est de montrer comment Kivy, via le language kv et sa logique d'événements, permet de construire et de transformer rapidement une application, avant de se préoccuper de sa logique métier.
Les différents widgets seront présentés, allant du simple Label, à l'utilisation des ScreenManager pour organiser l'application, en passant par les différents Layout, et l'utilisation des RecycleView pour la gestion de données à défilement potentiellement infinie.
Le prototypage rapide de widgets *from scratch* sera aussi exploré, avec l'utilisation des propriétés pour décrire les comportements de ceux-ci, et des instructions canevas pour définir précisément l'apparence recherchée.
Une connaissance fonctionnelle de Python est nécessaire, ainsi qu'un éditeur de texte configuré pour l'écriture de Python (par exemple sublimetext ou pycharm).
Warehouse - the future of PyPI
Warehouse is the next generation Python Package Repository, designed to replace the legacy code base that currently powers PyPI.
In this presentation Nicole will explore:
- The overall problems facing Python packaging and what is being done to solve them.
- The goals of the Warehouse project, from a technical, design and community building perspective.
- The progress that has been made so far and the challenges the team is facing.
- How the wider Python community can help move Warehouse (and Python packaging) forward.
This talk will be presented in English.
Regarder "Warehouse - the future of PyPI"
Outils d'analyse statique
Il existe de nombreux outils d'analyse statique pour Python, permettant de détecter des erreurs logiques, des failles de sécurité, ou encore le non-respect de la PEP8. Ces outils sont parfois méconnus des débutants, malgré leur indéniable utilité et leur relative simplicité d'utilisation.
Nous présenterons certains d'entre eux (pycodestyle, flake8, bandit...) durant cette conférence, et tenterons de donner quelques trucs et astuces afin de les utiliser au mieux. Nous montrerons notamment comment les intégrer à tox[1], ce qui facilitera la vie des développeurs et simplifiera l'utilisation de ces outils dans le cadre de l'intégration continue, dont on ne cesse de nous vanter les mérites.
Cette présentation sera tout à fait accessible aux débutants, et comportera quelques exemples/démos.
[1] https://pypi.python.org/pypi/tox
Jolies Métriques : Coordonner Python et Zabbix
Retour d’expérience sur l'utilisation de l'application open source de supervision Zabbix couplée avec Python.
Zabbix (made in latvia) nous permet grâce à son agent multi-plateforme de monitorer un grand nombre d'équipements et de services, d’exécuter du code, de faire des calins.
Le but est de relever les métriques rapidement et avec une emprunte système la plus légère possible. C'est ici que Python nous aide à atteindre cet objectif en s'interfaçant avec l'agent Zabbix.
Une fois les métriques collectées, insérons les dans un outils de graph sexy et construisons des dashboards pour les décideurs pressés.
Regarder "Jolies Métriques : Coordonner Python et Zabbix"
Développeur durable
Où vous voyez-vous dans 10 ans ? Vivrez-vous le rêve américain ? Élèverez-vous plutôt des chèvres en Lozère ? Récupèrerez-vous de votre 3e burnout ? Serez-vous (enfin) chef de projet ? Ou plutôt lead developer dans une entreprise libérée ?
Quoi qu'il en soit, serez-vous heureux ?
Cette conférence interroge notre métier, son impact social et environnemental ainsi que notre recherche personnelle de sérénité. Puis elle invite à échanger des pistes, individuelles ou collectives, pour aider chacun à choisir son propre chemin.
Regarder "Développeur durable"
GAST, daou naer - AST pour Python 2 et 3
Va doué, qui veut construire un code qui va avec le module ast, et compatible
Python2 et Python3, il est bien dans le lagen. Et c'est pas les module 2to3 ou
six qui vont lui envoyer de l'aide.
D'où le module gast, Generic Abstract Syntax Tree, qui regroupe en une
abstraction l'AST de Python2 et celui de Python3. Après une présentation de
cette abstraction, on fera un tour dans son implémentation, une petite
lichouserie pythonesque, où introspection, tox, meta-programmation et évaluation
retardée se retrouvent pour une petite chouille de moins de 500 lignes.
Regarder "GAST, daou naer - AST pour Python 2 et 3"
Import et Compagnie
et hop, "import antigravity", la magie de Python résumée en deux mots. mais au fait, comment ça marche ? non, pas l'anti-gravité -ça tout le monde l'apprend à l'école. Comment fonctionnent les imports en Python ?
Plongeons ensemble dans les entrailles de la bête pour découvrir les bases de cette mécanique indispensable. Une fois que nous serons un peu plus familliers avec les forces et les faiblesses du système, nous verrons comment nous usons et abusons de sa flexibilité dans le gestionnaire de version Mercurial. Qui n'a jamais rêvé d'importer son code Python 2 directement avec Python 3 ?
Regarder "Import et Compagnie"
Et si on réécrivait Google en Python ?
Cette année, le premier crawler de Google (écrit en Python 1.2 !) fête ses 20 ans ... Il a depuis longtemps été remplacé par des versions en C++, mais comment s'y prendrait-on, en 2016, s'il fallait tout recommencer de zéro ?
Je présenterai dans en premier temps l'architecture classique des moteurs de recherche (du crawler au frontend) et son évolution depuis le fameux papier de recherche présentant Google en 1998.
Je ferai ensuite un tour d'horizon des langages et projets open source les plus adaptés aujourd'hui pour chacun des composants, ainsi que les choix faits pour Common Search, un nouveau moteur de recherche open source écrit principalement en Python.
Le but de cette présentation est d'apprendre comment fonctionne un moteur de recherche de l'intérieur, ainsi que de réfléchir aux problèmes pour lesquels Python est ou n'est pas une bonne solution.
Regarder "Et si on réécrivait Google en Python ?"
Mapping Learning : la cartographie vraiment assistée
Mapping Learning est à la fois une application et projet éducatif, et présente deux objectifs :
- faciliter l’accès aux méthodes évoluées d'apprentissage statistique par des non-informaticiens
- amener des étudiants en géographie, en informatique... à contribuer au développement d’une application open-source.
Notre volonté est d’assister les utilisateurs dans leurs tâches de traitement de données et de cartographie automatisée (à partir de données de télédétection ou autres) en leur donnant accès à un grand nombre d'algorithmes (ex : 19 méthodes de classifications supervisées) peu disponibles dans les logiciels « utilisateurs ».
Les utilisateurs/développeurs de méthodes de Machine Learning bénéficieront, quant à eux, d’une manipulation aisée des données géographiques (images ou vectorielles) et pourront y ajouter leurs algorithmes.
L’application réalise les principales étapes de manipulation de données (spatialisées ou non) : réduction de dimension, cross-validation, apprentissage, post-traitements. Enfin, elle livre un compte-rendu standardisé et agrémenté de conseils sur l'utilisation optimale des méthodes.
Mapping Learning réunit trois librairies open-source :
gdal/ogr (données géographiques),
pandas et
scikit-learn (machine learning).
Plusieurs de nos étudiants utilisent déjà l’application, dans une phase initiale de développement, sur leurs jeux de données. Notre ambition est d'assurer la pérennité de ce projet et nous conclurons en invitant toutes les personnes intéressées à nous rejoindre.
Python for SecOps: recherche de vulnérabilités dans les implémentations d'un protocole
Les protocoles de communication jouent un rôle majeur dans l'établissement d'une communication entre les différents composants des systèmes informatiques. Malheureusement, il est bien connu que les protocoles de communication peuvent être vulnérables aux attaques. Certaines de ces attaques dépendant de faiblesses introduites (in)volontairements dans leurs implémentations. Ces travaux proposent une solution pratique permettant d'identifier ces faiblesses en utilisant le language Python.
Cette présentation s'attachera à illustrer l'emploi de bibliothèques Python dédiées à la rétro-conception de protocoles tels que Netzob et Pylstar. Il sera notamment présenté comment les utiliser pour 1) extraire la machine à états d'une implémentation en boite noire et 2) comparer les machines à états de plusieurs implémentations d'un même protocole pour rechercher des vulnérabilités. Le protocole HTTP2 servira d'exemple.
Regarder "Python for SecOps: recherche de vulnérabilités dans les implémentations d'un protocole"
WebPush notifications What? Why? How?
We all might know what push notifications are, having been a popular feature of mobile platforms for years. However, it is a recent adoption in the web platform and the features are constantly evolving. By the end of this talk, we’ll have an understanding of what real-time web push notifications are, how do they work, and how can we make the best use of it, including news features like payload encryption and ttl headers.
Web push is a permission based technology that notifies a user of new messages or events even when they’re not actively using the application. Push notifications are a hit among all the social media websites, like Facebook, Instagram, Twitter, and it’s not hard to see why. Besides that, they are also very popular in cloud based data management, e-commerce websites, e-mail services, sports and auctions, and the list could go on. In this talk, we’ll see a little behind-the-scences working of this technology, starting from the handling the user’s subscription by the Push API, generating a push message when some action is triggered, to handling of the message by the Service Worker API, and finally dealing with the notification display using the Notification API.
Regarder "Webpush notification What? Why? How?"
Hypothesis: testez moins mais tester mieux en vous concentrant sur les propriétés
Nous voudrions tous avoir à notre disposition les ressources pour tester notre code en profondeur, mais l'écriture des tests n'est souvent pas une tâche aisée et obtenir une bonne couverture est un processus chronophage. Les tests basés sur les propriétés ont pour objectif de proposer une solution à ce problème. Popularisé par la bibliothèque la Quickcheck (Haskell), ce concept est aujourd'hui adapté en Python à l'aide de Hypothesis.
Avec Hypothesis, au lieu de vous concentrer sur l'écriture de tests individuels, vous décrivez des propriétés garanties par votre code et Hypothesis générera à votre place les tests correspondants à ces spécifications. Par conséquent, l'utilisation de cette bibliothèque permet dans une certaine mesure d'automatiser l'écriture de tests répétitifs et élimine de nombreuses erreurs potentielles. Hypothesis générera plus de tests que ceux que vous auriez générés manuellement, ce qui doit permettre de démasquer plus d'erreurs.
Cette présentation a pour objectif de vous introduire au concept des tests basés sur les propriétés ainsi qu'à l'utilisation de la bibliothèque Hypothesis et de ses plugins pour Numpy ou Django.
Regarder "Hypothesis: testez moins mais tester mieux en vous concentrant sur les propriétés"
Application en Python de modèles physiologiques des muscles humains
Notre équipe du laboratoire "BioMecanique et BioIngenierie" de l’Université de Technologie de Compiègne travaille sur l’analyse et la compréhension de l’activité musculaire. Actuellement, nous développons des modèles multi-échelles et multi-physiques des muscles afin de simuler les électromyogrammes. Notre travail s’applique à deux types de muscle : l’utérus et les muscles squelettiques. Depuis cinq ans, tous les logiciels liés à la modélisation sont codés en Python : interfaces graphiques pour gérer les simulations, résolution des équations des modèles et également la visualisation des résultats. Nous proposons de présenter notre approche et notre utilisation de Python comme un outil multiple pour résoudre les nombreuses problématiques rencontrées avec la complexité des modèles physiologiques d’organe humain. Pour illustrer cela, nous décrirons un logiciel qui a été entièrement développé dans notre laboratoire dont une partie a été mis en open source. Python a déjà prouvé son utilité pour les scientifiques, il permet une implémentation rapide de nos modèles et également un développement simple d’interfaces utilisateurs permettant l’utilisation des modèles à un public plus large ; non programmeur où non spécialiste en modélisation.
Note de l'équipe d'organisation : captation vidéo non autorisée par l'intervenant.e.
PyRat - Un jeu pour l'apprentissage de l'informatique en Python
PyRat est un cours de programmation/algorithmique/théorie des graphes donné à Télécom Bretagne Brest depuis l'an dernier. Le cours se base sur un jeu vidéo, sous la forme d'un labyrinthe dans lequel des bouts de fromage sont disposés. Dans ce labyrinthe, il y a aussi deux pions (un par joueur). Ces pions sont contrôlés par des programmes Python simples écrits par les étudiants.
Un des intérêts du logiciel est qu'il permet d'étudier d'une part la théorie des graphes et les algorithmes associés (notions de graphe, de parcours, de plus court chemin, voyageur de commerce...) mais aussi de directement mettre en application les concepts vus en cours, en programmant en Python des petits programmes pour atteindre divers objectifs de difficulté croissante :
* Aller chercher un unique bout de fromage via le plus court chemin ou non;
* Ajout de boue dans le labyrinthe pour étudier les graphes pondérés;
* Algorithmes NP-complets pour aller chercher plusieurs bouts de fromage;
* Algorithmes approchés pour atteindre le même objectif;
* etc.
L'an dernier, nous avons terminé le cours par un tournoi dans lequel les diverses IAs des étudiants se sont affrontées, l'objectif étant de ramasser plus de bouts de fromage que l'adversaire.
L'objectif de cette présentation est de vous présenter le logiciel PyRat, pour donner des idées à des enseignants désireux d'enseigner Python et la théorie des graphes de manière ludique !
Regarder "PyRat - Un jeu pour l'apprentissage de l'informatique en Python"
Modélisation, inférence et apprentissage de Réseaux Bayésien avec pyAgrum
pyAgrum est un module de gestion et de calcul de modèles graphiques, en
particulier probabilistes. Lors de cette présentation, nous ferons le tour des
fonctionnalités proposées par pyAgrum pour l'utilisation de réseaux bayésiens.
À l’aide de Python Notebooks, nous monterons en live comment exploiter pyAgrum
et les réseaux bayésiens pour l’aide à la décision, la maîtrise du risque ou
encore pour l’enseignement. La modélisation sera abordée avec un accent sur
les différentes structures de données utilisées pour représenter les tables
multidimensionnelle. À l’aide des algorithmes d’inférence probabiliste, nous
montrerons comment réaliser de l’analyse de sensibilité. Finalement, nous
montrerons comment utiliser pyAgrum pour de l’apprentissage de structure et de
paramètres de réseaux bayésiens. pyAgrum est essentiellement un wrapper de la
librairie C++ aGrUM, qui implémente des modèles graphiques pour l’aide à la
décision; ce qui offre à pyAgrum des performances élevées pour tous ses
algorithmes d’inférence et d'apprentissage.
http://pyagrum.lip6.fr
Regarder "Modélisation, inférence et apprentissage de Réseaux Bayésien avec pyAgrum"
Commande prédictive avec Python. Application au pilotage optimal du chauffage d’un bâtiment.
Contexte : l’automatique est la branche des sciences de l’ingénieur qui s’intéresse au pilotage automatisé des systèmes, par exemple la régulation de vitesse d’une voiture ou de la température d’une pièce. En automatique, les développements d’algorithmes se font très souvent dans l’environnement commercial Matlab/Simulink, tant en enseignement qu’en recherche. Cependant, beaucoup des briques de base pour travailler sur des algorithmes d’automatique existent en Python. Cet exposé est une introduction à une méthode très puissante et très usitée, la commande prédictive, en Python. Également connue sous acronyme anglais MPC (Model Predictive Control), cette méthode permet de commander des systèmes complexes à l’aide de méthodes d’optimisation. Nous utiliserons l’exemple du pilotage optimal du chauffage d’un bâtiment de façon à minimiser la consommation d’énergie. Nous décrirons les principales étapes de la mise en œuvre de la commande en Python (un notebook Jupyter détaillé sera mis en ligne). Nous présenterons les principales bibliothèques utilisées (e.g. numpy), et plus particulièrement les routines d’optimisation de cxvopt (http://cvxopt.org/). Perspectives : un des intérêts d’utiliser Python et des bibliothèques libres est de permettre d’embarquer facilement l’algorithme créé sur une plateforme du type Raspberry Pi. Ainsi, l’exemple présenté du pilotage d’un chauffage pourrait être intégré dans des plateformes de domotique ouvertes.
python pour le text mining (fouille de texte)
cityzenmap.com est une carte qui nous permet de visualiser et de suivre l’avancement des projets d'aménagement sur toute la France, développée en python, l'application a remporté le prix national Dataconnexions dans la catégorie "Impact administratif & territorial".
L'application peut en se basant sur des techniques d'apprentissage automatique et de fouille de texte et de manière automatique détecter les projets d'aménagent depuis des bases de données d’appel d'offre.
Ma présentation sera un retour d'expérience sur comment on utilise python à Jurismarchés pour faire du texte mining (fouille de texte), comme exemples nous avons choisis CityZenMap.
Durant la présentation nous allons commencer par introduire des notions de datamining (fouille de données) et de fouille de textes, puis des exemples d'implémentation en python de modèles de fouilles de texte (en utilisant la librairie Scikit-learn), nous présenterons aussi l'implémentation du modèle utilisé dans CityZenMap pour analyser les annonces afin de détecter les projets d’aménagement.
À la découverte du bytecode CPython !
Le bytecode est au cœur de l'interpréteur CPython. Toutefois du point du vu de l'utilisateur il se limite à l'apparition (horripilante ?) de fichiers ".pyc" une fois un code exécuté.
Dans cette présentation, nous partirons à l'aventure au cœur de la machine virtuelle CPython
pour découvrir ce qui l'anime tout en répondant à des questions existentielles comme :
- d'où viennent et à quoi servent les fameux fichiers .pyc
- à quoi ressemble le bytecode et quels sont ses instructions les plus courantes
- comment le désassembler grâce au module `dis`
- comment tout cela fonctionne-t-il au sein du système de piles et de frames de la machine virtuelle CPython
- et bien sûr à quoi tout cela peut-il bien servir dans la vrai vie ;-)
Regarder "À la découverte du bytecode CPython !"
Interopérabilité Python/C++ pour la motion capture et l'animation faciale
Notre compagnie, "Dynamixyz", développe des logiciels pour les studios de
production de films, de jeux vidéos et d'effets spéciaux. Nous nous spécialisons
dans la "motion capture" faciale: capter avec précision les mouvements d'acteurs
réels sur des vidéos et transférer ces mouvements afin d'animer les visages de
personnages virtuels.
Sous le capot, on retrouve un mélange de techniques de traitement d'image, de
vision par ordinateur, d'image de synthèse et de maths. Essentiellement des
maths.
Dans ce petit monde là, en général, le C++ règne en maître. Éxécuter des
algorithmes mathématiques de traitement et d'optimisation sur des données tels
que des maillages 3D et des séquences d'images requiert en effet un maximum
d'efficacité dans les calculs et de la maitrise des ressources hardware
utilisées (Mémoire, CPU).
Notre bon C++ traine toutefois son lot d'inconvénients: verbeux, compilé et peu
flexible, son utilisation limite la vitesse de développement et d'exploration
de nouveaux algorithmes, sans parler des nombreux pièges dans lesquels tout
dévloppeur C++, même expérimenté, est sûr de tomber.
Si le C++ reste indispensable à certain endroits critiques de nos algorithmes,
Python est un bien meilleur outil pour explorer, combiner, organiser, tester et
débugger nos algorithmes.
A l'usage, nous avons convergé vers des pratiques de développement où nous
allions Python et C++ pour profiter du meilleur des deux mondes: rapidité et
déterminisme du C++ pour les coeurs de calculs, flexibilité et richesse
syntaxique du Python pour la conception et l'organisation haut-niveau des
programmes.
C'est avec plaisir et enthousiasme que nous partagerions nos pratiques
d'interopérabilité entre Python et C++, ses avantages et limitations,
et illustrer ces propos par des exemples concrets et des jolies images issues
de certains de nos projets.
Demo reel de Dynamixyz: https://youtu.be/1WSneAhR5oA
Note de l'équipe d'organisation : captation vidéo non autorisée par l'intervenant.e.
Recette pour faire venir PyConFr dans ta ville
Organiser une conférence sur Python peut paraître bien difficile. Nous ne cacherons pas que c'est un évènement qui nécessite du travail, mais ce ne doit pas effrayer de futurs candidats.
Dans cet exposé, nous essaierons de présenter quelles sont les tâches à réaliser pour organiser une bonne PyConFr mais aussi les difficultés qu'on a pu rencontrer au cours des trois dernières années, les atouts et aussi les bonnes idées.
Tout ça pour commencer à poser les pierres de PyConFr 2017 ?
Support de présentation
Python et secondes intercalaires
Les secondes intercalaires peuvent poser 2 types de problèmes en informatique : elles peuvent faire planter nos codes lors de l'interprétation du date mais elles peuvent aussi induire des erreurs de calcul ou d'enregistrement si la librairie de temps ne les gère pas.
Qu'en est-il en Python ?
Après un rappel sur ce que sont ces secondes intercalaires, je vous propose de regarder comment gérer l'arrivée d'une date, en comportant une, dans vos codes, puis de regarder ce qu'il est faisable pour assurer la validité de vos calculs et enregistrer ces dates dans quelques formats de fichier.
Note de l'équipe d'organisation : captation vidéo non autorisée par l'intervenant.e.
Découverte de Django
Django est un framework web écrit en Python largement utilisé dans cette communauté. Utilisant le modèle MVT, modèles, vues, templates, il contient tous les outils nécessaire au développement d'une application web, tant de petite que de grosse envergure.
Django nous fournit une palette importante d'outils supplémentaires nous permettant la résolution de problèmes courant tel que l'administration (backoffice), la gestion d'utilisateurs, la traduction ou encore la gestion des sessions. L'écosystème se met à jour sur les besoins du web, django rest-framework et django-pytest en sont deux illustrations.
La communauté, très ouverte et motrice de changements, est présente tout au long de l'élaboration de votre projet pour vous aider !
Au cours de cette présentation, nous allons présenter Django, ses concepts, le cadre de travail qu'il propose, autour d'un exemple d'écriture d'une application web. Nous parlerons également de sa communauté accueillante et des ressources annexes.
Machine Learning Python libraries: accuracy and performance
la présentation contiendra une analyse de la précision et des performances des algorithme de machine learning implémentés par des librairies python tels que scikit-learn, pandas, numpy...
Je présenterai les différents algos d'un point de vue mathématique puis les implémentations python. On discutera les limites de ces implémentation après expositions des résultats sur les perf puis on proposera des pistes d'amélioration. l'aspect intégration python au plateforme big data tel que Spark sera également présent.
Écrire des tests en Python
Aujourd'hui les tests sont devenus incontournables, encore faut-il connaître les bonnes pratiques. Cet atelier vous offrira un tour d'horizon des différents types de test, niveaux de test, techniques et outils.
Support de présentation
Premiers pas pour assurer la qualité de vos applications
En tant que développeur·se·s, nous sommes constamment à la chasse aux bugs, à la recherche du bon fonctionnement de notre application, en tout cas, c'est ce qu'il faut pour satisfaire nos utilisat·eurs·rices (qui sont parfois nos client·e·s).
L'écosystème Python offre tous les outils pour automatiser la vérification que notre code est correcte ou que notre application fonctionne correctement.
Nous allons donc voir comment mettre en place ces premières vérifications autour de la qualité du code et de la validation par les tests, en allant jusqu'à l'intégration continue.
Support de présentation
Python, un langage à la noix pour la programation fonctionelle ? Essayez coconut !
Présentation du langage de programmation Coconut pour une utilisation orientée scripting/sysadmin/ops.
Coconut est une variante de Python conçue pour faire de la programmation
fonctionnelle Pythonique simple et élégante.
Certaines fonctionnalités du langage, comme les unix pipes et l'évaluation paresseuse son très intuitives pour ceux qui ont fait du shell avant, ce qui permets de s'adapter rapidement au langage.
C'est un langage qui est rapide à prendre en main pour ceux qui ont déjà fait du scripting, pour les administrateurs de système et les équipes opérations sur des plateformes unix.
Plusieurs idiomes issus de la programmation fonctionnelle sont intégrés directement dans le langage en ayant gardé une forme de compatibilité avec Python, ce qui permet de continuer à utiliser tout l'écosystème Python pour une bonne facilité d'utilisation et intégration simple avec des projets existants.
Coconut s'installe comme un paquet python normal, ce qui rend son déploiement très commode.
Regarder "Python, un langage à la noix pour la programation fonctionelle ? Essayez coconut !"
asynctest: testez plus facilement votre code asyncio
asynctest est une bibliothèque qui étend les fonctionnalités du module standard de python unittest pour supporter asyncio. Cette conférence a pour objectif de présenter asynctest et de discuter de pratiques autour de l'écriture de tests.
On discutera de l'art de tester en partant de zéro : comment écrire et exécuter des cas de tests, les organiser (fichiers, classes et méthodes) dans un dépôt de sources. On verra quelques fonctionnalités peu connues mais pratiques du module unittest, puis on verra comment asynctest simplifie l'écriture des tests pour asyncio en permettant le mocking automatique de coroutines, la simulation d'une boucle ou de son horloge.
Les développeurs qui n'utilisent pas asyncio sont bienvenus, car de nombreux conseils peuvent s'appliquer au module unittest.
Regarder "asynctest: testez plus facilement votre code asyncio"
Créer une API publique avec Django Rest Framework
Lors de la contruction de la plateforme de monitoring Bleemeo, nous avons fait le choix d'une API REST utilisée à la fois par notre interface web et nos clients et un frontal full JavaScript. Notre backend a été développé en Django avec Django REST Framework et le frontal en ReactJS.
Los de cette conférence, nous souhaitons partager notre retour d'expérience après plus d'un an de développement et de problématiques rencontrées pour mettre en place cette architecture. Nous reviendrons entre autre sur la gestion des permissions, les bonnes configurations à mettre en place pour une API publique et sur les performances.
Topic Modelling with Python and Gensim
Topic Modelling is an information retrieval technique to identify key topics in a large corpus of text documents. It is a very handy technique to model unstructured textual data, and is used heavily in both industry and in research to both understand trends in textual data and analyse new documents via their topics.
Gensim is an open-source python NLP framework which provides an API to do robust, industry-grade Topic Modelling which is memory independent and super fast, while being very simple to use.
The best part of gensim and python for Topic Modelling is it’s ease of usage and effectiveness. I would propose a small talk to explain how to effectively do topic modelling in python using Gensim framework- especially - after identifying topics from a large dataset, and then leveraging to perform un-supervised clustering, colouring topic-words in a document, and better understanding textual data for subsequent usage. All of this will be supported with examples from research and industry.
[ My relationship with Gensim is through the Google Summer of Code 2016 program, where I am implementing Dynamic Topic Models for them ]
Regarder "Topic Modelling with Python and Gensim"
Qt et Asyncio avec Quamash
Asyncio est un modèle asynchrone générique basé sur des event-loop. Il permet de s’interfacer avec n’importe quelle autre librairie proposant un mécanisme d’event-loop.
Dans cette présentation, on découvrira le potentiel de asyncio via la librairie Quamash (https://github.com/harvimt/quamash).
Quamash est une petite librairie développée par Mark Harviston et Arve Knudsen. Elle permet d'utiliser les mots clés "async" et "await" dans des applications Qt, mettant alors fin au Callback Hell des signaux/slots ! L’intégration de la boucle d’évènement Qt dans asyncio permet aussi d’utiliser toutes les autres librairies Asyncio dans Qt, telle que aiohttp.
On découvrira ensemble les possibilités de cette librairie. On commencera par une utilisation basique, puis on analysera quelques décorateurs utiles pour se simplifier la vie dans l'usage de Quamash. On mélangera ensuite Qt, asyncio, et aiohttp. Enfin, on regardera comment développer des tests fonctionnels basés sur QTest et Asyncio. Le tout agrémenté de questions/réponses...
Regarder "Qt et Asyncio avec Quamash"
Python, c'est rapide, ou c'est lent ?
Dans l'inconscient collectif des développeurs, en particulier des Pythonistes, Python est considéré comme étant très lent, micro-benchmarks à l'appui.
Le but de cette conférence est de montrer que la réponse n'est pas aussi binaire qu'aimerait croire les développeurs. Outre l'architecture des solutions avant le langage, il y a également d'autres paramètres économiques qui rentrent en jeu, que ce soit par exemple le temps/coût de développement ou de maintenance.
De plus, cette conférence sera également l'opportunité de lister ce qui à disposition dans la boîte à outils de Python pour faire face aux problèmes de performances.
Python 3.6: utilisation des f-strings (PEP 498)
Il est prévu que la version stable de Python 3.6 inclue les f-strings définies dans PEP 498 (elles sont présentes dans les versions non-définitives de Python 3.6 depuis alpha 1). Les f-strings sont la quatrième forme de "mise en forme composite" (string interpolation) après %-format, str.format(), et string.Template.
Cette nouvelle façon de construire des chaînes améliore souvent la lisibilité du code. Je propose de passer en revue ce que sont les f-strings, leurs particularités et certains détails de leur implémentation dans CPython.
Regarder "Python 3.6: utilisation des f-strings (PEP 498)"
L'Enfer du packaging Python
Scaleway est un fournisseur de cloud computing qui expose plusieurs APIs pour permette aux clients de gérer leurs infrastructures.
La plupart de la stack de Scaleway est en Python : APIs, workers qui managent le hardware, gestion de la facturation, divers scripts, ...
Tous ces projets ont besoin d'être développés, testés et déployés. Le packaging Python fait donc partie intégrante du quotidien de la team Scaleway. Et pourtant, de nombreux problèmes ont été rencontrés :
* dépendances cycliques mal gérées par setuptools
* easy_install qui ne fonctionne pas (et ne devrait pas être utilisé)
* pip install -e : ne fonctionne pas (toujours) avec les namespace packages
* dependency links : supprimé puis réintroduit bien que deprecated, et pourtant souvent bien pratique
* pyshop : permet d'avoir un repository local. Ne respecte pas la PEP 503, ne permet pas de gérer les permissions, backend sqlite bancal
* devpi : fonctionne très bien, mais usine à gaz (documentation austère et complexe)
* virtualenv : --relocatable qui ne fonctionne pas, rendant plus complexe les déploiements
Regarder "L'Enfer du packaging Python"
How Python influences JavaScript
Modern JavaScript offers several key features that have been heavily influenced
by Python: iteration protocols, generators and decorators. We'll review these typically
pythonic mechanisms and see how they're applied to JavaScript.
Packaging Python Wheel et Devpi
Afin d'aider la communauté à gérer proprement ses packages, la PSF, à travers la PEP427, à instauré en 2012/2013 le format de packaging Wheel.
La particularité de ce format tient dans le fait qu'il s'agit, en résumant sommairement, de dézipper directement dans le dossier "site-package" la version du package correspondant à la distribution utilisée. Ainsi plus de soucis de compilation possible.
Cette présentation vise à présenter ce nouveau format, et par extension, à introduire l'installation et l'utilisation basique de Devpi.
Cet outil permet de disposer en interne d'un serveur similaire à Pypi. Il permet ainsi de gérer ses propres paquets Python correctement et d'y avoir accès aisément via pip.
L'association du format wheel et de Devpi permet ainsi de standardiser la gestion de paquets Python, quels qu'ils soient.
Regarder "Packaging Python : Wheel and Devpi"
Pyduino : portage du langage Arduino en Python
Présentation de la librairie Pyduino que j'ai écrite en Python qui permet le portage du langage Arduino sur mini-PC.
En clair, avec Pyduino, coder un mini-pc aussi facilement qu'une carte Arduino et dans un même code, combiner entrées/sortie, réseau, fichiers, capture audio, etc.
Regarder "Pyduino : portage du langage Arduino en Python"
Informatique musicale : créer un séquenceur pas-à-pas avec Python
Aujourd’hui, que ce soit via « Maschine » de Native Instruments, « Push » de Ableton, ou encore via des machines à l’esprit plus vintage comme le « Dark Time » de Doepfer ou des émulations de vieilles boites à rythmes, les musiciens retrouvent le goût du séquencement pas à pas ou « Step Sequencing ».
Le bidouilleur que je suis avait envie de détourner son matériel pour reproduire ce type d’outil de création…
Après une introduction au MIDI et aux principes d’un séquenceur, nous verrons comment nous pouvons, avec Python et la librairie mido, « hacker » un certain synthétiseur hardware pour en faire un séquenceur pas à pas, à l’aide d’une boucle d’événements. Nous essaierons même de l’interfacer avec Ableton Live pour contrôler non plus les sons du synthétiseur, mais des samples !
Disclaimer : bien que pratiquant la M.A.O depuis longtemps, je ne suis pas expert en séquenceurs mais plutôt bidouilleur et pythoniste… Ainsi je laisserai une bonne place aux échanges avec vous pendant l’intervention !
Support de présentation
Regarder "Informatique musicale : créer un séquenceur pas-à-pas avec Python"
Les dessous du portage d'Ansible à Python 3
Ansible est un outil de déploiement d'un genre un peu spécial, qui fonctionne sans avoir besoin d'un agent sur la machine distante. Pour cela, il copie
directement des bouts de code python en vue de les exécuter sur la machine distante. Bien qu'étant plus simple pour l'utilisateur, ceci pose un problème de taille, faire tourner le code indépendamment de la version de python distante. Pire encore, comme l'outil se destine à des serveurs en tout genre, la version de python va de 2.4 (pour RHEL 5) à du python 3.5 pour les systèmes les plus récents. Et le code doit marcher directement sur tout ça.
Nous verrons dans cette présentation la façon dont la communauté Ansible va résoudre le souci, les différentes constructions permettant du code parfois moins idiomatique mais portable, et l'utilisation de python-six pour faciliter le portage.
Note de l'équipe d'organisation : captation vidéo non autorisée par l'intervenant.
Manipulating and analysing multi-dimensional data with Pandas
This talk will be based on open source data manipulation and analysis python library - Pandas. It will mainly focus on exploring the most commonly used features of the library like - integrated indexing using DataFrame objects, slicing and subsetting of large data sets, merging, joining and size mutability of data structures, hierarchical axis indexing to work with high-dimensional data in a lower-dimensional data, flexible reshaping and pivoting of data sets etc.
Basically, this talk will give you an overview of the most useful features of this library.
Une chaine de production de 3D temps-réel en Python
A travers +15 ans d'expérience dans la réalisation de jeux vidéos pour consoles et PC et de simulateurs 3D nous avons progressivement développé une compétence et un savoir faire que nous souhaitons aujourd'hui partager. Si la 3D temps-réel nécessite un socle C++ performant, nous considérons que le Python est parfaitement adapté au développement itératif d'applications métier utilisant la 3D.
Notre proposition de conférence porte sur deux thèmes complémentaires :
1/ Les avantages du Python dans le développement rapide d'applications métiers utilisant la 3D temps réel (simulateur, application VR et jeu vidéo)
2/ les défis rencontrés et solutions développées dans la création d'un framework complet de 3D temps réel (OpenGL, physique, VR, audio, vidéo, Windows, OS X et Linux) accessible depuis Python 3 sous la forme d'un simple module. Le framework ainsi développé étant la pierre angulaire des applications métiers mentionnées au dessus.
Items techniques pouvant être abordés : Python, PyQt, Bullet Physics, binding C++/Python, workflow de production 3D, visualisation scientifique.
Regarder "Une chaine de production de 3D temps-réel en Python"
Au secours, on n'a pas de projet Python dans ma boîte
Pourquoi apprendrais-je le Python alors qu'on ne developpe pas avec dans ma boîte ?
Un programme n'est pas forcément destiné à être livré à un client. L'essence de la programmation est de permettre à ceux qui la maîtrise d'automatiser des tâches pénibles.
Cette présentation donnera quelques exemples d'utilisation de Python pour simplifier notre vie de bureau. Nous verrons également ce que l'automatisation peut révéler sur nos organisations.
Regarder "Au secours, on n'a pas de projet Python dans ma boîte"
Pourquoi, mais pourquoi, async et await ont été inclu dans Python 3.5 ?
Avec quelques exemples du monde réel, je vais vous expliquer l'intérêt du modèle asynchrone et quand il est intéressant de l'utiliser. De plus, je vais vous montrer pourquoi l'inclusion de async / await + AsyncIO dans le cœur de Python est un choix judicieux, d'un point de vue technique et politique. Enfin, je vais vous présenter quelques bibliothèques dans la boîte à outils d'AsyncIO.
Regarder "Pourquoi, mais pourquoi, async et await ont été inclu dans Python 3.5 ?"
Des nouvelles du Front !
Pouvons-nous imaginer un monde sans Javascript dans notre navigateur ? Allons plus loin, pouvons-nous imaginer un monde avec la puissance et la facilité de Python dans notre navigateur ?
Après s'être imposé sur la partie Backend avec des technologies comme Flask et Django, est-ce que Python peut désormais devenir le langage du Frontend ?
Dans cette conférence, nous allons faire le point sur les solutions actuelles pour coder les applications et les sites web en Python (Brython, Rapydscript, Pyjs, PyPy.js, Web Assembly...).
Regarder "Des nouvelles du Front !"
Autentification et autorisation avec Django REST framework
Django REST framework est une librairie populaire permettant de mettre en place des APIs rapidement.
Construite au dessus de Django et en reprenant de nombreux concepts.
Cette présentation se concentre sur les mécanismes d'autentification et d'autorisation avec Django REST framework.
Nous aborderons les spécificités par rapport aux applications web "classiques", en particulier les échanges entre systèmes d'informations.
Nous verrons également comment intégrer son propre système d'autentification et de permissions au sein de Django REST framework.
Enfin, nous ferons un tour des solutions existantes.
Regarder "Authentification et autorisation avec Django REST framework"
Test Tout Terrain (Python edition)
# Tests Tout Terrain
Je fais des tests, mais:
- Stubs, mock, fake je suis un peu paumé...
- les tests unitaire, fonctionnels, techniques, de perfs, d'intégration c'est cher.
- ca met 40 plombes!
- Je débute, et franchement je ne sais pas par ou commencer.
- legacy!
def test_la_conf_TTT():
#Arrange
participants = genere_des_participants(2,100) #au moins 2 orgas!
#Act
participants.viens_a_la_conf_TTT()
#Assert
for participant in participants:
assert participant.a_appris_un_truc_sur_les_tests
Regarder "Test Tout Terrain (Python edition)"
Infrastucture moderne pour le développement en équipes
Présentation de l'environnement projets ("forge logicielle") mis en place à Net-ng pour le développement de nos projets Python. Cet environnement, entièrement revu en 2015, est exclusivement constitué de projets open-source et hébergé en local. Il est utilisé au quotidien par une vingtaine de développeurs.
Il intègre les outils de gestion de la relation clients en méthodologie Agile, le référentiel des sources, une intégration continue basée sur Docker, un PAAS Docker dédié pour le déploiement continu, un référentiel privé de packages Python et d'hébergement de la documentation. Il assure aussi la collaboration dans et entre nos équipes au travers d'une messagerie instantanée en mode "ChatOps" et de dashboards interactifs.
Regarder "Infrastucture moderne pour le développement en équipes"
La programmation asynchrone avec Python.
Coroutine, boucle d'événement, entrés sorties non-blocantes ...
Besoin de faire le tri ?
Depuis plusieurs années de plus en plus d'outils facilitent la programmation asynchrone. Un monde qui peut paraitre étrange dans lequel des serveurs gèrent des millier de connections simultanément sans utiliser de threads.
Cette présentation explique les différents concepts de la programmation asynchrone et l'évolution de celle-ci avec l'arrivée des nouveaux mots clé async et await dans python 3.5.
Nous verrons comment utiliser la librairie Asyncio, qui est à python ce que NodeJS est à JavaScript, puis nous découvrirons comment faire du web asynchrone grâce au framework Tornado et comment faire un pont entre Asyncio et Tornado.
Regarder "La programmation asynchrone avec Python."
Enseignement d'informatique en classes préparatoires scientifiques / Python dans les Grandes Écoles
L'enseignement de l'informatique a été profondément modifié il y a 3 ans dans les classes préparatoires, et les nouveaux programmes prévoient un enseignement utilisant le langage python. Ce court exposé présentera ce programme, les modalités d'enseignement, les attendus de ces enseignements.
Le partage d’expérience et les problématiques d’enseignement de Python dans les Grandes Écoles spécialisées. Comment convaincre d’intégrer Python dans les projets pédagogiques ? Utilisation des logiciels phares (type Blender ) dans l’enseignement 3D des filières des jeux vidéos et leur efficacité. Les astuces pour rendre Python attractif pour les étudiants. Des projets en Python en direction des entreprises et des étudiants (type Elicthus). La création d’une passerelle entre le monde de l’enseignement spécialisé et les futurs employeurs. Les problématiques et les difficultés d’enseignement de Python dans le cadre d’un enseignement par alternance. Un appel aux idées pour rendre Python plus étudiés dans les Grandes Écoles.
Regarder "Enseignement d'informatique en classes préparatoires scientifiques"
Regarder "Python dans les Grandes Écoles"
Python et la sécurité : de l'interpréteur au déploiement
Le langage Python est un langage très simple d'utilisation et très accessible. Il est aussi très facile de faire des erreurs et notamment des erreurs qui peuvent compromettre la sécu
rité du programme. Nous verrons dans cette conférence quel peut être le niveau de sécurité de nos programmes en Python en commençant pas analyser les vulnérabilités de l'interpréteur en lui même. Nous regarderons ensuite le code Python et
nous analyserons les comportements dangereux du développeur tout en essayant de trouver les meilleures solutions pour s'affranchir au maximum des vulnérabilités. Nous regarderons enfin le cycle de vie de nos applications ; du choix de l'ou
tillage jusqu'au déploiement de l'application pour filtrer et stopper les dernières vulnérabilités
Support de présentation
Introduction au notebook Jupyter
Présentation du spectre fonctionnel couvert par IPython et le notebook Jupyter. Du shell Python évolué au visualiseur de données scientifiques, en passant par l'outil exploratoire intéractif, de collaboration et de partage.
Regarder "Introduction au notebook Jupyter"
Libération du calculateur des impôts
Le code source du calculateur des impôts français [disponible ici](https://forum.openfisca.fr/t/acceder-au-code-source-de-la-calculette-impots/37) depuis le 1er avril 2016, est utilisé par la Direction générale des Finances publiques (DGFiP) pour simuler le calcul de l'impôt, pré-remplir les déclarations et produire les avis d'imposition de 37 millions de foyers fiscaux.
Développé dans un langage spécifique, le [langage M](https://forum.openfisca.fr/t/presentation-du-code-source-en-langage-m/52), le calculateur a été converti en arbre syntaxique abstrait (AST) puis compilé en Python.
Des travaux en cours visent à le fusionner avec le projet [OpenFisca](http://www.openfisca.fr/en).
OpenFisca est un moteur ouvert de micro-simulation du système socio-fiscal. Il a été créé en 2011 sous forme de logiciel libre en langage Python. Il permet entre autres de calculer un grand nombre de prestations sociales et d'impôts payés par les ménages, et de simuler l'impact de réformes sur leur budget.
Il s'agit d'un outil à vocation pédagogique pour aider les citoyens à mieux comprendre le système socio-fiscal.
Regarder "Libération du calculateur des impôts"
PyPy: Python faster than Python
PyPy is a fast and highly-compatible alternative implementation of Python. Its just-in-time compiler, backed by a state-of-the art garbage collector, allow it to run pure-Python(2) code on average 7 times faster than CPython 2.7, the reference implementation.
This presentation will give a tour of PyPy's goals, history and features with special emphasis on recent developments:
* cpyext, PyPy's emulation layer for CPython's C API, has been overhauled in order to soon allow full compatibility with all C extensions.
* Python 3 support is steadily improving with a recent 3.3-compatible release and development being started on a 3.5 version.
Regarder "PyPy: Python faster than Python"
Lire & Écrire la Doc
La documentation est un domaine très vaste, qui couvre autant les fichiers README.txt que les spécifications techniques, en passant par les schémas, les plans, les livres, les commentaires, et bien d'autres formats - qu'il soit sous notre contrôle ou mis en commun.
Je souhaite aborder la question de la lecture de la documentation, de notre façon d'aborder les problèmes dans notre métier, et des sources d'informations à notre disposition. C'est un tour autant chez les lecteurs de documentation, que chez les auteurs.
Ce sera l'occasion de parler de man, de StackOverflow, de la doc de Python, et de ce que nous pouvons, au quotidien, faire pour améliorer la situation - pour améliorer notre propre situation.
Regarder "Lire & Écrire la Doc"
Ma première appli en 30 minutes (et un peu de courage)
Vous aimeriez bien créer l'application de vos rêves, mais au moment de vous lancer, vous avez comme un doute… Rien qu'en imaginant les fonctionnalités géniales de votre future création, vous vous rendez à l'évidence : c'est beaucoup trop compliqué, c'est beaucoup trop de travail, autant remettre ça à plus tard, non ?
Pourtant, c'est peut-être plus facile que ça en a l'air. En moins de 100 lignes de Python, on peut avoir une petite application fonctionnelle toute mignonne. Vous avez une trentaine de minutes devant vous ? Alors c'est parti !
Faut-il être masochiste pour utiliser IPv6 (dans son code Python) ?
Tout le monde sait qu'IPv6 c'est l'avenir du réseau, mais peu le déploient et l'utilisent si bien que les réseaux IPv6 ne sont toujours pas aujourd'hui une réalité. Or IPv6 est une opportunité pour changer notre façon de penser le réseau en revenant à des principes simples (et stupides) qui ont fait le succès d'Internet. Cette conférence a pour objectif de démontrer cette simplicité, notamment dans la gestion du réseau au sein du code d'une application.
Regarder "Faut-il être masochiste pour utiliser IPv6 (dans son code Python) ?"
Voyage au centre du monde CPython
Vous desirez contribuer a CPython et vous ne savez pas comment ? Alors ce talk est fait pour vous!
En 2014, lors du PyCon US 2014 a Montreal, j'ai commence a contribuer a CPython via un sprint,
c'est ainsi que j'ai pu decouvrir les joies du dev de notre interpreteur favori.
A partir d'un exemple de code Python, nous allons decomposer l'interpreteur et voir ce
qu'il se passe dans ses entrailles.
De la simple expression "x = 2 + 2" executee sur la ligne de commande, nous voyagerons a travers le parser, et l'interpreteur.
Nous aurons le plaisir de rencontrer notre ami le compilateur qui transforme le code Python en ByteCode,
et ensuite la machine virtuelle qui execute le bytecode pour execute votre expression Python.
De plus, une section specifique sera presentee pour vous expliquer comment discuter et proposer
vos idees sur les contributions futures que vous pourrez apporter a CPython, tout en suivant
le workflow des Core Dev CPython.
Ce voyage interessant, permettra a toute personne de demarrer comme contributeur CPython
et d'apporter enfin une reponse a l'expression x = 2 + 2
Venez me rejoindre dans CPython.
Presente a EuroPython, PyCon IE, PyCon UK, PythonFOSDEM
Regarder "Voyage au centre du monde CPython"
Deep learning : votre propre cerveau artificiel avec Python
Le deep learning (ou "apprentissage profond") est une méthode d'apprentissage automatique dont la popularité a explosé en quelques années. Reposant sur les réseaux de neurones artificiels, le deep learning est dorénavant utilisé une quantité invraisemblable de systèmes intelligents : AlphaGo, mais aussi la reconnaissance vocale, les voitures autonomes, le sous-titrage automatique, les outils de détection d'objets, ...
Dans cette présentation, on présentera brièvement le minimum requis de théorie derrière les réseaux de neurones pour comprendre comment tout fonctionne, mais s'intéressera surtout aux outils existants en Python pour travailler avec le deep learning. Au travers plusieurs exemples, on apprendra ensemble à construire ses propres outils intelligents en quelques lignes de code pour classer des images et générer du texte.
Regarder "Deep learning : votre propre cerveau artificiel avec Python"
Traduction de la doc de Python et l'internationalisation
La traduction en français de la documentation officielle de Python est, au sein de l'AFPy, un projet qui date mais qui ne s'est jamais porté mieux !
Nous vous proposons de découvrir son histoire, son état actuel et où nous voulons l'emmener.
Nous vous apprendrons aussi comment nous aider à porter ce projet à son terme.
Traduire de la doc c'est bien, mais traduire une application, ce serait pas utile aussi ?
Laissez vous guider : nous allons vous montrer comment appliquer les mêmes méthodes sur un code pour permettre à vos utilisateurs et contributeurs de fournir votre application dans plusieurs langues.
Nous vous présenterons les outils de base et comment les appliquer à Python, de la modification de votre code aux outils des traducteurs.
...avec le retour d'expérience fait sur la traduction de la doc.
Regarder "Traduction de la doc de Python et l'internationalisation"
Scalable decentralised communication with Matrix.org and Twisted
Matrix.org is an open source project that creates a new ecosystem for interoperable decentralised communication. Matrix publishes open standard HTTP APIs for synchronising arbitrary real-time data (chat messages, VoIP calls, IoT data etc) with no central point of control, maintaining cryptographic integrity by storing conversation history in Merkle DAGs and using state-of-the-art end-to-end encryption via the Olm cryptographic ratchet. The aim of Matrix is to defragment online communication and make interoperable messaging/VoIP/IoT as simple and ubiquitous as sending an email. As well as the standard itself, Matrix.org releases Apache-licensed reference implementations of Matrix servers, bridges, bots, clients etc.
Our primary reference server implementation of Matrix is Synapse (https://github.com/matrix-org/synapse), which is built entirely in Python/Twisted. Since our initial release in September 2014, Synapse has grown to ~50KLOC and scales to ~300K users on the matrix.org server deployment and has hundreds of active deployments on the public internet. In this talk we’ll introduce Matrix and dig into both the good and bad sides of working with Twisted, the scalability challenges we’ve faced, how we fixed them and what we learned along the way!
Regarder "Scalable decentralised communication with Matrix.org and Twisted"
Gestion Avancée de la Mémoire dans Pandas / Mise à jour intelligentes de graphes d'exécution
Gestion Avancée de la Mémoire dans Pandas :
Dans le monde la transformation de données Pandas est aujourd'hui une des librariries référente dans le domaine. Derrière une apparente simplicité d'utilisation se cache des optimisation mémoires très avancés.Or de plus en plus nous confrontés a des volumes de données importants qui demandent de plus en plus de connaitre ces optimisations afin de pouvoir les utiliser au mieux sans faire d'erreur, sachant que les erreurs dans le monde de la donnée sont parfois difficiles à detecter et que dans le cadre du travail on ne prend pas forcement le temps d'aller au fond de la compréhension des mecanismes avancés.
Je propose donc d'expliquer ces subtilités de gestion de la mémoire dans Pandas ainsi que de donner des astuces qui permettent d'ecrire des programmes performants en mémoire avec cette librairie.
Mise à jour intelligentes de graphes d'exécution :
Une problématique fréquemment rencontrée en Data Science est: comment faire pour que l'état des données et du code les générant soit synchrone? En effet sur un projet avec plusieurs sources de données, plusieurs étapes de transformation, il devient vite compliqué de savoir quels script faire tourner pour recalculer l'ensemble des données du projet de manière intelligente. Avec des collègues de Quantmetry, nous avons développé une petit solution permettant de résoudre ce problème à partir de composants existatns: Dasq et Joblib. Le résultat est un outil permettant de décrire des graphes d'exécution de traitement de données et de regénérer intelligement a un temps donné des données d'un projet en détectant les sources de données ayant changé et en regénérant les données dépendantes.
Communiquer avec ØMQ: patterns d'utilisation, API asynchrone et sécurité
ØMQ ou zeromq est une une boite à outils réseau extrêmement légère, flexible et performante permettant à des acteurs distribués d'échanger un grand nombre de messages en utilisant des mécanismes de transport variés (in-process, inter-process, TCP, multicast). A la base conçue et optimisée pour le backend d'un système de trading en ligne, cette bibliothèque est aujourd'hui une solution générique et multi-langage et elle est utilisée par un large spectre d'applications: ipyparallel utilise zeromq pour la communication entre ses composants, les notebooks Jupyter l'utilisent pour s'entretenir avec les différents kernels, et de nombreux (micro)services web l'utilisent pour l'échange de messages et du RPC au sein de leur backend, comme entre autres chez Spotify (python, Zeromq, protobuf et gevent). A l'institut ChemTech (Haute Ecole d'Ingénierie et d'Architecture de Fribourg), on utilise cette technologie pour la communication en temps réel entre microservices qui monitorent, analysent, optimisent et contrôlent une halle de production chimique. Cette présentation propose de vous introduire aux patterns d'utilisation pythoniques de zeromq qui ont beaucoup évolués depuis Python 3.4 et l'arrivée de asyncio, aux possibilités de cette bibliothèque en terme d'architectures de communication et de sécurité, et de faire un état des lieux des forces, faiblesses et alternatives.
Regarder "Communiquer avec ØMQ: patterns d'utilisation, API asynchrone et sécurité"
Monkey-Patcher Python en production
Monkey-Patching est difficile, le faire en production l’est encore plus ! Il faut trouver comment entrer dans Python et faire attention aux pièges tendus en ces eaux souvent peu explorées. Nous vous présenterons les solutions que nous avons trouvées et ce qu’il faut éviter de faire quand on monkey-patch du code en production.
Regarder "Monkey-Patcher Python en production"
Support de présentation