class_docstr: This class manages the card's state for a single card.
  - It uses the `ComponentStore` to manage the storage of the components
  - It exposes methods to add, remove and access the components.
  - It exposes a `refresh` method that will allow refreshing a card with new data
  for realtime(ish) updates.
  - The `CardComponentCollector` exposes convenience methods similar to this class for a default
  editable card. These methods include :
      - `append`
      - `extend`
      - `clear`
      - `refresh`
      - `components`
      - `__iter__`
  
  ## Usage Patterns :
  
  ```python
  current.card["mycardid"].append(component, id="comp123")
  current.card["mycardid"].extend([component])
  current.card["mycardid"].refresh(data) # refreshes the card with new data
  current.card["mycardid"].components["comp123"] # returns the component with id "comp123"
  current.card["mycardid"].components["comp123"].update()
  current.card["mycardid"].components.clear() # Wipe all the components
  del current.card["mycardid"].components["mycomponentid"] # Delete a component
  ```
class_docstr_tok: ["This","class","manages","the","card","'s","state","for","a","single","card",".","-","It","uses","the","`","ComponentStore","`","to","manage","the","storage","of","the","components","-","It","exposes","methods","to","add",",","remove","and","access","the","components",".","-","It","exposes","a","`","refresh","`","method","that","will","allow","refreshing","a","card","with","new","data","for","realtime","(","ish",")","updates",".","-","The","`","CardComponentCollector","`","exposes","convenience","methods","similar","to","this","class","for","a","default","editable","card",".","These","methods","include",":","-","`","append","`","-","`","extend","`","-","`","clear","`","-","`","refresh","`","-","`","components","`","-","`","__iter__","`","#","#","Usage","Patterns",":","``","`","python","current.card","[","``","mycardid","''","]",".append","(","component",",","id=","''","comp123","''",")","current.card","[","``","mycardid","''","]",".extend","(","[","component","]",")","current.card","[","``","mycardid","''","]",".refresh","(","data",")","#","refreshes","the","card","with","new","data","current.card","[","``","mycardid","''","]",".components","[","``","comp123","''","]","#","returns","the","component","with","id","``","comp123","''","current.card","[","``","mycardid","''","]",".components","[","``","comp123","''","]",".update","(",")","current.card","[","``","mycardid","''","]",".components.clear","(",")","#","Wipe","all","the","components","del","current.card","[","``","mycardid","''","]",".components","[","``","mycomponentid","''","]","#","Delete","a","component","``","`"]
code: def __iter__(self):
      return iter(self._components)
  
imports: from .card_modules import MetaflowCardComponent
  from .card_modules.basic import ErrorComponent, SectionComponent
  from .card_modules.components import UserComponent, create_component_id, StubComponent
  from .exception import ComponentOverwriteNotSupportedException
  from metaflow.metaflow_config import RUNTIME_CARD_RENDER_INTERVAL
  import uuid
  import json
  import platform
  from collections import OrderedDict
  import time
label_desc: Use image node_id 10 for calling the CardComponentManager obj's underlying member method code with example usage: obj.__iter__() and returns: iter