docs: def scans(auth, label=None, scan_ids=None, project=None, experiment=None):
      '''
      Get scan information for a MR Session as a sequence of dictionaries.
  
      Example:
          >>> import yaxil
          >>> import json
          >>> auth = yaxil.XnatAuth(url='...', username='...', password='...')
          >>> for scan in yaxil.scans2(auth, 'AB1234C'):
          ...     print(json.dumps(scan, indent=2))
  
      :param auth: XNAT authentication object
      :type auth: :mod:`yaxil.XnatAuth`
      :param label: XNAT MR Session label
      :type label: str
      :param scan_ids: Scan numbers to return
      :type scan_ids: list
      :param project: XNAT MR Session project
      :type project: str
      :param experiment: YAXIL Experiment
      :type experiment: :mod:`yaxil.Experiment`
      :returns: Generator of scan data dictionaries
      :rtype: dict
      '''
      if experiment and (label or project):
          raise ValueError('cannot supply experiment with label or project')
      if experiment:
          label,project = experiment.label,experiment.project
      aid = accession(auth, label, project)
      path = '/data/experiments'
      params = {
          'xsiType': 'xnat:mrSessionData',
          'columns': ','.join(scans.columns.keys())
      }
      params['xnat:mrSessionData/ID'] = aid
      _,result = _get(auth, path, 'json', autobox=True, params=params)
      for result in result['ResultSet']['Result']:
          if scan_ids == None or result['xnat:mrscandata/id'] in scan_ids:
              data = dict()
              for k,v in iter(scans.columns.items()):
                  data[v] = result[k]
              yield data