docstr: Finalizes this buffer by converting internal data lists into numpy arrays.
  
  Thereby, if the individual items in the list are complex (nested 2)
docstr_tok: ["Finalizes","this","buffer","by","converting","internal","data","lists","into","numpy","arrays",".","Thereby",",","if","the","individual","items","in","the","list","are","complex","(","nested","2",")"]
code: def finalize(self):
      """Finalizes this buffer by converting internal data lists into numpy arrays.
  
      Thereby, if the individual items in the list are complex (nested 2)
      """
      if not self.finalized:
          self.data = batch(self.data)
          self.finalized = True
  
imports: import logging
  from typing import List, Optional, Type, Union
  import gymnasium
  import numpy
  import tree
  from ray.rllib.env.env_context import EnvContext
  from ray.rllib.env.multi_agent_env import MultiAgentEnv
  from ray.rllib.env.wrappers.multi_agent_env_compatibility import MultiAgentEnvCompatibility
  from ray.rllib.utils.error import ERR_MSG_INVALID_ENV_DESCRIPTOR, ERR_MSG_OLD_GYM_API, EnvError
  from ray.rllib.utils.gym import check_old_gym_env
  from ray.rllib.utils.numpy import one_hot, one_hot_multidiscrete
  from ray.rllib.utils.spaces.space_utils import batch, get_dummy_batch_for_space, get_base_struct_from_space
  from ray.util import log_once
  from ray.util.annotations import PublicAPI
label_desc: Use image node_id 5 for calling the BufferWithInfiniteLookback obj's underlying member method code with example usage: obj.finalize() without return types