[Bug]: Python mod.Box[T] annotation gets a false generic_arg edge that replaces the parameter_type one ('is' on tree-sitter nodes)
I maintainer di solito rispondono entro 2 giorni
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 88/100
Direzione di ricerca
Inizia in graphify/extractors/engine.py, in _python_collect_type_refs, nello specifico nel ramo subscript descritto nell’issue. Riproduci il caso con mod.MyBox[Foo] e confronta i riferimenti raccolti con l’output previsto. Il lavoro è completato quando il riferimento generic_arg aggiuntivo di MyBox è scomparso, mentre restano i riferimenti generic_arg di type e Foo.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Pre-flight checks
- I have checked the Troubleshooting section in the README
What happened?
A dotted generic annotation like def f(x: mod.MyBox[Foo]) gets a false references edge to MyBox with context: generic_arg. graph.json keeps one edge per node pair, so this false edge replaces the correct parameter_type / return_type edge.
The cause is in _python_collect_type_refs (graphify/extractors/engine.py), subscript branch:
for c in node.children:
if c is value or not c.is_named:
py-tree-sitter returns a new Node object on every access, so c is value is never true (== works). The subscript's value is walked twice: once as the type, then again as one of its own generic arguments.
A plain MyBox[Foo] parses as generic_type and is not affected; only the dotted form is.
Steps to reproduce
# repro.py
import tree_sitter_python as tsp
from tree_sitter import Language, Parser
from graphify.extractors.engine import _python_collect_type_refs
src = b"def f(x: mod.MyBox[Foo]): ...\n"
tree = Parser(Language(tsp.language())).parse(src)
ann = tree.root_node.children[0].child_by_field_name("parameters").named_children[0].child_by_field_name("type")
out = []
_python_collect_type_refs(ann.named_children[0], src, False, out)
print(out)
Error output or graph output
got: [('MyBox', 'type'), ('MyBox', 'generic_arg'), ('Foo', 'generic_arg')]
expected: [('MyBox', 'type'), ('Foo', 'generic_arg')]
Edges with the wrong context in real graphs: click 39, flask 21, requests 6 (django has almost no annotations, so 0).
Graphify version
0.9.105 (v8 at 5eedffa8)
Operating System
Windows (also seen on Linux)
Python Version
3.12
Installation Method
uv tool install (recommended)
- Lingua principale
- Python
- Stelle
- 124k
- Fork
- 11.9k
- Merge medio
- 2h 35m
- PR unite (30g)
- 6
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Graphify-Labs/graphify
-
[Bug]: graphify query prints a different answer on each run (BFS walks a set in hash order)Forse già presa @rohit-jsfreaky l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
Graphify-Labs/graphify#5109 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
Graphify-Labs/graphify#5006 · 2 commenti ·
I maintainer di solito rispondono entro 2 giorni
-
extract --out <dir>: semantic cache never saved, docs missing from manifest (relative source_file resolved against --out)Forse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
Graphify-Labs/graphify#4831 · 3 commenti ·
I maintainer di solito rispondono entro 2 giorni
-
hooks: last-resort `python3` probe launches the Microsoft Store redirector on Windows (visible console flash, exit 9009)Forse già presa @Deepjyoti-Sarmah l’ha presa 21 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
Graphify-Labs/graphify#4563 · 2 commenti ·
I maintainer di solito rispondono entro 2 giorni
-
GRAPHIFY_DISABLE_THINKING is ignored by the claude backend, so thinking eats max_tokens and extraction truncatesForse già presa @bercedev l’ha presa 22 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 69/100
Graphify-Labs/graphify#4546 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
Tutte le issue di Graphify-Labs/graphify
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
bytedance/agentkit-samples#277 ·
-
ai-driven-fuzzing bug claude Minor
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
I maintainer di solito rispondono entro 2 giorni
-
Edit: TVS Encarnacion [PY]Apertachannels:edit check:passed
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
[Bug] The blue-green mitigation strategy lists catalog names and views before the source tablesAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
aws-samples/sample-aws-genai-db-modernizer#2097 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno