Skip to content

Defender#209

Closed
fsncmbe wants to merge 201 commits into
k4ntz:devfrom
ErikPre:master
Closed

Defender#209
fsncmbe wants to merge 201 commits into
k4ntz:devfrom
ErikPre:master

Conversation

@fsncmbe

@fsncmbe fsncmbe commented Dec 21, 2025

Copy link
Copy Markdown

Defender 👽

  • Modes missing, not sure if it needs implementation.

Gameplay 👾

  • Prevent Landers from abducting humans and turning them into mutants
  • When killing a lander thats abducting a human, catch the human and return them to the ground to gain extra score
  • By killing most aliens you enter the next wave
  • Fly into the city and press action to use smart bombs, killing everything on screen
  • Fly up into the sky entering hyperspace, taking no damage
  • Be fast, as keeping humans alive also increases the score for the next round

ErikPre and others added 30 commits November 4, 2025 15:46
Co-authored-by: fsncmbe <fsncmbe@users.noreply.github.com>
… drin, camera umgeschrieben, movement angepasst.
Co-authored-by: fsncmbe <fsncmbe@users.noreply.github.com>
Co-authored-by: fsncmbe <fsncmbe@users.noreply.github.com>
…by both renderer and game to access shared functionality like onscreen check.
@github-actions

github-actions Bot commented Mar 31, 2026

