code: def _unpack_observation(self, obs_batch):
          
          unpacked = _unpack_obs(
              np.array(obs_batch),
              self.observation_space.original_space,
              tensorlib=np)
          if self.has_action_mask:
              obs = np.concatenate(
                  [o["obs"] for o in unpacked],
                  axis=1).reshape([len(obs_batch), self.n_agents, self.obs_size])
              action_mask = np.concatenate(
                  [o["action_mask"] for o in unpacked], axis=1).reshape(
                      [len(obs_batch), self.n_agents, self.n_actions])
          else:
              obs = np.concatenate(
                  unpacked,
                  axis=1).reshape([len(obs_batch), self.n_agents, self.obs_size])
              action_mask = np.ones(
                  [len(obs_batch), self.n_agents, self.n_actions])
          return obs, action_mask
docs: Unpacks the action mask / tuple obs from agent grouping.
  
          Returns:
              obs (Tensor): flattened obs tensor of shape [B, n_agents, obs_size]
              mask (Tensor): action mask, if any