class_docstr: The `ComponentStore` object helps store the components for a single card in memory.
  This class has combination of a array/dictionary like interfaces to access/change the stored components.
  
  It exposes the `append` /`extend` methods (like an array) to add components.
  It also exposes the `__getitem__`/`__setitem__` methods (like a dictionary) to access the components by their Ids.
class_docstr_tok: ["The","`","ComponentStore","`","object","helps","store","the","components","for","a","single","card","in","memory",".","This","class","has","combination","of","a","array\/dictionary","like","interfaces","to","access\/change","the","stored","components",".","It","exposes","the","`","append","`","\/","`","extend","`","methods","(","like","an","array",")","to","add","components",".","It","also","exposes","the","`","__getitem__","`","\/","`","__setitem__","`","methods","(","like","a","dictionary",")","to","access","the","components","by","their","Ids","."]
docstr: The `_component_map` attribute is supposed to be a dictionary so that we can access the components by their ids.
  But we also want to maintain order in which components are inserted since all of these components are going to be visible on a UI.
  Since python3.6 dictionaries are ordered by default so we can use the default python `dict`.
  For python3.5 and below we need to use an OrderedDict since `dict`'s are not ordered by default.
docstr_tok: ["The","`","_component_map","`","attribute","is","supposed","to","be","a","dictionary","so","that","we","can","access","the","components","by","their","ids",".","But","we","also","want","to","maintain","order","in","which","components","are","inserted","since","all","of","these","components","are","going","to","be","visible","on","a","UI",".","Since","python3.6","dictionaries","are","ordered","by","default","so","we","can","use","the","default","python","`","dict","`",".","For","python3.5","and","below","we","need","to","use","an","OrderedDict","since","`","dict","`","'s","are","not","ordered","by","default","."]
code: def _set_component_map(self):
      """
      The `_component_map` attribute is supposed to be a dictionary so that we can access the components by their ids.
      But we also want to maintain order in which components are inserted since all of these components are going to be visible on a UI.
      Since python3.6 dictionaries are ordered by default so we can use the default python `dict`.
      For python3.5 and below we need to use an OrderedDict since `dict`'s are not ordered by default.
      """
      python_version = int(
          platform.python_version_tuple()[0]
      ) * 10 + int(platform.python_version_tuple()[1])
      if python_version < 36:
          self._component_map = OrderedDict()
      else:
          self._component_map = {}
  
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 1 for calling the ComponentStore obj's underlying member method code with example usage: obj._set_component_map() without return types