Possible Regression: RecursionError validating oneOf/allOf schema in 0.7.2 (works in 0.7.1)
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 42/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Stale
- Tech stack
- openapi, python
- Domain
- api, testing-qa
Research direction
Start by running the supplied validate.py reproduction with openapi-spec-validator 0.7.2, then compare it with 0.7.1 as shown. Trace the RecursionError from the validate(parsed_spec) entry point through the oneOf/allOf and $ref schema validation, and consider the issue done when the reproduction validates successfully without recursion failure while preserving the 0.7.1 result.
Written by the indexing model from the issue text.
Description
Summary
An OpenAPI 3.1 schema that validated fine with openapi-spec-validator 0.7.1 now fails with a RecursionError in 0.7.2
Environment
openapi-spec-validator | 0.7.2 ❌ / 0.7.1 ✅
uv 0.7.3 (3c413f74b 2025-05-07)
Minimal reproduction
# validate.py
# /// script
# requires-python = ">=3.12"
# dependencies = [
# "openapi-spec-validator==0.7.2" # TODO: test with 0.7.1
# ]
# ///
import yaml
from openapi_spec_validator import validate
openapi_spec = """
openapi: 3.1.0
info:
title: Recursion Bug Demo
version: 0.1.0
components:
schemas:
PropertyConstraint:
type: object
oneOf:
- $ref: '#/components/schemas/PropertyEqualityConstraint'
- $ref: '#/components/schemas/PropertyRangeConstraint'
properties:
property_id:
type: string
type:
type: string
required: [type]
PropertyEqualityConstraint:
allOf:
- $ref: '#/components/schemas/PropertyConstraint'
- type: object
properties:
property_id:
type: string
property_value: {}
required: [property_id, property_value]
PropertyRangeConstraint:
allOf:
- $ref: '#/components/schemas/PropertyConstraint'
- type: object
properties:
property_id:
type: string
min: {}
max: {}
required: [property_id, min, max]
"""
parsed_spec = yaml.safe_load(openapi_spec)
validate(parsed_spec)
print("valid")
> uv run validate.py
RecursionError: maximum recursion depth exceeded
Set the version to 0.7.1 in the uv script tag at the top.
> uv run validate.py
valid
Has anyone else observed this behaviour?
- Dominant language
- Python
- Stars
- 409
- Forks
- 73
- PR merge metrics
- No merged PRs in 30d
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from python-openapi/openapi-spec-validator
-
Difficulty 4/5 3-5 days Newbie friendliness 55/100
-
Difficulty 3/5 1-2 days Newbie friendliness 55/100
-
Difficulty 3/5 1-2 days Newbie friendliness 30/100
-
kind/bug/confirmed
Difficulty 5/5 Over a week Newbie friendliness 25/100
python-openapi/openapi-spec-validator#373 · 1 comment ·
-
Difficulty 3/5 1-2 days Newbie friendliness 45/100
All issues in python-openapi/openapi-spec-validator
Similar issues
-
Add: hunch Open
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
AbdelStark/awesome-typesafe#104 ·
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
DiamondLightSource/dodal#2211 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
openml/openml-python#1749 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
sipyourdrink-ltd/bernstein#6191 ·