Consider sharing implementation with graphene-django
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 20/100
- Issue-Typ
- Feature
- Klarheit
- Muss geklärt werden
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- python, sqlalchemy
- Bereich
- backend-api-design, databases
Rechercherichtung
Beginne damit, die duplizierte Implementierung in graphene-django und graphene-sqlalchemy zu vergleichen, und prüfe anschließend die verknüpften Issues zu Overfetching, Berechtigungen, Filtern und N+1-Abfragen. Als abgeschlossen gilt die Aufgabe, wenn eine Einigung über die Abgrenzung einer gemeinsamen Bibliothek und ein Plan für ORM-spezifische Integrationen vorliegt; im Issue werden keine Dateien, Tests oder Einstiegspunkte genannt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Problem
I was surprised to see that graphene-django shares a considerable amount of code with this library. Almost line-for-line in some instances if you blur your eyes to the types. Unfortunately that means it also shares some common bugs, missing features, etc...
Worse-off for this library, the graphene "team" seems to prefer graphene-django by a 3-0 vote. Which might explain why that package has additional features over this one 😉. Not to mention, there also several graphene-django-* packages that tack on to grpahene-django[1]
Both libraries essentially represent the same thing: gluing your Python SQL ORM into graphene types. (Note that these aren't the only players on the field either [2])
Proposal
Find the middle ground for "here's how to take a declarative ORM and transform it into graphene types", and have graphene-django and graphene-sqlalchemy fill in the ORM-specific slots (how do I convert this ORM field type to a graphene field type?, etc...) and add additional features offered by that ORM.
This means that contributors who can bring valuable graphene expertise can contribute without heavy knowledge of an ORM, and aren't splintered across repos. Valuable features can be added to a single scaffold repo and then be filled by the implementation-specific repos much easier.
It would also mean core features/issues are located in one library.
I've outlined below (what I think) the key features that a shared library should attempt to solve, in addition to reducing the amount code copied between the two libraries.
Similar issues/features
| Description | django issue | sqlalchemy issue |
|---|---|---|
| don't overfetch data | 402 | 134 |
| field/node level permissions | 485 | 186 |
| filtering | supported | 110, 16 |
| N+1 | graphene-django-optimizer |
35 |
(there's more issues/features duplicated between the two, but those are the "big ones" IMO that stop these libraries form being true works of art)
drawbacks
With maintenance being scattered, it might be hard to find the right people to create/maintain such a library. Furthermore, maintenance/contributions would need to generic enough to satisfy several downstream libraries. However, from what I've seen scouring the issues and related libraries, there's no shortage of people willing to solve the hard problems. 👍
notable parties
@syrusakbary @jnak @Nabellaleen @Cito @patrick91 (plus whoever else y'all wanna tag)
[1] graphene-django-tools, graphene-django-optimizer, etc...
[2] @coleifer who authored Peewee showed interest in support (graphene#289) but recently said it wasn't being pursued (peewee#1790)
- Vorherrschende Sprache
- Python
- Sterne
- 984
- Forks
- 224
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus graphql-python/graphene-sqlalchemy
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 38/100
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 52/100
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 25/100
graphql-python/graphene-sqlalchemy#422 · 1 Kommentar ·
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 25/100
graphql-python/graphene-sqlalchemy#419 · 3 Kommentare ·
Alle Issues in graphql-python/graphene-sqlalchemy
Ähnliche Issues
-
docs pydanty:is-working
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
pydantic/pydantic-ai#10113 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 77/100
GreedyBear-Project/GreedyBear#1727 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
ARM-software/CMSIS-DSP#354 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
kiat/codeAssist#391 ·
-
needs triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 83/100
darnitdevorg/darnit#587 ·
Maintainer antworten meist innerhalb von 1 Tag