docs: def get_data(data_get, data_key, output_map, retries_left, argdict):
          """
          Function to use Python Pandas and / or Quandl to download a dataframe
          Insert resulting dataframe into output map
          """
          if retries_left <= 0:
              print(data_key + " Failed to download.")
              return
  
          """
          Identify type of function to use, insert result into output map
          """
          if "Quandl" in data_get.__module__:
              output_map[data_key] = data_get(data_key, authtoken=argdict["quandl_token"])
              return
  
          if "pandas.io.data" in data_get.__module__:
              # Verify we are not dealing with options
              if 'get_call_data' not in dir(data_get):
                  if ("source" and "begin" and "end") in argdict:
                      try:
                          output_map[data_key] = data_get(data_key, argdict["data_source"], argdict["begin"], argdict["end"])
                          return
                      except:
                          print(data_key + " failed to download. Retrying up to " + retries_left.__str__() + " more times...")
                  else:
                      try:
                          output_map[data_key] = data_get(data_key, argdict["data_source"])
                          return
                      except:
                          print(data_key + " failed to download. Retrying up to " + retries_left.__str__() + " more times...")
              # Verify we are dealing with options
              if 'get_call_data' in dir(data_get):
                  try:
                      # Note options data will always be pulled from yahoo
                      temp = data_get(data_key, 'yahoo')
                      # For simplicities sake assume user wants all options data
                      output_map[data_key] = temp.get_all_data()
                      return
                  except:
                      print(data_key + " options failed to download. Retrying up to " + retries_left.__str__() + " more times...")
                      print("WARNING: If your version of Pandas is not up to date this may fail!")
  
          """
          Retry at random times progressively slower in case of failures when number of retries remaining gets low
          """
          if (retries_left == 3):
              time.sleep(randrange(0, 4))
          if (retries_left == 2):
              time.sleep(randrange(2, 6))
          if (retries_left == 1):
              time.sleep(randrange(5, 15))
          get_data(data_get, data_key, output_map, (retries_left-1), argdict)