MakeMake The Dwarf Planet is a feed agregator.

Sur Paris : Meetup le 22 octobre

by Chadys from AFPy discuss

Avant de se retrouver pour la PyConFR très bientôt, je vous propose un nouveau meetup chez nos amis d’Entr’ouvert au 167 Rue du Château, 75014 Paris

Sur Paris : Meetup le 22 octobre
Public · Créé par  Chadys
October 22, 2026 7:00 PM (Europe/Paris) → October 22, 2026 10:00 PM (Europe/Paris)
Entr'ouvert, 167 Rue du Château, 75014 Paris, France
2 utilisateurs participeront

Au programme, comment faire du refactoring avec les arbres syntaxiques par Laurent Direr + un sujet mystère.

Information détaillée sur meetup.com

1 message - 1 participant(e)

Lire le sujet en entier

Lire la suite…

Flet : créer des apps web, desktop et mobile en Python

by Camille Roux from Human coders

Flet est un framework qui permet de développer des applications web, desktop et mobile avec un seul code Python. Il propose plus de 150 contrôles et services, des paquets Python précompilés pour iOS et Android (NumPy, pandas, Pillow), ainsi que la commande flet build pour préparer la distribution, App Store et Google Play compris. Le framework gère aussi les tests avec pytest, l’exécution dans le navigateur via Pyodide et WebAssembly, les extensions basées sur Flutter, l’accessibilité et un serveur MCP pour assistants de code.


Commentaires
L'article Flet : créer des apps web, desktop et mobile en Python a été posté dans la catégorie Python de Human Coders News

Lire la suite…

Un peu de fun C++esque

by serge_sans_paille from Linuxfr.org

Demat'iNal,

En Python, les arguments d'une fonction sont évalués de gauche à droite. Le code suivant :

def dump(i):
    print(i)

def foo(x, y):
    ...

foo(dump(0), dump(1))

Affichera ainsi un 0 suivi d'un 1.

En C++ (comme en C), nous n'avons pas de telle garantie, si bien que l'affichage est non spécifié : cela peut aussi bien être 0 suivi de 1 que 1 suivi de 0 pour :

int dump(int i) { std::cout << i << std::endl; }
void foo(int,int) {}

foo(dump(0), dump(1))

