Openai rachète Astral
by Quiwy from Linuxfr.org
https://openai.com/index/openai-to-acquire-astral/Commentaires : voir le flux Atom ouvrir dans le navigateur
Commentaires : voir le flux Atom ouvrir dans le navigateur
Bonjour à toutes et tous,
Les vidéos de la PyConFR 2025 qui s’est tenue à Lyon en octobre/novembre derniers, déjà accessibles depuis quelques semaines sur cette chaîne IndyMotion sont maintenant référencées sur PyVideo : PyVideo.org · PyCon FR 2025
Bon visionnage ![]()
1 message - 1 participant(e)
Exploration des comportements surprenants de float('nan') en Python : chaque instance de NaN est hashable mais jamais égale à elle-même, ce qui produit des résultats contre-intuitifs dans les sets (10 NaN distincts) et les dictionnaires (clés inaccessibles). L’article démontre avec des exemples concrets pourquoi NaN crée des situations paradoxales dans les structures de données Python, bien que son utilisation comme clé de dictionnaire soit déconseillée en pratique.
Hello,
Je suis à la recherche sur Paris d’un lieu et d’un animateur pour que l’on puisse réaliser notre kick off avec mon équipe.
L’idée serait de faire sur la matinée conférence ou workshop
Nous sommes 8 personnes et on aimerait un sujet lié autour de python / GCP / vuejs (ou autre)
Le niveau est très varié, cette équipe travaille dans la data
Cela peut être un sujet déjà présenté auparavant ou à co-construire
J’aimerais idéalement avant juin
N’hésitez pas à me contacter si intéressé ou si vous avez besoin de plus de détails
1 message - 1 participant(e)
NdM: le paquet Python présenté ci-dessous est un logiciel propriétaire avec licence annuelle payante, les prix annoncés commençant à 799 USD/an.
Dans les flux de travail de gestion documentaire et de rapports d'entreprise, la conversion de feuilles de calcul Excel au format PDF représente une opération fondamentale. Le format PDF préserve fidèlement la mise en page, empêche les modifications accidentelles et garantit un affichage cohérent sur différents appareils et plateformes. Cet article explore les méthodes efficaces pour convertir des fichiers Excel en PDF à l'aide de Python, tout en maintenant la qualité du formatage et en contrôlant divers paramètres de conversion.
Les feuilles de calcul Excel excellent dans l'analyse et l'édition de données, mais elles présentent certaines limitations lors de la distribution :
L'automatisation de cette conversion avec Python permet le traitement par lots de rapports financiers, la génération automatique de factures et l'intégration dans des pipelines de données plus vastes.
Avant de commencer, vous devez installer une bibliothèque Python prenant en charge les opérations Excel. Spire.XLS for Python fournit des API complètes pour gérer les classeurs au format XLSX, y compris les fonctionnalités de conversion PDF.
pip install Spire.XLS
Une fois installée, importez les modules pertinents dans votre script Python :
from spire.xls import *
from spire.xls.common import *
Les étapes principales pour convertir un fichier Excel en PDF sont simples : créer un objet classeur, charger le fichier Excel et enregistrer au format PDF. Voici un exemple minimal fonctionnel :
La méthode la plus directe pour convertir un fichier Excel consiste à utiliser l'objet Workbook qui gère automatiquement la structure du document. Cette approche fonctionne parfaitement pour des conversions rapides où vous souhaitez préserver l'intégralité du contenu et du formatage d'origine sans configuration supplémentaire :
from spire.xls import *
from spire.xls.common import *
# Définir les chemins d'entrée et de sortie
inputFile = "tableau.xlsx"
outputFile = "resultat.pdf"
# Créer un objet classeur
workbook = Workbook()
# Charger le fichier Excel depuis le disque
workbook.LoadFromFile(inputFile)
# Configurer l'ajustement des feuilles pour un meilleur rendu PDF
workbook.ConverterSetting.SheetFitToPage = True
# Enregistrer au format PDF
workbook.SaveToFile(outputFile, FileFormat.PDF)
# Libérer les ressources
workbook.Dispose()
Ce code illustre le flux de conversion le plus élémentaire. L'objet Workbook gère le chargement et la gestion du fichier Excel, tandis que SaveToFile() avec FileFormat.PDF spécifie le PDF comme format de sortie. Le paramètre SheetFitToPage garantit que les feuilles de calcul sont correctement mises à l'échelle pour tenir dans les pages PDF.
Pour l'archivage documentaire à long terme, le PDF/A constitue une version normalisée ISO du PDF conçue pour la préservation numérique. Convertir Excel en PDF/A assure que les documents resteront accessibles pendant des décennies :
Lorsque vos documents Excel contiennent des données financières, des registres légaux ou toute information nécessitant une conservation à long terme, il est essentiel d'utiliser le standard PDF/A. Cette norme garantit que tous les éléments visuels et texturaux sont intégrés dans le fichier, éliminant toute dépendance aux polices ou ressources externes :
from spire.xls import *
from spire.xls.common import *
inputFile = "donnees_financieres.xlsx"
outputFile = "copie_archivage.pdf"
workbook = Workbook()
workbook.LoadFromFile(inputFile)
# Définir le niveau de conformité PDF sur PDF/A-1B
workbook.ConverterSetting.PdfConformanceLevel = PdfConformanceLevel.Pdf_A1B
# Enregistrer en PDF conforme PDF/A
workbook.SaveToFile(outputFile, FileFormat.PDF)
workbook.Dispose()
Le paramètre PdfConformanceLevel offre plusieurs options :
La conformité PDF/A est essentielle pour les documents juridiques, les registres financiers et tout contenu nécessitant une préservation à long terme.
Parfois, vous n'avez besoin d'exporter qu'une plage de données spécifique plutôt que des feuilles de calcul entières. Cette approche s'avère utile pour créer des résumés ou extraire des indicateurs clés :
Dans de nombreux scénarios professionnels, seul un sous-ensemble des données doit être partagé. Plutôt que de distribuer un classeur complet, vous pouvez isoler une section pertinente et la convertir indépendamment. Cette technique permet de générer des vues ciblées adaptées à différents publics ou objectifs :
from spire.xls import *
from spire.xls.common import *
inputFile = "rapport_trimestriel.xlsx"
outputFile = "section_resumé.pdf"
workbook = Workbook()
workbook.LoadFromFile(inputFile)
# Ajouter une nouvelle feuille de calcul pour la plage sélectionnée
workbook.Worksheets.Add("resume")
# Copier la plage de cellules spécifique vers la nouvelle feuille
workbook.Worksheets[0].Range["A9:E15"].Copy(
workbook.Worksheets[1].Range["A9:E15"],
False, # Ne pas copier les formules
True # Copier le formatage
)
# Ajuster automatiquement les largeurs de colonnes pour une meilleure apparence
workbook.Worksheets[1].Range["A9:E15"].AutoFitColumns()
# Enregistrer uniquement la plage sélectionnée en PDF
workbook.Worksheets[1].SaveToPdf(outputFile)
workbook.Dispose()
Cette approche s'avère particulièrement utile lorsque :
- Vous créez des résumés exécutifs à partir de rapports détaillés
- Vous extrayez des tableaux de données spécifiques pour des présentations
- Vous générez des vues ciblées de grands ensembles de données
- Vous partagez des portions sélectionnées sans révéler les feuilles de calcul complètes
Les feuilles de calcul Excel s'étendent souvent sur plusieurs colonnes qui peuvent ne pas bien s'adapter aux tailles de page standard. Vous pouvez configurer la mise en page pour forcer le contenu à tenir dans des dimensions spécifiées :
Lorsque vos tableaux Excel comportent de nombreuses colonnes, il est crucial de configurer correctement l'aperçu avant impression. Sans ajustement approprié, certaines colonnes pourraient être coupées ou apparaître sur des pages séparées, rendant la lecture difficile. La propriété FitToPagesWide résout ce problème en compressant horizontalement le contenu :
from spire.xls import *
from spire.xls.common import *
inputFile = "donnees_etendues.xlsx"
outputFile = "rapport_ajuste.pdf"
workbook = Workbook()
workbook.LoadFromFile(inputFile)
# Configurer chaque feuille de calcul
for sheet in workbook.Worksheets:
# Tenir sur une page de large (pas de limite d'échelle horizontale)
sheet.PageSetup.FitToPagesWide = 1
# Pas de limite verticale (autoriser plusieurs pages en hauteur)
sheet.PageSetup.FitToPagesTall = 0
# Enregistrer avec la mise en page appliquée
workbook.SaveToFile(outputFile, FileFormat.PDF)
workbook.Dispose()
Les paramètres de mise en page fonctionnent comme suit :
Cette configuration garantit que les feuilles de calcul larges restent lisibles sans défilement horizontal excessif ni tailles de police minuscules.
En combinant ces techniques, vous pouvez construire un système automatisé de distribution de rapports :
Pour illustrer l'application concrète de ces concepts, imaginons un scénario où vous devez générer régulièrement des rapports départementaux à partir d'un classeur maître. Un tel système nécessite non seulement la conversion en PDF, mais aussi l'organisation des fichiers, le suivi des versions et la personnalisation selon les destinataires :
import os
from datetime import datetime
from spire.xls import *
from spire.xls.common import *
class DistributeurRapportsExcel:
def __init__(self, racine_rapports="rapports"):
self.racine_rapports = racine_rapports
if not os.path.exists(racine_rapports):
os.makedirs(racine_rapports)
def generer_rapport_mensuel(self, fichier_excel, departement=None):
"""Générer un rapport PDF à partir d'un fichier Excel"""
# Créer un sous-répertoire pour le département
if departement:
dossier_dept = os.path.join(self.racine_rapports, departement)
if not os.path.exists(dossier_dept):
os.makedirs(dossier_dept)
else:
dossier_dept = self.racine_rapports
# Générer un nom de fichier avec horodatage
horodatage = datetime.now().strftime("%Y%m_%H%M%S")
nom_base = os.path.splitext(os.path.basename(fichier_excel))[0]
nom_pdf = "{0}_{1}.pdf".format(nom_base, horodatage)
chemin_pdf = os.path.join(dossier_dept, nom_pdf)
# Effectuer la conversion
workbook = Workbook()
workbook.LoadFromFile(fichier_excel)
# Optimiser pour la sortie PDF
workbook.ConverterSetting.SheetFitToPage = True
# Appliquer la mise en page à toutes les feuilles
for sheet in workbook.Worksheets:
sheet.PageSetup.FitToPagesWide = 1
sheet.PageSetup.FitToPagesTall = 0
workbook.SaveToFile(chemin_pdf, FileFormat.PDF)
workbook.Dispose()
return chemin_pdf
def distribuer_feuilles_classeur(self, fichier_excel, dossier_sortie):
"""Extraire et enregistrer chaque feuille en PDF séparé"""
if not os.path.exists(dossier_sortie):
os.makedirs(dossier_sortie)
workbook = Workbook()
workbook.LoadFromFile(fichier_excel)
fichiers_exportes = []
for sheet in workbook.Worksheets:
nom_pdf = sheet.Name + ".pdf"
chemin_pdf = os.path.join(dossier_sortie, nom_pdf)
sheet.SaveToPdf(chemin_pdf)
fichiers_exportes.append(chemin_pdf)
print("Feuille exportée : {0}".format(chemin_pdf))
workbook.Dispose()
return fichiers_exportes
# Exemple d'utilisation
distributeur = DistributeurRapportsExcel("rapports_mensuels")
rapport_pdf = distributeur.generer_rapport_mensuel(
"donnees_ventes.xlsx",
departement="ventes"
)
print("Rapport généré : {0}".format(rapport_pdf))
Ce système de distribution offre :
- Une organisation par département
- Un suivi par horodatage pour le contrôle de version
- Une exportation flexible en fichier unique ou feuilles multiples
- Une optimisation automatique des pages
Ajustez la mise en page pour adapter correctement le contenu :
sheet.PageSetup.FitToPagesWide = 1
sheet.PageSetup.FitToPagesTall = 0
Assurez-vous d'activer les paramètres de haute qualité :
workbook.ConverterSetting.SheetFitToPage = True
Si vous copiez des plages, décidez s'il faut copier les formules ou les valeurs :
# Copier uniquement les valeurs (sans les formules)
range.Copy(target_range, False, True)
Pour des besoins d'archivage où la taille compte, envisagez un PDF standard plutôt que PDF/A :
workbook.ConverterSetting.PdfConformanceLevel = PdfConformanceLevel.None
La conversion de fichiers Excel en PDF constitue une compétence essentielle pour la génération automatique de rapports et la gestion documentaire. Tout au long de cet article, nous avons appris :
Workbook
Ces techniques s'appliquent directement à la reporting financier, à la génération automatique de factures, aux tableaux de bord d'intelligence économique et aux flux de travail de conformité réglementaire. Après avoir maîtrisé la conversion de base, vous pouvez explorer des fonctionnalités avancées telles que la protection par mot de passe, les signatures numériques et les filigranes personnalisés pour construire des solutions d'automatisation documentaire complètes.
Commentaires : voir le flux Atom ouvrir dans le navigateur
Dan Blanchard vient de publier une nouvelle version de Chardet, une bibliothèque Python largement utilisée, sous licence MIT permissive, alors que les versions précédentes étaient sous licence GNU LGPL. Comment est-ce possible, étant donné que Dan est le responsable de cette bibliothèque, mais qu’il n’en est ni l’auteur originel ni le seul contributeur ? La réponse est très simple et d’actualité : cette version est une réécriture complète du projet, réalisée par l’IA Claude en cinq jours. Elle n’emprunte aucun fragment de code aux versions antérieures. Plus précisément, les quelques correspondances identifiées (1,3 % du code) ne sont pas spécifiques à Chardet. Elles correspondent à des idiomatismes dans les projets en Python.
Après avoir mené ses propres expériences, tout aussi convaincantes, Bruce Perens a récemment déclaré :
Je brise la vitre et déclenche l’alarme incendie ! Toute l’économie du développement logiciel est morte, disparue, finie, kaput !
Comme le souligne Bruce Perens, ce problème n’est pas spécifique aux logiciels libres. Les éditeurs de logiciels indépendants et leur modèle économique sont également ubérisés par les IA génératives. Et, bien sûr, cette question existentielle concerne également les ESN (i.e. les sociétés de service).
NdM: des infos complémentaires en provenance du lien ayant déjà généré quelques commentaires : d’abord l’auteur originel de Chardet demande d’annuler ce changement de licence qu’il considère comme une violation des droits ; et déjà au moins un ticket considérant un risque juridique « v7.0.0 presents unacceptable legal risk to users due to copyright controversy ». Sont aussi mentionnés un article LWN (accès réservé aux abonnés jusqu’au 19 mars et accès libre ensuite), et un autre cas de réécriture d’une application dans un autre langage et une autre licence, mais faite d’une toute autre manière avec GNU Coreutils (C, GPL) et uutils (Rust, MIT). Encore d’autres articles via Phoronix ou Slashdot ou LinkedIn ou…
Commentaires : voir le flux Atom ouvrir dans le navigateur
Après trois ans de débats et deux PEPs, Python 3.15 intègre officiellement les imports paresseux via le mot-clé lazy. Meta et Hudson River Trading avaient déjà implémenté cette fonctionnalité dans leurs forks de CPython, avec des gains impressionnants : jusqu’à 70% de réduction du temps de démarrage et 40% de mémoire économisée. Le PEP 690 avait été rejeté pour son approche globale, tandis que le PEP 810 a été accepté à l’unanimité grâce à son design explicite et les preuves d’efficacité en production.
Évènement détaillé sur Optimiser son intégration continue de projet Python (mais pas que), mar. 17 mars 2026, 18:45 | Meetup.
1 message - 1 participant(e)
Hello tout le monde,
Le prochain meetup à Lyon est le 19 mars, à 19h, où @fcodvpt nous parlera de MkDocs !
Nous serons accueillis par OVHcloud (métro Garibaldi).
| Créer un site web facilement avec MkDocs… c'est fini ? |
| March 19, 2026 7:00 PM (Europe/Paris) → March 19, 2026 10:00 PM (Europe/Paris) |
| https://www.meetup.com/fr-fr/python-afpy-lyon/events/313505021/ |
1 message - 1 participant(e)