Workiva Scripting en het einde van de ondersteuning voor Python 3.9
Om uw automatiseringen toekomstbestendig te maken , heeft Workiva ondersteuning voorPython 3.13 geïntroduceerd, samen met een instelling op scriptniveau waarmee u de runtimeversie voor elk script kunt kiezen. Deze handleiding legt uit hoe u veilig kunt overstappen van versie 3.9 naar 3.13, wat u moet testen en hoe u wijzigingen met minimale verstoring kunt doorvoeren.
Tot oktober2025 maakte Workiva Scripting gebruik van de officiële Python 3.9-release van de Python Software Foundation; deze versie heeft in oktober 2025 het einde van zijn levenscyclus bereikt en ontvangt daarom geen beveiligingsupdates of bugfixes meer.
Als reactie hierop is Workiva Scripting overgestapt op het gebruik van de Amazon Linux 2023 (AL2023 ) image, die eigen builds en ondersteuning biedt voor zowel Python 3.9 als Python 3.13. Deze wijziging zorgt ervoor dat Python 3.9 doorlopende beveiligingspatches en onderhoud ontvangt via de updatecyclus van Amazon, ook al wordt de upstream Python-release niet langer gepatcht door de open-sourcegemeenschap.
Als gevolg van deze overgang blijft Workiva Scripting het veilig uitvoeren van scripts op Python 3.9 ondersteunen tot oktober 2027.
Wie moet zich met deze migratie bezighouden? Iedereen die momenteel Workiva Scripting-automatiseringen uitvoert op Python 3.9, ongeacht of deze handmatig, vanuit ketens of via geïntegreerde automatiseringen worden geactiveerd.
Wat als ik niets doe? Uw scripts blijven beveiligd met AL2023-patches tot oktober 2027, maar we raden u aan om over te stappen naar Python 3.13, aangezien dit de meest recente ondersteunde runtime is.
Voor meer achtergrondinformatie over de einddatum van de ondersteuning en de ondersteunde versies, kunt u de officiële Python-releasestatuspaginaraadplegen.
Hoe Workiva deze verandering ondersteunt
Workiva heeft een update uitgebracht waarmee ontwikkelaars meer controle krijgen over welke Python-runtime hun scripts gebruiken. Deze update bracht de volgende wijzigingen met zich mee:
- Ondersteuning voor Python 3.13 – Alle nieuwe scripts gebruiken nu standaard Python 3.13, de nieuwste stabiele versie.
- Runtime-configuratie per script – Bij elk script kunt u nu de Python-runtimeversie (3.9 of 3.13) kiezen die het script gebruikt.
- Achterwaartse compatibiliteit – Alle bestaande scripts blijven Python 3.9 gebruiken totdat u ze bijwerkt.
- Editor- en API-ondersteuning – U kunt de runtime rechtstreeks instellen of bijwerken in de Workiva Script Editor of via de Scripting API.
Dit zorgt ervoor dat u in uw eigen tempo kunt migreren, veilig kunt testen en pas productiescripts kunt overschakelen wanneer u er zeker van bent dat ze klaar zijn.
Tijdschema voor deze omschakeling
Om u te helpen bij de planning, vindt u hier het uitrolschema:
- Python 3.13 beschikbaar in Workiva (september 2025) – Alle klanten kunnen hun scripts configureren om te draaien op Python 3.9 of Python 3.13 met behulp van de Scripting API of de Scripting Editor.
- Einde van de levenscyclus van Python 3.9 (oktober 2025) – De officiële ondersteuning door de Python-community eindigt. Workiva zal tot oktober 2027 ondersteuning blijven bieden via AL2023, maar migratie wordt ten zeerste aanbevolen.
- Oktober 2027 – Workiva is van plan de ondersteuning voor Python 3.9 in oktober 2027 te beëindigen, waarna alle scripts op Python 3.13 zullen draaien.
De overgang maken
Je moet zo snel mogelijk beginnen met het testen van scripts op Python 3.13, terwijl je de productieomgeving voorlopig op 3.9 houdt totdat je hebt gecontroleerd of ze correct werken op 3.13. Zodra je vertrouwd bent met het gebruik van Python 3.13, schakel je je productiescripts zo snel mogelijk over naar de Python 3.13-runtime.
Een script overzetten naar Python 3.13
Ons aanbevolen uitrolpatroon: maak een kopie, werk de versie bij, test en breng deze vervolgens op de markt. Dit minimaliseert het risico voor de productie en stelt u in staat de uitvoeringsgeschiedenis te bewaren indien nodig.
Stap 1 — Maak een kopie
- Maak in Workiva een kopie van je productiescript.
De kopie wordt ingesteld op Python 3.13.
Stap 2 — Test en pas de tekst aan
- Voer de kopie uit in een veilige testomgeving.
- Los eventuele ingrijpende wijzigingen op (zie “Veelvoorkomende problemen en oplossingen”).
- Valideer de resultaten, bijwerkingen en prestaties.
Stap 3 — Wijzig naar 3.13 (twee opties)
Optie A — Hiermee blijft de productiegeschiedenis behouden
- Plaats de bijgewerkte code vanuit de kopie terug in het originele script door te kopiëren en te plakken.
- Wijzig de runtime van het originele script naar Python 3.13.
- Voer je tests opnieuw uit en hervat daarna de normale planning/triggers op het origineel.
- (Optioneel) Archiveer of verwijder het exemplaar.
Optie B — Hiermee wordt de productiegeschiedenis niet bewaard.
- Wijzig de productietrigger (oftewel de Chains-trigger) zodat deze van het originele script naar het kopie script verwijst.
- De kopie wordt het nieuwe productiescript (draaiend op Python 3.13).
- (Optioneel) Archiveer of verwijder het origineel.
Oproep tot actie: Welke optie je ook kiest, migreer al je actieve scripts naar Python 3.13 vóór oktober 2027.
Update de Python-runtimeversie
De scripting-API gebruiken
-
Bepaal de uitvoeringsduur van het script.
GET /prototype/platform/scripts/{script_id}Controleer de waarde voor
runtimein het antwoord. -
Werk het script bij naar Python 3.13.
PATCH /prototype/platform/scripts/{script_id} Content-Type: application/json [{ "op": "replace", "path": "/runtime", "value": "python3.13" }]
Voor meer details, zie de Scripting Prototype API-documentatie.
Voorbeeld: Het wijzigen en uitlezen van de Python-runtimeversie
De volgende voorbeeldcode laat zien hoe u de runtimeversie van een script kunt bijwerken (3.9 of 3.13) met behulp van de Scripting API, en hoe u de momenteel geconfigureerde versie kunt controleren.
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) # Wijzig Python-versie req_body = [ { "op": "vervangen", "pad": "/runtime", "waarde": versie } ] 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-versie voor '" + name + "' script gewijzigd naar: " + new_version.replace("python", "")) def read_version(client_id, client_secret): auth_header = get_auth_header(client_id, client_secret) # Python-versie lezen 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-versie voor '" + name + "' script: " + configured_version.replace("python", "")) # Haalt de authenticatieheaders op voor een gegeven client-ID en -geheim 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)De scripteditor gebruiken
Met de scripteditor kunt u de runtime rechtstreeks in de gebruikersinterface configureren. Onder Eigenschappen → Runtimeversie is een nieuw keuzemenu beschikbaar waarmee u kunt kiezen tussen Python 3.9 en Python 3.13.
Om een script in de editor bij te werken:
- Open het script in de Scripteditor.
- Ga naar het paneel Eigenschappen aan de rechterkant.
- Onder Runtime Version, selecteer Python 3.13 uit het dropdownmenu.
- Sla je wijzigingen op.
- Voer het script eerst uit in een veilige testomgeving voordat u het in productie neemt.
Tips
- Zorg ervoor dat alle externe pakketten in uw scripts compatibel zijn met Python 3.13.
- Werk alle vastgezette pakketversies in uw
requirements.txt- bestand bij (in tegenstelling totPython 3.9 is requests==2.28 bijvoorbeeld niet nodig in 3.13). - Raadpleeg de officiële Python-documentatie voor meer informatie over de belangrijkste wijzigingen in Python-versies 3.10, 3.11, 3.12, en 3.13, waaronder:
- Structurele patroonherkenning, f-string-updates, verbeterde foutmeldingen
- Aanzienlijke prestatieverbeteringen (functieaanroepen, tekenreeksbewerkingen, geheugenbeheer, JSON-serialisatie/deserialisatie)
- Verouderde pakketten en bepaalde pakketparameters verwijderd (
cgi,cgitb,distutils, enz. zijn verouderd; deasyncio"loop" parameter is verwijderd)
Veelvoorkomende migratieproblemen en oplossingen bij de overstap van 3.9 naar 3.13
Hieronder vindt u een aantal veelvoorkomende problemen die u kunt tegenkomen bij het migreren van scripts van Python 3.9 naar 3.13, samen met suggesties voor oplossingen:
- Bibliotheken van derden – Sommige pakketten ondersteunen Python 3.13 mogelijk nog niet.
- Oplossing: Upgrade naar de nieuwste compatibele versie of vervang deze door een alternatief. Test alle vastgezette vereisten zorgvuldig. Je kunt de ondersteuning voor je bibliotheken controleren op pyreadiness.org/3.13en het helpartikel "Ondersteunde scriptbibliotheken en afhankelijkheden" raadplegen voor meer informatie.
- Requests-bibliotheekversie – De
requests-bibliotheek is de meest gebruikte externe bibliotheek in Workiva Scripting. In vroege versies van Python 3.9 zullen scripts niet meer werken metrequestsversie 2.30.0 of nieuwer. Zodra je bent overgestapt naar Python 3.13, kun je de nieuwste versies vanrequestsprobleemloos gebruiken. - Python 3.13 heeft verschillen in de verwerking van strings en bytes – Strengere typecontroles kunnen verborgen problemen aan het licht brengen.
- Oplossing: Controleer op code die
strenbytescombineert en zorg voor expliciete codering/decodering.
- Oplossing: Controleer op code die
- Datum- en tijdzonegedrag – Python 3.13 heeft verschillen in de
zoneinfobibliotheek en een strengere parsing.- Oplossing: Test alle datum-/tijdlogica, met name de opmaak en tijdzoneconversies.
- JSON-serialisatie – Sommige objecten kunnen mogelijk niet worden geserialiseerd vanwege strengere regels.
- Oplossing: Zorg ervoor dat aangepaste objecten worden geconverteerd voordat
json.dumpswordt uitgevoerd, of gebruik standaard encoders.
- Oplossing: Zorg ervoor dat aangepaste objecten worden geconverteerd voordat
- Verouderde API's – Sommige Python
stdlibfuncties (bijvoorbeeldasyncio.get_event_loop,distutils, en bepaalde locale API's) die in Python 3.9 als verouderd werden beschouwd, zijn verwijderd.- Oplossing: Code bijwerken om ondersteunde alternatieven te gebruiken.
- Prestatieveranderingen – Loops en asynchrone taken kunnen zich anders gedragen.
- Oplossing: Voer belastingstests uit op kritieke paden; werk de gelijktijdigheidslogica indien nodig bij.
je productiescripts. Oplossingen die in een gecontroleerde testomgeving worden toegepast, verkleinen het risico op problemen in de productieomgeving.
Wat is er nieuw in Python 3.13?
Hieronder een aantal belangrijke wijzigingen voor Python 3.13:
- Verbeterde interactieve interpreter – Bewerking van meerdere regels, kleuren en gekleurde tracebacks.
- Experimentele buildmodus zonder threads – Maakt echte parallelle threads (zonder GIL) mogelijk op sommige platforms.
- Experimentele JIT – Vroege voorbereiding voor prestatieverbeteringen.
- Betere debugtools –
locals()mutaties werken nu met goed gedefinieerde semantiek. - Nieuwe geheugenallocator – Aangepaste minimalloc is standaard opgenomen en ingeschakeld indien ondersteund.
- Kleinere bestanden – Docstrings verwijderen spaties aan het begin, waardoor het geheugengebruik en de grootte van .pyc-bestanden worden verminderd.
- Nieuwe dbm-backend – Gebruikt standaard
dbm.sqlite3. - Platformupdates – macOS minimaal 10.13, iOS/Android Tier 3, WASI Tier 2.
- Verbeteringen in typen – Standaardtypen, verfijning, alleen-lezen items en afschrijvingsannotaties.
- Verwijderingen – Verouderde modules verwijderd (bijvoorbeeld
cgi,telnetlib,imghdr,lib2to3, enz.).
Voor de volledige release-opmerkingen, zie "Wat is nieuw in Python 3.13" op Python.org.
Als u de specifieke wijzigingen tussen versie 3.9 en 3.13 wilt bekijken, raadpleeg dan:
FAQs
V: Moet ik al mijn scripts meteen migreren?
Nee. Je kunt nu beginnen met het testen van scripts in Python 3.13 en de productieomgeving op 3.9 laten draaien terwijl je dat doet. Alle scripts moeten vóór oktober2027 naar Python 3.13 gemigreerd zijn.
V: Zijn mijn bestaande scripts automatisch onbruikbaar geworden toen Python 3.9 het einde van zijn levenscyclus bereikte?
Nee. Workiva Scripting maakt gebruik van Amazon's Python 3.9-versie onder Amazon Linux 2023 (AL2023), die tot oktober 2027 beveiligingsupdates blijft ontvangen. Uw scripts worden niet beïnvloed door het officiële einde van de ondersteuning voor Python 3.9.
V: Kan ik scripts testen op versie 3.13 terwijl de productieomgeving op versie 3.9 blijft draaien?
Ja. Maak een kopie van je script om te testen; deze kopie wordt automatisch ingesteld om te draaien op Python 3.13. Los eventuele fouten in de tekst op voordat je deze in productie neemt. Om compatibiliteitsproblemen te voorkomen, kunt u het beste aparte versies bewaren: één voor 3.9 en één voor 3.13, zodat u er gemakkelijk tussen kunt wisselen als dat nodig is.
V: Biedt de scripteditor ondersteuning voor het wijzigen van de runtime?
Ja. Je kunt de Python-runtime van een script rechtstreeks in de scripteditor instellen: open het script, ga naar het paneel Eigenschappen en selecteer de versie onder Runtimeversie.
V: Waar kan ik meer informatie vinden over bibliotheekondersteuning?
Bekijk pyreadiness.org/3.13 en hetOndersteunde scriptbibliotheken en afhankelijkheden" Workiva-helpartikel.
V: Wat gebeurt er met mijn historische rundata als ik van script wissel?
Dat hangt ervan af. Als je het oorspronkelijke script overschrijft, blijft de uitvoeringsgeschiedenis behouden. Als je triggers naar een kopie laat verwijzen, blijft de uitvoeringsgeschiedenis van het origineel behouden bij het oude script.
V: Wat gebeurt er als ik niet vóór oktober 2027 migreer?
Je scripts zullen na oktober 2027 automatisch overstappen naar Python 3.13, wanneer Workiva de ondersteuning voor het uitvoeren van scripts op Python 3.9 onder AL2023 stopzet. Om verstoringen te voorkomen, is het raadzaam om scripts te testen en te migreren naar Python 3.13 ruim vóór oktober 2027.
V: Moet ik mijn ketens of geïntegreerde automatiseringen aanpassen tijdens de migratie?
Nee. Uw ketens en geïntegreerde automatiseringen blijven naar behoren werken, zolang de onderliggende scripts zijn bijgewerkt naar Python 3.13. De belangrijkste stap is ervoor te zorgen dat het script zelf wordt gemigreerd.
V: Kan ik een script terugzetten van Python 3.13 naar 3.9 als er problemen optreden?
Nee. Als een script eenmaal is ingesteld op Python 3.13, kan de runtime ervan niet meer worden teruggezet naar Python 3.9. Als je een back-up wilt, bewaar dan een aparte kopie van het script in Python 3.9 — onderhoud één versie in 3.9 en een andere in 3.13 — zodat je kunt terugvallen op de 3.9-versie als er problemen optreden tijdens het testen.