Pular para o conteúdo

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#

ValeNão vale
o trabalho é numérico pesado (numpy, scipy)a biblioteca já existe em Arcane.*
um formato binário complexo com implementação maduradá para escrever em 200 linhas sem dependência
um driver que fala um protocolo proprietáriosó 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.

AmbienteO que a mensagem deve dizer
venv do instaladoro caminho do Python que está rodando
executável únicopip 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.