Validator protocol type checking issues
Maintainer antworten meist innerhalb von 6 Tagen
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 25/100
Rechercherichtung
Beginne mit der Untersuchung der Definitionen von jsonschema.protocols.Validator und Draft202012Validator und reproduziere anschließend die im Issue gemeldete Zuweisung und die isinstance-Prüfungen mit mypy. Vergleiche die Protokollmitglieder und das im Issue gezeigte Laufzeitverhalten; abgeschlossen ist die Aufgabe, wenn die Typisierungsdiagnosen und das Verhalten der Protokollprüfung entweder korrigiert oder mit einer klaren Erklärung dokumentiert sind.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
In the following code PyCharm finds 1 warning and 1 error:
import jsonschema
v: jsonschema.protocols.Validator = jsonschema.Draft202012Validator({})
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# Expected type 'Validator', got 'Draft202012Validator' instead
print(isinstance(jsonschema.Draft202012Validator({}), jsonschema.protocols.Validator))
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# Only @runtime_checkable protocols can be used with instance and class checks
mypy finds them too:
test004.py:3: error: Incompatible types in assignment (expression has type "Draft202012Validator", variable has type "Validator") [assignment]
test004.py:3: note: Following member(s) of "Draft202012Validator" have conflicts:
test004.py:3: note: Expected:
test004.py:3: note: def evolve(self, **kwargs: Any) -> Validator
test004.py:3: note: Got:
test004.py:3: note: def evolve(self, **changes: Any) -> _Validator
test004.py:3: note: schema: expected "dict[Any, Any] | bool", got "bool | Mapping[str, Any]"
test004.py:6: error: Only @runtime_checkable protocols can be used with instance and class checks [misc]
Found 2 errors in 1 file (checked 1 source file)
But the code works and prints "True".
Why doesn't Validator protocol work as expected? Is this jsonschema library issue? Or am I doing something wrong here (and if yes, how to do it correctly)?
- Vorherrschende Sprache
- Python
- Sterne
- 5k
- Forks
- 718
- Ø Merge
- 5 T. 9 Std.
- Gemergte PRs (30 T.)
- 5
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 python-jsonschema/jsonschema
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
python-jsonschema/jsonschema#1588 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 6 Tagen
-
Iterator error contexts lose parent links and absolute pathsEvtl. wieder frei @DawnofGenX hat das vor 31 Tagen übernommen, und es ist kein Pull Request offen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
python-jsonschema/jsonschema#1584 · 3 Kommentare ·
Maintainer antworten meist innerhalb von 6 Tagen
-
regex format checker crashes with RecursionError on deeply nested patternsEvtl. vergeben @DawnofGenX hat das vor 31 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
python-jsonschema/jsonschema#1538 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 6 Tagen
-
is_duration raises an uncaught decimal.Overflow on a duration with a large exponentEvtl. wieder frei Ein Pull Request dazu wurde ohne Merge geschlossen. OffenNeeds Test Upstream
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
python-jsonschema/jsonschema#1511 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 6 Tagen
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 48/100
python-jsonschema/jsonschema#1597 ·
Maintainer antworten meist innerhalb von 6 Tagen
Alle Issues in python-jsonschema/jsonschema
Ähnliche Issues
-
community enhancement good first issue
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 86/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 77/100
Hochfrequenz/sapgui.mcp#1039 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
didi/helixharness#18 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
dataforgoodfr/democracy-watch#46 · 1 Reaktion ·