0xPlaygrounds / 0xPlaygrounds/subgrounds
Subgraphs with `_type` fail at auto-select
- Lingua principale
- Python
- Stelle
- 73
- Fork
- 12
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
**Describe the bug**
With `Subgrounds` feature of auto select when given a top-level field or entity, it automatically grabs every scalar field + every object field's id. This will clash causing non-sense errors if a subgraph has a rare `_type` or other variable that exists on the `FieldPath` object.
**To Reproduce**
Steps to reproduce the behavior:
1. Test out this snippet of code with the latest subgrounds
```py
from subgrounds import Subgrounds
sg = Subgrounds()
aave_v2 = sg.load_subgraph("https://api.thegraph.com/subgraphs/name/messari/aave-v2-ethereum")
sg.query_df(aave_v2.Query.markets)
```
2. Observe an absurd stack limit error dealing with crazy recursion.
**Expected behavior**
There should be no clash and the data should be accessed
**Python version (please complete the following information):**
- Python 3.11 w/ Subgrounds 1.6.0
**Additional context**
Potential Solutions:
a) we rename all internal variables of `FieldPath` (and `Subgraph`) to start with `__` to enable python's name-mangling
b) we replace `__getattribute__` with `__getattr__` so that internal vars don't go thru a special access layer
- this would enforce the use of `._select` if there _was_ a name clash with a field
Doing both a) **and** b) could be ideal since the name-mangle will reduce collisions and the `__getattr__` would ensure consistent and crashless behavior in edge cases.
Likely, the hardest part to fixing this issue is fixing all of the test cases as well.
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
The issue is in the FieldPath and Subgraph classes where internal variable names like `_type` clash with subgraph fields. Start by examining the `__getattribute__` method in these classes. Look at the auto-select logic that grabs scalar fields. The fix involves renaming internal variables to use double underscores for name mangling and/or switching to `__getattr__`. Run existing tests to ensure changes don't break functionality, focusing on tests related to auto-select and field access.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- graphql, python
- Ambito
- api, backend, data
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Specificata chiaramente
- Idoneità per principianti
- 40/100