Avec l'IA, Rust et Go peuvent remplacer Python (et le font)
by pas_pey from Linuxfr.org
https://medium.com/@NMitchem/if-ai-writes-your-code-why-use-python-bf8c4ba1a055Commentaires : voir le flux Atom ouvrir dans le navigateur
Commentaires : voir le flux Atom ouvrir dans le navigateur
Le 7 avril 2026 est sortie la version 2.8 du logiciel de gestion de la relation client Crème CRM (sous licence AGPL-3.0).

Au programme notamment, de nombreuses améliorations autour des droits, l’épinglage de fiches et des totaux calculés dans les vues en liste. Les nouveautés sont détaillées dans la suite de la dépêche.
Crème CRM est un logiciel de gestion de la relation client, généralement appelé CRM (pour Customer Relationship Management). Il dispose évidemment des fonctionnalités basiques d’un tel logiciel :
Crème CRM dispose en outre de nombreux modules optionnels le rendant très polyvalent :
L’objectif de Crème CRM est de fournir un logiciel libre de gestion de la relation client pouvant convenir à la plupart des besoins, simples ou complexes. À cet effet, il propose quelques concepts puissants qui se combinent entre eux (entités, relations, filtres, vues, propriétés, blocs), et il est très configurable (bien des problèmes pouvant se résoudre par l’interface de configuration) ; la contrepartie est qu’il faudra sûrement passer quelques minutes dans l’interface de configuration graphique pour avoir quelque chose qui vous convienne vraiment (la configuration par défaut ne pouvant être optimale pour tout le monde). De plus, afin de satisfaire les besoins les plus particuliers, son code est conçu pour être facilement étendu, tel un cadriciel (framework).
Du côté de la technique, Crème CRM est codé notamment avec Python/Django et fonctionne avec les bases de données MySQL, SQLite et PostgreSQL.
Voici les changements les plus notables de cette version :
C’est une version plus petite qu’à l’accoutumée (Creme 2.7 est sortie le 2 septembre 2025 et nous sortons une version par an). Cela nous permet de nous caler enfin sur les cycles de sortie de Django (dont les versions LTS—gérée pendant 3 ans—sortent en avril une fois tous les 2 ans) et donc éviter d’avoir des périodes où une version de Crème CRM est encore gérée mais pas la version de Django sous-jacente.
Les utilisateurs peuvent avoir plusieurs rôles. Il arrive que des personnes aient plusieurs casquettes, et finissent par posséder plusieurs utilisateurs, se connectant avec le bon utilisateur en fonction des tâches à effectuer. Mais c’est un peu contraignant de devoir à chaque fois se déconnecter puis se reconnecter (et ça peut aussi être gênant d’avoir plusieurs utilisateurs pour une seule identité). Un utilisateur peut désormais posséder plusieurs rôles, et peut passer de l’un à l’autre sans devoir se déconnecter. Voir ce lien pour plus de détails.

Les rôles peuvent désormais être désactivés. De manière générale, on essaie d’ajouter, au fur et à mesure des versions, la possibilité pour les différents objets que les utilisateurs peuvent supprimer de pouvoir d’abord passer par un état “désactivé”. Cela permet de tester un certain temps si un objet ne manque pas au final ; s’il y a un souci on peut revenir en arrière. C’est donc au tour des rôles d’avoir une telle fonctionnalité.
Les rôles gèrent maintenant les types de fiches qu’on peut lister, et 2 permissions spéciales peuvent être données : administration des utilisateurs & des rôles (il fallait être super-utilisateur pour les administrer dans les versions précédentes).
Vous pouvez désormais épingler les fiches auxquelles vous accédez souvent, pour aller dans leur vue détaillée.

Vous pouvez accéder aux dernières fiches épinglées dans l’entrée de menu « Accès rapide » ; cette entrée remplace l’entrée qui proposait uniquement les fiches visitées récemment, et propose ces dernières ainsi que les fiches épinglées :

Certaines colonnes de vue en liste affichent désormais des totaux calculés sur toutes les fiches de cette liste :
Les champs personnalisés (les champs de fiches ajoutés par les utilisateurs) peuvent posséder :
– une description ; celle-ci est utilisée notamment dans les formulaires afin de donner plus de détails aux utilisateurs sur le sens dudit champ.
– une valeur par défaut, utilisée à la création de nouvelles fiches ; voir ce lien pour plus de détails.
zip.La prochaine version devrait être la 3.0, et se concentrera sur une grosse revisite de l’interface graphique. À l’année prochaine !
Commentaires : voir le flux Atom ouvrir dans le navigateur
Hello tout le monde,
Le prochain meetup sur Lyon a lieu le lundi 18 mai à 19h.
Rendez-vous chez Lowit (métro Part-Dieu) où Emmanuel nous parlera de microcontrôleurs et de MicroPython !
| Excursion dans le monde des microcontrôleurs |
| May 18, 2026 7:00 PM (Europe/Paris) → May 18, 2026 9:00 PM (Europe/Paris) |
| https://www.meetup.com/fr-fr/python-afpy-lyon/events/314642594/ |
1 message - 1 participant(e)
C’est la suite de mon sujet de 2021 : Emacs : aujourd'hui j'essaye lsp-mode.
En 2026 je migre de jedi qui n’est plus maintenu à zuban. J’en profite pour migrer de lsp-mode à eglot qui est devenu natif.
Déjà, à quoi ça ressemble :
Le paquet Debian que j’utilise est emacs-pgtk.
Ensuite, la config « minimale » (72 lignes) :
(require 'use-package)
(require 'package)
(package-initialize)
(setq package-archives '(("gnu" . "https://elpa.gnu.org/packages/")
("melpa" . "https://melpa.org/packages/")))
(when (not package-archive-contents)
(package-refresh-contents))
(use-package yasnippet
:ensure t
:config
(yas-global-mode 1))
(use-package yasnippet-snippets
:ensure t)
(use-package company
:ensure t
:hook
(python-mode . company-mode))
(use-package envrc
:ensure t
:init (envrc-global-mode))
(use-package eglot
:hook (python-mode . eglot-ensure)
:config
(add-to-list 'eglot-stay-out-of 'flymake)
(add-to-list 'eglot-server-programs '((python-mode) . ("zuban" "server"))))
(use-package python
:custom
(python-indent-guess-indent-offset nil))
(use-package flycheck
:ensure t
:config
(global-flycheck-mode t))
(use-package blacken
:ensure t
:commands (blacken-mode)
:hook (python-mode . blacken-mode)
:config
(setq blacken-only-if-project-is-blackened t))
(use-package python-isort
:ensure t
:hook ((python-mode) . python-isort-on-save-mode)
:config
(setq python-isort-arguments '("--stdout" "--atomic" "-" "--profile=black")))
(use-package whitespace
:diminish (whitespace-mode global-whitespace-mode whitespace-newline-mode)
:hook ((python-mode) . whitespace-mode)
:config
(setq show-trailing-whitespace t)
(setq whitespace-line-column 88)
(setq whitespace-style '(face empty tabs lines-tail trailing)))
(use-package spacemacs-theme
:ensure t
:defer t
:init
(load-theme 'spacemacs-light t))
(global-font-lock-mode t)
(column-number-mode t)
(show-paren-mode t)
Le fichier se place dans ~/.emacs.d/init.el. La première fois qu’emacs démarre il télécharge tous les paquets décrits dans la config, donc le premier démarrage est long, c’est normal.
Maintenant pour qu’eglot puisse trouver zuban, pour que flycheck puisse trouver pylint, et pour que blacken-mode puisse trouver black le mieux c’est … un venv !
Et pour que le venv du projet soit chargé automatiquement par emacs j’utilise direnv, ça fait double usage : mes venv sont aussi activés automatiquement dans le shell !
Pour configurer direnv il faut un fichier .envrc à la racine du projet qui contient :
VIRTUAL_ENV=.venv
layout python3
Si c’est votre première utilisation de direnv il faut rajouter eval "$(direnv hook bash)" dans ~/.bashrc.
Il vous fera executer direnv allow pour l’autoriser à bosser, et hop, le venv est crée tout seul, et activé automatiquement par bash et emacs.
Faites-vous un alias ou une commande nommé venv pour gagner du temps sur la création de ce .envrc.
Il faut installer deux-trois trucs dans le venv :
pip install --upgrade zuban black mypy pylint
puis démarrer emacs :
emacs test.py
Pour ceux qui n’ont jamais lancé emacs avant, tapez Ctrl-h puis t, ça vous ouvrira le tuto interactif.
Ohhh, et j’ai configuré blacken-mode pour ne passer black à la sauvegarde que s’il trouve [tool.black] dans pyproject.toml, ça m’évite d’avoir emacs qui réecrit des fichiers dans des projets qui n’utilisent pas black, c’est la ligne blacken-only-if-project-is-blackened dans la config.
Quelques raccourcis importants :
M-. : c’est pour aller a la définition de quelque chose.M-x eglot-rename pour renommer une variable (et toutes ses occurrences).C-c ! n pour sauter a la prochaine erreur.Ma configuration complète est ici : https://git.afpy.org/mdk/dotfiles/src/branch/main/.emacs.d/init.el, elle est plus longue : j’enlève les menus, le message d’accueil, la décoration de la fenêtre, j’ajoute du confort, et j’ai de la configuration C, rust, org-mode, je configure emacs en mode serveur (et j’utilise emacsclient), etc…
1 message - 1 participant(e)
On a lsusb, lspci, lscpu… mais rien pour les écrans ou les GPUs.
Pour savoir quel écran est branché sur quelle sortie, c'est la danse du
xrandr | grep connected, cat /sys/class/drm/card*/edid | edid-decode,
nvidia-smi…
J'ai écrit deux outils pour régler ça.
Liste les écrans connectés avec fabricant, modèle, numéro de série,
résolution, fréquence, diagonale, et dessine un schéma ASCII du layout :
$ lsdisplay
CONNECTED DISPLAYS
==================
DP-4 1440x2560+0+0 27" 75Hz Iiyama PL2792Q DisplayPort S/N:1152031921274 rot=left [PRIMARY]
HDMI-A-2 1440x2560+1441+0 27" 75Hz Iiyama PL2792Q HDMI S/N:1152032422031 rot=left
HDMI-A-5 5376x3024+0+2561 65" 60Hz Samsung QN800D HDMI S/N:94:e6:ba:dd:9a:7a
Total: 3 display(s) connected
LAYOUT
======
+--------------+ +--------------+
| | | |
| DP-4* | | HDMI-A-2 |
| | | |
+--------------+ +--------------+
+------------------------------+
| |
| HDMI-A-5 |
| |
+------------------------------+
Fonctionnalités :
/sys/class/drm (pas de dépendance externe)--json pour le scripting--scan pour découvrir les Smart TV Samsung sur le réseauListe les GPUs avec stats NVIDIA, mapping écran par sortie :
$ lsgpu
GRAPHICS CARDS
==============
card0: NVIDIA GA107 [GeForce RTX 3050 6GB]
Driver: nvidia | VRAM: 6 GB | GPU:0% MEM:2077/6144MB 37°C 16.7W
├─ DP-4: connected ← Iiyama PL2792Q 27"
├─ HDMI-A-2: connected ← Iiyama PL2792Q 27"
card1: Intel Arrow Lake-S [Intel Graphics]
Driver: i915
├─ HDMI-A-5: connected ← Samsung TQ65QN800DTXXC 65"
Total: 2 GPU(s), 3 output(s) connected
Fonctionnalités :
--watch avec sparklines en temps réelsudo cp lsdisplay.py /usr/local/bin/lsdisplay
sudo chmod +x /usr/local/bin/lsdisplay
Paquet .deb disponible aussi. Un seul fichier Python, pas de pip, pas de venv.
C'est une v0.1.0 — testé sur ma config (GPU NVIDIA + Intel, KDE Wayland,
3 écrans dont 2 Samsung TV). J'aimerais des retours sur :
Licence : GPL-2.0
Commentaires : voir le flux Atom ouvrir dans le navigateur
Bonjour à tous,
Je cherche une alternative à mathlab simulink pour la mise au point d'algorithmes de contrôle et la modélisation de systèmes.
Après quelques essais (scilab xcos, modelica, octave …), c'est python qui a retenu mon attention et en particulier les notebook Jupyter et la bibliothèque control.
Ça fait quelques jours que je fais un essai sur la modélisation d'une régulation pour un générateur de courant mais certaines subtilités m'échappe.
En particulier, lorsque je veux modifier un paramètre dans une "cellule code" et la rejouer. Si cette dernière contient une courbe générer avec matplotlib, soit la courbe ne s'affiche pas, ou bien pas correctement, ou toutes les autres courbes s'en retrouve modifiées…
Matplotlib propose bien des exemples d'utilisation, mais comme mes essais, ils ne semblent fonctionner que si l'on exécute le "notebook" une seule fois.
L'utilisation de Jupyter notebook est-elle réservée à la documentation final du processus et non aux essais ? Ou bien je passe à côté de quelque chose ?
Commentaires : voir le flux Atom ouvrir dans le navigateur
Bonjour,
j’utilise Linux Mint et les mises à jour de Python sont automatiques.
Faut-il faire une mise à jour de la version de Python sous venv et comment ?
Pour les modules , quelle est la procédure de mise à jour ?
Merci d’avance
27 messages - 4 participant(e)s
Bonjour,
suite à recréation d’un compte github, j’ai été obligé (?) de me recréer un compte sur votre site.
Serait-il possible de regrouper mon ancien compte mapomm??? avec mon nouveau compte mapommBL et ne laisser que mon compte mapommBL ?
Merci d’avance
7 messages - 3 participant(e)s
Commentaires : voir le flux Atom ouvrir dans le navigateur
Je débute en programmation et je me suis heurté a une incompréhension sur la correction d’un exercice :
nombres = input("tapez votre suite de nombre séparé par des virgule")
liste = nombres.split(",")
liste_entier = []
for nombre in liste:
nombre_entier = int(nombre)
liste_entier.append(nombre_entier)
print("liste: ", liste_entier)
somme = 0
for nombre in liste_entier:
somme += nombre
print("somme : ", somme)
moyenne = somme / len(liste_entier)
print("moyenne: ", moyenne)
nombre_superieur_moyenne = 0
for nombre in liste_entier:
if nombre > moyenne:
nombre_superieur_moyenne += 1
print("nombre suprieur: ", nombre_superieur_moyenne)
Ca peut paraitre évident pour certain mais je ne comprend pas pourquoi, à la ligne 4 ( for nombre in liste:) il y a ce “nombre” qui sort de nul part , alors que ma variable plus haut est “nombres”. J’ai cherché, pensant que “nombre” était peut être déjà connu par le logiciel, mais je ne trouve rien a ce sujet.
Je n’arrive pas à passer outre cette incompréhension, et cella me retarde dans mon apprentissage, si une personne avais l’amabilité de prendre un petit peu de son temps pour m’expliquer cela j’en serait comblé. Merci d’avance et je vous souhaite une agréable journée
6 messages - 2 participant(e)s