Filipe Saraiva's blog

Tecnologia, sociedade e política.

Cantor – palavras-chave dinâmicas no python backend

without comments

No post anterior, eu mencionei sobre palavras-chave dinâmicas no python backend. A ideia é que, após importar um módulo python na área de trabalho do Cantor, funções, palavras-chave, variáveis e mais deste módulo são carredados no Cantor e disponibilizados para o destaque de sintaxe e tab complete.

Esta funcionalidade já está implementada e você pode testá-la compilando o Cantor do branch python-backend.

Mas vamos antes ver mais algumas informações sobre esta funcionalidade.

Existem várias maneiras de importar um módulo python no console python. Você pode usar “import modulename”, “import modulename as modulevariable”, “from modulename import *”, “from modulename import function_1, function_2, …”, e mais. Cada maneira de fazer um import provoca diferentes consequências na experiência do usuário.

As quatro maneiras de realizar um import mencionadas anteriormente são suportadas pelo python backend. Veremos agora como esses diferentes imports se comportam e como o python backend reage a cada um deles.

import modulename

A maneira mais básica e simples de fazer um import. Após este comando, uma variável chamada “modulename” é definida e as funções e mais palavras-chave do módulo são disponibilizadas através de “modulename.keyword”.

python_import_modulenameTab Complete

python_import_modulename_highlighting

Destaque de Sintaxe

import modulename as modulevariable

Nesta forma o usuário define uma variável “modulevariable” para referenciar o “modulename”, e “modulename” não é definido. Portanto, você pode acessar as funções e mais palavras-chave do “modulename” usando “modulevariable.keyword”.

python_import_modulename_as_modulevariable

Tab Complete

python_import_modulename_as_modulevariable_highlithing

Destaque de Sintaxe

from modulename import *

Nesta forma o usuário importa todas as funções e palavras-chave do “modulename”, mas nenhuma variável é definida para acessar o “modulename”. As funções do módulo são acessadas diretamente.

python_from_modulename_import_all

Tab Complete

python_from_modulename_import_all_highlithing

Destaque de Sintaxe

from modulename import function_1, function_2, …

O usuário importa apenas funções específicas do “modulename”, e não todas as funções.

python_from_modulename_import_specific

Tab Complete

python_from_modulename_import_specific_highlithing

Destaque de Sintaxe

Cantor plugin

Eu também desenvolvi um plugin para importar módulos no Cantor. Este plugin abre uma janela de diálogo para o usuário entrar com o módulo e, após apertar o Ok, Cantor executará um “import modulename” e as palavras-chave estarão disponíveis. O diálogo é acessado via o menu “Packaging”, na barra de menu.

python_import_cantor_plugin

Plugin de import no Cantor

Identificando erros

O backend pode identificar vários tipos de erros durante o import.

python_import_errors

Identificando erros no import

Conclusões

A funcionalidade está desenvolvida e madura para uso, entretanto, ela não suporta todas a maneiras de realizar um import em python. Entretanto, imagino que estas cinco maneiras de realizar o import representam as formas mais comuns utilizadas por desenvolvedores python com foco em softwares científicos.

O importante é que esta funcionalidade permite ao python backend suportar os mais variados tipos de módulos python, e não somente scipy, numpy, and matplotlib, como eu havia proposto no início desse projeto.

Agora, deixe-me saber como você importa módulos no python. Eu desenvolverei o suporte para novas formas de import em futuras versões do backend.

Por enquanto, espere por mais novidades deste projeto logo mais!

Leave a Reply