Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Draft 2019-09 unevaluatedItems crashes when items is a boolean schema

Aperta
#1,590 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
55/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
python
Ambito
backend, testing

Direzione di ricerca

The report identifies jsonschema/_legacy_keywords.py and the find_evaluated_item_indexes_by_schema helper; start by reading that helper alongside the items_draft6_draft7_draft201909 dispatch. Reproduce with the supplied schema and check the regression cases described for boolean items, combinators, and $ref. Done means boolean schemas no longer crash and the reported validation behavior is covered by passing tests.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Draft201909Validator raises TypeError: object of type 'bool' has no len() when a boolean items schema is combined with unevaluatedItems, even when the instance is an empty array.

Reproduced with released jsonschema 4.26.0 on CPython 3.14.4 and with current main at c497561ea0a95f5aac09cd63d15eb1420eb7bbec.

from jsonschema import Draft201909Validator

schema = {"items": True, "unevaluatedItems": False}
Draft201909Validator.check_schema(schema)  # succeeds
print(list(Draft201909Validator(schema).iter_errors([1, 2])))

Expected: [], because items: true evaluates every item successfully.

Actual:

  File "jsonschema/_legacy_keywords.py", in find_evaluated_item_indexes_by_schema
    evaluated_indexes += list(range(len(schema["items"])))
TypeError: object of type 'bool' has no len()

The same crash occurs with items: false. An empty array should be valid in that case; a nonempty array should produce ordinary validation errors. Replacing the boolean items schema with an object schema avoids the crash.

Draft 2019-09 §9.3.1.1 permits a single schema or an array of schemas for items. Boolean schemas are valid single schemas. §9.3.1.3 describes how unevaluatedItems consumes the resulting annotations.

The evaluated-item helper recognizes an object as a single schema, but treats any other value as an array and calls len() on it. A local fix changes that condition to not validator.is_type(schema["items"], "array"), matching the dispatch already used by items_draft6_draft7_draft201909.

The local patch includes regressions for both booleans, nonempty-array rejection with items: false, allOf/anyOf/oneOf, and $ref. Before the fix, the four new test methods produced 12 TypeErrors. After the fix, the full 8,533-test discovery run exited successfully; the 29-test Draft 2019-09 validator class, lint, formatting, and typing checks also pass. An independent automated reviewer ran the 8,016-test official JSON Schema suite successfully (232 skipped).

I searched open and closed issues and PRs for unevaluatedItems, boolean items, and this exception. #867 concerns a boolean instance and a different exception; I did not find a report of this boolean-schema case.

The repository currently restricts PR creation to collaborators, so no PR has been opened. The tested patch is retained locally pending maintainer direction.

AI disclosure: this report, reproduction, local fix, and regression tests were prepared using OpenAI Codex, with independent review by a separate native GPT-6 Sol agent. This is automated work and still needs maintainer review.

Lingua principale
Python
Stelle
5k
Fork
700
Merge medio
2g 1h
PR unite (30g)
5

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di python-jsonschema/jsonschema

Tutte le issue di python-jsonschema/jsonschema

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.