# Python-tuki Maguyva-palvelussa: tekoälypohjainen koodihaku ja refaktorointi

Canonical source: https://maguyva.ai/fi/languages/python

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

Maguyva tukee Pythonia AST-jäsennyksellä ja symbolien poiminnalla, mikä auttaa tekoälyagentteja seuraamaan dekoraattoreita, self/cls-metodeja, tuonteja ja moduulien välisiä riippuvuuksia todellisissa Python-repositorioissa.

## Tukikatsaus

- Taso: AST- ja symbolituki
- Ohjelmointi
- Päätteet: .py, .pyi, .pyw
- Oikea AST-jäsennys syntaksitietoiseen hakuun ja rakenteelliseen kontekstiin.
- Nimetyt symbolit syöttävät semanttista hakua ja ristiviittauksia. Graafinavigointi on käytettävissä, kun suhteiden poiminta on käytössä.
- Tämä kieli tuo symboleja ja suhteita graafia hyödyntävään hakuun; tuetut reunatyypit vaihtelevat kielen omien rakenteiden mukaan.
- Sekä AST-jäsennys että symbolien poiminta ovat käytettävissä.

## Parhaiten sopii

- FastAPI-, Django-, data-alusta- tai sisäiset työkalurepositoriot, joissa sovelluskoodi ja operatiiviset skriptit elävät yhdessä.
- Tiimit, jotka refaktoroivat pitkäikäisiä Python-palveluita, joissa on jo dekoraattoreita, taustatehtäviä ja paljon implisiittistä kytkentää.
- Agenttityönkulut, jotka tarvitsevat enemmän kuin grepin ennen käsittelijän, palvelun, mallin tai apuohjelman muuttamista.

## Agenttien työnkulut

- Jäljitä päätepiste, tehtävä tai CLI-komento apuohjelmien ja jaettujen moduulien läpi ennen sen muokkaamista.
- Selvitä, missä palvelua, luokkaa tai apufunktiota instansioidaan ja käytetään uudelleen koko repositoriossa.
- Vertaa vierekkäisiä toteutuksia, jotta agentti muokkaa oikeaa abstraktiota lähimmän merkkijonovastaavuuden sijaan.

## Missä Python-repositoriot yleensä murtavat pinnallisia tekoälytyökaluja

Python on paikka, jossa moni tekoälytyökalu näyttää aluksi hyvältä ja alkaa sitten arvailla tuotannossa. Vaikeat osat ovat tuttuja: dekoroidut sisääntulopisteet, palveluluokat, tyyppimäärittelytiedostot (stub), pieniä apumoduuleja kaikkialla ja metodeja, jotka merkitsevät jotain vasta, kun yhdistät uudelleen `self` tai `cls` luokkaan, johon ne kuuluvat.

Pythonille todellinen kysymys ei ole "osaako se lukea `.py`-tiedostoja?". Kysymys on, pystyykö agentti pysymään perustellulla pohjalla siirtyessään päätepisteestä palveluun, taustatehtävästä apuohjelmaan tai luokan nimestä metodeihin, jotka todella toteuttavat käyttäytymisen.

## Mitä Maguyva todella poimii Pythonista

Maguyva käsittelee Pythonin täysin rakenteellisena kielenä. Asetukset kattavat `.py`, `.pyw` ja `.pyi`; kartoittavat `decorated_definition`:n takaisin funktiosymboliin; ja tarkentavat `self`- / `cls`-metodikutsut ympäröivän luokan nimellä. Se merkitsee, koska juuri näissä kohdissa Python-repositoriot alkavat tuntua ihmiselle ilmeisiltä ja LLM:lle epämääräisiltä.

Se myös suodattaa paljon standardikirjaston kohinaa suhdepoiminnasta. Se tarkoittaa, että tavalliset ajoympäristökutsut moduuleista, kuten `pathlib`, `typing` tai `logging`, peittävät alleen harvemmin ne repositoriokohtaiset suhteet, joista todella välität.

## Hyödyllisiä MCP-työnkulkuja Python-repositorioille

Yksinkertaisin hyödyllinen työnkulku on:

- Aloita `intelligent_search`:sta käyttäytymiskysymykselle, kuten "uudelleenyrityslogiikka laskun synkronoinnin ympärillä" tai "oikeustarkistukset laskutuksen päätepisteissä".
- Vaihda `find_symbol`:aan, kun tiedät luokan tai funktion nimen, josta välität.
- Käytä `dependency_search` sisääntulevalla läpikäynnillä ennen jaetun palvelun, apuohjelman tai kantaluokan refaktorointia.

Tuo malli on parempi kuin pyytää agenttia "päivittämään laskutuskulku" ilman taustatietoja. Se antaa agentin rakentaa kartan ensin ja muuttaa koodia vasta sitten.

## Milloin tämä sivu on hyödyllinen

Tämä sivu on Python-repositorioille, joilla on jo ikää ja monimutkaisuutta: palvelukoodia, työtehtäviä, skriptejä, generoituja tyyppejä ja ympäröivää konfiguraatiota. Jos pääasiallinen vertailusi koskee polyglot-web-monorepoja, lue myös [TypeScript-opas](/fi/languages/typescript). Jos tarvitset vain koko tukimatriisin, käytä [yhteensopivuussivua](/fi/docs/compatibility).

## Moottorin yksityiskohdat

- Dekoroituja määrittelyjä käsitellään edelleen funktioina, joten dekoroidut näkymät ja tehtävät pysyvät haettavina symboleina.
- `self`- ja `cls`-metodikutsut kytketään takaisin ympäröivään luokkaan, mikä pitää graafin hyödyllisenä luokkapainotteisessa palvelukoodissa.
- Tuonti-, kutsu- ja symbolinormalisoijat ovat käytössä, ja yleinen stdlib-kohina kuten `pathlib.*`, `typing.*` ja `logging.*` on suodatettu pois suhteista.

## Hyödylliset MCP-liittymäkohdat

- `intelligent_search`: Aloita käsitteellisellä kyselyllä kuten “laskujen synkronoinnin uudelleenyrityslogiikka” ja aseta `language_filter="python"`, jos repo on monikielinen.
- `find_symbol`: Käytä sitä, kun tiedät luokan tai funktion nimen ja tarvitset määrittelyn sekä viittaukset ennen muokkausta.
- `dependency_search`: Käytä saapuvaa suuntaa ennen jaetun palvelun tai apufunktion refaktorointia nähdäksesi, mikä siitä riippuu.