Mais avec la petite astuce suivante on peut forcer l'ordre d’exécution, car les arguments d'une initializer_list sont ordonnés (cf. https://timsong-cpp.github.io/cppwp/n3337/dcl.init.list#4) (ici en utilisant les deduction guide).

std::apply(foo, std::tuple{0, 1});

Cependant on force alors tous les arguments de foo à être passés par valeur. On peut améliorer ce comportement pour respecter les r-value etc de la façon suivante :

template<class... Ts>
class pack_args {
    std::tuple<Ts...> args;
    public:
    pack_args(Ts... args) : args{std::forward<Ts>(args)...} {}
    std::tuple<Ts...> get() && {
        return std::move(args);}
};

template<class... Ts>
pack_args(Ts&&...) -> pack_args<Ts...>;

Puis

std::apply(foo, pack_args{0, 1}.get());

Comme l'illustre ce lien godbolt : https://godbolt.org/z/dTejr9336

On a ainsi ordonné les arguments d'appel sans perdre le contrôle fin du passage d'argument que permet C++.

Et voilà, une petite sucrerie de C++, probablement rien de nouveau sous le soleil pour les experts, mais ça m'a beaucoup amusé de jouer avec ça hier soir !

Et accessoirement, ça résout un bug dans Pythran, mais ça, c'est juste pour mon plaisir personnel.

Télécharger ce contenu au format EPUB

Commentaires : voir le flux Atom ouvrir dans le navigateur

Lire la suite…

Rapport de développement sur python-scim

by Éloi Rivard from Yaal

En 2022, nos amis d'IndieHosters ont obtenu le soutien de la fondation NLNet pour financer plusieurs développements autour du protocole SCIM2. Ils avaient fait appel à nous pour travailler sur l'intégration de SCIM dans le protocole Matrix, dans le serveur synapse et pour créer un utilitaire de test en ligne de commande. On vous en parlait ici. Les contributions à Matrix et synapse n'avaient pas été intégrées, mais la création de l'utilitaire en ligne de commande avait déclenché chez nous la création d'un ensemble de bibliothèques Python autour du protocole SCIM que nous avons rassemblées sous python-scim :

Logo de python-scim

L'hiver dernier nous avons à nouveau souscrit et obtenu le soutien du programme NGIZero Entrust pour fortifier python-scim et créer de nouvelles intégrations. Notamment en proposant une solution différente pour l'implémentation du protocole avec synapse, et dans des outils de LaSuite, on vous en reparle plus tard.

Logo de NLnet

Voici notre premier point d'étape. Nous avons traité la grande majorité des tickets et requêtes de fusion ouverts, et ré-organisé les bibliothèques de cette manière :

  • scim2-models s'occupe de la validation et de la production des données, et offre une interface de manipulation native en Python. C'est elle qui implémente la plupart des règles des spécifications sur le modèle de données et porte une grande partie de la complexité.
  • scim2-server propose des primitives pour implémenter un serveur SCIM. La plupart des traitements courants sont implémentés (comme la gestion des erreurs HTTP, la pagination des réponses, les ETags etc.). La bibliothèque est faite pour être branchée à un framework web (comme Django, Flask ou FastAPI par exemple) et à une base de données (via SQLAlchemy ou l'ORM Django). La bibliothèque embarque aussi deux serveurs SCIM2 d'exemple (fonctionnant en WSGI et ASGI) avec un stockage volatile en mémoire.
  • pytest-scim2-server embarque un serveur de test dans une fixture pytest, pour tester facilement des applications clientes.
  • scim2-client permet de découvrir les ressources exposées par un serveur, et créer et envoyer des requêtes SCIM vers ce serveur. Elle permet de vérifier la conformité des requêtes avant envoi, et se branche sur n'importe quel moteur de requêtes HTTP. Elle embarque des moteurs ASGI et WSGI pour faire des tests unitaires rapides sans passer par le réseau, et un moteur httpx2 pour le monde réel.
  • scim2-tester joue une série de scénarios pour vérifier la conformité du comportement de serveurs de test ou de production. La bibliothèque tente d'être exhaustive et de faire des vérifications sur chacun des attributs de chacune des ressources proposées par le serveur.
  • scim2-cli est un utilitaire en ligne de commande qui permet de faire des requêtes à un serveur, et de lancer un test de conformité sur ce serveur.

La première passe d'amélioration a consisté en :

  • L'implémentation des filtres. Les filtres permettent de faire des requêtes sur certaines ressources précisément selon certains critères, ainsi que de patcher des sous-attributs précis de ressources. La difficulté de cette tâche résidait principalement dans la traduction de la grammaire des filtres en un AST Python, la manipulation de cet AST par la bibliothèque pour effectuer un vrai filtrage, et enfin en offrir un transpileur pour convertir cet AST en requêtes SQL par exemple.
  • L'implémentation des opérations par lots. Les opérations par lots (ou BULK) permettent d'effectuer plusieurs opérations en une seule requête, mais apportent la possibilité de dépendances cycliques entre les opérations.
  • L'implémentation de la pagination par curseurs décrite par la RFC 9865. La pagination par curseurs s'oppose à la traditionnelle pagination par indexes, et s'illustre par sa stabilité et la garantie de ne pas présenter de ressource en doublon, même quand le jeu de données évolue en cours de lecture.
  • De nombreux nettoyages, améliorations et corrections de bugs, notamment pour la conformité des cas spéciaux de PATCH.

À venir dans l'écosystème, des intégrations officielles pour Django, Flask, FastAPI et SQLAlchemy. Possiblement un peu de réorganisation (peut-être que nous allons extraire les serveurs d'exemple dans leur propre projet, ainsi que la gestion des storages).

Nous remercions à nouveau chaleureusement la fondation NLNet pour nous permettre de travailler sur ces projets. On vous tient au courant rapidement pour la suite.

Lire la suite…

python-scim development report

by Éloi Rivard from Yaal

In 2022, our friends from IndieHosters received support from the NLNet foundation to fund several developments around the SCIM2 protocol. They asked us to work on SCIM integration in the Matrix protocol, in the synapse server, and to build a command line testing tool. We talked about it here. The Matrix and synapse contributions were not merged. However, building the command line tool led us to create a set of Python libraries around the SCIM protocol. We gathered them under python-scim:

python-scim logo

Last winter, we applied again and received support from the NGIZero Entrust program to strengthen python-scim and build new integrations. This includes a different approach to implementing the protocol in synapse, and integrations in LaSuite tools. We will tell you more about it later.

NLnet logo

Here is our first progress report. We handled most of the open issues and merge requests, and reorganized the libraries this way:

  • scim2-models validates and produces data, and offers a native Python interface to manipulate it. It implements most of the specification rules about the data model, and carries a large part of the complexity.
  • scim2-server provides primitives to implement a SCIM server. Most common operations are implemented (such as HTTP error handling, response pagination, ETags, etc.). The library is designed to plug into a web framework (such as Django, Flask or FastAPI) and a database (with SQLAlchemy or the Django ORM). The library also ships two example SCIM2 servers (WSGI and ASGI) with volatile in-memory storage.
  • pytest-scim2-server ships a test server in a pytest fixture, to easily test client applications.
  • scim2-client discovers the resources exposed by a server, and builds and sends SCIM requests to this server. It can check that requests are compliant before sending them, and works with any HTTP request engine. It ships ASGI and WSGI engines for fast unit tests without network access, and an httpx2 engine for the real world.
  • scim2-tester runs a series of scenarios to check that test or production servers behave according to the specifications. The library aims to be exhaustive. It checks each attribute of each resource exposed by the server.
  • scim2-cli is a command line tool to send requests to a server, and to run a compliance test on this server.

The first round of improvements included:

  • The implementation of filters. Filters let you query specific resources based on given criteria, and patch specific sub-attributes of resources. The main difficulty was to translate the filter grammar into a Python AST. The library then manipulates this AST to perform actual filtering. Finally, it provides a transpiler to convert this AST into SQL queries, for instance.
  • The implementation of bulk operations. Bulk operations perform several operations in a single request, but they also allow cyclic dependencies between operations.
  • The implementation of cursor-based pagination, described in RFC 9865. Unlike traditional index-based pagination, cursor-based pagination is stable. It guarantees that no resource is returned twice, even when the dataset changes during reading.
  • Many cleanups, improvements and bug fixes, especially for compliance with PATCH edge cases.

Coming next in the ecosystem: official integrations for Django, Flask, FastAPI and SQLAlchemy. Maybe some reorganization too: we might move the example servers and the storage management into their own projects.

Once again, we warmly thank the NLNet foundation for allowing us to work on these projects. We will keep you posted soon.

Lire la suite…

Nouveau contributeur intéressé par les projets Python :)

by Nexform-star from AFPy discuss

Bonjour à tous !

Je suis développeur en formation et j’apprends principalement Python. Je commence à contribuer à des projets open source sur GitHub et j’aimerais aussi participer aux projets de l’AFPy.

Est-ce que vous pourriez m’indiquer comment commencer à contribuer et s’il existe des tâches accessibles aux nouveaux contributeurs ?

Merci !

3 messages - 3 participant(e)s

Lire le sujet en entier

Lire la suite…

Présentation du projet IJRAP labs (rap journalisme et Investigation)

by imoadze1 from AFPy discuss

Bonjour à tous. Je développe le projet IJRAP labs, un logiciel Open Source pour le collecte des données scientifiques directement sur le terrain en mode déconnecté (offline).

L’outil cible l’écosystème python et le framework kivy pour sa capacité cross Platforms (Android et ordinateur). Le projet est enregistré sur zenodo pour garantir son cadre scientifique et open source.

Je vous invite tous a rejoindre cette coproduition. Si vous souhaitez consulter la fiche zenodo ou échanger sur le code, contacter moi en message privé et je vous partagerai le lien direct.

7 messages - 5 participant(e)s

Lire le sujet en entier

Lire la suite…

Un peu de fun polyglotte

by serge_sans_paille from Linuxfr.org

Pour le plaisir des yeux de l'esprit, juste parce que le concept est amusant :

En C:

#define def int
#define foo(k) foo(long k) { some_label
#define return(f) return f; }

def foo(i):
    return(++i)

En Python:

#define def int
#define foo(k) foo(long k) { some_label
#define return(f) return f; }

def foo(i):
    return(++i)

Je n'ai pas réussi à tirer parti des accolades des dictionnaires Python pour avoir quelque chose qui contienne des instructions C. Mais si quelqu'un du lectorat voit d'autres moyens de détourner la syntax Python pour l'adapter au C, j'ai hâte de lire ça :-)

Est-ce utile ? Pas directement, mais c'est très amusant (ce qui est déjà utile en soi). La page wikipedia anglaise sur le sujet est un petit bonbon de geekerie, j'adore:

https://en.wikipedia.org/wiki/Polyglot_(computing)

On y apprend entre autres qu'il y a des applications en sécurité informatique ;-)

Télécharger ce contenu au format EPUB

Commentaires : voir le flux Atom ouvrir dans le navigateur

Lire la suite…

Relier 4 700 ventes aux enchères judiciaires à DVF, la BAN et Géorisques : ce qui casse

by Baptiste from Linuxfr.org

Quand un logement est saisi en France, il finit vendu aux enchères au tribunal. C'est une procédure publique de bout en bout : l'annonce est publiée, n'importe qui peut assister à l'audience, et le prix final est annoncé dans la salle.

Je me suis dit qu'il devait bien exister quelque part un fichier avec toutes ces ventes et leurs prix. Pour les ventes immobilières classiques, il y a DVF depuis 2019, et tout le monde s'en sert. Pour les ventes au tribunal, rien. J'ai cherché un moment avant de me résoudre à le construire moi-même, et c'est ce chantier que je voulais raconter ici.