Copy link
Copy Markdown
📁 Previous CI results (run #23797131985)

Test Report

This comment was generated automatically by a GitHub Action. It summarizes the test results for this pull request. The GitHub Action run can be found here:

https://github.com/k4ntz/JAXAtari/actions/runs/23796582722

Base Branch ✅

The PR's base branch is dev.
The expected base branch is dev.

Changed Files ❌

The PR changes files that should not be changed:

  • .gitignore
  • renovate.json
  • scripts/benchmarks/config/alg/pqn_jaxatari_defender.yaml
  • scripts/benchmarks/config/alg/pqn_jaxatari_object.yaml
  • scripts/benchmarks/config/config.yaml
  • scripts/benchmarks/pqn_agent_visualisation.py
  • scripts/get_objects_patches.py
  • scripts/play.py
  • src/jaxatari/core.py

Please ensure that only allowed files are modified. Any changes in the src/jaxatari/games/ directory are allowed.

Framework Tests ❌

Some framework tests failed. Please check the details below:

defender ❌
============================= test session starts ==============================
platform linux -- Python 3.11.15, pytest-8.4.2, pluggy-1.6.0
rootdir: /home/runner/work/JAXAtari/JAXAtari
configfile: pyproject.toml
plugins: github-actions-annotate-failures-0.4.0, jaxtyping-0.3.9, sugar-1.1.1, xdist-3.8.0, syrupy-4.9.1
created: 2/2 workers
2 workers [145 items]

ssssssssss.::warning file=.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
::warning file=.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
ssssssss.....s.::error file=tests/test_environment_compatibility.py,line=115::TestBasicAPI.test_reset[defender]%0A%0AAssertionError: Reset observation should be contained in observation space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array(200, dtype=int32), y=Array(80, dtype=int32), width=Array(7, dtype=in...pe=float32), laser_active=Array(0., dtype=float32), laser_x=Array(0., dtype=float32), laser_y=Array(0., dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=40960...(), dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=115::TestBasicAPI.test_reset[defender]%0A%0AAssertionError: Reset observation should be contained in observation space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array(200, dtype=int32), y=Array(80, dtype=int32), width=Array(7, dtype=in...pe=float32), laser_active=Array(0., dtype=float32), laser_x=Array(0., dtype=float32), laser_y=Array(0., dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=40960...(), dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(), dtype=<class 'jax.numpy.float32'>)).contains
F::error file=tests/test_environment_compatibility.py,line=145::TestBasicAPI.test_step[defender]%0A%0AAssertionError: Step observation should be contained in observation space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array(200, dtype=int32), y=Array(81, dtype=int32), width=Array(7, dtype=in...float32), laser_active=Array(1., dtype=float32), laser_x=Array(187., dtype=float32), laser_y=Array(83., dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=40960...(), dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=145::TestBasicAPI.test_step[defender]%0A%0AAssertionError: Step observation should be contained in observation space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array(200, dtype=int32), y=Array(81, dtype=int32), width=Array(7, dtype=in...float32), laser_active=Array(1., dtype=float32), laser_x=Array(187., dtype=float32), laser_y=Array(83., dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=40960...(), dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(), dtype=<class 'jax.numpy.float32'>)).contains
F...::error file=tests/test_core_and_wrappers.py,line=61::test_pixel_and_object_centric_wrapper[defender]%0A%0AAssertionError: Object observation is not contained in the object space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([[200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n          3.       ,  71.055275 ,   5.8158674...       ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32))%0A +    where contains = Box(low=0.0, high=[[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n  2.550e+02 2.550e+02 2.550e...+02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>).contains
::error file=tests/test_core_and_wrappers.py,line=61::test_pixel_and_object_centric_wrapper[defender]%0A%0AAssertionError: Object observation is not contained in the object space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([[200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n          3.       ,  71.055275 ,   5.8158674...       ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32))%0A +    where contains = Box(low=0.0, high=[[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n  2.550e+02 2.550e+02 2.550e...+02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>).contains
F.::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[Atari-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array([200, 200, 200, 200], dtype=int32), y=Array([80, 80, 80, 80], dtype=...e=float32), laser_x=Array([187., 187., 187., 187.], dtype=float32), laser_y=Array([83., 83., 83., 83.], dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(4,), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=409..., dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(4,), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[Atari-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array([200, 200, 200, 200], dtype=int32), y=Array([80, 80, 80, 80], dtype=...e=float32), laser_x=Array([187., 187., 187., 187.], dtype=float32), laser_y=Array([83., 83., 83., 83.], dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(4,), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=409..., dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(4,), dtype=<class 'jax.numpy.float32'>)).contains
F..::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[ObjectCentric-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([[200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n          3.       ,  71.055275 ,   5.8158674...       ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32))%0A +    where contains = Box(low=0.0, high=[[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n  2.550e+02 2.550e+02 2.550e...+02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>).contains
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[ObjectCentric-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([[200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n          3.       ,  71.055275 ,   5.8158674...       ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32))%0A +    where contains = Box(low=0.0, high=[[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n  2.550e+02 2.550e+02 2.550e...+02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>).contains
F.::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[PixelAndObjectCentric-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains((Array([[[[  0,   0,   0],\n         [  0,   0,   0],\n         [  0,   0,   0],\n         ...,\n         [  0,   0,   0],...      ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32)))%0A +    where contains = Tuple(Box(low=0, high=255, shape=(4, 210, 160, 3), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[[1.000e+06 4.0...02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[PixelAndObjectCentric-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains((Array([[[[  0,   0,   0],\n         [  0,   0,   0],\n         [  0,   0,   0],\n         ...,\n         [  0,   0,   0],...      ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32)))%0A +    where contains = Tuple(Box(low=0, high=255, shape=(4, 210, 160, 3), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[[1.000e+06 4.0...02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>)).contains
F::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[FlattenedObjectCentric-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n         3.       ,  71.055275 ,   5.8158674, ...    ,   0.       ,   0.       ,   0.       ,\n         0.       ,   1.       , 187.       ,  83.       ], dtype=float32))%0A +    where contains = Box(low=0.0, high=[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n 2.550e+02 2.550e+02 2.550e+0...550e+02 1.000e+00 6.400e+02 1.350e+02 1.000e+00\n 6.400e+02 1.350e+02], shape=(744,), dtype=<class 'jax.numpy.float32'>).contains
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[FlattenedObjectCentric-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n         3.       ,  71.055275 ,   5.8158674, ...    ,   0.       ,   0.       ,   0.       ,\n         0.       ,   1.       , 187.       ,  83.       ], dtype=float32))%0A +    where contains = Box(low=0.0, high=[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n 2.550e+02 2.550e+02 2.550e+0...550e+02 1.000e+00 6.400e+02 1.350e+02 1.000e+00\n 6.400e+02 1.350e+02], shape=(744,), dtype=<class 'jax.numpy.float32'>).contains
F..::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[LoggedFlattenedPixelAndObject-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains((Array([  0.,   0.,   0., ..., 198., 108.,  58.], dtype=float32), Array([200.       ,  80.       ,   7.       ,   5.  ...   ,   0.       ,   0.       ,   0.       ,\n         0.       ,   1.       , 187.       ,  83.       ], dtype=float32)))%0A +    where contains = Tuple(Box(low=0, high=255, shape=(403200,), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[1.000e+06 4.096e+04 5...50e+02 1.000e+00 6.400e+02 1.350e+02 1.000e+00\n 6.400e+02 1.350e+02], shape=(744,), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[LoggedFlattenedPixelAndObject-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains((Array([  0.,   0.,   0., ..., 198., 108.,  58.], dtype=float32), Array([200.       ,  80.       ,   7.       ,   5.  ...   ,   0.       ,   0.       ,   0.       ,\n         0.       ,   1.       , 187.       ,  83.       ], dtype=float32)))%0A +    where contains = Tuple(Box(low=0, high=255, shape=(403200,), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[1.000e+06 4.096e+04 5...50e+02 1.000e+00 6.400e+02 1.350e+02 1.000e+00\n 6.400e+02 1.350e+02], shape=(744,), dtype=<class 'jax.numpy.float32'>)).contains
F::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[MultiRewardLogged-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains((Array([[[[  0,   0,   0],\n         [  0,   0,   0],\n         [  0,   0,   0],\n         ...,\n         [  0,   0,   0],...      ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32)))%0A +    where contains = Tuple(Box(low=0, high=255, shape=(4, 210, 160, 3), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[[1.000e+06 4.0...02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[MultiRewardLogged-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains((Array([[[[  0,   0,   0],\n         [  0,   0,   0],\n         [  0,   0,   0],\n         ...,\n         [  0,   0,   0],...      ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32)))%0A +    where contains = Tuple(Box(low=0, high=255, shape=(4, 210, 160, 3), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[[1.000e+06 4.0...02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>)).contains
F....::error file=tests/test_core_and_wrappers.py,line=351::test_flatten_observation_wrapper_space_structure[defender]%0A%0AAssertionError: Observation leaf with shape (600,) not contained in space with shape (600,)%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([ 71.055275 ,   5.8158674,   1.       ,   0.       ,   0.       ,\n       403.7155   ,  60.929142 ,   1.       , ...   0.       ,   0.       ,\n         0.       ,   0.       ,   0.       ,   0.       ,   0.       ],      dtype=float32))%0A +    where contains = Box(low=0.0, high=255.0, shape=(600,), dtype=<class 'jax.numpy.float32'>).contains
::error file=tests/test_core_and_wrappers.py,line=351::test_flatten_observation_wrapper_space_structure[defender]%0A%0AAssertionError: Observation leaf with shape (600,) not contained in space with shape (600,)%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([ 71.055275 ,   5.8158674,   1.       ,   0.       ,   0.       ,\n       403.7155   ,  60.929142 ,   1.       , ...   0.       ,   0.       ,\n         0.       ,   0.       ,   0.       ,   0.       ,   0.       ],      dtype=float32))%0A +    where contains = Box(low=0.0, high=255.0, shape=(600,), dtype=<class 'jax.numpy.float32'>).contains
F..::error file=tests/test_core_and_wrappers.py,line=499::test_native_downscaling_hot_swap[defender]%0A%0AFailed: Game renderer likely hasn't updated its __init__ to accept 'config'. Error: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
::error file=tests/test_core_and_wrappers.py,line=499::test_native_downscaling_hot_swap[defender]%0A%0AFailed: Game renderer likely hasn't updated its __init__ to accept 'config'. Error: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
F::error file=tests/test_core_and_wrappers.py,line=561::test_native_downscaling_grayscale[defender]%0A%0ATypeError: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
::error file=tests/test_core_and_wrappers.py,line=561::test_native_downscaling_grayscale[defender]%0A%0ATypeError: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
F................... [ 49%]
......ssssssssssssssss::error file=tests/test_environment_compatibility.py,line=593::TestAdvancedWrapperFeatures.test_flatten_observation_wrapper_space_structure[defender]%0A%0AAssertionError: Flattened observation should be contained in space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array([200., 200., 200., 200.], dtype=float32), y=Array([80., 80., 80., 80...e=float32), laser_x=Array([187., 187., 187., 187.], dtype=float32), laser_y=Array([83., 83., 83., 83.], dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(4,), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=409..., dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(4,), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=593::TestAdvancedWrapperFeatures.test_flatten_observation_wrapper_space_structure[defender]%0A%0AAssertionError: Flattened observation should be contained in space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array([200., 200., 200., 200.], dtype=float32), y=Array([80., 80., 80., 80...e=float32), laser_x=Array([187., 187., 187., 187.], dtype=float32), laser_y=Array([83., 83., 83., 83.], dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(4,), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=409..., dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(4,), dtype=<class 'jax.numpy.float32'>)).contains
F..............................::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
..::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py,line=317::WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py,line=434::WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py,line=317::WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py,line=434::WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
.::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
.::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
.::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
.::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
..::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
...s....... [ 99%]
.                                                                        [100%]/home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/_pytest/unraisableexception.py:67: PytestUnraisableExceptionWarning: Exception ignored in: <function _xla_gc_callback at 0x7f2dcdf2b060>

Traceback (most recent call last):
  File "/home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/jax/_src/lib/__init__.py", line 124, in _xla_gc_callback
    xla_client._xla.collect_garbage()
KeyboardInterrupt

Enable tracemalloc to get traceback where the object was allocated.
See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.
  warnings.warn(pytest.PytestUnraisableExceptionWarning(msg))

=================================== FAILURES ===================================
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:126: AssertionError: Reset observation should be contained in observation space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:165: AssertionError: Step observation should be contained in observation space
/home/runner/work/JAXAtari/JAXAtari/tests/test_core_and_wrappers.py:101: AssertionError: Object observation is not contained in the object space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:321: AssertionError: Wrapped observation should be contained in wrapper's space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:321: AssertionError: Wrapped observation should be contained in wrapper's space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:321: AssertionError: Wrapped observation should be contained in wrapper's space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:321: AssertionError: Wrapped observation should be contained in wrapper's space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:321: AssertionError: Wrapped observation should be contained in wrapper's space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:321: AssertionError: Wrapped observation should be contained in wrapper's space
/home/runner/work/JAXAtari/JAXAtari/tests/test_core_and_wrappers.py:435: AssertionError: Observation leaf with shape (600,) not contained in space with shape (600,)
/home/runner/work/JAXAtari/JAXAtari/tests/test_core_and_wrappers.py:520: Failed: Game renderer likely hasn't updated its __init__ to accept 'config'. Error: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/modification.py:46: TypeError: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:622: AssertionError: Flattened observation should be contained in space
=============================== warnings summary ===============================
tests/test_all_mods.py::test_no_duplicate_mod_keys
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/pygame/pkgdata.py:25: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
    from pkg_resources import resource_stream, resource_exists

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_reset_method[defender]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[defender]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_step_method[defender]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_render_method[defender]
tests/test_funcenv_adapter.py::TestGymWrapperIntegration::test_time_limit_wrapper[defender]
tests/test_funcenv_adapter.py::TestGymWrapperIntegration::test_preprocessing_wrappers[defender]
tests/test_funcenv_adapter.py::TestGymWrapperIntegration::test_frame_stack_wrapper[defender]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_seeding_and_determinism[defender]
  /home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py:131: UserWarning: Environment returned a NamedTuple for 'info'. This is deprecated.
    warnings.warn(

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[defender]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_step_method[defender]
tests/test_funcenv_adapter.py::TestGymWrapperIntegration::test_time_limit_wrapper[defender]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_seeding_and_determinism[defender]
  /home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py:111: UserWarning: Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
    warnings.warn(

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[defender]
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py:317: UserWarning: WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
    logger.warn(

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[defender]
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py:434: UserWarning: WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
    logger.warn(

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
SKIPPED [1] tests/test_all_mods.py:188: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:234: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:309: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:333: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:350: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:396: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:694: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:712: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:732: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:752: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:483: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:774: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:787: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:809: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:542: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:565: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:593: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:605: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:671: Game 'defender' is not in core.GAME_MODULES
SKIPPED [8] tests/test_environment_compatibility.py:521: Skipping to debug memory issues in CI
SKIPPED [8] tests/test_environment_compatibility.py:560: Skipping to debug memory issues in CI
SKIPPED [1] tests/test_funcenv_adapter.py:157: Skipping to debug memory issues in CI
FAILED tests/test_environment_compatibility.py::TestBasicAPI::test_reset[defender] - AssertionError: Reset observation should be contained in observation space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array(200, dtype=int32), y=Array(80, dtype=int32), width=Array(7, dtype=in...pe=float32), laser_active=Array(0., dtype=float32), laser_x=Array(0., dtype=float32), laser_y=Array(0., dtype=float32)))
 +    where contains = Dict(score: Box(low=0, high=1000000, shape=(), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=40960...(), dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(), dtype=<class 'jax.numpy.float32'>)).contains
FAILED tests/test_environment_compatibility.py::TestBasicAPI::test_step[defender] - AssertionError: Step observation should be contained in observation space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array(200, dtype=int32), y=Array(81, dtype=int32), width=Array(7, dtype=in...float32), laser_active=Array(1., dtype=float32), laser_x=Array(187., dtype=float32), laser_y=Array(83., dtype=float32)))
 +    where contains = Dict(score: Box(low=0, high=1000000, shape=(), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=40960...(), dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(), dtype=<class 'jax.numpy.float32'>)).contains
FAILED tests/test_core_and_wrappers.py::test_pixel_and_object_centric_wrapper[defender] - AssertionError: Object observation is not contained in the object space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(Array([[200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n          3.       ,  71.055275 ,   5.8158674...       ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32))
 +    where contains = Box(low=0.0, high=[[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n  2.550e+02 2.550e+02 2.550e...+02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>).contains
FAILED tests/test_environment_compatibility.py::TestWrapperCompatibility::test_wrapped_reset_and_step[Atari-defender] - AssertionError: Wrapped observation should be contained in wrapper's space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array([200, 200, 200, 200], dtype=int32), y=Array([80, 80, 80, 80], dtype=...e=float32), laser_x=Array([187., 187., 187., 187.], dtype=float32), laser_y=Array([83., 83., 83., 83.], dtype=float32)))
 +    where contains = Dict(score: Box(low=0, high=1000000, shape=(4,), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=409..., dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(4,), dtype=<class 'jax.numpy.float32'>)).contains
FAILED tests/test_environment_compatibility.py::TestWrapperCompatibility::test_wrapped_reset_and_step[ObjectCentric-defender] - AssertionError: Wrapped observation should be contained in wrapper's space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(Array([[200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n          3.       ,  71.055275 ,   5.8158674...       ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32))
 +    where contains = Box(low=0.0, high=[[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n  2.550e+02 2.550e+02 2.550e...+02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>).contains
FAILED tests/test_environment_compatibility.py::TestWrapperCompatibility::test_wrapped_reset_and_step[PixelAndObjectCentric-defender] - AssertionError: Wrapped observation should be contained in wrapper's space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains((Array([[[[  0,   0,   0],\n         [  0,   0,   0],\n         [  0,   0,   0],\n         ...,\n         [  0,   0,   0],...      ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32)))
 +    where contains = Tuple(Box(low=0, high=255, shape=(4, 210, 160, 3), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[[1.000e+06 4.0...02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>)).contains
FAILED tests/test_environment_compatibility.py::TestWrapperCompatibility::test_wrapped_reset_and_step[FlattenedObjectCentric-defender] - AssertionError: Wrapped observation should be contained in wrapper's space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(Array([200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n         3.       ,  71.055275 ,   5.8158674, ...    ,   0.       ,   0.       ,   0.       ,\n         0.       ,   1.       , 187.       ,  83.       ], dtype=float32))
 +    where contains = Box(low=0.0, high=[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n 2.550e+02 2.550e+02 2.550e+0...550e+02 1.000e+00 6.400e+02 1.350e+02 1.000e+00\n 6.400e+02 1.350e+02], shape=(744,), dtype=<class 'jax.numpy.float32'>).contains
FAILED tests/test_environment_compatibility.py::TestWrapperCompatibility::test_wrapped_reset_and_step[LoggedFlattenedPixelAndObject-defender] - AssertionError: Wrapped observation should be contained in wrapper's space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains((Array([  0.,   0.,   0., ..., 198., 108.,  58.], dtype=float32), Array([200.       ,  80.       ,   7.       ,   5.  ...   ,   0.       ,   0.       ,   0.       ,\n         0.       ,   1.       , 187.       ,  83.       ], dtype=float32)))
 +    where contains = Tuple(Box(low=0, high=255, shape=(403200,), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[1.000e+06 4.096e+04 5...50e+02 1.000e+00 6.400e+02 1.350e+02 1.000e+00\n 6.400e+02 1.350e+02], shape=(744,), dtype=<class 'jax.numpy.float32'>)).contains
FAILED tests/test_environment_compatibility.py::TestWrapperCompatibility::test_wrapped_reset_and_step[MultiRewardLogged-defender] - AssertionError: Wrapped observation should be contained in wrapper's space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains((Array([[[[  0,   0,   0],\n         [  0,   0,   0],\n         [  0,   0,   0],\n         ...,\n         [  0,   0,   0],...      ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32)))
 +    where contains = Tuple(Box(low=0, high=255, shape=(4, 210, 160, 3), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[[1.000e+06 4.0...02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>)).contains
FAILED tests/test_core_and_wrappers.py::test_flatten_observation_wrapper_space_structure[defender] - AssertionError: Observation leaf with shape (600,) not contained in space with shape (600,)
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(Array([ 71.055275 ,   5.8158674,   1.       ,   0.       ,   0.       ,\n       403.7155   ,  60.929142 ,   1.       , ...   0.       ,   0.       ,\n         0.       ,   0.       ,   0.       ,   0.       ,   0.       ],      dtype=float32))
 +    where contains = Box(low=0.0, high=255.0, shape=(600,), dtype=<class 'jax.numpy.float32'>).contains
FAILED tests/test_core_and_wrappers.py::test_native_downscaling_hot_swap[defender] - Failed: Game renderer likely hasn't updated its __init__ to accept 'config'. Error: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
FAILED tests/test_core_and_wrappers.py::test_native_downscaling_grayscale[defender] - TypeError: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
FAILED tests/test_environment_compatibility.py::TestAdvancedWrapperFeatures::test_flatten_observation_wrapper_space_structure[defender] - AssertionError: Flattened observation should be contained in space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array([200., 200., 200., 200.], dtype=float32), y=Array([80., 80., 80., 80...e=float32), laser_x=Array([187., 187., 187., 187.], dtype=float32), laser_y=Array([83., 83., 83., 83.], dtype=float32)))
 +    where contains = Dict(score: Box(low=0, high=1000000, shape=(4,), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=409..., dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(4,), dtype=<class 'jax.numpy.float32'>)).contains
====== 13 failed, 96 passed, 36 skipped, 15 warnings in 559.90s (0:09:19) ======

bankheist ❌
============================= test session starts ==============================
platform linux -- Python 3.11.15, pytest-8.4.2, pluggy-1.6.0
rootdir: /home/runner/work/JAXAtari/JAXAtari
configfile: pyproject.toml
plugins: github-actions-annotate-failures-0.4.0, jaxtyping-0.3.9, sugar-1.1.1, xdist-3.8.0, syrupy-4.9.1
created: 2/2 workers
2 workers [157 items]

..........................................::warning file=.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
::warning file=.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
..........::error file=tests/test_core_and_wrappers.py,line=561::test_native_downscaling_grayscale[bankheist]%0A%0AValueError: Incompatible shapes for broadcasting: (3,) and requested shape (1,)%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_core_and_wrappers.py,line=561::test_native_downscaling_grayscale[bankheist]%0A%0AValueError: Incompatible shapes for broadcasting: (3,) and requested shape (1,)%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F................... [ 45%]
.....................sssssssssssssss.............s..................::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py,line=317::WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py,line=434::WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py,line=317::WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py,line=434::WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
.... [ 91%]
.s...........                                                            [100%]
=================================== FAILURES ===================================
/home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/jax/_src/numpy/util.py:277: ValueError: Incompatible shapes for broadcasting: (3,) and requested shape (1,)
=============================== warnings summary ===============================
tests/test_all_mods.py::test_no_duplicate_mod_keys
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/pygame/pkgdata.py:25: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
    from pkg_resources import resource_stream, resource_exists

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[bankheist]
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py:317: UserWarning: WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
    logger.warn(

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[bankheist]
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py:434: UserWarning: WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
    logger.warn(

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
SKIPPED [8] tests/test_environment_compatibility.py:521: Skipping to debug memory issues in CI
SKIPPED [8] tests/test_environment_compatibility.py:560: Skipping to debug memory issues in CI
SKIPPED [1] tests/test_funcenv_adapter.py:157: Skipping to debug memory issues in CI
FAILED tests/test_core_and_wrappers.py::test_native_downscaling_grayscale[bankheist] - ValueError: Incompatible shapes for broadcasting: (3,) and requested shape (1,)
--------------------
For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
====== 1 failed, 139 passed, 17 skipped, 3 warnings in 379.22s (0:06:19) =======

skiing ✅
============================= test session starts ==============================
platform linux -- Python 3.11.15, pytest-8.4.2, pluggy-1.6.0
rootdir: /home/runner/work/JAXAtari/JAXAtari
configfile: pyproject.toml
plugins: github-actions-annotate-failures-0.4.0, jaxtyping-0.3.9, sugar-1.1.1, xdist-3.8.0, syrupy-4.9.1
created: 2/2 workers
2 workers [145 items]

ssssss.::warning file=.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
::warning file=.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
s................s............................................... [ 49%]
.........ssssssssssssssss...............................::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py,line=317::WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py,line=434::WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py,line=317::WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py,line=434::WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
..s............. [ 99%]
.                                                                        [100%]
=============================== warnings summary ===============================
tests/test_all_mods.py::test_no_duplicate_mod_keys
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/pygame/pkgdata.py:25: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
    from pkg_resources import resource_stream, resource_exists

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[skiing]
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py:317: UserWarning: WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
    logger.warn(

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[skiing]
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py:434: UserWarning: WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
    logger.warn(

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
SKIPPED [1] tests/test_all_mods.py:188: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:234: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:309: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:333: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:350: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:396: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:483: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:676: Game skiing not in list of games with mods
SKIPPED [8] tests/test_environment_compatibility.py:521: Skipping to debug memory issues in CI
SKIPPED [8] tests/test_environment_compatibility.py:560: Skipping to debug memory issues in CI
SKIPPED [1] tests/test_funcenv_adapter.py:157: Skipping to debug memory issues in CI
=========== 120 passed, 25 skipped, 3 warnings in 248.23s (0:04:08) ============

frostbite ✅
============================= test session starts ==============================
platform linux -- Python 3.11.15, pytest-8.4.2, pluggy-1.6.0
rootdir: /home/runner/work/JAXAtari/JAXAtari
configfile: pyproject.toml
plugins: github-actions-annotate-failures-0.4.0, jaxtyping-0.3.9, sugar-1.1.1, xdist-3.8.0, syrupy-4.9.1
created: 2/2 workers
2 workers [145 items]

ssssss.::warning file=.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
::warning file=.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
s...............s................................................ [ 49%]
.......ssssssssssssssss.............................::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py,line=317::WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py,line=434::WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py,line=317::WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py,line=434::WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
..................s. [ 99%]
.                                                                        [100%]
=============================== warnings summary ===============================
tests/test_all_mods.py::test_no_duplicate_mod_keys
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/pygame/pkgdata.py:25: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
    from pkg_resources import resource_stream, resource_exists

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[frostbite]
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py:317: UserWarning: WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
    logger.warn(

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[frostbite]
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py:434: UserWarning: WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
    logger.warn(

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
SKIPPED [1] tests/test_all_mods.py:188: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:234: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:309: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:333: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:350: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:396: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:483: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:676: Game frostbite not in list of games with mods
SKIPPED [8] tests/test_environment_compatibility.py:521: Skipping to debug memory issues in CI
SKIPPED [8] tests/test_environment_compatibility.py:560: Skipping to debug memory issues in CI
SKIPPED [1] tests/test_funcenv_adapter.py:157: Skipping to debug memory issues in CI
=========== 120 passed, 25 skipped, 3 warnings in 609.19s (0:10:09) ============


This log was automatically created at 2026-03-31 12:22:42 UTC.

@github-actions

github-actions Bot commented Mar 31, 2026

Copy link
Copy Markdown
📁 Previous CI results (run #23797315616)

Test Report

This comment was generated automatically by a GitHub Action. It summarizes the test results for this pull request. The GitHub Action run can be found here:

https://github.com/k4ntz/JAXAtari/actions/runs/23797131985

Base Branch ✅

The PR's base branch is dev.
The expected base branch is dev.

Changed Files ❌

The PR changes files that should not be changed:

  • .gitignore
  • renovate.json
  • scripts/benchmarks/pqn_agent_visualisation.py
  • scripts/get_objects_patches.py
  • scripts/play.py
  • src/jaxatari/core.py

Please ensure that only allowed files are modified. Any changes in the src/jaxatari/games/ directory are allowed.

Framework Tests ❌

Some framework tests failed. Please check the details below:

defender ❌
============================= test session starts ==============================
platform linux -- Python 3.11.15, pytest-8.4.2, pluggy-1.6.0
rootdir: /home/runner/work/JAXAtari/JAXAtari
configfile: pyproject.toml
plugins: github-actions-annotate-failures-0.4.0, jaxtyping-0.3.9, sugar-1.1.1, xdist-3.8.0, syrupy-4.9.1
created: 2/2 workers
2 workers [145 items]

ssssssssss.::warning file=.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
::warning file=.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
ssssssss.....s.::error file=tests/test_environment_compatibility.py,line=115::TestBasicAPI.test_reset[defender]%0A%0AAssertionError: Reset observation should be contained in observation space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array(200, dtype=int32), y=Array(80, dtype=int32), width=Array(7, dtype=in...pe=float32), laser_active=Array(0., dtype=float32), laser_x=Array(0., dtype=float32), laser_y=Array(0., dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=40960...(), dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=115::TestBasicAPI.test_reset[defender]%0A%0AAssertionError: Reset observation should be contained in observation space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array(200, dtype=int32), y=Array(80, dtype=int32), width=Array(7, dtype=in...pe=float32), laser_active=Array(0., dtype=float32), laser_x=Array(0., dtype=float32), laser_y=Array(0., dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=40960...(), dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(), dtype=<class 'jax.numpy.float32'>)).contains
F::error file=tests/test_environment_compatibility.py,line=145::TestBasicAPI.test_step[defender]%0A%0AAssertionError: Step observation should be contained in observation space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array(200, dtype=int32), y=Array(81, dtype=int32), width=Array(7, dtype=in...float32), laser_active=Array(1., dtype=float32), laser_x=Array(187., dtype=float32), laser_y=Array(83., dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=40960...(), dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=145::TestBasicAPI.test_step[defender]%0A%0AAssertionError: Step observation should be contained in observation space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array(200, dtype=int32), y=Array(81, dtype=int32), width=Array(7, dtype=in...float32), laser_active=Array(1., dtype=float32), laser_x=Array(187., dtype=float32), laser_y=Array(83., dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=40960...(), dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(), dtype=<class 'jax.numpy.float32'>)).contains
F...::error file=tests/test_core_and_wrappers.py,line=61::test_pixel_and_object_centric_wrapper[defender]%0A%0AAssertionError: Object observation is not contained in the object space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([[200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n          3.       ,  71.055275 ,   5.8158674...       ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32))%0A +    where contains = Box(low=0.0, high=[[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n  2.550e+02 2.550e+02 2.550e...+02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>).contains
::error file=tests/test_core_and_wrappers.py,line=61::test_pixel_and_object_centric_wrapper[defender]%0A%0AAssertionError: Object observation is not contained in the object space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([[200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n          3.       ,  71.055275 ,   5.8158674...       ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32))%0A +    where contains = Box(low=0.0, high=[[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n  2.550e+02 2.550e+02 2.550e...+02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>).contains
F..::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[Atari-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array([200, 200, 200, 200], dtype=int32), y=Array([80, 80, 80, 80], dtype=...e=float32), laser_x=Array([187., 187., 187., 187.], dtype=float32), laser_y=Array([83., 83., 83., 83.], dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(4,), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=409..., dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(4,), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[Atari-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array([200, 200, 200, 200], dtype=int32), y=Array([80, 80, 80, 80], dtype=...e=float32), laser_x=Array([187., 187., 187., 187.], dtype=float32), laser_y=Array([83., 83., 83., 83.], dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(4,), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=409..., dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(4,), dtype=<class 'jax.numpy.float32'>)).contains
F.::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[ObjectCentric-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([[200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n          3.       ,  71.055275 ,   5.8158674...       ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32))%0A +    where contains = Box(low=0.0, high=[[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n  2.550e+02 2.550e+02 2.550e...+02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>).contains
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[ObjectCentric-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([[200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n          3.       ,  71.055275 ,   5.8158674...       ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32))%0A +    where contains = Box(low=0.0, high=[[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n  2.550e+02 2.550e+02 2.550e...+02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>).contains
F.::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[PixelAndObjectCentric-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains((Array([[[[  0,   0,   0],\n         [  0,   0,   0],\n         [  0,   0,   0],\n         ...,\n         [  0,   0,   0],...      ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32)))%0A +    where contains = Tuple(Box(low=0, high=255, shape=(4, 210, 160, 3), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[[1.000e+06 4.0...02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[PixelAndObjectCentric-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains((Array([[[[  0,   0,   0],\n         [  0,   0,   0],\n         [  0,   0,   0],\n         ...,\n         [  0,   0,   0],...      ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32)))%0A +    where contains = Tuple(Box(low=0, high=255, shape=(4, 210, 160, 3), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[[1.000e+06 4.0...02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>)).contains
F::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[FlattenedObjectCentric-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n         3.       ,  71.055275 ,   5.8158674, ...    ,   0.       ,   0.       ,   0.       ,\n         0.       ,   1.       , 187.       ,  83.       ], dtype=float32))%0A +    where contains = Box(low=0.0, high=[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n 2.550e+02 2.550e+02 2.550e+0...550e+02 1.000e+00 6.400e+02 1.350e+02 1.000e+00\n 6.400e+02 1.350e+02], shape=(744,), dtype=<class 'jax.numpy.float32'>).contains
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[FlattenedObjectCentric-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n         3.       ,  71.055275 ,   5.8158674, ...    ,   0.       ,   0.       ,   0.       ,\n         0.       ,   1.       , 187.       ,  83.       ], dtype=float32))%0A +    where contains = Box(low=0.0, high=[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n 2.550e+02 2.550e+02 2.550e+0...550e+02 1.000e+00 6.400e+02 1.350e+02 1.000e+00\n 6.400e+02 1.350e+02], shape=(744,), dtype=<class 'jax.numpy.float32'>).contains
F..::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[LoggedFlattenedPixelAndObject-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains((Array([  0.,   0.,   0., ..., 198., 108.,  58.], dtype=float32), Array([200.       ,  80.       ,   7.       ,   5.  ...   ,   0.       ,   0.       ,   0.       ,\n         0.       ,   1.       , 187.       ,  83.       ], dtype=float32)))%0A +    where contains = Tuple(Box(low=0, high=255, shape=(403200,), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[1.000e+06 4.096e+04 5...50e+02 1.000e+00 6.400e+02 1.350e+02 1.000e+00\n 6.400e+02 1.350e+02], shape=(744,), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[LoggedFlattenedPixelAndObject-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains((Array([  0.,   0.,   0., ..., 198., 108.,  58.], dtype=float32), Array([200.       ,  80.       ,   7.       ,   5.  ...   ,   0.       ,   0.       ,   0.       ,\n         0.       ,   1.       , 187.       ,  83.       ], dtype=float32)))%0A +    where contains = Tuple(Box(low=0, high=255, shape=(403200,), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[1.000e+06 4.096e+04 5...50e+02 1.000e+00 6.400e+02 1.350e+02 1.000e+00\n 6.400e+02 1.350e+02], shape=(744,), dtype=<class 'jax.numpy.float32'>)).contains
F::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[MultiRewardLogged-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains((Array([[[[  0,   0,   0],\n         [  0,   0,   0],\n         [  0,   0,   0],\n         ...,\n         [  0,   0,   0],...      ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32)))%0A +    where contains = Tuple(Box(low=0, high=255, shape=(4, 210, 160, 3), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[[1.000e+06 4.0...02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[MultiRewardLogged-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains((Array([[[[  0,   0,   0],\n         [  0,   0,   0],\n         [  0,   0,   0],\n         ...,\n         [  0,   0,   0],...      ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32)))%0A +    where contains = Tuple(Box(low=0, high=255, shape=(4, 210, 160, 3), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[[1.000e+06 4.0...02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>)).contains
F....::error file=tests/test_core_and_wrappers.py,line=351::test_flatten_observation_wrapper_space_structure[defender]%0A%0AAssertionError: Observation leaf with shape (600,) not contained in space with shape (600,)%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([ 71.055275 ,   5.8158674,   1.       ,   0.       ,   0.       ,\n       403.7155   ,  60.929142 ,   1.       , ...   0.       ,   0.       ,\n         0.       ,   0.       ,   0.       ,   0.       ,   0.       ],      dtype=float32))%0A +    where contains = Box(low=0.0, high=255.0, shape=(600,), dtype=<class 'jax.numpy.float32'>).contains
::error file=tests/test_core_and_wrappers.py,line=351::test_flatten_observation_wrapper_space_structure[defender]%0A%0AAssertionError: Observation leaf with shape (600,) not contained in space with shape (600,)%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([ 71.055275 ,   5.8158674,   1.       ,   0.       ,   0.       ,\n       403.7155   ,  60.929142 ,   1.       , ...   0.       ,   0.       ,\n         0.       ,   0.       ,   0.       ,   0.       ,   0.       ],      dtype=float32))%0A +    where contains = Box(low=0.0, high=255.0, shape=(600,), dtype=<class 'jax.numpy.float32'>).contains
F..::error file=tests/test_core_and_wrappers.py,line=499::test_native_downscaling_hot_swap[defender]%0A%0AFailed: Game renderer likely hasn't updated its __init__ to accept 'config'. Error: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
::error file=tests/test_core_and_wrappers.py,line=499::test_native_downscaling_hot_swap[defender]%0A%0AFailed: Game renderer likely hasn't updated its __init__ to accept 'config'. Error: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
F::error file=tests/test_core_and_wrappers.py,line=561::test_native_downscaling_grayscale[defender]%0A%0ATypeError: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
::error file=tests/test_core_and_wrappers.py,line=561::test_native_downscaling_grayscale[defender]%0A%0ATypeError: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
F................... [ 49%]
......ssssssssssssssss.::error file=tests/test_environment_compatibility.py,line=593::TestAdvancedWrapperFeatures.test_flatten_observation_wrapper_space_structure[defender]%0A%0AAssertionError: Flattened observation should be contained in space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array([200., 200., 200., 200.], dtype=float32), y=Array([80., 80., 80., 80...e=float32), laser_x=Array([187., 187., 187., 187.], dtype=float32), laser_y=Array([83., 83., 83., 83.], dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(4,), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=409..., dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(4,), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=593::TestAdvancedWrapperFeatures.test_flatten_observation_wrapper_space_structure[defender]%0A%0AAssertionError: Flattened observation should be contained in space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array([200., 200., 200., 200.], dtype=float32), y=Array([80., 80., 80., 80...e=float32), laser_x=Array([187., 187., 187., 187.], dtype=float32), laser_y=Array([83., 83., 83., 83.], dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(4,), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=409..., dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(4,), dtype=<class 'jax.numpy.float32'>)).contains
F.............................::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
.::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py,line=317::WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py,line=434::WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py,line=317::WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py,line=434::WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
.::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
.::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
.::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
.::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
.::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
....::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
.....s... [ 99%]
.                                                                        [100%]
=================================== FAILURES ===================================
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:126: AssertionError: Reset observation should be contained in observation space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:165: AssertionError: Step observation should be contained in observation space
/home/runner/work/JAXAtari/JAXAtari/tests/test_core_and_wrappers.py:101: AssertionError: Object observation is not contained in the object space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:321: AssertionError: Wrapped observation should be contained in wrapper's space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:321: AssertionError: Wrapped observation should be contained in wrapper's space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:321: AssertionError: Wrapped observation should be contained in wrapper's space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:321: AssertionError: Wrapped observation should be contained in wrapper's space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:321: AssertionError: Wrapped observation should be contained in wrapper's space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:321: AssertionError: Wrapped observation should be contained in wrapper's space
/home/runner/work/JAXAtari/JAXAtari/tests/test_core_and_wrappers.py:435: AssertionError: Observation leaf with shape (600,) not contained in space with shape (600,)
/home/runner/work/JAXAtari/JAXAtari/tests/test_core_and_wrappers.py:520: Failed: Game renderer likely hasn't updated its __init__ to accept 'config'. Error: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/modification.py:46: TypeError: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:622: AssertionError: Flattened observation should be contained in space
=============================== warnings summary ===============================
tests/test_all_mods.py::test_no_duplicate_mod_keys
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/pygame/pkgdata.py:25: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
    from pkg_resources import resource_stream, resource_exists

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_reset_method[defender]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[defender]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_step_method[defender]
tests/test_funcenv_adapter.py::TestGymWrapperIntegration::test_time_limit_wrapper[defender]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_render_method[defender]
tests/test_funcenv_adapter.py::TestGymWrapperIntegration::test_preprocessing_wrappers[defender]
tests/test_funcenv_adapter.py::TestGymWrapperIntegration::test_frame_stack_wrapper[defender]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_seeding_and_determinism[defender]
  /home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py:131: UserWarning: Environment returned a NamedTuple for 'info'. This is deprecated.
    warnings.warn(

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[defender]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_step_method[defender]
tests/test_funcenv_adapter.py::TestGymWrapperIntegration::test_time_limit_wrapper[defender]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_seeding_and_determinism[defender]
  /home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py:111: UserWarning: Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
    warnings.warn(

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[defender]
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py:317: UserWarning: WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
    logger.warn(

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[defender]
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py:434: UserWarning: WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
    logger.warn(

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
SKIPPED [1] tests/test_all_mods.py:188: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:234: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:309: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:333: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:350: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:396: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:694: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:712: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:732: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:752: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:483: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:774: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:787: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:809: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:542: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:565: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:593: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:605: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:671: Game 'defender' is not in core.GAME_MODULES
SKIPPED [8] tests/test_environment_compatibility.py:521: Skipping to debug memory issues in CI
SKIPPED [8] tests/test_environment_compatibility.py:560: Skipping to debug memory issues in CI
SKIPPED [1] tests/test_funcenv_adapter.py:157: Skipping to debug memory issues in CI
FAILED tests/test_environment_compatibility.py::TestBasicAPI::test_reset[defender] - AssertionError: Reset observation should be contained in observation space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array(200, dtype=int32), y=Array(80, dtype=int32), width=Array(7, dtype=in...pe=float32), laser_active=Array(0., dtype=float32), laser_x=Array(0., dtype=float32), laser_y=Array(0., dtype=float32)))
 +    where contains = Dict(score: Box(low=0, high=1000000, shape=(), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=40960...(), dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(), dtype=<class 'jax.numpy.float32'>)).contains
FAILED tests/test_environment_compatibility.py::TestBasicAPI::test_step[defender] - AssertionError: Step observation should be contained in observation space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array(200, dtype=int32), y=Array(81, dtype=int32), width=Array(7, dtype=in...float32), laser_active=Array(1., dtype=float32), laser_x=Array(187., dtype=float32), laser_y=Array(83., dtype=float32)))
 +    where contains = Dict(score: Box(low=0, high=1000000, shape=(), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=40960...(), dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(), dtype=<class 'jax.numpy.float32'>)).contains
FAILED tests/test_core_and_wrappers.py::test_pixel_and_object_centric_wrapper[defender] - AssertionError: Object observation is not contained in the object space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(Array([[200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n          3.       ,  71.055275 ,   5.8158674...       ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32))
 +    where contains = Box(low=0.0, high=[[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n  2.550e+02 2.550e+02 2.550e...+02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>).contains
FAILED tests/test_environment_compatibility.py::TestWrapperCompatibility::test_wrapped_reset_and_step[Atari-defender] - AssertionError: Wrapped observation should be contained in wrapper's space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array([200, 200, 200, 200], dtype=int32), y=Array([80, 80, 80, 80], dtype=...e=float32), laser_x=Array([187., 187., 187., 187.], dtype=float32), laser_y=Array([83., 83., 83., 83.], dtype=float32)))
 +    where contains = Dict(score: Box(low=0, high=1000000, shape=(4,), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=409..., dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(4,), dtype=<class 'jax.numpy.float32'>)).contains
FAILED tests/test_environment_compatibility.py::TestWrapperCompatibility::test_wrapped_reset_and_step[ObjectCentric-defender] - AssertionError: Wrapped observation should be contained in wrapper's space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(Array([[200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n          3.       ,  71.055275 ,   5.8158674...       ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32))
 +    where contains = Box(low=0.0, high=[[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n  2.550e+02 2.550e+02 2.550e...+02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>).contains
FAILED tests/test_environment_compatibility.py::TestWrapperCompatibility::test_wrapped_reset_and_step[PixelAndObjectCentric-defender] - AssertionError: Wrapped observation should be contained in wrapper's space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains((Array([[[[  0,   0,   0],\n         [  0,   0,   0],\n         [  0,   0,   0],\n         ...,\n         [  0,   0,   0],...      ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32)))
 +    where contains = Tuple(Box(low=0, high=255, shape=(4, 210, 160, 3), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[[1.000e+06 4.0...02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>)).contains
FAILED tests/test_environment_compatibility.py::TestWrapperCompatibility::test_wrapped_reset_and_step[FlattenedObjectCentric-defender] - AssertionError: Wrapped observation should be contained in wrapper's space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(Array([200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n         3.       ,  71.055275 ,   5.8158674, ...    ,   0.       ,   0.       ,   0.       ,\n         0.       ,   1.       , 187.       ,  83.       ], dtype=float32))
 +    where contains = Box(low=0.0, high=[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n 2.550e+02 2.550e+02 2.550e+0...550e+02 1.000e+00 6.400e+02 1.350e+02 1.000e+00\n 6.400e+02 1.350e+02], shape=(744,), dtype=<class 'jax.numpy.float32'>).contains
FAILED tests/test_environment_compatibility.py::TestWrapperCompatibility::test_wrapped_reset_and_step[LoggedFlattenedPixelAndObject-defender] - AssertionError: Wrapped observation should be contained in wrapper's space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains((Array([  0.,   0.,   0., ..., 198., 108.,  58.], dtype=float32), Array([200.       ,  80.       ,   7.       ,   5.  ...   ,   0.       ,   0.       ,   0.       ,\n         0.       ,   1.       , 187.       ,  83.       ], dtype=float32)))
 +    where contains = Tuple(Box(low=0, high=255, shape=(403200,), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[1.000e+06 4.096e+04 5...50e+02 1.000e+00 6.400e+02 1.350e+02 1.000e+00\n 6.400e+02 1.350e+02], shape=(744,), dtype=<class 'jax.numpy.float32'>)).contains
FAILED tests/test_environment_compatibility.py::TestWrapperCompatibility::test_wrapped_reset_and_step[MultiRewardLogged-defender] - AssertionError: Wrapped observation should be contained in wrapper's space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains((Array([[[[  0,   0,   0],\n         [  0,   0,   0],\n         [  0,   0,   0],\n         ...,\n         [  0,   0,   0],...      ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32)))
 +    where contains = Tuple(Box(low=0, high=255, shape=(4, 210, 160, 3), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[[1.000e+06 4.0...02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>)).contains
FAILED tests/test_core_and_wrappers.py::test_flatten_observation_wrapper_space_structure[defender] - AssertionError: Observation leaf with shape (600,) not contained in space with shape (600,)
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(Array([ 71.055275 ,   5.8158674,   1.       ,   0.       ,   0.       ,\n       403.7155   ,  60.929142 ,   1.       , ...   0.       ,   0.       ,\n         0.       ,   0.       ,   0.       ,   0.       ,   0.       ],      dtype=float32))
 +    where contains = Box(low=0.0, high=255.0, shape=(600,), dtype=<class 'jax.numpy.float32'>).contains
FAILED tests/test_core_and_wrappers.py::test_native_downscaling_hot_swap[defender] - Failed: Game renderer likely hasn't updated its __init__ to accept 'config'. Error: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
FAILED tests/test_core_and_wrappers.py::test_native_downscaling_grayscale[defender] - TypeError: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
FAILED tests/test_environment_compatibility.py::TestAdvancedWrapperFeatures::test_flatten_observation_wrapper_space_structure[defender] - AssertionError: Flattened observation should be contained in space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array([200., 200., 200., 200.], dtype=float32), y=Array([80., 80., 80., 80...e=float32), laser_x=Array([187., 187., 187., 187.], dtype=float32), laser_y=Array([83., 83., 83., 83.], dtype=float32)))
 +    where contains = Dict(score: Box(low=0, high=1000000, shape=(4,), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=409..., dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(4,), dtype=<class 'jax.numpy.float32'>)).contains
====== 13 failed, 96 passed, 36 skipped, 15 warnings in 557.29s (0:09:17) ======

bankheist ❌
============================= test session starts ==============================
platform linux -- Python 3.11.15, pytest-8.4.2, pluggy-1.6.0
rootdir: /home/runner/work/JAXAtari/JAXAtari
configfile: pyproject.toml
plugins: github-actions-annotate-failures-0.4.0, jaxtyping-0.3.9, sugar-1.1.1, xdist-3.8.0, syrupy-4.9.1
created: 2/2 workers
2 workers [157 items]

..........................................::warning file=.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
::warning file=.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
.........::error file=tests/test_core_and_wrappers.py,line=561::test_native_downscaling_grayscale[bankheist]%0A%0AValueError: Incompatible shapes for broadcasting: (3,) and requested shape (1,)%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_core_and_wrappers.py,line=561::test_native_downscaling_grayscale[bankheist]%0A%0AValueError: Incompatible shapes for broadcasting: (3,) and requested shape (1,)%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F.................... [ 45%]
............................ssssssssssssssss....................::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py,line=317::WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py,line=317::WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py,line=434::WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py,line=434::WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
........ [ 91%]
s............                                                            [100%]
=================================== FAILURES ===================================
/home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/jax/_src/numpy/util.py:277: ValueError: Incompatible shapes for broadcasting: (3,) and requested shape (1,)
=============================== warnings summary ===============================
tests/test_all_mods.py::test_no_duplicate_mod_keys
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/pygame/pkgdata.py:25: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
    from pkg_resources import resource_stream, resource_exists

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[bankheist]
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py:317: UserWarning: WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
    logger.warn(

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[bankheist]
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py:434: UserWarning: WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
    logger.warn(

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
SKIPPED [8] tests/test_environment_compatibility.py:521: Skipping to debug memory issues in CI
SKIPPED [8] tests/test_environment_compatibility.py:560: Skipping to debug memory issues in CI
SKIPPED [1] tests/test_funcenv_adapter.py:157: Skipping to debug memory issues in CI
FAILED tests/test_core_and_wrappers.py::test_native_downscaling_grayscale[bankheist] - ValueError: Incompatible shapes for broadcasting: (3,) and requested shape (1,)
--------------------
For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
====== 1 failed, 139 passed, 17 skipped, 3 warnings in 375.72s (0:06:15) =======

skiing ✅
============================= test session starts ==============================
platform linux -- Python 3.11.15, pytest-8.4.2, pluggy-1.6.0
rootdir: /home/runner/work/JAXAtari/JAXAtari
configfile: pyproject.toml
plugins: github-actions-annotate-failures-0.4.0, jaxtyping-0.3.9, sugar-1.1.1, xdist-3.8.0, syrupy-4.9.1
created: 2/2 workers
2 workers [145 items]

ssssss.::warning file=.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
::warning file=.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
s................s............................................... [ 49%]
.........ssssssssssssssss................................::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py,line=317::WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py,line=434::WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py,line=317::WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py,line=434::WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
.s............. [ 99%]
.                                                                        [100%]
=============================== warnings summary ===============================
tests/test_all_mods.py::test_no_duplicate_mod_keys
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/pygame/pkgdata.py:25: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
    from pkg_resources import resource_stream, resource_exists

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[skiing]
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py:317: UserWarning: WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
    logger.warn(

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[skiing]
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py:434: UserWarning: WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
    logger.warn(

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
SKIPPED [1] tests/test_all_mods.py:188: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:234: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:309: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:333: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:350: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:396: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:483: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:676: Game skiing not in list of games with mods
SKIPPED [8] tests/test_environment_compatibility.py:521: Skipping to debug memory issues in CI
SKIPPED [8] tests/test_environment_compatibility.py:560: Skipping to debug memory issues in CI
SKIPPED [1] tests/test_funcenv_adapter.py:157: Skipping to debug memory issues in CI
=========== 120 passed, 25 skipped, 3 warnings in 257.64s (0:04:17) ============

frostbite ✅
============================= test session starts ==============================
platform linux -- Python 3.11.15, pytest-8.4.2, pluggy-1.6.0
rootdir: /home/runner/work/JAXAtari/JAXAtari
configfile: pyproject.toml
plugins: github-actions-annotate-failures-0.4.0, jaxtyping-0.3.9, sugar-1.1.1, xdist-3.8.0, syrupy-4.9.1
created: 2/2 workers
2 workers [145 items]

ssssss.::warning file=.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
::warning file=.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
s...............s................................................ [ 49%]
......ssssssssssssssss..............................::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py,line=317::WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py,line=434::WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py,line=317::WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py,line=434::WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
..................s. [ 99%]
.                                                                        [100%]
=============================== warnings summary ===============================
tests/test_all_mods.py::test_no_duplicate_mod_keys
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/pygame/pkgdata.py:25: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
    from pkg_resources import resource_stream, resource_exists

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[frostbite]
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py:317: UserWarning: WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
    logger.warn(

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[frostbite]
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py:434: UserWarning: WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
    logger.warn(

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
SKIPPED [1] tests/test_all_mods.py:188: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:234: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:309: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:333: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:350: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:396: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:483: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:676: Game frostbite not in list of games with mods
SKIPPED [8] tests/test_environment_compatibility.py:521: Skipping to debug memory issues in CI
SKIPPED [8] tests/test_environment_compatibility.py:560: Skipping to debug memory issues in CI
SKIPPED [1] tests/test_funcenv_adapter.py:157: Skipping to debug memory issues in CI
=========== 120 passed, 25 skipped, 3 warnings in 637.95s (0:10:37) ============


This log was automatically created at 2026-03-31 12:36:46 UTC.

@github-actions

github-actions Bot commented Mar 31, 2026

Copy link
Copy Markdown
📁 Previous CI results (run #23798314212)

Test Report

This comment was generated automatically by a GitHub Action. It summarizes the test results for this pull request. The GitHub Action run can be found here:

https://github.com/k4ntz/JAXAtari/actions/runs/23797315616

Base Branch ✅

The PR's base branch is dev.
The expected base branch is dev.

Changed Files ❌

The PR changes files that should not be changed:

  • .gitignore
  • renovate.json
  • scripts/benchmarks/pqn_agent_visualisation.py
  • scripts/get_objects_patches.py
  • scripts/play.py
  • src/jaxatari/core.py

Please ensure that only allowed files are modified. Any changes in the src/jaxatari/games/ directory are allowed.

Framework Tests ❌

Some framework tests failed. Please check the details below:

defender ❌
============================= test session starts ==============================
platform linux -- Python 3.11.15, pytest-8.4.2, pluggy-1.6.0
rootdir: /home/runner/work/JAXAtari/JAXAtari
configfile: pyproject.toml
plugins: github-actions-annotate-failures-0.4.0, jaxtyping-0.3.9, sugar-1.1.1, xdist-3.8.0, syrupy-4.9.1
created: 2/2 workers
2 workers [145 items]

sssssssss.s::warning file=.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
::warning file=.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
ssssssss.....s.::error file=tests/test_environment_compatibility.py,line=115::TestBasicAPI.test_reset[defender]%0A%0AAssertionError: Reset observation should be contained in observation space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array(200, dtype=int32), y=Array(80, dtype=int32), width=Array(7, dtype=in...pe=float32), laser_active=Array(0., dtype=float32), laser_x=Array(0., dtype=float32), laser_y=Array(0., dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=40960...(), dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=115::TestBasicAPI.test_reset[defender]%0A%0AAssertionError: Reset observation should be contained in observation space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array(200, dtype=int32), y=Array(80, dtype=int32), width=Array(7, dtype=in...pe=float32), laser_active=Array(0., dtype=float32), laser_x=Array(0., dtype=float32), laser_y=Array(0., dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=40960...(), dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(), dtype=<class 'jax.numpy.float32'>)).contains
F::error file=tests/test_environment_compatibility.py,line=145::TestBasicAPI.test_step[defender]%0A%0AAssertionError: Step observation should be contained in observation space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array(200, dtype=int32), y=Array(81, dtype=int32), width=Array(7, dtype=in...float32), laser_active=Array(1., dtype=float32), laser_x=Array(187., dtype=float32), laser_y=Array(83., dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=40960...(), dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=145::TestBasicAPI.test_step[defender]%0A%0AAssertionError: Step observation should be contained in observation space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array(200, dtype=int32), y=Array(81, dtype=int32), width=Array(7, dtype=in...float32), laser_active=Array(1., dtype=float32), laser_x=Array(187., dtype=float32), laser_y=Array(83., dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=40960...(), dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(), dtype=<class 'jax.numpy.float32'>)).contains
F...::error file=tests/test_core_and_wrappers.py,line=61::test_pixel_and_object_centric_wrapper[defender]%0A%0AAssertionError: Object observation is not contained in the object space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([[200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n          3.       ,  71.055275 ,   5.8158674...       ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32))%0A +    where contains = Box(low=0.0, high=[[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n  2.550e+02 2.550e+02 2.550e...+02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>).contains
::error file=tests/test_core_and_wrappers.py,line=61::test_pixel_and_object_centric_wrapper[defender]%0A%0AAssertionError: Object observation is not contained in the object space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([[200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n          3.       ,  71.055275 ,   5.8158674...       ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32))%0A +    where contains = Box(low=0.0, high=[[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n  2.550e+02 2.550e+02 2.550e...+02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>).contains
F..::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[Atari-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array([200, 200, 200, 200], dtype=int32), y=Array([80, 80, 80, 80], dtype=...e=float32), laser_x=Array([187., 187., 187., 187.], dtype=float32), laser_y=Array([83., 83., 83., 83.], dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(4,), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=409..., dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(4,), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[Atari-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array([200, 200, 200, 200], dtype=int32), y=Array([80, 80, 80, 80], dtype=...e=float32), laser_x=Array([187., 187., 187., 187.], dtype=float32), laser_y=Array([83., 83., 83., 83.], dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(4,), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=409..., dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(4,), dtype=<class 'jax.numpy.float32'>)).contains
F..::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[ObjectCentric-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([[200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n          3.       ,  71.055275 ,   5.8158674...       ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32))%0A +    where contains = Box(low=0.0, high=[[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n  2.550e+02 2.550e+02 2.550e...+02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>).contains
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[ObjectCentric-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([[200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n          3.       ,  71.055275 ,   5.8158674...       ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32))%0A +    where contains = Box(low=0.0, high=[[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n  2.550e+02 2.550e+02 2.550e...+02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>).contains
F::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[PixelAndObjectCentric-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains((Array([[[[  0,   0,   0],\n         [  0,   0,   0],\n         [  0,   0,   0],\n         ...,\n         [  0,   0,   0],...      ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32)))%0A +    where contains = Tuple(Box(low=0, high=255, shape=(4, 210, 160, 3), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[[1.000e+06 4.0...02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[PixelAndObjectCentric-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains((Array([[[[  0,   0,   0],\n         [  0,   0,   0],\n         [  0,   0,   0],\n         ...,\n         [  0,   0,   0],...      ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32)))%0A +    where contains = Tuple(Box(low=0, high=255, shape=(4, 210, 160, 3), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[[1.000e+06 4.0...02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>)).contains
F::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[FlattenedObjectCentric-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n         3.       ,  71.055275 ,   5.8158674, ...    ,   0.       ,   0.       ,   0.       ,\n         0.       ,   1.       , 187.       ,  83.       ], dtype=float32))%0A +    where contains = Box(low=0.0, high=[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n 2.550e+02 2.550e+02 2.550e+0...550e+02 1.000e+00 6.400e+02 1.350e+02 1.000e+00\n 6.400e+02 1.350e+02], shape=(744,), dtype=<class 'jax.numpy.float32'>).contains
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[FlattenedObjectCentric-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n         3.       ,  71.055275 ,   5.8158674, ...    ,   0.       ,   0.       ,   0.       ,\n         0.       ,   1.       , 187.       ,  83.       ], dtype=float32))%0A +    where contains = Box(low=0.0, high=[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n 2.550e+02 2.550e+02 2.550e+0...550e+02 1.000e+00 6.400e+02 1.350e+02 1.000e+00\n 6.400e+02 1.350e+02], shape=(744,), dtype=<class 'jax.numpy.float32'>).contains
F..::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[LoggedFlattenedPixelAndObject-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains((Array([  0.,   0.,   0., ..., 198., 108.,  58.], dtype=float32), Array([200.       ,  80.       ,   7.       ,   5.  ...   ,   0.       ,   0.       ,   0.       ,\n         0.       ,   1.       , 187.       ,  83.       ], dtype=float32)))%0A +    where contains = Tuple(Box(low=0, high=255, shape=(403200,), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[1.000e+06 4.096e+04 5...50e+02 1.000e+00 6.400e+02 1.350e+02 1.000e+00\n 6.400e+02 1.350e+02], shape=(744,), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[LoggedFlattenedPixelAndObject-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains((Array([  0.,   0.,   0., ..., 198., 108.,  58.], dtype=float32), Array([200.       ,  80.       ,   7.       ,   5.  ...   ,   0.       ,   0.       ,   0.       ,\n         0.       ,   1.       , 187.       ,  83.       ], dtype=float32)))%0A +    where contains = Tuple(Box(low=0, high=255, shape=(403200,), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[1.000e+06 4.096e+04 5...50e+02 1.000e+00 6.400e+02 1.350e+02 1.000e+00\n 6.400e+02 1.350e+02], shape=(744,), dtype=<class 'jax.numpy.float32'>)).contains
F::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[MultiRewardLogged-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains((Array([[[[  0,   0,   0],\n         [  0,   0,   0],\n         [  0,   0,   0],\n         ...,\n         [  0,   0,   0],...      ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32)))%0A +    where contains = Tuple(Box(low=0, high=255, shape=(4, 210, 160, 3), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[[1.000e+06 4.0...02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[MultiRewardLogged-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains((Array([[[[  0,   0,   0],\n         [  0,   0,   0],\n         [  0,   0,   0],\n         ...,\n         [  0,   0,   0],...      ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32)))%0A +    where contains = Tuple(Box(low=0, high=255, shape=(4, 210, 160, 3), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[[1.000e+06 4.0...02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>)).contains
F....::error file=tests/test_core_and_wrappers.py,line=351::test_flatten_observation_wrapper_space_structure[defender]%0A%0AAssertionError: Observation leaf with shape (600,) not contained in space with shape (600,)%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([ 71.055275 ,   5.8158674,   1.       ,   0.       ,   0.       ,\n       403.7155   ,  60.929142 ,   1.       , ...   0.       ,   0.       ,\n         0.       ,   0.       ,   0.       ,   0.       ,   0.       ],      dtype=float32))%0A +    where contains = Box(low=0.0, high=255.0, shape=(600,), dtype=<class 'jax.numpy.float32'>).contains
::error file=tests/test_core_and_wrappers.py,line=351::test_flatten_observation_wrapper_space_structure[defender]%0A%0AAssertionError: Observation leaf with shape (600,) not contained in space with shape (600,)%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([ 71.055275 ,   5.8158674,   1.       ,   0.       ,   0.       ,\n       403.7155   ,  60.929142 ,   1.       , ...   0.       ,   0.       ,\n         0.       ,   0.       ,   0.       ,   0.       ,   0.       ],      dtype=float32))%0A +    where contains = Box(low=0.0, high=255.0, shape=(600,), dtype=<class 'jax.numpy.float32'>).contains
F..::error file=tests/test_core_and_wrappers.py,line=499::test_native_downscaling_hot_swap[defender]%0A%0AFailed: Game renderer likely hasn't updated its __init__ to accept 'config'. Error: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
::error file=tests/test_core_and_wrappers.py,line=499::test_native_downscaling_hot_swap[defender]%0A%0AFailed: Game renderer likely hasn't updated its __init__ to accept 'config'. Error: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
F::error file=tests/test_core_and_wrappers.py,line=561::test_native_downscaling_grayscale[defender]%0A%0ATypeError: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
::error file=tests/test_core_and_wrappers.py,line=561::test_native_downscaling_grayscale[defender]%0A%0ATypeError: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
F................... [ 49%]
......ssssssssssssssss.::error file=tests/test_environment_compatibility.py,line=593::TestAdvancedWrapperFeatures.test_flatten_observation_wrapper_space_structure[defender]%0A%0AAssertionError: Flattened observation should be contained in space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array([200., 200., 200., 200.], dtype=float32), y=Array([80., 80., 80., 80...e=float32), laser_x=Array([187., 187., 187., 187.], dtype=float32), laser_y=Array([83., 83., 83., 83.], dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(4,), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=409..., dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(4,), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=593::TestAdvancedWrapperFeatures.test_flatten_observation_wrapper_space_structure[defender]%0A%0AAssertionError: Flattened observation should be contained in space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array([200., 200., 200., 200.], dtype=float32), y=Array([80., 80., 80., 80...e=float32), laser_x=Array([187., 187., 187., 187.], dtype=float32), laser_y=Array([83., 83., 83., 83.], dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(4,), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=409..., dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(4,), dtype=<class 'jax.numpy.float32'>)).contains
F...........................::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py,line=317::WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py,line=434::WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py,line=317::WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py,line=434::WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
.::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
..::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
..::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
.::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
.::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
..::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
....s....... [ 99%]
.                                                                        [100%]
=================================== FAILURES ===================================
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:126: AssertionError: Reset observation should be contained in observation space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:165: AssertionError: Step observation should be contained in observation space
/home/runner/work/JAXAtari/JAXAtari/tests/test_core_and_wrappers.py:101: AssertionError: Object observation is not contained in the object space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:321: AssertionError: Wrapped observation should be contained in wrapper's space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:321: AssertionError: Wrapped observation should be contained in wrapper's space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:321: AssertionError: Wrapped observation should be contained in wrapper's space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:321: AssertionError: Wrapped observation should be contained in wrapper's space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:321: AssertionError: Wrapped observation should be contained in wrapper's space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:321: AssertionError: Wrapped observation should be contained in wrapper's space
/home/runner/work/JAXAtari/JAXAtari/tests/test_core_and_wrappers.py:435: AssertionError: Observation leaf with shape (600,) not contained in space with shape (600,)
/home/runner/work/JAXAtari/JAXAtari/tests/test_core_and_wrappers.py:520: Failed: Game renderer likely hasn't updated its __init__ to accept 'config'. Error: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/modification.py:46: TypeError: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:622: AssertionError: Flattened observation should be contained in space
=============================== warnings summary ===============================
tests/test_all_mods.py::test_no_duplicate_mod_keys
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/pygame/pkgdata.py:25: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
    from pkg_resources import resource_stream, resource_exists

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[defender]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_reset_method[defender]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_step_method[defender]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_render_method[defender]
tests/test_funcenv_adapter.py::TestGymWrapperIntegration::test_time_limit_wrapper[defender]
tests/test_funcenv_adapter.py::TestGymWrapperIntegration::test_preprocessing_wrappers[defender]
tests/test_funcenv_adapter.py::TestGymWrapperIntegration::test_frame_stack_wrapper[defender]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_seeding_and_determinism[defender]
  /home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py:131: UserWarning: Environment returned a NamedTuple for 'info'. This is deprecated.
    warnings.warn(

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[defender]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_step_method[defender]
tests/test_funcenv_adapter.py::TestGymWrapperIntegration::test_time_limit_wrapper[defender]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_seeding_and_determinism[defender]
  /home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py:111: UserWarning: Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
    warnings.warn(

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[defender]
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py:317: UserWarning: WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
    logger.warn(

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[defender]
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py:434: UserWarning: WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
    logger.warn(

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
SKIPPED [1] tests/test_all_mods.py:188: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:234: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:309: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:333: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:350: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:396: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:694: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:712: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:732: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:752: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:483: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:774: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:787: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:809: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:542: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:565: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:593: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:605: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:671: Game 'defender' is not in core.GAME_MODULES
SKIPPED [8] tests/test_environment_compatibility.py:521: Skipping to debug memory issues in CI
SKIPPED [8] tests/test_environment_compatibility.py:560: Skipping to debug memory issues in CI
SKIPPED [1] tests/test_funcenv_adapter.py:157: Skipping to debug memory issues in CI
FAILED tests/test_environment_compatibility.py::TestBasicAPI::test_reset[defender] - AssertionError: Reset observation should be contained in observation space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array(200, dtype=int32), y=Array(80, dtype=int32), width=Array(7, dtype=in...pe=float32), laser_active=Array(0., dtype=float32), laser_x=Array(0., dtype=float32), laser_y=Array(0., dtype=float32)))
 +    where contains = Dict(score: Box(low=0, high=1000000, shape=(), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=40960...(), dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(), dtype=<class 'jax.numpy.float32'>)).contains
FAILED tests/test_environment_compatibility.py::TestBasicAPI::test_step[defender] - AssertionError: Step observation should be contained in observation space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array(200, dtype=int32), y=Array(81, dtype=int32), width=Array(7, dtype=in...float32), laser_active=Array(1., dtype=float32), laser_x=Array(187., dtype=float32), laser_y=Array(83., dtype=float32)))
 +    where contains = Dict(score: Box(low=0, high=1000000, shape=(), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=40960...(), dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(), dtype=<class 'jax.numpy.float32'>)).contains
FAILED tests/test_core_and_wrappers.py::test_pixel_and_object_centric_wrapper[defender] - AssertionError: Object observation is not contained in the object space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(Array([[200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n          3.       ,  71.055275 ,   5.8158674...       ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32))
 +    where contains = Box(low=0.0, high=[[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n  2.550e+02 2.550e+02 2.550e...+02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>).contains
FAILED tests/test_environment_compatibility.py::TestWrapperCompatibility::test_wrapped_reset_and_step[Atari-defender] - AssertionError: Wrapped observation should be contained in wrapper's space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array([200, 200, 200, 200], dtype=int32), y=Array([80, 80, 80, 80], dtype=...e=float32), laser_x=Array([187., 187., 187., 187.], dtype=float32), laser_y=Array([83., 83., 83., 83.], dtype=float32)))
 +    where contains = Dict(score: Box(low=0, high=1000000, shape=(4,), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=409..., dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(4,), dtype=<class 'jax.numpy.float32'>)).contains
FAILED tests/test_environment_compatibility.py::TestWrapperCompatibility::test_wrapped_reset_and_step[ObjectCentric-defender] - AssertionError: Wrapped observation should be contained in wrapper's space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(Array([[200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n          3.       ,  71.055275 ,   5.8158674...       ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32))
 +    where contains = Box(low=0.0, high=[[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n  2.550e+02 2.550e+02 2.550e...+02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>).contains
FAILED tests/test_environment_compatibility.py::TestWrapperCompatibility::test_wrapped_reset_and_step[PixelAndObjectCentric-defender] - AssertionError: Wrapped observation should be contained in wrapper's space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains((Array([[[[  0,   0,   0],\n         [  0,   0,   0],\n         [  0,   0,   0],\n         ...,\n         [  0,   0,   0],...      ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32)))
 +    where contains = Tuple(Box(low=0, high=255, shape=(4, 210, 160, 3), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[[1.000e+06 4.0...02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>)).contains
FAILED tests/test_environment_compatibility.py::TestWrapperCompatibility::test_wrapped_reset_and_step[FlattenedObjectCentric-defender] - AssertionError: Wrapped observation should be contained in wrapper's space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(Array([200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n         3.       ,  71.055275 ,   5.8158674, ...    ,   0.       ,   0.       ,   0.       ,\n         0.       ,   1.       , 187.       ,  83.       ], dtype=float32))
 +    where contains = Box(low=0.0, high=[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n 2.550e+02 2.550e+02 2.550e+0...550e+02 1.000e+00 6.400e+02 1.350e+02 1.000e+00\n 6.400e+02 1.350e+02], shape=(744,), dtype=<class 'jax.numpy.float32'>).contains
FAILED tests/test_environment_compatibility.py::TestWrapperCompatibility::test_wrapped_reset_and_step[LoggedFlattenedPixelAndObject-defender] - AssertionError: Wrapped observation should be contained in wrapper's space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains((Array([  0.,   0.,   0., ..., 198., 108.,  58.], dtype=float32), Array([200.       ,  80.       ,   7.       ,   5.  ...   ,   0.       ,   0.       ,   0.       ,\n         0.       ,   1.       , 187.       ,  83.       ], dtype=float32)))
 +    where contains = Tuple(Box(low=0, high=255, shape=(403200,), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[1.000e+06 4.096e+04 5...50e+02 1.000e+00 6.400e+02 1.350e+02 1.000e+00\n 6.400e+02 1.350e+02], shape=(744,), dtype=<class 'jax.numpy.float32'>)).contains
FAILED tests/test_environment_compatibility.py::TestWrapperCompatibility::test_wrapped_reset_and_step[MultiRewardLogged-defender] - AssertionError: Wrapped observation should be contained in wrapper's space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains((Array([[[[  0,   0,   0],\n         [  0,   0,   0],\n         [  0,   0,   0],\n         ...,\n         [  0,   0,   0],...      ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32)))
 +    where contains = Tuple(Box(low=0, high=255, shape=(4, 210, 160, 3), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[[1.000e+06 4.0...02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>)).contains
FAILED tests/test_core_and_wrappers.py::test_flatten_observation_wrapper_space_structure[defender] - AssertionError: Observation leaf with shape (600,) not contained in space with shape (600,)
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(Array([ 71.055275 ,   5.8158674,   1.       ,   0.       ,   0.       ,\n       403.7155   ,  60.929142 ,   1.       , ...   0.       ,   0.       ,\n         0.       ,   0.       ,   0.       ,   0.       ,   0.       ],      dtype=float32))
 +    where contains = Box(low=0.0, high=255.0, shape=(600,), dtype=<class 'jax.numpy.float32'>).contains
FAILED tests/test_core_and_wrappers.py::test_native_downscaling_hot_swap[defender] - Failed: Game renderer likely hasn't updated its __init__ to accept 'config'. Error: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
FAILED tests/test_core_and_wrappers.py::test_native_downscaling_grayscale[defender] - TypeError: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
FAILED tests/test_environment_compatibility.py::TestAdvancedWrapperFeatures::test_flatten_observation_wrapper_space_structure[defender] - AssertionError: Flattened observation should be contained in space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array([200., 200., 200., 200.], dtype=float32), y=Array([80., 80., 80., 80...e=float32), laser_x=Array([187., 187., 187., 187.], dtype=float32), laser_y=Array([83., 83., 83., 83.], dtype=float32)))
 +    where contains = Dict(score: Box(low=0, high=1000000, shape=(4,), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=409..., dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(4,), dtype=<class 'jax.numpy.float32'>)).contains
====== 13 failed, 96 passed, 36 skipped, 15 warnings in 515.22s (0:08:35) ======

bankheist ❌
============================= test session starts ==============================
platform linux -- Python 3.11.15, pytest-8.4.2, pluggy-1.6.0
rootdir: /home/runner/work/JAXAtari/JAXAtari
configfile: pyproject.toml
plugins: github-actions-annotate-failures-0.4.0, jaxtyping-0.3.9, sugar-1.1.1, xdist-3.8.0, syrupy-4.9.1
created: 2/2 workers
2 workers [157 items]

..........................................::warning file=.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
::warning file=.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
.........::error file=tests/test_core_and_wrappers.py,line=561::test_native_downscaling_grayscale[bankheist]%0A%0AValueError: Incompatible shapes for broadcasting: (3,) and requested shape (1,)%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_core_and_wrappers.py,line=561::test_native_downscaling_grayscale[bankheist]%0A%0AValueError: Incompatible shapes for broadcasting: (3,) and requested shape (1,)%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F.................... [ 45%]
.....................ssssssssssssssss.............................::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py,line=317::WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py,line=434::WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py,line=317::WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py,line=434::WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
...... [ 91%]
......s......                                                            [100%]
=================================== FAILURES ===================================
/home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/jax/_src/numpy/util.py:277: ValueError: Incompatible shapes for broadcasting: (3,) and requested shape (1,)
=============================== warnings summary ===============================
tests/test_all_mods.py::test_no_duplicate_mod_keys
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/pygame/pkgdata.py:25: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
    from pkg_resources import resource_stream, resource_exists

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[bankheist]
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py:317: UserWarning: WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
    logger.warn(

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[bankheist]
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py:434: UserWarning: WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
    logger.warn(

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
SKIPPED [8] tests/test_environment_compatibility.py:521: Skipping to debug memory issues in CI
SKIPPED [8] tests/test_environment_compatibility.py:560: Skipping to debug memory issues in CI
SKIPPED [1] tests/test_funcenv_adapter.py:157: Skipping to debug memory issues in CI
FAILED tests/test_core_and_wrappers.py::test_native_downscaling_grayscale[bankheist] - ValueError: Incompatible shapes for broadcasting: (3,) and requested shape (1,)
--------------------
For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
====== 1 failed, 139 passed, 17 skipped, 3 warnings in 360.48s (0:06:00) =======

skiing ✅
============================= test session starts ==============================
platform linux -- Python 3.11.15, pytest-8.4.2, pluggy-1.6.0
rootdir: /home/runner/work/JAXAtari/JAXAtari
configfile: pyproject.toml
plugins: github-actions-annotate-failures-0.4.0, jaxtyping-0.3.9, sugar-1.1.1, xdist-3.8.0, syrupy-4.9.1
created: 2/2 workers
2 workers [145 items]

ssssss.::warning file=.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
::warning file=.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
s................s............................................... [ 49%]
.........ssssssssssssssss................................::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py,line=317::WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py,line=434::WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py,line=317::WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py,line=434::WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
.s............. [ 99%]
.                                                                        [100%]
=============================== warnings summary ===============================
tests/test_all_mods.py::test_no_duplicate_mod_keys
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/pygame/pkgdata.py:25: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
    from pkg_resources import resource_stream, resource_exists

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[skiing]
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py:317: UserWarning: WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
    logger.warn(

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[skiing]
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py:434: UserWarning: WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
    logger.warn(

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
SKIPPED [1] tests/test_all_mods.py:188: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:234: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:309: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:333: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:350: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:396: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:483: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:676: Game skiing not in list of games with mods
SKIPPED [8] tests/test_environment_compatibility.py:521: Skipping to debug memory issues in CI
SKIPPED [8] tests/test_environment_compatibility.py:560: Skipping to debug memory issues in CI
SKIPPED [1] tests/test_funcenv_adapter.py:157: Skipping to debug memory issues in CI
=========== 120 passed, 25 skipped, 3 warnings in 232.73s (0:03:52) ============

frostbite ✅
============================= test session starts ==============================
platform linux -- Python 3.11.15, pytest-8.4.2, pluggy-1.6.0
rootdir: /home/runner/work/JAXAtari/JAXAtari
configfile: pyproject.toml
plugins: github-actions-annotate-failures-0.4.0, jaxtyping-0.3.9, sugar-1.1.1, xdist-3.8.0, syrupy-4.9.1
created: 2/2 workers
2 workers [145 items]

ssssss.::warning file=.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
::warning file=.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
s...............s................................................ [ 49%]
.......ssssssssssssssss.............................::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py,line=317::WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py,line=434::WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py,line=317::WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py,line=434::WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
................s... [ 99%]
.                                                                        [100%]/home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/_pytest/unraisableexception.py:67: PytestUnraisableExceptionWarning: Exception ignored in: <function _xla_gc_callback at 0x7f455c523060>

Traceback (most recent call last):
  File "/home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/jax/_src/lib/__init__.py", line 124, in _xla_gc_callback
    xla_client._xla.collect_garbage()
KeyboardInterrupt

Enable tracemalloc to get traceback where the object was allocated.
See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.
  warnings.warn(pytest.PytestUnraisableExceptionWarning(msg))

=============================== warnings summary ===============================
tests/test_all_mods.py::test_no_duplicate_mod_keys
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/pygame/pkgdata.py:25: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
    from pkg_resources import resource_stream, resource_exists

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[frostbite]
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py:317: UserWarning: WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
    logger.warn(

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[frostbite]
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py:434: UserWarning: WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
    logger.warn(

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
SKIPPED [1] tests/test_all_mods.py:188: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:234: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:309: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:333: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:350: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:396: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:483: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:676: Game frostbite not in list of games with mods
SKIPPED [8] tests/test_environment_compatibility.py:521: Skipping to debug memory issues in CI
SKIPPED [8] tests/test_environment_compatibility.py:560: Skipping to debug memory issues in CI
SKIPPED [1] tests/test_funcenv_adapter.py:157: Skipping to debug memory issues in CI
=========== 120 passed, 25 skipped, 3 warnings in 612.90s (0:10:12) ============


This log was automatically created at 2026-03-31 12:40:57 UTC.

@github-actions

github-actions Bot commented Mar 31, 2026

Copy link
Copy Markdown
📁 Previous CI results (run #23801094810)

Test Report

This comment was generated automatically by a GitHub Action. It summarizes the test results for this pull request. The GitHub Action run can be found here:

https://github.com/k4ntz/JAXAtari/actions/runs/23798314212

Base Branch ✅

The PR's base branch is dev.
The expected base branch is dev.

Changed Files ❌

The PR changes files that should not be changed:

  • .gitignore
  • renovate.json
  • scripts/benchmarks/pqn_agent_visualisation.py
  • scripts/get_objects_patches.py
  • scripts/play.py
  • src/jaxatari/core.py

Please ensure that only allowed files are modified. Any changes in the src/jaxatari/games/ directory are allowed.

Framework Tests ❌

Some framework tests failed. Please check the details below:

defender ❌
============================= test session starts ==============================
platform linux -- Python 3.11.15, pytest-8.4.2, pluggy-1.6.0
rootdir: /home/runner/work/JAXAtari/JAXAtari
configfile: pyproject.toml
plugins: github-actions-annotate-failures-0.4.0, jaxtyping-0.3.9, sugar-1.1.1, xdist-3.8.0, syrupy-4.9.1
created: 2/2 workers
2 workers [145 items]

ssssssssss.::warning file=.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
::warning file=.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
ssssssss.....s.::error file=tests/test_environment_compatibility.py,line=115::TestBasicAPI.test_reset[defender]%0A%0AAssertionError: Reset observation should be contained in observation space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array(200, dtype=int32), y=Array(80, dtype=int32), width=Array(7, dtype=in...pe=float32), laser_active=Array(0., dtype=float32), laser_x=Array(0., dtype=float32), laser_y=Array(0., dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=40960...(), dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=115::TestBasicAPI.test_reset[defender]%0A%0AAssertionError: Reset observation should be contained in observation space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array(200, dtype=int32), y=Array(80, dtype=int32), width=Array(7, dtype=in...pe=float32), laser_active=Array(0., dtype=float32), laser_x=Array(0., dtype=float32), laser_y=Array(0., dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=40960...(), dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(), dtype=<class 'jax.numpy.float32'>)).contains
F::error file=tests/test_environment_compatibility.py,line=145::TestBasicAPI.test_step[defender]%0A%0AAssertionError: Step observation should be contained in observation space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array(200, dtype=int32), y=Array(81, dtype=int32), width=Array(7, dtype=in...float32), laser_active=Array(1., dtype=float32), laser_x=Array(187., dtype=float32), laser_y=Array(83., dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=40960...(), dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=145::TestBasicAPI.test_step[defender]%0A%0AAssertionError: Step observation should be contained in observation space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array(200, dtype=int32), y=Array(81, dtype=int32), width=Array(7, dtype=in...float32), laser_active=Array(1., dtype=float32), laser_x=Array(187., dtype=float32), laser_y=Array(83., dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=40960...(), dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(), dtype=<class 'jax.numpy.float32'>)).contains
F...::error file=tests/test_core_and_wrappers.py,line=61::test_pixel_and_object_centric_wrapper[defender]%0A%0AAssertionError: Object observation is not contained in the object space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([[200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n          3.       ,  71.055275 ,   5.8158674...       ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32))%0A +    where contains = Box(low=0.0, high=[[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n  2.550e+02 2.550e+02 2.550e...+02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>).contains
::error file=tests/test_core_and_wrappers.py,line=61::test_pixel_and_object_centric_wrapper[defender]%0A%0AAssertionError: Object observation is not contained in the object space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([[200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n          3.       ,  71.055275 ,   5.8158674...       ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32))%0A +    where contains = Box(low=0.0, high=[[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n  2.550e+02 2.550e+02 2.550e...+02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>).contains
F.::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[Atari-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array([200, 200, 200, 200], dtype=int32), y=Array([80, 80, 80, 80], dtype=...e=float32), laser_x=Array([187., 187., 187., 187.], dtype=float32), laser_y=Array([83., 83., 83., 83.], dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(4,), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=409..., dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(4,), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[Atari-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array([200, 200, 200, 200], dtype=int32), y=Array([80, 80, 80, 80], dtype=...e=float32), laser_x=Array([187., 187., 187., 187.], dtype=float32), laser_y=Array([83., 83., 83., 83.], dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(4,), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=409..., dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(4,), dtype=<class 'jax.numpy.float32'>)).contains
F..::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[ObjectCentric-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([[200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n          3.       ,  71.055275 ,   5.8158674...       ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32))%0A +    where contains = Box(low=0.0, high=[[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n  2.550e+02 2.550e+02 2.550e...+02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>).contains
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[ObjectCentric-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([[200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n          3.       ,  71.055275 ,   5.8158674...       ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32))%0A +    where contains = Box(low=0.0, high=[[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n  2.550e+02 2.550e+02 2.550e...+02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>).contains
F.::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[PixelAndObjectCentric-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains((Array([[[[  0,   0,   0],\n         [  0,   0,   0],\n         [  0,   0,   0],\n         ...,\n         [  0,   0,   0],...      ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32)))%0A +    where contains = Tuple(Box(low=0, high=255, shape=(4, 210, 160, 3), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[[1.000e+06 4.0...02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[PixelAndObjectCentric-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains((Array([[[[  0,   0,   0],\n         [  0,   0,   0],\n         [  0,   0,   0],\n         ...,\n         [  0,   0,   0],...      ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32)))%0A +    where contains = Tuple(Box(low=0, high=255, shape=(4, 210, 160, 3), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[[1.000e+06 4.0...02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>)).contains
F::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[FlattenedObjectCentric-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n         3.       ,  71.055275 ,   5.8158674, ...    ,   0.       ,   0.       ,   0.       ,\n         0.       ,   1.       , 187.       ,  83.       ], dtype=float32))%0A +    where contains = Box(low=0.0, high=[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n 2.550e+02 2.550e+02 2.550e+0...550e+02 1.000e+00 6.400e+02 1.350e+02 1.000e+00\n 6.400e+02 1.350e+02], shape=(744,), dtype=<class 'jax.numpy.float32'>).contains
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[FlattenedObjectCentric-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n         3.       ,  71.055275 ,   5.8158674, ...    ,   0.       ,   0.       ,   0.       ,\n         0.       ,   1.       , 187.       ,  83.       ], dtype=float32))%0A +    where contains = Box(low=0.0, high=[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n 2.550e+02 2.550e+02 2.550e+0...550e+02 1.000e+00 6.400e+02 1.350e+02 1.000e+00\n 6.400e+02 1.350e+02], shape=(744,), dtype=<class 'jax.numpy.float32'>).contains
F..::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[LoggedFlattenedPixelAndObject-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains((Array([  0.,   0.,   0., ..., 198., 108.,  58.], dtype=float32), Array([200.       ,  80.       ,   7.       ,   5.  ...   ,   0.       ,   0.       ,   0.       ,\n         0.       ,   1.       , 187.       ,  83.       ], dtype=float32)))%0A +    where contains = Tuple(Box(low=0, high=255, shape=(403200,), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[1.000e+06 4.096e+04 5...50e+02 1.000e+00 6.400e+02 1.350e+02 1.000e+00\n 6.400e+02 1.350e+02], shape=(744,), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[LoggedFlattenedPixelAndObject-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains((Array([  0.,   0.,   0., ..., 198., 108.,  58.], dtype=float32), Array([200.       ,  80.       ,   7.       ,   5.  ...   ,   0.       ,   0.       ,   0.       ,\n         0.       ,   1.       , 187.       ,  83.       ], dtype=float32)))%0A +    where contains = Tuple(Box(low=0, high=255, shape=(403200,), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[1.000e+06 4.096e+04 5...50e+02 1.000e+00 6.400e+02 1.350e+02 1.000e+00\n 6.400e+02 1.350e+02], shape=(744,), dtype=<class 'jax.numpy.float32'>)).contains
F::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[MultiRewardLogged-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains((Array([[[[  0,   0,   0],\n         [  0,   0,   0],\n         [  0,   0,   0],\n         ...,\n         [  0,   0,   0],...      ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32)))%0A +    where contains = Tuple(Box(low=0, high=255, shape=(4, 210, 160, 3), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[[1.000e+06 4.0...02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[MultiRewardLogged-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains((Array([[[[  0,   0,   0],\n         [  0,   0,   0],\n         [  0,   0,   0],\n         ...,\n         [  0,   0,   0],...      ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32)))%0A +    where contains = Tuple(Box(low=0, high=255, shape=(4, 210, 160, 3), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[[1.000e+06 4.0...02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>)).contains
F....::error file=tests/test_core_and_wrappers.py,line=351::test_flatten_observation_wrapper_space_structure[defender]%0A%0AAssertionError: Observation leaf with shape (600,) not contained in space with shape (600,)%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([ 71.055275 ,   5.8158674,   1.       ,   0.       ,   0.       ,\n       403.7155   ,  60.929142 ,   1.       , ...   0.       ,   0.       ,\n         0.       ,   0.       ,   0.       ,   0.       ,   0.       ],      dtype=float32))%0A +    where contains = Box(low=0.0, high=255.0, shape=(600,), dtype=<class 'jax.numpy.float32'>).contains
::error file=tests/test_core_and_wrappers.py,line=351::test_flatten_observation_wrapper_space_structure[defender]%0A%0AAssertionError: Observation leaf with shape (600,) not contained in space with shape (600,)%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([ 71.055275 ,   5.8158674,   1.       ,   0.       ,   0.       ,\n       403.7155   ,  60.929142 ,   1.       , ...   0.       ,   0.       ,\n         0.       ,   0.       ,   0.       ,   0.       ,   0.       ],      dtype=float32))%0A +    where contains = Box(low=0.0, high=255.0, shape=(600,), dtype=<class 'jax.numpy.float32'>).contains
F..::error file=tests/test_core_and_wrappers.py,line=499::test_native_downscaling_hot_swap[defender]%0A%0AFailed: Game renderer likely hasn't updated its __init__ to accept 'config'. Error: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
::error file=tests/test_core_and_wrappers.py,line=499::test_native_downscaling_hot_swap[defender]%0A%0AFailed: Game renderer likely hasn't updated its __init__ to accept 'config'. Error: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
F::error file=tests/test_core_and_wrappers.py,line=561::test_native_downscaling_grayscale[defender]%0A%0ATypeError: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
::error file=tests/test_core_and_wrappers.py,line=561::test_native_downscaling_grayscale[defender]%0A%0ATypeError: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
F................... [ 49%]
......ssssssssssssssss::error file=tests/test_environment_compatibility.py,line=593::TestAdvancedWrapperFeatures.test_flatten_observation_wrapper_space_structure[defender]%0A%0AAssertionError: Flattened observation should be contained in space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array([200., 200., 200., 200.], dtype=float32), y=Array([80., 80., 80., 80...e=float32), laser_x=Array([187., 187., 187., 187.], dtype=float32), laser_y=Array([83., 83., 83., 83.], dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(4,), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=409..., dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(4,), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=593::TestAdvancedWrapperFeatures.test_flatten_observation_wrapper_space_structure[defender]%0A%0AAssertionError: Flattened observation should be contained in space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array([200., 200., 200., 200.], dtype=float32), y=Array([80., 80., 80., 80...e=float32), laser_x=Array([187., 187., 187., 187.], dtype=float32), laser_y=Array([83., 83., 83., 83.], dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(4,), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=409..., dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(4,), dtype=<class 'jax.numpy.float32'>)).contains
F..............................::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
.::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py,line=317::WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py,line=434::WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py,line=317::WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py,line=434::WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
.::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
..::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
.::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
.::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
...::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
.....s.... [ 99%]
.                                                                        [100%]/home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/_pytest/unraisableexception.py:67: PytestUnraisableExceptionWarning: Exception ignored in: <function _xla_gc_callback at 0x7fa24682f060>

Traceback (most recent call last):
  File "/home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/jax/_src/lib/__init__.py", line 124, in _xla_gc_callback
    xla_client._xla.collect_garbage()
KeyboardInterrupt

Enable tracemalloc to get traceback where the object was allocated.
See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.
  warnings.warn(pytest.PytestUnraisableExceptionWarning(msg))

=================================== FAILURES ===================================
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:126: AssertionError: Reset observation should be contained in observation space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:165: AssertionError: Step observation should be contained in observation space
/home/runner/work/JAXAtari/JAXAtari/tests/test_core_and_wrappers.py:101: AssertionError: Object observation is not contained in the object space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:321: AssertionError: Wrapped observation should be contained in wrapper's space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:321: AssertionError: Wrapped observation should be contained in wrapper's space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:321: AssertionError: Wrapped observation should be contained in wrapper's space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:321: AssertionError: Wrapped observation should be contained in wrapper's space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:321: AssertionError: Wrapped observation should be contained in wrapper's space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:321: AssertionError: Wrapped observation should be contained in wrapper's space
/home/runner/work/JAXAtari/JAXAtari/tests/test_core_and_wrappers.py:435: AssertionError: Observation leaf with shape (600,) not contained in space with shape (600,)
/home/runner/work/JAXAtari/JAXAtari/tests/test_core_and_wrappers.py:520: Failed: Game renderer likely hasn't updated its __init__ to accept 'config'. Error: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/modification.py:46: TypeError: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:622: AssertionError: Flattened observation should be contained in space
=============================== warnings summary ===============================
tests/test_all_mods.py::test_no_duplicate_mod_keys
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/pygame/pkgdata.py:25: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
    from pkg_resources import resource_stream, resource_exists

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_reset_method[defender]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[defender]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_step_method[defender]
tests/test_funcenv_adapter.py::TestGymWrapperIntegration::test_time_limit_wrapper[defender]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_render_method[defender]
tests/test_funcenv_adapter.py::TestGymWrapperIntegration::test_preprocessing_wrappers[defender]
tests/test_funcenv_adapter.py::TestGymWrapperIntegration::test_frame_stack_wrapper[defender]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_seeding_and_determinism[defender]
  /home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py:131: UserWarning: Environment returned a NamedTuple for 'info'. This is deprecated.
    warnings.warn(

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[defender]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_step_method[defender]
tests/test_funcenv_adapter.py::TestGymWrapperIntegration::test_time_limit_wrapper[defender]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_seeding_and_determinism[defender]
  /home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py:111: UserWarning: Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
    warnings.warn(

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[defender]
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py:317: UserWarning: WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
    logger.warn(

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[defender]
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py:434: UserWarning: WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
    logger.warn(

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
SKIPPED [1] tests/test_all_mods.py:188: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:234: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:309: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:333: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:350: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:396: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:694: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:712: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:732: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:752: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:483: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:774: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:787: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:809: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:542: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:565: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:593: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:605: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:671: Game 'defender' is not in core.GAME_MODULES
SKIPPED [8] tests/test_environment_compatibility.py:521: Skipping to debug memory issues in CI
SKIPPED [8] tests/test_environment_compatibility.py:560: Skipping to debug memory issues in CI
SKIPPED [1] tests/test_funcenv_adapter.py:157: Skipping to debug memory issues in CI
FAILED tests/test_environment_compatibility.py::TestBasicAPI::test_reset[defender] - AssertionError: Reset observation should be contained in observation space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array(200, dtype=int32), y=Array(80, dtype=int32), width=Array(7, dtype=in...pe=float32), laser_active=Array(0., dtype=float32), laser_x=Array(0., dtype=float32), laser_y=Array(0., dtype=float32)))
 +    where contains = Dict(score: Box(low=0, high=1000000, shape=(), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=40960...(), dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(), dtype=<class 'jax.numpy.float32'>)).contains
FAILED tests/test_environment_compatibility.py::TestBasicAPI::test_step[defender] - AssertionError: Step observation should be contained in observation space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array(200, dtype=int32), y=Array(81, dtype=int32), width=Array(7, dtype=in...float32), laser_active=Array(1., dtype=float32), laser_x=Array(187., dtype=float32), laser_y=Array(83., dtype=float32)))
 +    where contains = Dict(score: Box(low=0, high=1000000, shape=(), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=40960...(), dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(), dtype=<class 'jax.numpy.float32'>)).contains
FAILED tests/test_core_and_wrappers.py::test_pixel_and_object_centric_wrapper[defender] - AssertionError: Object observation is not contained in the object space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(Array([[200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n          3.       ,  71.055275 ,   5.8158674...       ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32))
 +    where contains = Box(low=0.0, high=[[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n  2.550e+02 2.550e+02 2.550e...+02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>).contains
FAILED tests/test_environment_compatibility.py::TestWrapperCompatibility::test_wrapped_reset_and_step[Atari-defender] - AssertionError: Wrapped observation should be contained in wrapper's space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array([200, 200, 200, 200], dtype=int32), y=Array([80, 80, 80, 80], dtype=...e=float32), laser_x=Array([187., 187., 187., 187.], dtype=float32), laser_y=Array([83., 83., 83., 83.], dtype=float32)))
 +    where contains = Dict(score: Box(low=0, high=1000000, shape=(4,), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=409..., dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(4,), dtype=<class 'jax.numpy.float32'>)).contains
FAILED tests/test_environment_compatibility.py::TestWrapperCompatibility::test_wrapped_reset_and_step[ObjectCentric-defender] - AssertionError: Wrapped observation should be contained in wrapper's space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(Array([[200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n          3.       ,  71.055275 ,   5.8158674...       ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32))
 +    where contains = Box(low=0.0, high=[[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n  2.550e+02 2.550e+02 2.550e...+02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>).contains
FAILED tests/test_environment_compatibility.py::TestWrapperCompatibility::test_wrapped_reset_and_step[PixelAndObjectCentric-defender] - AssertionError: Wrapped observation should be contained in wrapper's space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains((Array([[[[  0,   0,   0],\n         [  0,   0,   0],\n         [  0,   0,   0],\n         ...,\n         [  0,   0,   0],...      ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32)))
 +    where contains = Tuple(Box(low=0, high=255, shape=(4, 210, 160, 3), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[[1.000e+06 4.0...02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>)).contains
FAILED tests/test_environment_compatibility.py::TestWrapperCompatibility::test_wrapped_reset_and_step[FlattenedObjectCentric-defender] - AssertionError: Wrapped observation should be contained in wrapper's space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(Array([200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n         3.       ,  71.055275 ,   5.8158674, ...    ,   0.       ,   0.       ,   0.       ,\n         0.       ,   1.       , 187.       ,  83.       ], dtype=float32))
 +    where contains = Box(low=0.0, high=[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n 2.550e+02 2.550e+02 2.550e+0...550e+02 1.000e+00 6.400e+02 1.350e+02 1.000e+00\n 6.400e+02 1.350e+02], shape=(744,), dtype=<class 'jax.numpy.float32'>).contains
FAILED tests/test_environment_compatibility.py::TestWrapperCompatibility::test_wrapped_reset_and_step[LoggedFlattenedPixelAndObject-defender] - AssertionError: Wrapped observation should be contained in wrapper's space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains((Array([  0.,   0.,   0., ..., 198., 108.,  58.], dtype=float32), Array([200.       ,  80.       ,   7.       ,   5.  ...   ,   0.       ,   0.       ,   0.       ,\n         0.       ,   1.       , 187.       ,  83.       ], dtype=float32)))
 +    where contains = Tuple(Box(low=0, high=255, shape=(403200,), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[1.000e+06 4.096e+04 5...50e+02 1.000e+00 6.400e+02 1.350e+02 1.000e+00\n 6.400e+02 1.350e+02], shape=(744,), dtype=<class 'jax.numpy.float32'>)).contains
FAILED tests/test_environment_compatibility.py::TestWrapperCompatibility::test_wrapped_reset_and_step[MultiRewardLogged-defender] - AssertionError: Wrapped observation should be contained in wrapper's space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains((Array([[[[  0,   0,   0],\n         [  0,   0,   0],\n         [  0,   0,   0],\n         ...,\n         [  0,   0,   0],...      ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32)))
 +    where contains = Tuple(Box(low=0, high=255, shape=(4, 210, 160, 3), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[[1.000e+06 4.0...02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>)).contains
FAILED tests/test_core_and_wrappers.py::test_flatten_observation_wrapper_space_structure[defender] - AssertionError: Observation leaf with shape (600,) not contained in space with shape (600,)
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(Array([ 71.055275 ,   5.8158674,   1.       ,   0.       ,   0.       ,\n       403.7155   ,  60.929142 ,   1.       , ...   0.       ,   0.       ,\n         0.       ,   0.       ,   0.       ,   0.       ,   0.       ],      dtype=float32))
 +    where contains = Box(low=0.0, high=255.0, shape=(600,), dtype=<class 'jax.numpy.float32'>).contains
FAILED tests/test_core_and_wrappers.py::test_native_downscaling_hot_swap[defender] - Failed: Game renderer likely hasn't updated its __init__ to accept 'config'. Error: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
FAILED tests/test_core_and_wrappers.py::test_native_downscaling_grayscale[defender] - TypeError: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
FAILED tests/test_environment_compatibility.py::TestAdvancedWrapperFeatures::test_flatten_observation_wrapper_space_structure[defender] - AssertionError: Flattened observation should be contained in space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array([200., 200., 200., 200.], dtype=float32), y=Array([80., 80., 80., 80...e=float32), laser_x=Array([187., 187., 187., 187.], dtype=float32), laser_y=Array([83., 83., 83., 83.], dtype=float32)))
 +    where contains = Dict(score: Box(low=0, high=1000000, shape=(4,), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=409..., dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(4,), dtype=<class 'jax.numpy.float32'>)).contains
====== 13 failed, 96 passed, 36 skipped, 15 warnings in 556.93s (0:09:16) ======

bankheist ❌
============================= test session starts ==============================
platform linux -- Python 3.11.15, pytest-8.4.2, pluggy-1.6.0
rootdir: /home/runner/work/JAXAtari/JAXAtari
configfile: pyproject.toml
plugins: github-actions-annotate-failures-0.4.0, jaxtyping-0.3.9, sugar-1.1.1, xdist-3.8.0, syrupy-4.9.1
created: 2/2 workers
2 workers [145 items]

.::error file=tests/test_all_mods.py,line=188::TestModExecution.test_mod_runs_reset_and_10_steps[bankheist-random_spawns-individual]%0A%0AFailed: step() failed at step 0 with mod 'random_spawns': 'BankHeistState' object has no attribute 'current_diagonal_priority'
::error file=tests/test_all_mods.py,line=188::TestModExecution.test_mod_runs_reset_and_10_steps[bankheist-random_spawns-individual]%0A%0AFailed: step() failed at step 0 with mod 'random_spawns': 'BankHeistState' object has no attribute 'current_diagonal_priority'
F......s..::error file=tests/test_all_mods.py,line=809::TestDatatypeConsistency.test_datatype_consistency_across_operations[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_all_mods.py,line=809::TestDatatypeConsistency.test_datatype_consistency_across_operations[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F::error file=tests/test_all_mods.py,line=396::TestModWithWrappers.test_pixel_native_downscaling_does_not_crash_modded_env[bankheist-random_spawns-individual]%0A%0AFailed: reset() with PixelWrapper+native_downscaling failed for mod 'random_spawns': 'BankHeistState' object has no attribute 'current_diagonal_priority'
::error file=tests/test_all_mods.py,line=396::TestModWithWrappers.test_pixel_native_downscaling_does_not_crash_modded_env[bankheist-random_spawns-individual]%0A%0AFailed: reset() with PixelWrapper+native_downscaling failed for mod 'random_spawns': 'BankHeistState' object has no attribute 'current_diagonal_priority'
F::error file=tests/test_core_and_wrappers.py,line=30::test_pixel_obs_wrapper_with_stacked_frames[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_core_and_wrappers.py,line=30::test_pixel_obs_wrapper_with_stacked_frames[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F.::warning file=.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
::warning file=.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
::error file=tests/test_core_and_wrappers.py,line=61::test_pixel_and_object_centric_wrapper[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_core_and_wrappers.py,line=61::test_pixel_and_object_centric_wrapper[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F::error file=tests/test_core_and_wrappers.py,line=107::test_object_centric_wrapper[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_core_and_wrappers.py,line=107::test_object_centric_wrapper[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F::error file=tests/test_core_and_wrappers.py,line=130::test_log_wrapper[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_core_and_wrappers.py,line=130::test_log_wrapper[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F.::error file=tests/test_core_and_wrappers.py,line=189::test_multi_reward_log_wrapper[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_core_and_wrappers.py,line=189::test_multi_reward_log_wrapper[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F.::error file=tests/test_core_and_wrappers.py,line=260::test_flatten_observation_wrapper[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_core_and_wrappers.py,line=260::test_flatten_observation_wrapper[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F.::error file=tests/test_core_and_wrappers.py,line=320::test_log_wrapper_with_flatten_observation[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_core_and_wrappers.py,line=320::test_log_wrapper_with_flatten_observation[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F::error file=tests/test_core_and_wrappers.py,line=351::test_flatten_observation_wrapper_space_structure[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_core_and_wrappers.py,line=351::test_flatten_observation_wrapper_space_structure[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F.::error file=tests/test_core_and_wrappers.py,line=439::test_atari_wrapper_features_and_pixel_preprocessing[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_core_and_wrappers.py,line=439::test_atari_wrapper_features_and_pixel_preprocessing[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F::error file=tests/test_core_and_wrappers.py,line=499::test_native_downscaling_hot_swap[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_core_and_wrappers.py,line=499::test_native_downscaling_hot_swap[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F::error file=tests/test_all_mods.py,line=605::TestModifications.test_environment_works_after_mods[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_all_mods.py,line=605::TestModifications.test_environment_works_after_mods[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F.....::error file=tests/test_core_and_wrappers.py,line=561::test_native_downscaling_grayscale[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_core_and_wrappers.py,line=561::test_native_downscaling_grayscale[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F....::error file=tests/test_environment_compatibility.py,line=145::TestBasicAPI.test_step[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_environment_compatibility.py,line=145::TestBasicAPI.test_step[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F.::error file=tests/test_environment_compatibility.py,line=181::TestBasicAPI.test_determinism[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_environment_compatibility.py,line=181::TestBasicAPI.test_determinism[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F.::error file=tests/test_environment_compatibility.py,line=203::TestBasicAPI.test_render[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'pending_police_scores'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_environment_compatibility.py,line=203::TestBasicAPI.test_render[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'pending_police_scores'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F::error file=tests/test_environment_compatibility.py,line=226::TestBasicAPI.test_episode_completion[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_environment_compatibility.py,line=226::TestBasicAPI.test_episode_completion[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F.::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[Atari-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[Atari-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F.::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[Pixel-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[Pixel-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F..::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[ObjectCentric-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[ObjectCentric-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F.::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[PixelAndObjectCentric-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[PixelAndObjectCentric-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F.::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[FlattenedObjectCentric-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[FlattenedObjectCentric-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F.::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[NormalizedPixel-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[NormalizedPixel-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F.::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[LoggedFlattenedPixelAndObject-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[LoggedFlattenedPixelAndObject-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F.::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[MultiRewardLogged-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[MultiRewardLogged-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F::error file=tests/test_environment_compatibility.py,line=445::TestWrapperCompatibility.test_wrapper_determinism[Atari-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_environment_compatibility.py,line=445::TestWrapperCompatibility.test_wrapper_determinism[Atari-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F::error file=tests/test_environment_compatibility.py,line=337::TestWrapperCompatibility.test_observation_shape_and_type[Atari-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_environment_compatibility.py,line=337::TestWrapperCompatibility.test_observation_shape_and_type[Atari-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F::error file=tests/test_environment_compatibility.py,line=445::TestWrapperCompatibility.test_wrapper_determinism[Pixel-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_environment_compatibility.py,line=445::TestWrapperCompatibility.test_wrapper_determinism[Pixel-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F::error file=tests/test_environment_compatibility.py,line=337::TestWrapperCompatibility.test_observation_shape_and_type[Pixel-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_environment_compatibility.py,line=337::TestWrapperCompatibility.test_observation_shape_and_type[Pixel-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F::error file=tests/test_environment_compatibility.py,line=445::TestWrapperCompatibility.test_wrapper_determinism[ObjectCentric-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error fil...*[Comment body truncated]*

</details>

@github-actions

Copy link
Copy Markdown

Test Report

This comment was generated automatically by a GitHub Action. It summarizes the test results for this pull request. The GitHub Action run can be found here:

https://github.com/k4ntz/JAXAtari/actions/runs/23801094810

Base Branch ✅

The PR's base branch is dev.
The expected base branch is dev.

Changed Files ❌

The PR changes files that should not be changed:

  • .gitignore
  • renovate.json
  • scripts/benchmarks/pqn_agent_visualisation.py
  • scripts/get_objects_patches.py
  • scripts/play.py
  • src/jaxatari/core.py

Please ensure that only allowed files are modified. Any changes in the src/jaxatari/games/ directory are allowed.

Framework Tests ❌

Some framework tests failed. Please check the details below:

defender ❌
============================= test session starts ==============================
platform linux -- Python 3.11.15, pytest-8.4.2, pluggy-1.6.0
rootdir: /home/runner/work/JAXAtari/JAXAtari
configfile: pyproject.toml
plugins: github-actions-annotate-failures-0.4.0, jaxtyping-0.3.9, sugar-1.1.1, xdist-3.8.0, syrupy-4.9.1
created: 2/2 workers
2 workers [145 items]

ssssssssss.s::warning file=.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
::warning file=.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
sssssss.....s.::error file=tests/test_environment_compatibility.py,line=115::TestBasicAPI.test_reset[defender]%0A%0AAssertionError: Reset observation should be contained in observation space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array(200, dtype=int32), y=Array(80, dtype=int32), width=Array(7, dtype=in...pe=float32), laser_active=Array(0., dtype=float32), laser_x=Array(0., dtype=float32), laser_y=Array(0., dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=40960...(), dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=115::TestBasicAPI.test_reset[defender]%0A%0AAssertionError: Reset observation should be contained in observation space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array(200, dtype=int32), y=Array(80, dtype=int32), width=Array(7, dtype=in...pe=float32), laser_active=Array(0., dtype=float32), laser_x=Array(0., dtype=float32), laser_y=Array(0., dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=40960...(), dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(), dtype=<class 'jax.numpy.float32'>)).contains
F::error file=tests/test_environment_compatibility.py,line=145::TestBasicAPI.test_step[defender]%0A%0AAssertionError: Step observation should be contained in observation space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array(200, dtype=int32), y=Array(81, dtype=int32), width=Array(7, dtype=in...float32), laser_active=Array(1., dtype=float32), laser_x=Array(187., dtype=float32), laser_y=Array(83., dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=40960...(), dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=145::TestBasicAPI.test_step[defender]%0A%0AAssertionError: Step observation should be contained in observation space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array(200, dtype=int32), y=Array(81, dtype=int32), width=Array(7, dtype=in...float32), laser_active=Array(1., dtype=float32), laser_x=Array(187., dtype=float32), laser_y=Array(83., dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=40960...(), dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(), dtype=<class 'jax.numpy.float32'>)).contains
F...::error file=tests/test_core_and_wrappers.py,line=61::test_pixel_and_object_centric_wrapper[defender]%0A%0AAssertionError: Object observation is not contained in the object space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([[200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n          3.       ,  71.055275 ,   5.8158674...       ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32))%0A +    where contains = Box(low=0.0, high=[[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n  2.550e+02 2.550e+02 2.550e...+02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>).contains
::error file=tests/test_core_and_wrappers.py,line=61::test_pixel_and_object_centric_wrapper[defender]%0A%0AAssertionError: Object observation is not contained in the object space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([[200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n          3.       ,  71.055275 ,   5.8158674...       ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32))%0A +    where contains = Box(low=0.0, high=[[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n  2.550e+02 2.550e+02 2.550e...+02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>).contains
F.::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[Atari-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array([200, 200, 200, 200], dtype=int32), y=Array([80, 80, 80, 80], dtype=...e=float32), laser_x=Array([187., 187., 187., 187.], dtype=float32), laser_y=Array([83., 83., 83., 83.], dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(4,), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=409..., dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(4,), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[Atari-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array([200, 200, 200, 200], dtype=int32), y=Array([80, 80, 80, 80], dtype=...e=float32), laser_x=Array([187., 187., 187., 187.], dtype=float32), laser_y=Array([83., 83., 83., 83.], dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(4,), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=409..., dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(4,), dtype=<class 'jax.numpy.float32'>)).contains
F..::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[ObjectCentric-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([[200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n          3.       ,  71.055275 ,   5.8158674...       ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32))%0A +    where contains = Box(low=0.0, high=[[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n  2.550e+02 2.550e+02 2.550e...+02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>).contains
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[ObjectCentric-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([[200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n          3.       ,  71.055275 ,   5.8158674...       ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32))%0A +    where contains = Box(low=0.0, high=[[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n  2.550e+02 2.550e+02 2.550e...+02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>).contains
F.::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[PixelAndObjectCentric-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains((Array([[[[  0,   0,   0],\n         [  0,   0,   0],\n         [  0,   0,   0],\n         ...,\n         [  0,   0,   0],...      ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32)))%0A +    where contains = Tuple(Box(low=0, high=255, shape=(4, 210, 160, 3), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[[1.000e+06 4.0...02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[PixelAndObjectCentric-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains((Array([[[[  0,   0,   0],\n         [  0,   0,   0],\n         [  0,   0,   0],\n         ...,\n         [  0,   0,   0],...      ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32)))%0A +    where contains = Tuple(Box(low=0, high=255, shape=(4, 210, 160, 3), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[[1.000e+06 4.0...02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>)).contains
F::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[FlattenedObjectCentric-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n         3.       ,  71.055275 ,   5.8158674, ...    ,   0.       ,   0.       ,   0.       ,\n         0.       ,   1.       , 187.       ,  83.       ], dtype=float32))%0A +    where contains = Box(low=0.0, high=[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n 2.550e+02 2.550e+02 2.550e+0...550e+02 1.000e+00 6.400e+02 1.350e+02 1.000e+00\n 6.400e+02 1.350e+02], shape=(744,), dtype=<class 'jax.numpy.float32'>).contains
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[FlattenedObjectCentric-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n         3.       ,  71.055275 ,   5.8158674, ...    ,   0.       ,   0.       ,   0.       ,\n         0.       ,   1.       , 187.       ,  83.       ], dtype=float32))%0A +    where contains = Box(low=0.0, high=[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n 2.550e+02 2.550e+02 2.550e+0...550e+02 1.000e+00 6.400e+02 1.350e+02 1.000e+00\n 6.400e+02 1.350e+02], shape=(744,), dtype=<class 'jax.numpy.float32'>).contains
F..::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[LoggedFlattenedPixelAndObject-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains((Array([  0.,   0.,   0., ..., 198., 108.,  58.], dtype=float32), Array([200.       ,  80.       ,   7.       ,   5.  ...   ,   0.       ,   0.       ,   0.       ,\n         0.       ,   1.       , 187.       ,  83.       ], dtype=float32)))%0A +    where contains = Tuple(Box(low=0, high=255, shape=(403200,), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[1.000e+06 4.096e+04 5...50e+02 1.000e+00 6.400e+02 1.350e+02 1.000e+00\n 6.400e+02 1.350e+02], shape=(744,), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[LoggedFlattenedPixelAndObject-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains((Array([  0.,   0.,   0., ..., 198., 108.,  58.], dtype=float32), Array([200.       ,  80.       ,   7.       ,   5.  ...   ,   0.       ,   0.       ,   0.       ,\n         0.       ,   1.       , 187.       ,  83.       ], dtype=float32)))%0A +    where contains = Tuple(Box(low=0, high=255, shape=(403200,), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[1.000e+06 4.096e+04 5...50e+02 1.000e+00 6.400e+02 1.350e+02 1.000e+00\n 6.400e+02 1.350e+02], shape=(744,), dtype=<class 'jax.numpy.float32'>)).contains
F::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[MultiRewardLogged-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains((Array([[[[  0,   0,   0],\n         [  0,   0,   0],\n         [  0,   0,   0],\n         ...,\n         [  0,   0,   0],...      ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32)))%0A +    where contains = Tuple(Box(low=0, high=255, shape=(4, 210, 160, 3), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[[1.000e+06 4.0...02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[MultiRewardLogged-defender]%0A%0AAssertionError: Wrapped observation should be contained in wrapper's space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains((Array([[[[  0,   0,   0],\n         [  0,   0,   0],\n         [  0,   0,   0],\n         ...,\n         [  0,   0,   0],...      ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32)))%0A +    where contains = Tuple(Box(low=0, high=255, shape=(4, 210, 160, 3), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[[1.000e+06 4.0...02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>)).contains
F....::error file=tests/test_core_and_wrappers.py,line=351::test_flatten_observation_wrapper_space_structure[defender]%0A%0AAssertionError: Observation leaf with shape (600,) not contained in space with shape (600,)%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([ 71.055275 ,   5.8158674,   1.       ,   0.       ,   0.       ,\n       403.7155   ,  60.929142 ,   1.       , ...   0.       ,   0.       ,\n         0.       ,   0.       ,   0.       ,   0.       ,   0.       ],      dtype=float32))%0A +    where contains = Box(low=0.0, high=255.0, shape=(600,), dtype=<class 'jax.numpy.float32'>).contains
::error file=tests/test_core_and_wrappers.py,line=351::test_flatten_observation_wrapper_space_structure[defender]%0A%0AAssertionError: Observation leaf with shape (600,) not contained in space with shape (600,)%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(Array([ 71.055275 ,   5.8158674,   1.       ,   0.       ,   0.       ,\n       403.7155   ,  60.929142 ,   1.       , ...   0.       ,   0.       ,\n         0.       ,   0.       ,   0.       ,   0.       ,   0.       ],      dtype=float32))%0A +    where contains = Box(low=0.0, high=255.0, shape=(600,), dtype=<class 'jax.numpy.float32'>).contains
F..::error file=tests/test_core_and_wrappers.py,line=499::test_native_downscaling_hot_swap[defender]%0A%0AFailed: Game renderer likely hasn't updated its __init__ to accept 'config'. Error: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
::error file=tests/test_core_and_wrappers.py,line=499::test_native_downscaling_hot_swap[defender]%0A%0AFailed: Game renderer likely hasn't updated its __init__ to accept 'config'. Error: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
F::error file=tests/test_core_and_wrappers.py,line=561::test_native_downscaling_grayscale[defender]%0A%0ATypeError: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
::error file=tests/test_core_and_wrappers.py,line=561::test_native_downscaling_grayscale[defender]%0A%0ATypeError: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
F................... [ 49%]
......ssssssssssssssss.::error file=tests/test_environment_compatibility.py,line=593::TestAdvancedWrapperFeatures.test_flatten_observation_wrapper_space_structure[defender]%0A%0AAssertionError: Flattened observation should be contained in space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array([200., 200., 200., 200.], dtype=float32), y=Array([80., 80., 80., 80...e=float32), laser_x=Array([187., 187., 187., 187.], dtype=float32), laser_y=Array([83., 83., 83., 83.], dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(4,), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=409..., dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(4,), dtype=<class 'jax.numpy.float32'>)).contains
::error file=tests/test_environment_compatibility.py,line=593::TestAdvancedWrapperFeatures.test_flatten_observation_wrapper_space_structure[defender]%0A%0AAssertionError: Flattened observation should be contained in space%0Aassert Array(False, dtype=bool)%0A +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array([200., 200., 200., 200.], dtype=float32), y=Array([80., 80., 80., 80...e=float32), laser_x=Array([187., 187., 187., 187.], dtype=float32), laser_y=Array([83., 83., 83., 83.], dtype=float32)))%0A +    where contains = Dict(score: Box(low=0, high=1000000, shape=(4,), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=409..., dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(4,), dtype=<class 'jax.numpy.float32'>)).contains
F...........................::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py,line=317::WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py,line=434::WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py,line=317::WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
::warning file=.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py,line=434::WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
..::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
..::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
.::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
.::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
.::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
.::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
..::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
::warning file=src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
....s...... [ 99%]
.                                                                        [100%]/home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/_pytest/unraisableexception.py:67: PytestUnraisableExceptionWarning: Exception ignored in: <function _xla_gc_callback at 0x7fe488023060>

Traceback (most recent call last):
  File "/home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/jax/_src/lib/__init__.py", line 124, in _xla_gc_callback
    xla_client._xla.collect_garbage()
KeyboardInterrupt

Enable tracemalloc to get traceback where the object was allocated.
See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.
  warnings.warn(pytest.PytestUnraisableExceptionWarning(msg))

=================================== FAILURES ===================================
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:126: AssertionError: Reset observation should be contained in observation space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:165: AssertionError: Step observation should be contained in observation space
/home/runner/work/JAXAtari/JAXAtari/tests/test_core_and_wrappers.py:101: AssertionError: Object observation is not contained in the object space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:321: AssertionError: Wrapped observation should be contained in wrapper's space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:321: AssertionError: Wrapped observation should be contained in wrapper's space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:321: AssertionError: Wrapped observation should be contained in wrapper's space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:321: AssertionError: Wrapped observation should be contained in wrapper's space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:321: AssertionError: Wrapped observation should be contained in wrapper's space
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:321: AssertionError: Wrapped observation should be contained in wrapper's space
/home/runner/work/JAXAtari/JAXAtari/tests/test_core_and_wrappers.py:435: AssertionError: Observation leaf with shape (600,) not contained in space with shape (600,)
/home/runner/work/JAXAtari/JAXAtari/tests/test_core_and_wrappers.py:520: Failed: Game renderer likely hasn't updated its __init__ to accept 'config'. Error: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/modification.py:46: TypeError: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
/home/runner/work/JAXAtari/JAXAtari/tests/test_environment_compatibility.py:622: AssertionError: Flattened observation should be contained in space
=============================== warnings summary ===============================
tests/test_all_mods.py::test_no_duplicate_mod_keys
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/pygame/pkgdata.py:25: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
    from pkg_resources import resource_stream, resource_exists

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[defender]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_reset_method[defender]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_step_method[defender]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_render_method[defender]
tests/test_funcenv_adapter.py::TestGymWrapperIntegration::test_time_limit_wrapper[defender]
tests/test_funcenv_adapter.py::TestGymWrapperIntegration::test_preprocessing_wrappers[defender]
tests/test_funcenv_adapter.py::TestGymWrapperIntegration::test_frame_stack_wrapper[defender]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_seeding_and_determinism[defender]
  /home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py:131: UserWarning: Environment returned a NamedTuple for 'info'. This is deprecated.
    warnings.warn(

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[defender]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_step_method[defender]
tests/test_funcenv_adapter.py::TestGymWrapperIntegration::test_time_limit_wrapper[defender]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_seeding_and_determinism[defender]
  /home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py:111: UserWarning: Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
    warnings.warn(

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[defender]
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py:317: UserWarning: WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
    logger.warn(

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[defender]
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py:434: UserWarning: WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
    logger.warn(

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
SKIPPED [1] tests/test_all_mods.py:188: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:234: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:309: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:333: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:350: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:396: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:694: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:712: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:732: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:752: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:774: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:483: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:787: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:809: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:542: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:565: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:593: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:605: Game 'defender' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:671: Game 'defender' is not in core.GAME_MODULES
SKIPPED [8] tests/test_environment_compatibility.py:521: Skipping to debug memory issues in CI
SKIPPED [8] tests/test_environment_compatibility.py:560: Skipping to debug memory issues in CI
SKIPPED [1] tests/test_funcenv_adapter.py:157: Skipping to debug memory issues in CI
FAILED tests/test_environment_compatibility.py::TestBasicAPI::test_reset[defender] - AssertionError: Reset observation should be contained in observation space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array(200, dtype=int32), y=Array(80, dtype=int32), width=Array(7, dtype=in...pe=float32), laser_active=Array(0., dtype=float32), laser_x=Array(0., dtype=float32), laser_y=Array(0., dtype=float32)))
 +    where contains = Dict(score: Box(low=0, high=1000000, shape=(), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=40960...(), dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(), dtype=<class 'jax.numpy.float32'>)).contains
FAILED tests/test_environment_compatibility.py::TestBasicAPI::test_step[defender] - AssertionError: Step observation should be contained in observation space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array(200, dtype=int32), y=Array(81, dtype=int32), width=Array(7, dtype=in...float32), laser_active=Array(1., dtype=float32), laser_x=Array(187., dtype=float32), laser_y=Array(83., dtype=float32)))
 +    where contains = Dict(score: Box(low=0, high=1000000, shape=(), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=40960...(), dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(), dtype=<class 'jax.numpy.float32'>)).contains
FAILED tests/test_core_and_wrappers.py::test_pixel_and_object_centric_wrapper[defender] - AssertionError: Object observation is not contained in the object space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(Array([[200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n          3.       ,  71.055275 ,   5.8158674...       ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32))
 +    where contains = Box(low=0.0, high=[[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n  2.550e+02 2.550e+02 2.550e...+02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>).contains
FAILED tests/test_environment_compatibility.py::TestWrapperCompatibility::test_wrapped_reset_and_step[Atari-defender] - AssertionError: Wrapped observation should be contained in wrapper's space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array([200, 200, 200, 200], dtype=int32), y=Array([80, 80, 80, 80], dtype=...e=float32), laser_x=Array([187., 187., 187., 187.], dtype=float32), laser_y=Array([83., 83., 83., 83.], dtype=float32)))
 +    where contains = Dict(score: Box(low=0, high=1000000, shape=(4,), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=409..., dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(4,), dtype=<class 'jax.numpy.float32'>)).contains
FAILED tests/test_environment_compatibility.py::TestWrapperCompatibility::test_wrapped_reset_and_step[ObjectCentric-defender] - AssertionError: Wrapped observation should be contained in wrapper's space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(Array([[200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n          3.       ,  71.055275 ,   5.8158674...       ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32))
 +    where contains = Box(low=0.0, high=[[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n  2.550e+02 2.550e+02 2.550e...+02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>).contains
FAILED tests/test_environment_compatibility.py::TestWrapperCompatibility::test_wrapped_reset_and_step[PixelAndObjectCentric-defender] - AssertionError: Wrapped observation should be contained in wrapper's space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains((Array([[[[  0,   0,   0],\n         [  0,   0,   0],\n         [  0,   0,   0],\n         ...,\n         [  0,   0,   0],...      ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32)))
 +    where contains = Tuple(Box(low=0, high=255, shape=(4, 210, 160, 3), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[[1.000e+06 4.0...02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>)).contains
FAILED tests/test_environment_compatibility.py::TestWrapperCompatibility::test_wrapped_reset_and_step[FlattenedObjectCentric-defender] - AssertionError: Wrapped observation should be contained in wrapper's space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(Array([200.       ,  80.       ,   7.       ,   5.       ,   0.       ,\n         3.       ,  71.055275 ,   5.8158674, ...    ,   0.       ,   0.       ,   0.       ,\n         0.       ,   1.       , 187.       ,  83.       ], dtype=float32))
 +    where contains = Box(low=0.0, high=[1.000e+06 4.096e+04 5.376e+04 1.600e+02 2.100e+02 9.900e+01 2.550e+02\n 2.550e+02 2.550e+02 2.550e+0...550e+02 1.000e+00 6.400e+02 1.350e+02 1.000e+00\n 6.400e+02 1.350e+02], shape=(744,), dtype=<class 'jax.numpy.float32'>).contains
FAILED tests/test_environment_compatibility.py::TestWrapperCompatibility::test_wrapped_reset_and_step[LoggedFlattenedPixelAndObject-defender] - AssertionError: Wrapped observation should be contained in wrapper's space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains((Array([  0.,   0.,   0., ..., 198., 108.,  58.], dtype=float32), Array([200.       ,  80.       ,   7.       ,   5.  ...   ,   0.       ,   0.       ,   0.       ,\n         0.       ,   1.       , 187.       ,  83.       ], dtype=float32)))
 +    where contains = Tuple(Box(low=0, high=255, shape=(403200,), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[1.000e+06 4.096e+04 5...50e+02 1.000e+00 6.400e+02 1.350e+02 1.000e+00\n 6.400e+02 1.350e+02], shape=(744,), dtype=<class 'jax.numpy.float32'>)).contains
FAILED tests/test_environment_compatibility.py::TestWrapperCompatibility::test_wrapped_reset_and_step[MultiRewardLogged-defender] - AssertionError: Wrapped observation should be contained in wrapper's space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains((Array([[[[  0,   0,   0],\n         [  0,   0,   0],\n         [  0,   0,   0],\n         ...,\n         [  0,   0,   0],...      ,\n          0.       ,   0.       ,   0.       ,   1.       , 187.       ,\n         83.       ]], dtype=float32)))
 +    where contains = Tuple(Box(low=0, high=255, shape=(4, 210, 160, 3), dtype=<class 'jax.numpy.uint8'>), Box(low=0.0, high=[[1.000e+06 4.0...02 1.000e+00 6.400e+02\n  1.350e+02 1.000e+00 6.400e+02 1.350e+02]], shape=(4, 186), dtype=<class 'jax.numpy.float32'>)).contains
FAILED tests/test_core_and_wrappers.py::test_flatten_observation_wrapper_space_structure[defender] - AssertionError: Observation leaf with shape (600,) not contained in space with shape (600,)
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(Array([ 71.055275 ,   5.8158674,   1.       ,   0.       ,   0.       ,\n       403.7155   ,  60.929142 ,   1.       , ...   0.       ,   0.       ,\n         0.       ,   0.       ,   0.       ,   0.       ,   0.       ],      dtype=float32))
 +    where contains = Box(low=0.0, high=255.0, shape=(600,), dtype=<class 'jax.numpy.float32'>).contains
FAILED tests/test_core_and_wrappers.py::test_native_downscaling_hot_swap[defender] - Failed: Game renderer likely hasn't updated its __init__ to accept 'config'. Error: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
FAILED tests/test_core_and_wrappers.py::test_native_downscaling_grayscale[defender] - TypeError: DefenderRenderer.__init__() got an unexpected keyword argument 'config'
FAILED tests/test_environment_compatibility.py::TestAdvancedWrapperFeatures::test_flatten_observation_wrapper_space_structure[defender] - AssertionError: Flattened observation should be contained in space
assert Array(False, dtype=bool)
 +  where Array(False, dtype=bool) = contains(DefenderObservation(player=EntityPosition(x=Array([200., 200., 200., 200.], dtype=float32), y=Array([80., 80., 80., 80...e=float32), laser_x=Array([187., 187., 187., 187.], dtype=float32), laser_y=Array([83., 83., 83., 83.], dtype=float32)))
 +    where contains = Dict(score: Box(low=0, high=1000000, shape=(4,), dtype=<class 'jax.numpy.int32'>), player: Dict(x: Box(low=0, high=409..., dtype=<class 'jax.numpy.float32'>), laser_y: Box(low=0.0, high=135.0, shape=(4,), dtype=<class 'jax.numpy.float32'>)).contains
====== 13 failed, 96 passed, 36 skipped, 15 warnings in 584.14s (0:09:44) ======

bankheist ❌
============================= test session starts ==============================
platform linux -- Python 3.11.15, pytest-8.4.2, pluggy-1.6.0
rootdir: /home/runner/work/JAXAtari/JAXAtari
configfile: pyproject.toml
plugins: github-actions-annotate-failures-0.4.0, jaxtyping-0.3.9, sugar-1.1.1, xdist-3.8.0, syrupy-4.9.1
created: 2/2 workers
2 workers [145 items]

.::error file=tests/test_all_mods.py,line=188::TestModExecution.test_mod_runs_reset_and_10_steps[bankheist-random_spawns-individual]%0A%0AFailed: step() failed at step 0 with mod 'random_spawns': 'BankHeistState' object has no attribute 'current_diagonal_priority'
::error file=tests/test_all_mods.py,line=188::TestModExecution.test_mod_runs_reset_and_10_steps[bankheist-random_spawns-individual]%0A%0AFailed: step() failed at step 0 with mod 'random_spawns': 'BankHeistState' object has no attribute 'current_diagonal_priority'
F......s..::error file=tests/test_all_mods.py,line=809::TestDatatypeConsistency.test_datatype_consistency_across_operations[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_all_mods.py,line=809::TestDatatypeConsistency.test_datatype_consistency_across_operations[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F::error file=tests/test_all_mods.py,line=396::TestModWithWrappers.test_pixel_native_downscaling_does_not_crash_modded_env[bankheist-random_spawns-individual]%0A%0AFailed: reset() with PixelWrapper+native_downscaling failed for mod 'random_spawns': 'BankHeistState' object has no attribute 'current_diagonal_priority'
::error file=tests/test_all_mods.py,line=396::TestModWithWrappers.test_pixel_native_downscaling_does_not_crash_modded_env[bankheist-random_spawns-individual]%0A%0AFailed: reset() with PixelWrapper+native_downscaling failed for mod 'random_spawns': 'BankHeistState' object has no attribute 'current_diagonal_priority'
F::error file=tests/test_core_and_wrappers.py,line=30::test_pixel_obs_wrapper_with_stacked_frames[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_core_and_wrappers.py,line=30::test_pixel_obs_wrapper_with_stacked_frames[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F.::warning file=.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
::warning file=.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
::error file=tests/test_core_and_wrappers.py,line=61::test_pixel_and_object_centric_wrapper[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_core_and_wrappers.py,line=61::test_pixel_and_object_centric_wrapper[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F::error file=tests/test_core_and_wrappers.py,line=107::test_object_centric_wrapper[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_core_and_wrappers.py,line=107::test_object_centric_wrapper[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F::error file=tests/test_core_and_wrappers.py,line=130::test_log_wrapper[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_core_and_wrappers.py,line=130::test_log_wrapper[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F.::error file=tests/test_core_and_wrappers.py,line=189::test_multi_reward_log_wrapper[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_core_and_wrappers.py,line=189::test_multi_reward_log_wrapper[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F.::error file=tests/test_core_and_wrappers.py,line=260::test_flatten_observation_wrapper[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_core_and_wrappers.py,line=260::test_flatten_observation_wrapper[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F.::error file=tests/test_core_and_wrappers.py,line=320::test_log_wrapper_with_flatten_observation[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_core_and_wrappers.py,line=320::test_log_wrapper_with_flatten_observation[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F::error file=tests/test_core_and_wrappers.py,line=351::test_flatten_observation_wrapper_space_structure[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_core_and_wrappers.py,line=351::test_flatten_observation_wrapper_space_structure[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F.::error file=tests/test_core_and_wrappers.py,line=439::test_atari_wrapper_features_and_pixel_preprocessing[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_core_and_wrappers.py,line=439::test_atari_wrapper_features_and_pixel_preprocessing[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F::error file=tests/test_core_and_wrappers.py,line=499::test_native_downscaling_hot_swap[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_core_and_wrappers.py,line=499::test_native_downscaling_hot_swap[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F::error file=tests/test_all_mods.py,line=605::TestModifications.test_environment_works_after_mods[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_all_mods.py,line=605::TestModifications.test_environment_works_after_mods[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F.....::error file=tests/test_core_and_wrappers.py,line=561::test_native_downscaling_grayscale[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_core_and_wrappers.py,line=561::test_native_downscaling_grayscale[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F....::error file=tests/test_environment_compatibility.py,line=145::TestBasicAPI.test_step[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_environment_compatibility.py,line=145::TestBasicAPI.test_step[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F.::error file=tests/test_environment_compatibility.py,line=181::TestBasicAPI.test_determinism[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_environment_compatibility.py,line=181::TestBasicAPI.test_determinism[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F.::error file=tests/test_environment_compatibility.py,line=203::TestBasicAPI.test_render[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'pending_police_scores'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_environment_compatibility.py,line=203::TestBasicAPI.test_render[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'pending_police_scores'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F::error file=tests/test_environment_compatibility.py,line=226::TestBasicAPI.test_episode_completion[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_environment_compatibility.py,line=226::TestBasicAPI.test_episode_completion[bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F.::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[Atari-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[Atari-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F.::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[Pixel-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[Pixel-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F.::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[ObjectCentric-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[ObjectCentric-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F.::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[PixelAndObjectCentric-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[PixelAndObjectCentric-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F..::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[FlattenedObjectCentric-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[FlattenedObjectCentric-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F.::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[NormalizedPixel-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[NormalizedPixel-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F.::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[LoggedFlattenedPixelAndObject-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[LoggedFlattenedPixelAndObject-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F.::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[MultiRewardLogged-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_environment_compatibility.py,line=307::TestWrapperCompatibility.test_wrapped_reset_and_step[MultiRewardLogged-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F::error file=tests/test_environment_compatibility.py,line=445::TestWrapperCompatibility.test_wrapper_determinism[Atari-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_environment_compatibility.py,line=445::TestWrapperCompatibility.test_wrapper_determinism[Atari-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F::error file=tests/test_environment_compatibility.py,line=337::TestWrapperCompatibility.test_observation_shape_and_type[Atari-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_environment_compatibility.py,line=337::TestWrapperCompatibility.test_observation_shape_and_type[Atari-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F::error file=tests/test_environment_compatibility.py,line=445::TestWrapperCompatibility.test_wrapper_determinism[Pixel-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_environment_compatibility.py,line=445::TestWrapperCompatibility.test_wrapper_determinism[Pixel-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F::error file=tests/test_environment_compatibility.py,line=337::TestWrapperCompatibility.test_observation_shape_and_type[Pixel-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error file=tests/test_environment_compatibility.py,line=337::TestWrapperCompatibility.test_observation_shape_and_type[Pixel-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
F::error file=tests/test_environment_compatibility.py,line=445::TestWrapperCompatibility.test_wrapper_determinism[ObjectCentric-bankheist]%0A%0AAttributeError: 'BankHeistState' object has no attribute 'current_diagonal_priority'%0A--------------------%0AFor simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.
::error fil...*[Comment body truncated]*

@dominikmandok

Copy link
Copy Markdown
Collaborator

New PR: #268

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants