Workiva-skripting og slutt på støtte for Python 3.9
For å holde automatiseringene dine fremtidssikre, introduserte Workiva støtte for Python 3.13, sammen med en innstilling på skriptnivå som lar deg velge kjøretidsversjon for hvert skript. Denne veiledningen forklarer hvordan du trygt går over fra 3.9 til 3.13, hva du skal teste og hvordan du ruller ut endringer med minimal forstyrrelse.
Frem til oktober 2025var Workiva Scripting avhengig av den offisielle Python 3.9-utgivelsen fra Python Software Foundation; denne nådde slutten av sin levetid i oktober 2025, og mottar derfor ikke lenger sikkerhetsoppdateringer eller feilrettinger.
Som svar på dette har Workiva Scripting gått over til å bruke Amazon Linux 2023 (AL2023) -imaget, som tilbyr sine egne versjoner og støtte for både Python 3.9 og Python 3.13. Denne endringen sikrer at Python 3.9 mottar kontinuerlige sikkerhetsoppdateringer og vedlikehold gjennom Amazons oppdateringssyklus, selv om den oppstrøms Python-utgivelsen ikke lenger blir oppdatert av åpen kildekode-fellesskapet.
Som et resultat av denne overgangen vil Workiva Scripting fortsette å støtte sikker kjøring av skript på Python 3.9 frem til oktober 2027.
Hvem burde tenke på denne migrasjonen? Alle som for øyeblikket kjører Workiva Scripting-automatiseringer på Python 3.9 – enten utløst manuelt, fra kjeder eller via integrerte automatiseringer.
Hva om jeg ikke gjør noe? Skriptene dine vil forbli sikre gjennom AL2023-oppdateringer frem til oktober 2027, men vi anbefaler at du migrerer til Python 3.13, ettersom det er den nyeste støttede kjøretidsversjonen.
For mer bakgrunnsinformasjon om tidslinjer for slutten av levetiden og støttede versjoner, se den offisielle nettsiden for Python-utgivelsesstatus.
Hvordan Workiva støtter denne endringen
Workiva rullet ut en oppdatering for å gi utviklere kontroll over hvilken Python-kjøretidsapplikasjon skriptene deres bruker. Denne oppdateringen medførte følgende endringer:
- Støtte for Python 3.13 – Alle nye skript bruker nå Python 3.13 som standard, den nyeste stabile versjonen.
- Kjøretidskonfigurasjon per skript – Hvert skript lar deg nå velge Python-kjøretidsversjonen (3.9 eller 3.13) som skriptet bruker.
- Bakoverkompatibilitet – Alle eksisterende skript fortsetter å bruke Python 3.9 inntil du oppdaterer dem.
- Støtte for redigering og API – Du kan angi eller oppdatere kjøretiden direkte i Workiva Script Editor eller via Scripting API.
Dette sikrer at du kan migrere på din egen tidslinje, teste trygt og bare bytte produksjonsskript når du er sikker på at de er klare.
Tidslinje for denne overgangen
For å hjelpe deg med planleggingen, her er utrullingsplanen:
- Python 3.13 tilgjengelig i Workiva (september 2025) – Alle kunder kan konfigurere skriptene sine til å kjøre på Python 3.9 eller Python 3.13 ved hjelp av Scripting API eller Scripting Editor.
- Slutt på Python 3.9 (oktober 2025) – Offisiell støtte for Python-fellesskapet avsluttes. Workiva vil fortsette støtten via AL2023 frem til oktober 2027, men migrering anbefales på det sterkeste.
- Oktober 2027 – Workiva planlegger å avslutte støtten for Python 3.9 i oktober 2027, hvoretter alle skript vil kjøre på Python 3.13.
Å gjøre overgangen
Du bør begynne å teste skript på Python 3.13 så snart som mulig, mens du holder produksjonen på kun 3.9 inntil du har bekreftet at de kjører riktig på 3.13. Når du er komfortabel med å bruke Python 3.13, kan du bytte produksjonsskriptene dine til Python 3.13-kjøretiden uten forsinkelse.
Bytte et skript til Python 3.13
Vårt anbefalte utrullingsmønster: lag en kopi, oppdater versjonen, test, og promoter deretter. Dette minimerer produksjonsrisikoen og lar deg beholde kjørehistorikken hvis du trenger det.
Trinn 1 – Lag en kopi
- Lag en kopi av produksjonsskriptet ditt i Workiva.
Kopien vil bli satt til Python 3.13.
Trinn 2 – Test og tilpass teksten
- Kjør kopien i en sikker/testkontekst.
- Rett eventuelle endringer som ikke fungerer (se «Vanlige problemer og rettelser»).
- Valider utganger, bivirkninger og ytelse.
Trinn 3 – Endre til 3.13 (to alternativer)
Alternativ A – Dette vil beholde produksjonshistorikken
- Flytt den oppdaterte koden fra kopien tilbake til det originale skriptet ved hjelp av kopier og lim inn.
- Endre kjøretiden til det opprinnelige -skriptet til Python 3.13.
- Kjør testene på nytt, og gjenoppta deretter normal planlegging/utløsere på originalen.
- (Valgfritt) Arkiver eller pensjoner kopien.
Alternativ B – Dette vil ikke beholde produksjonshistorikken
- Endre produksjonsutløseren (det vil si Chains-utløseren) til å peke fra det originale -skriptet til kopiskriptet.
- Kopien blir det nye produksjonsskriptet (som kjører på Python 3.13).
- (Valgfritt) Arkiver eller pensjoner originalen.
Handlingsfremmende oppfordring: Uansett hvilket alternativ du velger, flytt alle aktive skript til Python 3.13 innen oktober 2027.
Oppdater Python-kjøretidsversjonen
Bruke skript-API-et
-
Bestem skriptets kjøretid.
GET /prototype/plattform/skript/{skript_id}Sjekk verdien for
runtimei svaret. -
Oppdater skriptet til Python 3.13.
PATCH /prototype/platform/scripts/{script_id} Innholdstype: application/json [{ "op": "erstatt", "sti": "/runtime", "verdi": "python3.13" }]
Hvis du vil ha mer informasjon, kan du se dokumentasjonen for Scripting Prototype API.
Eksempel: Endre og lese Python-kjøretidsversjonen
Følgende eksempelkode viser hvordan du oppdaterer kjøretidsversjonen (3.9 eller 3.13) for et skript ved hjelp av Scripting API, og hvordan du bekrefter hvilken versjon som er konfigurert.
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) # Endre Python-versjon req_body = [ { "op": "erstatt", "sti": **]* } "/runtime", "value": versjon }] 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-versjon for '" + name + "' skript endret til: " + new_version.replace("python", "")) def read_version(client_id, client_secret): auth_header = get_auth_header(client_id, client_secret) # les Python-versjon 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 versjon for '" + navn + "' script: " + configured_version.replace("python", "")) # Henter autentiseringsoverskriftene for en gitt klient-ID og hemmelig 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 = "Bærer " + auth_json.get("access_token") return {"Authorization": bearer_token} change_version(CLIENT_ID, KLIENT_HEMMELIG, SKRIPT_ID, VERSJON) #les_versjon(KLIENT_ID, KLIENT_HEMMELIG)Bruke skriptredigereren
Med skriptredigereren kan du konfigurere kjøretiden direkte i brukergrensesnittet. En ny rullegardinmeny er tilgjengelig under Egenskaper → Kjøretidsversjon hvor du kan velge mellom Python 3.9 og Python 3.13.
Slik oppdaterer du et skript i redigeringsprogrammet:
- Åpne skriptet i Skriptredigering.
- Gå til Egenskaper -panelet til høyre.
- Under Kjøretidsversjonvelger du Python 3.13 fra rullegardinmenyen.
- Lagre endringene dine.
- Kjør skriptet i et trygt/testmiljø før du flytter det til produksjon.
Tips
- Sørg for at eventuelle tredjepartspakker i skriptene dine er kompatible med Python 3.13.
- Oppdater eventuelle festede pakkeversjoner i
requirements.txt-filen din (for eksempel, i motsetning til i Python 3.9, er ikkerequests==2.28nødvendig i 3.13). - Les den offisielle Python-dokumentasjonen for detaljer om de viktigste endringene i Python-versjonene 3.10, 3.11, 3.12og 3.13, inkludert:
- Strukturell mønstermatching, oppdateringer av f-strenger, forbedrede feilmeldinger
- Vesentlige ytelsesforbedringer (funksjonskall, strengoperasjoner, minnehåndtering, JSON-serialisering/deserialisering)
- Avskrivning av pakker og visse pakkeparametere som er fjernet (
cgi,cgitb,distutilsosv. er avskrevet; parameterenasyncio"loop" er fjernet)
Vanlige migreringsproblemer og -rettelser ved overgang fra 3.9 til 3.13
Her er noen vanlige problemer du kan støte på når du flytter skript fra Python 3.9 til 3.13, sammen med foreslåtte løsninger for dem:
- Tredjepartsbiblioteker – Noen pakker støtter kanskje ikke Python 3.13 ennå.
- Rettelse: Oppgrader til den nyeste kompatible versjonen, eller erstatt med en alternativ versjon. Test eventuelle fastlåste krav nøye. Du kan sjekke støtte for bibliotekene dine på pyreadiness.org/3.13, og se gjennom hjelpeartikkelen «Støttede skriptbiblioteker og avhengigheter» for mer informasjon.
- Forespørselsbibliotekversjon –
forespørselsbiblioteketer det vanligste tredjepartsbiblioteket i Workiva Scripting. I tidlige utgivelser av Python 3.9 vil skript bryte medforespørslerversjon 2.30.0 eller nyere. Når du har migrert til Python 3.13, kan du bruke de nyeste versjonene avforespørsleruten problemer. - Python 3.13 har forskjeller i håndtering av strenger og byter – Strengere typekontroller kan avdekke skjulte problemer.
- Rettelse: Sjekk for kode som blander
strogbytesog sørg for eksplisitt koding/dekoding.
- Rettelse: Sjekk for kode som blander
- Dato- og klokkeslett- og tidssoneoppførsel – Python 3.13 har forskjeller i
zoneinfo-biblioteket og strengere parsing.- Rettelse: Test all dato/klokkeslett-logikk, spesielt formatering og tidssonekonverteringer.
- JSON-serialisering – Noen objekter kan mislykkes i serialisering på grunn av strengere regler.
- Rettelse: Sørg for at tilpassede objekter konverteres før
json.dumps, eller bruk standard kodere.
- Rettelse: Sørg for at tilpassede objekter konverteres før
- Utdaterte API-er – Noen Python
stdlib-funksjoner (for eksempelasyncio.get_event_loop,distutilsog visse lokale API-er) som var utdaterte i Python 3.9, er fjernet.- Rettelse: Oppdater koden for å bruke støttede alternativer.
- Ytelsesendringer – Looper og asynkrone oppgaver kan oppføre seg annerledes.
- Rettelse: Kjør lasttester på kritiske stier; oppdater samtidighetslogikk om nødvendig.
Tips: Test alltid kopier av produksjonsskriptene dine først. Rettelser som brukes i et kontrollert testmiljø reduserer risikoen for produksjonsproblemer.
Hva er nytt i Python 3.13
Her er noen viktige endringer i Python 3.13:
- Forbedret interaktiv tolk – Redigering av flere linjer, farger og fargelagte sporingstilbakesporinger.
- Eksperimentell fritrådet byggemodus – Tillater ekte parallelle tråder (ingen GIL) på enkelte plattformer.
- Eksperimentell JIT – Tidlig grunnlag for ytelsesforbedringer.
- Bedre feilsøkingsverktøy –
locals()mutasjoner fungerer nå med veldefinert semantikk. - Ny minneallokator – Modifisert mimalloc inkludert og aktivert som standard hvis støttet.
- Mindre filer – Dokumentstrenger fjerner innledende mellomrom, noe som reduserer minnebruk og .pyc-filstørrelser.
- Ny dbm-backend – Bruker
dbm.sqlite3som standard. - Plattformoppdateringer – macOS minimum 10.13, iOS/Android Tier 3, WASI Tier 2.
- Forbedringer av skriving – Standardinnstillinger for skriving, innsnevring, skrivebeskyttede elementer og avskrivningsannoteringer.
- Fjerninger – Utdaterte moduler fjernet (for eksempel
cgi,telnetlib,imghdr,lib2to3osv.).
For fullstendige utgivelsesnotater, se Python.orgs «Hva er nytt i Python 3.13».
Hvis du vil se gjennom de spesifikke endringene som ble introdusert mellom 3.9 og 3.13, kan du se:
Vanlige spørsmål
Spørsmål: Må jeg migrere alle skriptene mine med en gang?
Ingen. Du kan begynne å teste skript på Python 3.13 nå og holde produksjonen på 3.9 mens du gjør det. Alle skript må migreres til Python 3.13 før oktober 2027.
Q: Brøt de eksisterende skriptene mine automatisk sammen da Python 3.9 nådde slutten av levetiden?
Ingen. Workiva Scripting er avhengig av Amazons Python 3.9-versjon under Amazon Linux 2023 (AL2023), som fortsetter å motta sikkerhetsoppdateringer frem til oktober 2027. Skriptene dine påvirkes ikke av den offisielle utløpsdatoen for Python 3.9.
Spørsmål: Kan jeg teste skript på 3.13 mens jeg beholder produksjonen på 3.9?
Ja. Lag en kopi av skriptet ditt for testing – kopien er automatisk satt til å kjøre på Python 3.13. Rett eventuelle problemer i teksten før du flytter den til produksjon. For å unngå å miste kompatibilitet, bør du ha separate versjoner – én for 3.9 og én for 3.13 – slik at du enkelt kan bytte mellom dem om nødvendig.
Spørsmål: Støtter skriptredigereren endring av kjøretidspunktet?
Ja. Du kan angi Python-kjøretiden for et skript direkte i skriptredigereren – åpne skriptet, gå til Egenskaper-panelet og velg versjonen under Kjøretidsversjon.
Q: Hvor kan jeg finne ut mer om bibliotekstøtte?
Sjekk pyreadiness.org/3.13 og hjelpeartikkelen «Støttede skriptbiblioteker og avhengigheter» i Workiva.
Spørsmål: Hva skjer med mine historiske kjøredata hvis jeg bytter skript?
Det kommer an på. Hvis du overskriver det opprinnelige skriptet, beholder du kjørehistorikken. Hvis du peker utløsere mot en kopi, vil originalens kjørehistorikk forbli med det gamle skriptet.
Spørsmål: Hva skjer hvis jeg ikke migrerer innen oktober 2027?
Skriptene dine vil automatisk gå over til Python 3.13 etter oktober 2027, når Workiva avvikler støtten for å kjøre skript på Python 3.9 under AL2023. For å unngå avbrudd bør du teste og migrere skript til Python 3.13 i god tid før oktober 2027.
Spørsmål: Må jeg endre kjedene eller integrerte automatiseringer når jeg migrerer?
Ingen. Kjedene og de integrerte automatiseringene dine vil fortsette å kjøre som forventet, så lenge de underliggende skriptene er oppdatert til Python 3.13. Hovedtrinnet er å sørge for at selve skriptet migreres.
Spørsmål: Kan jeg rulle tilbake et skript fra Python 3.13 til 3.9 hvis det oppstår problemer?
Ingen. Når et skript er satt til Python 3.13, kan ikke kjøretiden endres tilbake til Python 3.9. Hvis du ønsker et alternativ, behold en separat kopi av skriptet på Python 3.9 – behold én versjon på 3.9 og en annen på 3.13 – slik at du kan gå tilbake til 3.9-kopien hvis det oppstår problemer under testingen.