Je précise d'emblée que j'en ai fait un site, MdB Scanner. Il a une partie payante et son code n'est pas libre. Les chiffres que j'en ai tirés sont en revanche publiés sous Licence Ouverte.

Trois sources, aucun format

Les annonces, ce sont les avocats qui les publient, soit sur le site de leur cabinet, soit sur des plateformes privées. Une même vente se retrouve souvent sur deux ou trois sites, pas toujours avec la même surface ni la même mise à prix.

Les documents de la vente sont des PDF, souvent des scans. Certains sont barrés d'un filigrane en diagonale sur chaque page, et là, l'OCR rend de la bouillie. Sur un lot de dix dossiers, j'en ai eu six inexploitables. J'ai fini par faire lire les pages en image par un modèle de vision. Ça marche, mais je n'en suis pas très fier.

Quant aux prix d'adjudication, je n'ai trouvé aucune publication officielle. Un seul site les publie pour toute la France, quelques cabinets d'avocats le font pour leurs propres ventes, et pour presque une audience sur trois, je ne trouve le résultat nulle part.

DVF voit passer les enchères, mais de loin

DVF contient bien des ventes marquées « Adjudication ». Le problème, c'est qu'on ne sait pas s'il s'agit d'une saisie ou d'une vente volontaire chez un notaire, qu'il n'y a pas la mise à prix, et que rien ne permet de relier la ligne à une audience. La base a aussi du retard : aujourd'hui, elle s'arrête fin 2025.

Je me sers donc de DVF pour autre chose : savoir à combien se vendent les logements autour.

Les petites surprises en chemin

Le dédoublonnage m'a coûté cher. Même adresse, même jour, même mise à prix : j'étais sûr d'avoir affaire à la même vente. Sauf qu'une procédure vend souvent plusieurs lots le même jour dans le même immeuble. Et dans l'autre sens, j'ai réussi à coller une annonce du 16ᵉ arrondissement sur le résultat d'une vente du 15ᵉ.

Pour situer les biens, la Base Adresse Nationale m'a sauvé, mais pas avant que je découvre des villes nommées « Une » ou « Usage D'Habitation », et un appartement de Meaux rangé dans l'Aube.

Mention spéciale à l'API Géorisques à Paris, Lyon et Marseille : selon la donnée demandée, elle veut le code de la commune ou celui de l'arrondissement. Si on se trompe, elle répond poliment qu'il n'y a aucun risque.

Au bout du compte

J'ai réuni 4 728 ventes entre fin 2022 et septembre 2026. Pour 2 961 logements, j'ai pu comparer le prix final aux ventes voisines dans DVF : la moitié est partie à moins de 60 % du prix du quartier, frais non compris, et une sur onze au prix du quartier ou plus cher. Avec une réserve de taille : DVF ne dit rien de l'état des biens, et beaucoup sont abîmés ou occupés.

Tout est détaillé ici, méthode et limites comprises : https://mdbscanner.fr/guide/a-quel-prix-partent-vraiment-les-logements-saisis

Les chiffres agrégés sont sur data.gouv.fr : https://www.data.gouv.fr/datasets/prix-dadjudication-des-logements-vendus-aux-encheres-judiciaires-compares-aux-ventes-voisines-2022-2026-1

Si vous avez des idées

Deux choses me résistent encore.

D'abord ces filigranes. Quelqu'un a-t-il déjà réussi à les nettoyer avec des outils libres avant l'OCR, que ce soit avec ImageMagick, OpenCV, ocrmypdf ou autre chose ? J'aimerais bien me passer du modèle de vision.

Ensuite les résultats. Quelqu'un a-t-il déjà essayé de les obtenir directement auprès d'un greffe, ou connaît-il une source officielle qui m'aurait échappé ?

Merci d'avance, et merci à ceux qui maintiennent DVF, la Base Adresse Nationale et Géorisques.

Télécharger ce contenu au format EPUB

Commentaires : voir le flux Atom ouvrir dans le navigateur

Lire la suite…

Project IJRAP labs : logiciel python et kivy pour le terrain

by imoadze1 from AFPy discuss

Bonjour à tous. Je développe le projet IJRAP labs, un logiciel Open Source pour le collecte des données scientifiques directement sur le terrain en mode déconnecté (offline).

L’outil cible l’écosystème python et le framework kivy pour sa capacité cross Platforms (Android et ordinateur). Le projet est enregistré sur zenodo pour garantir son cadre scientifique et open source.

Je vous invite tous a rejoindre cette coproduition. Si vous souhaitez consulter la fiche zenodo ou échanger sur le code, contacter moi en message privé et je vous partagerai le lien direct.

1 message - 2 participant(e)s

Lire le sujet en entier

Lire la suite…