Workiva Scripting et fin du support pour Python 3.9
Pour assurer la pérennité de vos automatismes, Workiva prend en charge Python 3,13, ainsi qu’un paramètre au niveau du script qui vous permet de choisir la version d’exécution de chaque script. Ce guide explique comment passer en toute sécurité de la version 3,9 à la version 3,13, ce qu’il faut tester et comment déployer les changements avec un minimum de perturbations.
Jusqu’à octobre 2025, Workiva Scripting s’appuyait sur la version officielle de Python 3,9 de la Python Software Foundation, qui a maintenant atteint sa fin de vie et ne reçoit plus de mises à jour de sécurité ni de corrections de bogues.
En réponse à ce changement, Workiva Scripting est passé à l’utilisation de l’image Amazon Linux 2023 (AL2023), qui fournit ses propres versions de Python 3,9 et 3,13. Ce changement garantit que Python 3,9 reçoit en permanence des correctifs de sécurité et une maintenance par le biais du cycle de mise à jour d’Amazon, même si la version Python en amont n’est plus corrigée par la communauté open-source.
Suite à cette transition, Workiva Scripting continuera à prendre en charge l’exécution de scripts en toute sécurité sur Python 3,9 jusqu’à Octobre 2026.
Qui devrait penser à cette migration ? Toute personne exécutant actuellement des automates Workiva Scripting sur Python 3,9- qu’ils soient déclenchés manuellement, à partir de Chains ou via Integrated Automations.
Et si je ne fais rien ? Vos scripts restent sécurisés par les correctifs AL2023 jusqu’en octobre 2026, mais il est recommandé de migrer vers la dernière version d’exécution prise en charge (3,13).
Pour en savoir plus sur les délais de fin de vie et les versions prises en charge, consultez la page web officielle sur l’état des versions de Python.
Comment Workiva soutient ce changement
Workiva déploie une mise à jour qui permet aux développeurs de contrôler le moteur d'exécution Python utilisé par leurs scripts. Cette mise à jour apportera les changements suivants :
- Prise en charge de Python 3.13 - Tous les nouveaux scripts utiliseront par défaut Python 3.13, la dernière version stable.
- Configuration du runtime par script - Chaque script vous permet désormais de choisir la version du runtime Python (3.9 ou 3.13) qu'il utilisera.
- Compatibilité ascendante - Tous les scripts existants continueront à utiliser Python 3.9 jusqu'à ce que vous les mettiez à jour.
- Prise en charge de l'éditeur et de l'API - Vous pourrez définir ou mettre à jour la durée d'exécution directement dans l'éditeur de script Workiva ou via l'API de script.
Cela vous permet de migrer selon votre propre calendrier, de tester en toute sécurité et de ne changer les scripts de production que lorsque vous êtes sûr qu'ils sont prêts.
Calendrier de ce changement
Pour vous aider à planifier, voici le calendrier de déploiement :
- Python 3,13 disponible dans Workiva (septembre 2025) - Tous les clients peuvent configurer des scripts pour qu’ils s’exécutent sur Python 3,9 ou Python 3,13 en utilisant l’API de script ou l’éditeur de script.
- Fin de vie de Python 3.9 (octobre 2025) - Fin du support officiel de la communauté Python. Workiva continue d’assurer le support via AL2023 jusqu’en octobre 2026, mais la migration est fortement recommandée.
- Octobre 2026 - Workiva prévoit de mettre fin à la prise en charge de Python 3,9 en octobre 2026, après quoi tous les scripts seront exécutés avec Python 3,13.
Vous devriez commencer à tester les scripts sur Python 3,13 dès que possible, tout en maintenant temporairement la production sur 3,9. Une fois que vous vous sentez à l’aise avec Python 3.13, basculez sans tarder vos scripts de production sur le runtime Python 3.13.
Passage d'un script à Python 3.13
Notre schéma de déploiement recommandé : créer une copie, mettre à jour la version, tester, puis promouvoir. Cela minimise les risques pour la production et vous permet de conserver l'historique des exécutions si vous en avez besoin.
Étape 1 — Faire une copie
- Dans Workiva, faites une copie de votre script de production.
La copie sera toujours réglée sur Python 3.9. - Définissez le runtime pour la copie sur Python 3.13.
Étape 2 - Tester et adapter le texte
- Exécutez la copie dans un contexte sûr/test.
- Corrigez toutes les ruptures de compatibilité (voir « Problèmes courants et corrections »).
- Validez les résultats, les effets secondaires et les performances.
Étape 3 - Passage à la version 3.13 (deux options)
Option A - Cette option permet de conserver l'historique de la production.
- Poussez le code mis à jour du copier vers le script original en utilisant copier-coller.
- Modifiez la durée d'exécution du script original en Python 3.13.
- Exécutez à nouveau vos tests, puis reprenez la programmation et les déclenchements normaux sur l'original.
- (Facultatif) Archivez ou retirez la copie.
Option B - Cette option ne permet pas de conserver l'historique du cycle de production.
- Modifiez le déclencheur de production (c’est-à-dire le déclencheur Chaînes) pour qu’il pointe du script original vers le script copie.
- Le produit copié devient le nouveau script de production (s’exécutant sur Python 3.13).
- (Facultatif) Archivez ou retirez l'original.
Appel à l'action : Quelle que soit l'option choisie, mettez tous vos scripts actifs sur Python 3.13 d'ici octobre 2025.
Mettre à jour la version de Python
Utilisation de l'API de script
-
Déterminez la durée d'exécution du script.
GET /v1/scripts/{script_id}Vérifiez la valeur de
runtimedans la réponse. -
Mettez à jour le script avec Python 3.13.
PATCH /v1/scripts/{script_id} Content-Type: application/json [{ "op": "replace", "path": "/runtime", "value": "python3.13" }]
Pour plus de détails, consultez la documentation Scripting Prototype API.
Exemple : Modification et lecture de la version d'exécution de Python
L'exemple de code suivant montre comment mettre à jour la version d'exécution d'un script (3.9 ou 3.13) à l'aide de l'API de script, et comment confirmer la version actuellement configurée.
import os import requests CLIENT_ID = os.environ.get("CLIENT_ID") CLIENT_SECRET = os.environ.get("CLIENT_SECRET") SCRIPT_ID = os.environ.get("SCRIPT_ID") VERSION = os.environ.get("VERSION") #VERSION = "python3.9" #VERSION = "python3.13" SCRIPTS_V1_URL = "https://api.app.wdesk.com/prototype/platform/scripts" AUTH_URL = "https://api.app.wdesk.com/iam/v1/oauth2/token" def change_version(clientId, clientSecret, scriptId, version): auth_header = get_auth_header(clientId, clientSecret) # Change Python Version req_body = [ { "op": "replace", "path": "/runtime", "value": version } ] resp = requests.patch( f"{SCRIPTS_V1_URL}/{scriptId}", json=req_body, headers=auth_header ) name = resp.json().get("name") new_version = resp.json().get("runtime") print("Python version for '" + name + "' script changed to: " + new_version.replace("python", "")) def read_version(client_id, client_secret): auth_header = get_auth_header(client_id, client_secret) # read Python Version resp = requests.get( f"{SCRIPTS_V1_URL}/{SCRIPT_ID}", headers=auth_header ) name = resp.json().get("name") configured_version = resp.json().get("runtime") print("Python version for '" + name + "' script: " + configured_version.replace("python", "")) # Récupère les en-têtes d’authentification pour un ID client et un secret donnés def get_auth_header(client_id, client_secret): token_headers = {"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8"} data_field = ( f"client_id={client_id}&client_secret={client_secret}" f"&grant_type=client_credentials" ) auth_resp = requests.post(f"{AUTH_URL}", data=data_field, headers=token_headers) auth_json = auth_resp.json() bearer_token = "Bearer " + auth_json.get("access_token") return {"Authorization": bearer_token} change_version(CLIENT_ID, CLIENT_SECRET, SCRIPT_ID, VERSION) #read_version(CLIENT_ID, CLIENT_SECRET)Utilisation de l'éditeur de script
Grâce à l'éditeur de script, vous pourrez configurer le moteur d'exécution directement dans l'interface utilisateur. Une nouvelle liste déroulante est disponible sous Properties → Runtime Version où vous pouvez choisir entre Python 3.9 et Python 3.13.
Pour mettre à jour un script dans l'éditeur :
- Ouvrez le script dans l’éditeur de script.
- Accédez au panneau Propriétés sur la droite.
- Sous Runtime Version, sélectionnez Python 3.13 dans la liste déroulante.
- Enregistrez vos modifications.
- Exécuter le script dans un environnement sécurisé/de test avant de promouvoir en production.
Astuces
- Assurez-vous que les paquets tiers présents dans vos scripts sont compatibles avec Python 3.13.
- Mettez à jour toutes les versions de paquets épinglées dans votre fichier
requirements.txt(par exemple, contrairement à Python 3.9,requests==2.28n'est pas nécessaire dans la version 3.13). - Lisez la documentation officielle de Python pour obtenir des détails sur les principaux changements apportés aux versions de Python 3.10, 3.11, 3.12, et 3.13, y compris :
- Correspondance de modèles structurels, mises à jour f-string, messages d’erreur améliorés
- Amélioration significative des performances (appels de fonction, opérations sur les chaînes de caractères, gestion de la mémoire, sérialisation/désérialisation JSON)
- Dépréciation de paquets et suppression de certains paramètres de paquets (
cgi,cgitb,distutils, etc. ont été dépréciés ; le paramètreasyncio"loop" a été supprimé)
Problèmes de migration courants et corrections lors du passage de la version 3.9 à la version 3.13
Voici quelques problèmes courants que vous pouvez rencontrer lors de la migration de scripts de Python 3.9 vers 3.13, ainsi que des suggestions pour les résoudre :
- Bibliothèques tierces - Certains paquets ne prennent pas encore en charge Python 3.13.
- Correction : Mettez à jour vers la dernière version compatible, ou remplacez par une alternative. Tester soigneusement toutes les exigences épinglées. Vous pouvez vérifier le support pour vos bibliothèques sur pyreadiness.org/3.13, et réviser l’article d’aide « Bibliothèques de script et dépendances prises en charge » pour plus d’informations.
- Version de la bibliothèque requests – La bibliothèque
requestsest la bibliothèque tierce la plus courante dans Workiva Scripting. Dans les premières versions de Python 3.9, les scripts cesseront de fonctionner avec desdemandesversion 2.30.0 ou plus récente. Une fois que vous migrez vers Python 3.13, vous pouvez utiliser les dernières versions derequestssans problèmes. - Python 3.13 présente des différences dans la gestion des chaînes de caractères et des octets - Des vérifications de type plus strictes peuvent mettre en évidence des problèmes cachés.
- Correction : Vérifier le code qui mélange
stretbyteset assurer un encodage/décodage explicite.
- Correction : Vérifier le code qui mélange
- Comportement des dates et des fuseaux horaires - Python 3.13 a des différences dans la bibliothèque
zoneinfoet une analyse plus stricte.- Correction : Testez toute la logique de la date et de l'heure, en particulier le formatage et les conversions de fuseaux horaires.
- Sérialisation JSON - Certains objets peuvent ne pas être sérialisés en raison de règles plus strictes.
- Correction : Assurez-vous que les objets personnalisés sont convertis avant
json.dumps, ou utilisez les encodeurs par défaut.
- Correction : Assurez-vous que les objets personnalisés sont convertis avant
- APIs dépréciées - Certaines fonctions Python
stdlib(par exemple,asyncio.get_event_loop,distutils, et certaines APIs locales) dépréciées dans Python 3.9 ont été supprimées.- Correction : Mise à jour du code pour utiliser les alternatives supportées.
- Modifications des performances - Les boucles et les tâches asynchrones peuvent se comporter différemment.
- Correction : Exécutez des tests de charge sur les chemins critiques ; mettez à jour la logique de concurrence si nécessaire.
Conseil : Commencez toujours par tester des copies de vos scripts de production. Les corrections appliquées dans un environnement de test contrôlé réduisent le risque de problèmes de production.
Nouveautés de Python 3.13
Voici quelques changements importants pour Python 3.13 :
- Amélioration de l'interpréteur interactif - Edition multi-lignes, couleurs et rétro-traces colorées.
- Mode de construction expérimental à threads libres - Permet de véritables threads parallèles (sans GIL) sur certaines plateformes.
- JIT expérimental - Premiers travaux d'amélioration des performances.
- Meilleurs outils de débogage –
Les mutations locals()fonctionnent désormais avec une sémantique bien définie. - Nouvel allocateur de mémoire - Mimalloc modifié inclus et activé par défaut s'il est supporté.
- Fichiers plus petits - Les chaînes de documents suppriment les espaces blancs, ce qui réduit l'utilisation de la mémoire et la taille des fichiers .pyc.
- Nouveau backend dbm - Utilise
dbm.sqlite3par défaut. - Mises à jour de la plateforme - macOS minimum 10.13, iOS/Android Tier 3, WASI Tier 2.
- Améliorations du typage - Défauts de type, rétrécissement, éléments en lecture seule et annotations de dépréciation.
- Suppressions – Modules dépréciés supprimés (par exemple,
cgi,telnetlib,imghdr,lib2to3, etc.).
Pour les notes de version complètes, consultez le site de Python.org "Quoi de neuf dans Python 3.13".
Si vous souhaitez réviser les modifications spécifiques introduites entre 3.9 et 3.13, voir :
FAQ
Q : Dois-je migrer tous mes scripts immédiatement ?
Non. Commencez à tester les scripts sur Python 3,13 dès maintenant et maintenez la production sur 3,9 uniquement de manière temporaire. Tous les scripts doivent être migrés vers Python 3,13 avant octobre 2026.
Q : Mes scripts existants seront-ils automatiquement interrompus lorsque Python 3.9 atteindra sa fin de vie ?
Workiva Scripting s’appuiera sur la version 3,9 de Python sous Amazon Linux 2023 (AL2023), qui continue à recevoir des correctifs de sécurité, jusqu’en octobre 2026. Vos scripts ne seront pas affectés par la fin de vie officielle de Python 3,9.
Q : Puis-je tester des scripts sur 3.13 tout en conservant la production sur 3.9 ?
Oui. Créez une copie de votre script et mettez-le à jour pour qu’il fonctionne avec Python 3,13 à des fins de test. Corrigez les éventuels problèmes de la copie avant de la mettre en production. Pour éviter toute perte de compatibilité, conservez des versions distinctes - une pour la version 3,9 et une pour la version 3,13 - afin de pouvoir passer facilement de l’une à l’autre en cas de besoin.
Q : L’éditeur de scripts prendra-t-il en charge la modification de la durée d’exécution ?
Oui. La prise en charge de l’éditeur pour Python 3,13 sera disponible en même temps que la prise en charge de l’API en septembre 2025.
Q : Où puis-je obtenir plus d'informations sur le soutien aux bibliothèques ?Consultez
pyreadiness.org/3.13 et l’article d’aide Workiva « Bibliothèques de script et dépendances prises en charge ».
Q : Qu'advient-il de mes données historiques si je change de script ?
Si vous écrasez le script original, vous conservez l'historique de l'exécution. Si vous pointez les déclencheurs vers une copie, l'historique d'exécution de l'original sera conservé dans l'ancien script.
Q : Que se passera-t-il si je ne migre pas d’ici octobre 2026 ?
Vos scripts passeront automatiquement à Python 3,13 après octobre 2026, lorsque Workiva cessera de prendre en charge l’exécution des scripts sur Python 3,9 sous AL2023. Pour éviter toute perturbation, vous devez tester et migrer les scripts vers Python 3,13 bien avant octobre 2026.
Q : Dois-je modifier mes chaînes ou mes automatismes intégrés lors de la migration ?
Non. Vos chaînes et automatismes intégrés continueront à fonctionner comme prévu, tant que les scripts sous-jacents seront mis à jour vers Python 3,13. L’étape principale consiste à s’assurer que le script lui-même a été migré.
Q : Puis-je ramener un script de Python 3,13 à 3,9 en cas de problème ?
Les utilisateurs peuvent ramener temporairement la durée d’exécution d’un script à Python 3,9, mais les modifications apportées au code pour l’adapter à Python 3,13 ne seront pas automatiquement annulées. Vous devrez ajuster manuellement le script pour le rendre à nouveau compatible avec la version 3,9. Il est préférable de conserver des copies séparées, l’une adaptée à Python 3,9 et l’autre à Python 3,13, afin de pouvoir passer d’une version à l’autre en toute sécurité en cas de problème.