ScriptsGuia

Importe os seus scripts

Escreva uma função uma vez e use em todo lugar. Outro script do mesmo projeto e da mesma linguagem importa pelo caminho no projeto — as pastas e o nome do script — com a linha de import que a linguagem já usa. Sem chamada de SDK e sem JSON no meio: a função roda no mesmo processo, como se estivesse escrita no mesmo arquivo. Publicar congela o código da biblioteca junto com o script que a importa, então mudar uma função auxiliar nunca muda um script publicado de surpresa.

9 min de leituraAntes: Escrevendo códigoAbrir no Waiso
O que você vai aprender
  • Escrever a linha de import de um script do projeto em cada linguagem
  • Saber qual código uma execução pelo editor e uma execução publicada usam
  • Publicar um script junto com as bibliotecas de que ele precisa
  • Renomear ou mover uma biblioteca sem quebrar quem a importa

Um script também é uma biblioteca

Nada marca um script como biblioteca: qualquer script cujas funções outro script importa já é uma. Quando quem importa roda, o Waiso resolve os imports, leva junto cada biblioteca necessária — no lugar dela na árvore do projeto — e o próprio sistema de imports da linguagem faz o resto. Imports podem encadear (A importa B, B importa C); a cadeia é resolvida no servidor, do mesmo jeito para uma execução pelo editor, um agendamento, a API e um passo de flow.

A linha de import é código comum: o editor completa os scripts do projeto e as funções deles enquanto você digita.
LinguagemLinha de importO caminho é
Pythonfrom utils.money import brl, import utils.money, from .money import brlA partir da raiz do projeto, com pontos; . é a pasta do próprio script
TypeScript / JavaScriptimport { brl } from '../utils/money'Relativo à pasta de quem importa; a extensão .ts/.js é opcional
C / C++#include "utils/money.h"A partir da raiz do projeto, entre aspas, com .h

Uma função auxiliar e um script que a usa

Crie uma pasta utils com um script money, e uma pasta orders com um script total, os dois na mesma linguagem. Primeiro a biblioteca:

utils/money.py
def brl(cents: int) -> str:
    """Format cents as Brazilian reais: 12345 -> 'R$ 123,45'."""
    return f"R$ {cents // 100},{cents % 100:02d}"

Depois o script que a importa. Execute total pelo editor:

orders/total.py
from utils.money import brl


def main(cents: int = 12345):
    return {"total": brl(cents)}
Saída esperadaSucessoO mesmo resultado nas cinco linguagens
{
  "total": "R$ 123,45"
}

Como os nomes viram caminhos

  • Um caminho é a sequência de pastas e o nome do script na forma da URL: minúsculas, espaços viram - (um script My Dates na pasta Utils é utils/my-dates).
  • Nomes de módulo Python transformam tudo o que não é letra ou número em _: o mesmo script é utils.my_dates.
  • Importar um script Python nunca roda o main dele; uma biblioteca nem precisa ter um.
  • TypeScript pode importar uma biblioteca JavaScript; JavaScript não importa TypeScript.
  • Uma biblioteca C ou C++ é compilada junto com quem a inclui, então não pode definir main.

Rascunhos, publicação e atualizações

  • Uma execução pelo editor usa o rascunho salvo de cada biblioteca — salve a biblioteca antes de testar quem a importa.
  • Publicar um script congela o código publicado de cada biblioteca que ele importa. Agendamentos, a API e gatilhos de evento rodam essa cópia congelada.
  • Uma biblioteca que nunca foi publicada bloqueia a publicação: o diálogo diz Publique estes antes. e oferece Publicar estes antes, revisando cada biblioteca antes de publicar.
  • Quando uma biblioteca é publicada de novo, o editor de cada script que a usa mostra foi atualizado — publique de novo pra usar, com um botão Publicar.

Quem usa um script, renomear e mover

A aba Usado por do editor lista cada script que importa este, cada chamada a ele pelo SDK, cada passo de flow que o executa e cada agendamento, endpoint da API e gatilho de evento que o inicia — marcados como Rascunho ou Publicado. Mais em Visão geral e uso.

  1. Renomeie ou mova a biblioteca

    Na página Code, renomeie money ou mova para outra pasta. Quando outros scripts a importam, um diálogo pergunta Atualizar os scripts que importam este? e lista quais são.

  2. Reescreva os imports

    Renomear e atualizar imports reescreve as linhas de import nos rascunhos de quem importa. As versões publicadas ficam com a cópia antiga até serem publicadas de novo.

  3. Publique todos juntos

    Publicar todos publica de uma vez cada script atualizado; o diálogo avisa se algum não pôde ser publicado.

Mover uma pasta inteira funciona igual: cada import para dentro dela é reescrito.

Erros de import

Um import ruim faz a execução falhar antes de o seu código começar, com um destes códigos; o editor sublinha o mesmo import enquanto você digita, com as mesmas palavras (veja Inteligência do editor).

CódigoQuando
import_not_foundO caminho não corresponde a nenhum script do projeto
import_languageO script importado é de outra linguagem (JavaScript importando TypeScript inclusive)
import_cycleOs imports formam um círculo; a mensagem nomeia a cadeia
import_too_deepA cadeia de imports passa de 20 níveis
import_has_mainUma biblioteca C/C++ define main
import_unpublishedSó ao publicar: uma biblioteca nunca foi publicada
Saída esperadaSucesso<code>import_cycle</code> nomeia a cadeia inteira
circular import: orders/total → utils/money → orders/total

Limites

  • Só do mesmo projeto e da mesma linguagem; scripts SQL nunca importam nem são importados.
  • No máximo 20 níveis de bibliotecas numa cadeia.
  • Apagar um script que outros usam pergunta antes e lista o que quebra — veja Visão geral e uso.