docstr: Return Dictionary of files for experiment name or query.
  
  Returns a list of one dictionary per matched experiment. The
  dictionary is of the following structure
  
      {
        'exp_name': 'scascasc',
        'exp_id': 'dqwdqdqwf',
        'date': datatime_object,
        'sources': [ {'filename': filehandle}, ..., ],
        'resources': [ {'filename': filehandle}, ..., ],
        'artifacts': [ {'filename': filehandle}, ..., ]
      }
docstr_tok: ["Return","Dictionary","of","files","for","experiment","name","or","query",".","Returns","a","list","of","one","dictionary","per","matched","experiment",".","The","dictionary","is","of","the","following","structure","{","'exp_name","'",":","'scascasc","'",",","'exp_id","'",":","'dqwdqdqwf","'",",","'date","'",":","datatime_object",",","'sources","'",":","[","{","'filename","'",":","filehandle","}",",","...",",","]",",","'resources","'",":","[","{","'filename","'",":","filehandle","}",",","...",",","]",",","'artifacts","'",":","[","{","'filename","'",":","filehandle","}",",","...",",","]","}"]
code: def fetch_files(self, exp_name=None, query=None, indices=None):
      """Return Dictionary of files for experiment name or query.
  
      Returns a list of one dictionary per matched experiment. The
      dictionary is of the following structure
  
          {
            'exp_name': 'scascasc',
            'exp_id': 'dqwdqdqwf',
            'date': datatime_object,
            'sources': [ {'filename': filehandle}, ..., ],
            'resources': [ {'filename': filehandle}, ..., ],
            'artifacts': [ {'filename': filehandle}, ..., ]
          }
  
      """
      entries = self.fetch_metadata(exp_name, query, indices)
  
      all_matched_entries = []
      for ent in entries:
          rec = dict(
              exp_name=ent["experiment"]["name"],
              exp_id=ent["_id"],
              date=ent["start_time"],
          )
  
          source_files = {
              x[0]: x[2] for x in ent["experiment"]["sources"]
          }
          resource_files = {x[0]: x[2] for x in ent["resources"]}
          artifact_files = {x[0]: x[3] for x in ent["artifacts"]}
  
          if source_files:
              rec["sources"] = source_files
          if resource_files:
              rec["resources"] = resource_files
          if artifact_files:
              rec["artifacts"] = artifact_files
  
          all_matched_entries.append(rec)
  
      return all_matched_entries
  
imports: from __future__ import division, print_function, unicode_literals, absolute_import
  import os
  import textwrap
  import uuid
  from collections import OrderedDict
  import warnings
  from sacred.__about__ import __version__
  from sacred.commandline_options import cli_option
  from sacred.observers import RunObserver
label_desc: Use image node_id 3 for calling the TinyDbReader obj's underlying member method code with example usage: obj.fetch_files(exp_name, query, indices) and returns: all_matched_entries