class_docstr: Dataclass for episode-level data.
  
  This holds the information for grounding turns (Goal calls, API Schemas), the rounds
  of User/System/API Implementation communications, as well as any extra metadata that
  is useful for the episode.
class_docstr_tok: ["Dataclass","for","episode-level","data",".","This","holds","the","information","for","grounding","turns","(","Goal","calls",",","API","Schemas",")",",","the","rounds","of","User\/System\/API","Implementation","communications",",","as","well","as","any","extra","metadata","that","is","useful","for","the","episode","."]
code: def __post_init__(self):
      self.api_schemas_utt = SerializationHelpers.list_of_maps_to_str(
          self.api_schemas_machine
      )
      self.goal_calls_machine = [
          call for call in self.goal_calls_machine if len(call) > 0
      ]
      self.goal_calls_utt = SerializationHelpers.list_of_maps_to_str(
          self.goal_calls_machine
      )
      # Add a done turn at the end
      self.rounds.append(TodStructuredRound(user_utt=STANDARD_DONE))
      if self.delex:
          accum_slots = (
              {}
          )  # separate since some slot values change as we go. Use this for delex first
          cum_slots = self.get_all_slots()
          for r in self.rounds:
              accum_slots.update(r.api_call_machine)
              accum_slots.update(r.api_resp_machine)
              r.sys_utt = SerializationHelpers.delex(
                  r.sys_utt, accum_slots
              )
              r.sys_utt = SerializationHelpers.delex(
                  r.sys_utt, cum_slots
              )
  
imports: from enum import Enum
  from typing import List, Dict
  from dataclasses import dataclass, field
  from collections.abc import Iterable
  from parlai.utils.misc import warn_once
label_desc: Use image node_id 1 for calling the TodStructuredEpisode obj's underlying member method code with example usage: obj.__post_init__() without return types