Workiva Scripting e fim do suporte para Python 3.9
Para manter suas automações preparadas para o futuro, a Workiva está introduzindo o suporte ao Python 3.13, juntamente com uma definição em nível de script que permite que você escolha a versão de tempo de execução para cada script. Este manual explica como você pode mover com segurança da versão 3.9 para a 3.13, o que testar e como implementar as alterações com o mínimo de interrupção.
Até outubro de 2025, a Workiva Scripting contava com a versão oficial do Python 3.9 da Python Software Foundation, que agora chegou ao fim da vida útil e não recebe mais atualizações de segurança ou correções de bugs.
Em resposta a essa alteração, a Workiva Scripting fez a transição para usar a imagem Amazon Linux 2023 (AL2023), que fornece suas próprias compilações do Python 3.9 e 3.13. Essas alterações garantem que o Python 3.9 receba correções de segurança contínuas e manutenção por meio do ciclo de atualização da Amazon, mesmo que a versão upstream do Python não seja mais corrigida pela comunidade de fonte aberta.
Como resultado dessa transição, a Workiva Scripting continuará a oferecer suporte à execução de scripts com segurança em Python 3.9 até Outubro de 2026.
Quem deve pensar sobre essa migração? Qualquer pessoa que esteja executando as automações da Workiva Scripting em Python 3.9- seja acionada manualmente, a partir de Cadeias ou por meio de Automações Integradas.
E se eu não fizer nada? Seus scripts permanecem seguros por meio dos patches AL2023 até outubro de 2026, mas a migração é recomendada para que você alinhe com o tempo de execução suportado mais recente (3.13).
Para obter mais informações sobre cronogramas de fim de vida útil e versões suportadas, reveja a página oficial de status da versão do Python .
Como a Workiva está apoiando essas alterações
A Workiva está lançando uma atualização para dar aos desenvolvedores o controle sobre o tempo de execução do Python que seus scripts usam. Com esta atualização, você terá as seguintes alterações:
- Suporte ao Python 3.13 - Todos os novos scripts terão como padrão o Python 3.13, a versão estável mais recente.
- Configuração de tempo de execução por script - Cada script agora permitirá que você escolha a versão de tempo de execução do Python (3.9 ou 3.13) que o script usará.
- Compatibilidade com versões anteriores - Todos os scripts existentes continuarão a usar o Python 3.9 até que você os atualize.
- Suporte ao editor e à API - Você poderá definir ou atualizar o tempo de execução diretamente no Workiva Script Editor ou por meio da API de scripts.
Isso garante que você possa migrar em sua própria linha do tempo, testar com segurança e alternar os scripts de produção somente quando tiver certeza de que eles estão prontos.
Cronograma para esta mudança
Para ajudar você a se planejar, aqui está o cronograma de lançamento:
- Python 3.13 disponível na Workiva (setembro de 2025) - Todos os clientes podem personalizar scripts para serem executados no Python 3.9 ou Python 3.13 usando a API de scripts ou o Scripting Editor.
- Fim da vida útil do Python 3.9 (outubro de 2025) - O suporte oficial da comunidade Python se encerra. A Workiva continua oferecendo suporte via AL2023 até outubro de 2026, mas a migração é altamente recomendada.
- Outubro de 2026 - A Workiva planeja encerrar o suporte ao Python 3.9 em outubro de 2026, após o qual todos os scripts serão executados no Python 3.13.
Você deve começar a testar os scripts no Python 3.13 assim que possível, mantendo a produção no 3.9 apenas temporariamente. Quando você se sentir confortável com o uso do Python 3.13, mude seus scripts de produção para o tempo de execução do Python 3.13 sem demora.
Mudando um script para o Python 3.13
Nosso padrão de implementação recomendado: crie uma cópia, atualize a versão, teste e, em seguida, promova. Isso minimiza o risco para a produção e permite que você mantenha o histórico de execuções, se necessário.
Etapa 1 - Faça uma cópia
- Na Workiva, faça uma cópia do script de produção.
A cópia ainda estará definida como Python 3.9. - Defina o tempo de execução da cópia como Python 3.13.
Etapa 2 - Teste e adapte a cópia
- Execute a cópia em um contexto seguro/teste.
- Corrija todas as alterações que possam estar quebrando (consulte "Problemas comuns e correções").
- Valide as saídas, os efeitos colaterais e o desempenho.
Etapa 3 - Altere para a versão 3.13 (duas opções)
Opção A - Isso manterá o histórico de execução da produção
- Cole o código atualizado do script copy de volta para o script original copiando e colando.
- Altere o tempo de execução do script original para Python 3.13.
- Execute novamente os testes e, em seguida, continue/retome o agendamento/triggers normais no original.
- (Opção) Arquive ou retire a cópia.
Opção B - Isso não manterá o histórico de execução da produção
- Altere o acionador de produção (ou seja, o acionador Cadeias) para apontar do script original para o script copiado.
- A cópia se torna o novo script de produção (executado em Python 3.13).
- (Opção) Arquive ou retire o original.
Chamada para ação: Qualquer que seja a opção que você escolher, mova todos os seus scripts ativos para Python 3.13 até outubro de 2025.
Atualizar a versão de tempo de execução do Python
Usando a API de script
-
Determine o tempo de execução do script.
GET /v1/scripts/{script_id}Verifique o valor de
runtimena resposta. -
Atualize o script para Python 3.13.
PATCH /v1/scripts/{script_id} Content-Type: application/json [{ "op": "replace", "path": "/runtime", "value": "python3.13" }]
Para obter mais detalhes, consulte os documentos da API de protótipo de script .
Exemplo: Alterando e lendo a versão de tempo de execução do Python
A amostra de código a seguir mostra como você pode atualizar a versão de tempo de execução de um script (3.9 ou 3.13) usando a API de script e como confirmar a versão atualmente configurada.
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) # Altera a versão do Python req_body = [ { "op": "replace", "path": "/runtime", "value": version } ] resp = requests.patch( f"{SCRIPTS_V1_URL}/{scriptId}", json=req_body, headers=auth_header ) nome = resp.json().get("nome") nova_versão = resp.json().get("tempo de execução") print("A versão do Python para o script '" + nome + "' foi alterada para: " + new_version.replace("python", "")) def read_version(client_id, client_secret): auth_header = get_auth_header(client_id, client_secret) # ler a versão do Python resp = requests.get( f"{SCRIPTS_V1_URL}/{SCRIPT_ID}", headers=auth_header ) name = resp.json().get("name") configured_version = resp.json().get("runtime") print("Versão do Python para o script '" + name + "': " + configured_version.replace("python", "")) # Obtém os cabeçalhos de autenticação para um determinado ID de cliente e segredo 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.postagens(f"{AUTH_URL}", dados=data_field, cabeçalhos=token_headers) auth_json = auth_resp.json() bearer_token = "Bearer " + auth_json.get("access_token") return {"Autorization": bearer_token} change_version(CLIENT_ID, CLIENT_SECRET, SCRIPT_ID, VERSION) #read_version(CLIENT_ID, CLIENT_SECRET)Usando o Scripting Editor
Com o Scripting Editor, você poderá configurar o tempo de execução diretamente na interface do usuário. Uma nova lista suspensa está disponível em Properties → Runtime Version, onde você pode selecionar entre Python 3.9 e Python 3.13.
Para atualizar um script no Editor:
- Abra o script no Scripting Editor.
- Vá para o painel Properties à direita.
- Em Runtime Version, selecione Python 3.13 na lista suspensa.
- Salve as alterações que você fez.
- Execute o script em um ambiente seguro/teste antes de promover a produção.
Dicas:
- Certifique-se de que todos os pacotes de terceiros em seus scripts sejam compatíveis com o Python 3.13.
- Atualize todas as versões de pacotes fixadas no arquivo
requirements.txt(por exemplo, ao contrário do Python 3.9,requests==2.28não é necessário no 3.13). - Leia a documentação oficial do Python para obter detalhes sobre as principais alterações nas versões do Python 3.10, 3.11, 3.12, e 3.13, incluindo:
- Correspondência de padrões estruturais, atualizações de strings f, mensagens de erro aprimoradas
- Melhorias significativas no desempenho (chamadas de função, operações com strings, gerenciamento de memória, serialização/deserialização de JSON)
- Preterição de pacotes e remoção de determinados parâmetros de pacotes (
cgi,cgitb,distutils, etc. foram preteridos; o parâmetro "loop" doasynciofoi removido)
Problemas comuns de migração e correções que você pode encontrar ao mover da versão 3.9 para a 3.13
Aqui estão alguns problemas comuns que você pode enfrentar ao mover scripts do Python 3.9 para o 3.13, juntamente com as correções sugeridas para eles:
- Bibliotecas de terceiros - Alguns pacotes podem ainda não suportar o Python 3.13.
- Correção: Atualize para a versão compatível mais recente ou substitua por uma alternativa. Você deve testar cuidadosamente todos os requisitos fixados. Você pode verificar o suporte para suas bibliotecas em pyreadiness.org/3.13 e revisar o artigo de ajuda "Supported scripting libraries and dependentes" para obter mais informações.
- Versão da biblioteca de solicitações - A biblioteca
requestsé a biblioteca de terceiros mais comum na Workiva Scripting. Nas primeiras versões do Python 3.9, os scripts serão interrompidos comrequestsversão 2.30.0 ou mais recente. Depois de migrar para o Python 3.13, você poderá usar as versões mais recentes desolicitaçõessem problemas. - O Python 3.13 tem diferenças no tratamento de strings e bytes - Verificações de tipo mais rigorosas podem trazer à tona problemas ocultos.
- Correção: Verifique se há códigos que misturam
strebytese garanta a codificação/decodificação explícita.
- Correção: Verifique se há códigos que misturam
- Comportamento de data e fuso horário - O Python 3.13 tem diferenças na biblioteca
zoneinfoe análise mais rigorosa.- Correção: Teste toda a lógica de data/hora, especialmente a formatação e as conversões de fuso horário.
- Serialização de JSON - Alguns objetos podem não ser serializados devido a regras mais rígidas.
- Correção: Certifique-se de que os objetos personalizados sejam convertidos antes de
json.dumps, ou use codificadores padrão.
- Correção: Certifique-se de que os objetos personalizados sejam convertidos antes de
- APIs obsoletas - Algumas funções Python
stdlib(por exemplo,asyncio.get_event_loop,distutilse determinadas APIs de localidade) obsoletas no Python 3.9 foram removidas.- Correção: Atualize o código para usar as alternativas compatíveis.
- Alterações de desempenho - Os loops e as tarefas assíncronas podem se comportar de forma diferente.
- Correção: Execute testes em caminhos críticos; atualize a lógica de simultaneidade, se necessário.
Dica: Sempre teste primeiro as cópias dos scripts de produção. As correções aplicadas em um ambiente de teste controlado reduzem o risco de problemas na produção.
O que há de novo no Python 3.13
Aqui estão alguns destaques de alterações para o Python 3.13:
- Intérprete interativo aprimorado - Edição de várias linhas, cores e tracebacks coloridos.
- Modo de compilação experimental com thread livre - Permite threads paralelos verdadeiros (sem GIL) em algumas plataformas.
- JIT experimental - Trabalho de base inicial para melhorias de desempenho.
- Melhores ferramentas de depuração -
locals()mutações agora funcionam com semântica bem definida. - Novo alocador de memória - O mimalloc alterado foi incluído e ativado por padrão, se suportado.
- Arquivos menores - Os documentos retiram os espaços em branco à esquerda, reduzindo o uso da memória e o tamanho dos arquivos .pyc.
- Novo backend dbm - Usa
dbm.sqlite3por padrão. - Atualizações da plataforma - macOS mínimo 10.13, iOS/Android Nível 3, WASI Nível 2.
- Melhorias na digitação - Padrões de tipo, restrição, itens somente leitura e anotações de depreciação.
- Remoções - Módulos obsoletos removidos (por exemplo,
cgi,telnetlib,imghdr,lib2to3, etc.).
Para obter as notas de lançamento completas, consulte "What's New in Python 3.13" do Python.org.
Se você quiser revisar as alterações específicas introduzidas entre a versão 3.9 e a 3.13, consulte:
Perguntas frequentes
Perguntas e respostas: Preciso migrar todos os meus scripts imediatamente?
Não. Comece a testar os scripts no Python 3.13 agora e mantenha a produção no 3.9 apenas temporariamente. Todos os scripts devem ser migrados para o Python 3.13 antes de Outubro de 2026.
Perguntas e respostas: meus scripts existentes serão interrompidos automaticamente quando o Python 3.9 chegar ao fim da vida útil?
Não. O Workiva Scripting contará com a versão Python 3.9 da Amazon no Amazon Linux 2023 (AL2023), que continua a receber patches de segurança até outubro de 2026. Seus scripts não serão afetados pelo fim da vida útil oficial do Python 3.9.
P: Posso testar scripts na versão 3.13 e manter a produção na versão 3.9?
Sim. Crie uma cópia de seu script e atualize-o para que seja executado no Python 3.13 para testes. Corrija todos os problemas na cópia antes de promovê-la à produção. Para evitar perda de compatibilidade, mantenha versões separadas - uma para a versão 3.9 e outra para a 3.13 - para que você possa alternar facilmente entre elas, se necessário.
P: O Scripting Editor oferecerá suporte à alteração do tempo de execução?
Sim. O suporte do editor para Python 3.13 estará disponível ao mesmo tempo que o suporte da API em setembro de 2025.
P: Onde você pode saber mais sobre o suporte da biblioteca?
Consulte pyreadiness.org/3.13 e o artigo de ajuda da Workiva "Supported scripting libraries and dependentes".
Perguntas e respostas: O que acontece com meus dados históricos de execução se eu trocar de script?
Se você sobrescrever o script original, manterá o histórico de execuções. Se você apontar os acionadores para uma cópia, o histórico de execuções do original permanecerá com o script antigo.
Perguntas e respostas: o que acontecerá se eu não migrar até outubro de 2026?
Seus scripts farão a transição automática para o Python 3.13 após outubro de 2026, quando a Workiva interromperá o suporte para executar scripts no Python 3.9 no AL2023. Para evitar interrupções, você deve testar e migrar os scripts para o Python 3.13 bem antes de outubro de 2026.
P: Você precisa alterar minhas Cadeias ou Automações Integradas ao migrar?
Não. Suas Cadeias e Automações Integradas continuarão a ser executadas conforme o esperado, desde que os scripts subjacentes sejam atualizados para o Python 3.13. A principal etapa é garantir que o script em si seja migrado.
Perguntas e respostas: Posso reverter um script do Python 3.13 para o 3.9 se ocorrerem problemas?
Os usuários podem mudar o tempo de execução de um script de volta para o Python 3.9 temporariamente, mas quaisquer alterações de código feitas para se adaptar ao Python 3.13 não serão revertidas automaticamente. Você precisaria ajustar manualmente o script para torná-lo compatível com a versão 3.9 novamente. Uma abordagem melhor é manter cópias separadas - uma adaptada para o Python 3.9 e outra para o Python 3.13 - para que você possa alternar entre as versões com segurança se surgirem problemas.