Nastavení editoru (VS Code / Pylance)
Našeptávání a typová kontrola pro picogame hry na PC — jde o dvě věci, protože picogame program používá dva druhy modulů:
- Pomocné knihovny
picogame_*jsou čistý Python. Pylance je najde přespython.analysis.extraPaths— musí ale ukazovat na složku se zdrojovými.py, např. klon repapicogame-libs— ne na/libna desce, kde jsou.mpybytecode soubory, které Pylance nepřečte. - Nativní moduly (
picogame— C engine — aboard,displayio,synthio, … z CircuitPythonu) nemají Python zdroj, takže potřebují stubs:pip install circuitpython-stubspokrývá všechny upstream moduly CircuitPythonu;picogamesamotný zatím v upstreamu není, jeho stub proto vychází zvlášť jakopicogame-stubs— wheel připojený ke každému release picogame-libs (generovaný z docstringů enginu, stejný zdroj jako reference).
Nastavení
Sekce “Nastavení”git clone https://github.com/MakerClassCZ/picogame-libs ~/picogame-libspip install circuitpython-stubspip install https://github.com/MakerClassCZ/picogame-libs/releases/latest/download/picogame_stubs-latest-py3-none-any.whl(nebo přímo z repa: pip install "git+https://github.com/MakerClassCZ/picogame-libs#subdirectory=stubs")
.vscode/settings.json ve složce hry:
{ "python.analysis.extraPaths": ["~/picogame-libs"], "python.analysis.typeCheckingMode": "basic", "python.analysis.diagnosticSeverityOverrides": { "reportMissingModuleSource": "none" }}Poslední řádek je důležitý: picogame-stubs je balík jen se stuby (žádné picogame.py
neexistuje — modul je ve firmwaru), takže Pylance sice našeptává pg.Sprite i pg.rgb565 ze
stubu, ale řádek import picogame přesto podtrhne hláškou „could not be resolved from source“.
Je to varování o chybějícím runtime zdroji, ne o typech; tenhle override ho skryje. Totéž platí
pro board, displayio a další z circuitpython-stubs.
Potom import picogame as pg našeptává pg.Sprite, pg.Scene, pg.rgb565(...) se signaturami
a docstringy, import picogame_input se vyřeší a překlep jako sprite.frmae se označí.
Bez pipu
Sekce “Bez pipu”Když chceš stub nakopírovat ručně, dej pozor, kam cesta míří — na search path musí ležet složka
picogame-stubs samotná (konvence PEP 561 <modul>-stubs), takže:
"python.analysis.extraPaths": [".../stubs"]— složka, která obsahujepicogame-stubs/. ✅"python.analysis.extraPaths": [".../stubs/picogame-stubs"]— cesta dovnitř. ❌import picogamese nevyřeší (picogame-stubsnení název modulu).
Druhá ruční možnost je výchozí složka stubů ve VS Code: zkopíruj .pyi do
typings/picogame/__init__.pyi ve svém workspace — Pylance ji použije bez jakéhokoli nastavení.
Pyright / mypy: stejné stubs fungují (pyrightconfig.json → extraPaths, nebo wheel nainstaluj do
prostředí, které Pyright analyzuje).
Odkud stub pochází
Sekce “Odkud stub pochází”picogame-stubs/__init__.pyi generuje tools/extract_pyi.py z CircuitPythonu z //| docstringů
v shared-bindings/picogame — stejný text, který nesou docs i help() ve firmwaru, takže stub
nemůže enginu ujet. Regenerace proti stromu firmwaru: stubs/regen.sh /cesta/k/circuitpython
v repu picogame-libs.