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.
- 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.
| Linguagem | Linha de import | O caminho é |
|---|---|---|
| Python | from utils.money import brl, import utils.money, from .money import brl | A partir da raiz do projeto, com pontos; . é a pasta do próprio script |
| TypeScript / JavaScript | import { 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:
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:
from utils.money import brl
def main(cents: int = 12345):
return {"total": brl(cents)}{
"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
maindele; 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.
- Renomeie ou mova a biblioteca
Na página Code, renomeie
moneyou mova para outra pasta. Quando outros scripts a importam, um diálogo pergunta Atualizar os scripts que importam este? e lista quais são. - 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.
- 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ódigo | Quando |
|---|---|
import_not_found | O caminho não corresponde a nenhum script do projeto |
import_language | O script importado é de outra linguagem (JavaScript importando TypeScript inclusive) |
import_cycle | Os imports formam um círculo; a mensagem nomeia a cadeia |
import_too_deep | A cadeia de imports passa de 20 níveis |
import_has_main | Uma biblioteca C/C++ define main |
import_unpublished | Só ao publicar: uma biblioteca nunca foi publicada |
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.