docstr: returns : (card_present, card_data)
docstr_tok: ["returns",":","(","card_present",",","card_data",")"]
code: def get_card_data(self, step, task, card_type, card_id=None):
      """
      returns : (card_present, card_data)
      """
      from metaflow.plugins.cards.exception import (
          CardNotPresentException,
      )
  
      try:
          card_iter = self.get_card(
              step, task, card_type, card_id=card_id
          )
      except CardNotPresentException:
          return False, None
      if card_id is None:
          # Return the first piece of card_data we can find.
          return True, card_iter[0].get_data()
      for card in card_iter:
          if card.id == card_id:
              return True, card.get_data()
      return False, None
  
imports: import json
  import os
  from metaflow.util import is_stringish
  from .None import MetaflowCheck, AssertArtifactFailed, AssertCardFailed, AssertLogFailed, assert_equals, assert_exception, truncate
label_desc: Use image node_id 10 for calling the MetadataCheck obj's underlying member method code with example usage: obj.get_card_data(step, task, card_type, card_id) and returns: False,  None, True,  card_iter, False,  None, True,  card