title: How do I document :rtype: for a function that returns multiple possible data types?
body: <p>In a Python docstring how should one document the <code>:rtype:</code> for a function that can return multiple possible data types?</p>
  
  <p>For example, if a function can return <code>defaultdict</code> OR <code>dict</code> OR <code>list</code>, based on the functions parameters, how do you document this?</p>
  
  <p>Code example:</p>
  
  <pre><code>from collections import defaultdict
  
  def read_state(state_file, state_file_type='defaultdict'):
      """Deserialize state file or create empty state and return it.
  
      :param state_file: The path and file name of state file to read.
      :type state_file: str
      :param state_file_type: Data type in which state is stored.
      :type state_file_type: str
      :return: Current or new empty state.
      :rtype: ????? 
      """
      if os.path.exists(state_file):
          with open(state_file) as conf_fo:
              state = json.load(conf_fo)
      elif state_file_type == 'defaultdict':
          state = defaultdict(lambda: defaultdict(list))
      elif state_file_type == 'dict':
          state = {}
      elif state_file_type == 'list':
          state = []
      else:
          raise TypeError("State file type not defined.")
      return state
  </code></pre>