Fix env checker to handle Sequence spaces in composite spaces (Dict, Tuple, OneOf) #2174
+89
−12
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #2172
Problem
The environment checker was failing when
Sequence
observation spaces were nested inside composite spaces likeDict
,Tuple
, orOneOf
. This caused assertion errors instead of the expected warnings and graceful handling.Root Cause
The
_check_unsupported_spaces()
function properly detectedSequence
spaces at the top level and setshould_skip=True
to bypass return value checks. However, it didn't recursively check forSequence
spaces within composite spaces, so nestedSequence
spaces weren't detected and the checker tried to validate their return values, leading to failures.Solution
Updated
_check_unsupported_spaces()
to recursively detectSequence
spaces within:Dict
spaces (checking all sub-spaces)Tuple
spaces (checking all elements)OneOf
spaces (checking all possible spaces)When any nested
Sequence
space is found, the function now:should_skip=True
to bypass return value validationSequence
spaces not being supportedChanges
stable_baselines3/common/env_checker.py
to add recursiveSequence
space detectionstack=True
andstack=False
Testing
The fix now handles all the problematic cases from the original issue:
Existing functionality remains unchanged - all existing tests continue to pass.
💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.