Saltar al contenido
cd /languages
Sistemas dinámicosProgramaciónSoporte completo de grafo

Compatibilidad con Python en Maguyva: búsqueda de código y refactorización con IA

Maguyva es compatible con Python mediante análisis AST y extracción de símbolos, lo que ayuda a los agentes de IA a seguir decoradores, métodos self/cls, importaciones y dependencias entre módulos en repositorios Python reales.

Dónde suelen fallar las herramientas de IA superficiales en repositorios Python

Python es donde muchas herramientas de codificación con IA se ven bien al principio y luego empiezan a adivinar en producción. Las partes difíciles son conocidas: puntos de entrada decorados, clases de servicio, stubs de tipos, pequeños módulos auxiliares por todas partes y métodos que solo tienen sentido una vez que reconectas self o cls con la clase a la que pertenecen.

Para Python, la pregunta real no es «¿puede leer archivos .py?». La pregunta es si el agente puede mantenerse fundamentado mientras se mueve de un endpoint a un servicio, de una tarea en segundo plano a un helper, o de un nombre de clase a los métodos que realmente implementan el comportamiento.

Qué extrae Maguyva realmente en Python

Maguyva trata a Python como un lenguaje estructural completo. La configuración cubre .py, .pyw y .pyi; asigna decorated_definition de vuelta a un símbolo de función; y califica las llamadas a métodos self / cls de vuelta a la clase que las contiene. Eso importa porque esos son exactamente los puntos donde los repositorios Python empiezan a parecer obvios para un humano y confusos para un LLM.

También filtra gran parte del ruido de la biblioteca estándar en la extracción de relaciones. Eso significa que las llamadas comunes en tiempo de ejecución de módulos como pathlib, typing o logging tienen menos probabilidades de ahogar las relaciones específicas del repositorio que realmente te importan.

Flujos de trabajo MCP útiles para repositorios Python

El flujo de trabajo útil más simple es:

  • Empieza con intelligent_search para una pregunta de comportamiento como «lógica de reintento en la sincronización de facturas» o «verificaciones de permisos en los endpoints de facturación».
  • Cambia a find_symbol una vez que conoces el nombre de la clase o función que te interesa.
  • Usa dependency_search con recorrido entrante antes de refactorizar un servicio, helper o clase base compartidos.

Ese patrón es mejor que pedirle a un agente que «actualice el flujo de facturación» desde cero. Le permite al agente construir un mapa primero y cambiar código después.

Cuándo es útil esta página

Esta página es para repositorios Python que ya tienen cierta antigüedad y complejidad: código de servicios, trabajos programados, scripts, tipos generados y configuración circundante. Si tu comparación principal es entre monorepos web políglotas, lee también la guía de TypeScript. Si solo necesitas la matriz completa de compatibilidad, usa compatibilidad.

Mejor uso

  • >Repositorios de FastAPI, Django, plataformas de datos o herramientas internas donde el código de aplicación y los scripts operativos conviven.
  • >Equipos que refactorizan servicios Python de larga duración que ya tienen decoradores, trabajos en segundo plano y mucha conexión implícita.
  • >Flujos de trabajo de agentes que necesitan más que grep antes de cambiar un handler, un servicio, un modelo o un helper.

Flujos de trabajo del agente

  • >Rastrear un endpoint, una tarea o un comando CLI a través de helpers y módulos compartidos antes de editarlo.
  • >Encontrar dónde se instancia y se reutiliza un servicio, una clase o una función de utilidad en todo el repositorio.
  • >Comparar implementaciones adyacentes para que el agente edite la abstracción correcta en lugar de la coincidencia de texto más cercana.

Detalles del motor

  • >Las definiciones decoradas se siguen tratando como funciones, así que las vistas y tareas decoradas siguen siendo buscables como símbolos.
  • >Las llamadas a métodos con `self` y `cls` se vinculan de nuevo a la clase que las contiene, lo que ayuda a que el grafo siga siendo útil en código de servicios con muchas clases.
  • >Los normalizadores de imports, llamadas y símbolos están habilitados, mientras que el ruido común de la stdlib como `pathlib.*`, `typing.*` y `logging.*` se filtra de las relaciones.

Puntos de entrada MCP útiles

  • intelligent_search

    Empieza con una consulta conceptual como “lógica de reintentos en la sincronización de facturas” y define `language_filter="python"` si el repo es políglota.

  • find_symbol

    Úsala cuando sepas el nombre de la clase o función y necesites la definición más las referencias antes de editar.

  • dependency_search

    Usa la dirección entrante antes de refactorizar un servicio o helper compartido, para ver qué depende de él.