ast.parse() converte código-fonte em uma árvore sintática abstrata. Ferramentas de lint, migração e análise percorrem nós para entender a estrutura sem importar o módulo analisado.

Exemplo prático

import ast

source = "{'retries': 3, 'tags': ['api', 'stable']}"
value = ast.literal_eval(source)

if not isinstance(value, dict):
    raise TypeError("expected a dictionary")
print(value["retries"])

literal_eval não é eval

ast.literal_eval() aceita apenas estruturas literais, como strings, números, listas e dicionários. Depois de interpretar, valide o tipo e o esquema; JSON costuma ser melhor para intercâmbio entre sistemas.

Sem execução não significa sem risco

Entradas muito profundas ou grandes podem consumir memória e pilha. Limite bytes e profundidade antes de analisar conteúdo externo. Nunca compile ou execute uma AST recebida sem uma política estrita e um isolamento adequado.

Continue estudando

Leia também Python JSON: Guia Completo para Manipulação de Dados e Type Hints em Python: Guia Completo de Tipagem. A documentação oficial do Python, consultada em 22 de julho de 2026, detalha a API e o comportamento entre versões.