Personal Website

My Web: MindEchoes.com

Saturday, July 14, 2012

Kanzen Liberado!

Ayer libere el modulo de Code Completion para Python que usamos en NINJA-IDE como una libreria independiente para que cualquier pueda usarla en otra aplicacion. La libreria esta bajo licencia GPLv3 y es muy simple de usar:

Usando Kanzen: 

from kanzen import code_completion
cc = code_completion.CodeCompletion()

# Get the source code to be analyzed
# str or unicode
source_code = your_editor.get_source_code()  
# The path is used to identify each module 
# after analysis inside Kanzen
path = '/path/to/the/file.py'
# If you provide a path, but an empty string 
# for source_code, Kanzen will try to read the
# file from disk and get the source code.
# Execute "analyze_file" to collect metadata 
# and resolve types
cc.analyze_file(path, source_code)

# To get the list of possible completions, 
# you need to call: "get_completion" providing
# the source code of the file, and the position 
# of where the cursor is.
result = cc.get_completion(source_code, offset)

get_completion devolvera una estructura como la siguiente:

(No siempre contendra los siguientes elementos, puede ser que a veces "modules" no este si el objeto del que estamos obteniendo informacion no posee modulos, etc)

{
    'modules': ["list of strings", ...],
    'classes': ["list of strings", ...],
    'functions': ["list of strings", ...],
    'attributes': ["list of strings", ...],
}

Importante:
Se puede mejorar los resultados del Autocompletado agregando la carpeta del proyecto a Kanzen, por ejemplo, haciendo algo como:
 
from kanzen import completion_daemon
completion_daemon.add_project_folder('/path/to/project/')

# This will create a map of the project structure 
# and will allow Kanzen to understand
# the imports that are related to your project 
# and look for those modules.
# Also if your project is related to another project 
# which code is in your computer, the same principle apply.

No olvides: Cuando estas usando Kanzen, Kanzen va a activar un daemon para resolver en background casos especiales de autocompletado y tener esa informacion disponible cuando sea necesario. Habiendo dicho eso, es necesario recordar apagar el daemon antes de cerrar el programa.

from kanzen import completion_daemon
completion_daemon.shutdown_daemon()

Repositorio del Proyecto: Kanzen

No comments: