Embrulhar uma biblioteca do Python
Quando vale, o que a ponte não converte — e a promessa que o seu pacote passa a quebrar.
adopt Python.numpy as np traz qualquer biblioteca do Python. Numa aplicação, é conveniência. Numa biblioteca publicada, é uma decisão que passa para quem instala.
A ponte não converte#
dataforge
// Um 'ndarray' continua um 'ndarray'. E o que faz 'a * 2' ser a
// conta vetorizada do numpy, e nao um laco sobre um milhao de
// posicoes.
//
// Isso so funciona porque o interpretador trata objeto estranho por
// PROTOCOLO — membro, metodo, indice, 'len', iteracao, aritmetica,
// texto e verdade ja passavam assim. Trocar protocolo por
// 'isinstance' em qualquer um deles quebraria a ponte inteira.
// E 'typeof' tem uma excecao de proposito: 'np.int64' nao e
// subclasse de 'int', mas faz conta de inteiro — entao ele responde
// 'Integer'. Nao ha nada de numpy no interpretador: 'Fraction' e
// 'Decimal' entram pela mesma porta.
out "a ponte e por protocolo, e nao por tipo"Quando vale, e quando não#
| Vale | Não vale |
|---|---|
| o trabalho é numérico pesado (numpy, scipy) | a biblioteca já existe em Arcane.* |
| um formato binário complexo com implementação madura | dá para escrever em 200 linhas sem dependência |
| um driver que fala um protocolo proprietário | só para economizar uma tarde |
| a conta é o gargalo medido | “pode vir a ser mais rápido” |
A falha tem de nomear o Python exato#
O instalador cria uma venv em ~/.dataforge, e um pip install no terminal instala em outro Python. Uma mensagem que só diz “módulo não encontrado” manda a pessoa rodar o comando que já não funcionou.
| Ambiente | O que a mensagem deve dizer |
|---|---|
| venv do instalador | o caminho do Python que está rodando |
| executável único | pip install dataforge-lang — ali não há pip nenhum |
pip install -e . | o pip do próprio ambiente |
Continue em A ponte e As formas de adopt.