docs: def verify_string_dxid(dxid, expected_classes):
      '''
      :param dxid: Value to verify as a DNAnexus ID of class *expected_class*
      :param expected_classes: Single string or list of strings of allowed classes of the ID, e.g. "file" or ["project", "container"]
      :type expected_classes: string or list of strings
      :raises: :exc:`~dxpy.exceptions.DXError` if *dxid* is not a string or is not a valid DNAnexus ID of the expected class
      '''
      if isinstance(expected_classes, basestring):
          expected_classes = [expected_classes]
      if not isinstance(expected_classes, list) or len(expected_classes) == 0:
          raise DXError('verify_string_dxid: expected_classes should be a string or list of strings')
      if not (isinstance(dxid, basestring) and
              re.match('^(' + '|'.join(expected_classes) + ')-[0-9a-zA-Z]{24}$', dxid)):
          if len(expected_classes) == 1:
              str_expected_classes = expected_classes[0]
          elif len(expected_classes) == 2:
              str_expected_classes = ' or '.join(expected_classes)
          else:
              str_expected_classes = ', '.join(expected_classes[:-1]) + ', or ' + expected_classes[-1]
  
          raise DXError('Invalid ID of class %s: %r' % (str_expected_classes, dxid))