Inaccurate Float-to-Decimal Conversion in `parse_value` of `Decimal` `Scalar`
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 55/100
Rechercherichtung
Suchen Sie die parse_value-Implementierung des Decimal scalar im Graphene-Codebestand und vergleichen Sie ihre aktuelle Konvertierung mit der verknüpften Strawberry-Implementierung. Überprüfen Sie, dass das Parsen von 0.01 den beabsichtigten Dezimalwert bewahrt und dass ungültige Eingaben weiterhin Undefined zurückgeben; fügen Sie gezielte Tests hinzu oder aktualisieren Sie diese, falls die umgebenden Tests einen geeigneten Ort erkennen lassen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Current Behavior
The parse_value function currently converts the input using _Decimal(value). When a float is passed as input, this conversion may lead to precision loss due to the inherent imprecision of floating-point representations.
Steps to Reproduce
- Call
Decimal.parse_value(0.01). - Observe that the resulting
Decimaldoes not accurately represent the value0.01instead gives0.01000000000000000020816681711721685132943093776702880859375which is inaccurate.
Expected Behavior
The function should convert the input to a string before creating the Decimal object (i.e., using _Decimal(str(value))). This approach ensures that decimal values are accurately converted, even if not provided as string, preserving their intended precision.
Suggested Fix
Modify the parse_value function as follows:
@staticmethod
def parse_value(value):
try:
return _Decimal(str(value))
except Exception:
return Undefined
- Vorherrschende Sprache
- Python
- Sterne
- 8.2k
- Forks
- 823
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
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
-
Tutorial mistakesOffen🐛 bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
graphql-python/graphene#1389 · 5 Kommentare · 2 Reaktionen ·
-
✨ enhancement
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 48/100
graphql-python/graphene#1609 ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 68/100
graphql-python/graphene#1606 ·
-
Python 3.14 supportOffen✨ enhancement
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 38/100
graphql-python/graphene#1601 · 2 Kommentare ·
-
Support lazy type references everywhereEvtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. Offen✨ enhancement
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 42/100
graphql-python/graphene#1600 ·
Alle Issues in graphql-python/graphene
Ähnliche Issues
-
ChatBedrockConverse changes the keys of JSON tool results to camelCase (`order_id` becomes `orderId`)Evtl. vergeben @geyazheng hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
langchain-ai/langchain-aws#1469 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
EESSI/docs#949 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
b4b usability
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Maintainer antworten meist innerhalb von 1 Tag
-
fix(schedule): align list_tasks since cursor filter boundary from strict > to >=Evtl. vergeben @bfs2021 hat das heute übernommen. Offenagent-ready bug p2 schedule
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 83/100
allenporter/supernote#540 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
frazane/scoringrules#164 ·
Maintainer antworten meist innerhalb von 1 Tag