def _ParseAppInfoFromYaml(self, basepath, basename='app'):
    appyaml = self._ParseYamlFile(basepath, basename, appinfo_includes.Parse)
    if appyaml is None:
      self.parser.error('Directory does not contain an %s.yaml '
                        'configuration file.' % basename)

    orig_application = appyaml.application
    orig_server = appyaml.server
    orig_version = appyaml.version
    if self.options.app_id:
      appyaml.application = self.options.app_id
    if self.options.server_id:
      appyaml.server = self.options.server_id
    if self.options.version:
      appyaml.version = self.options.version
    if self.options.runtime:
      appyaml.runtime = self.options.runtime

    msg = 'Application: %s' % appyaml.application
    if appyaml.application != orig_application:
      msg += ' (was: %s)' % orig_application
    if self.action.function is 'Update':

      if (appyaml.server is not None and
          appyaml.server != appinfo.DEFAULT_SERVER):
        msg += '; server: %s' % appyaml.server
        if appyaml.server != orig_server:
          msg += ' (was: %s)' % orig_server

      msg += '; version: %s' % appyaml.version
      if appyaml.version != orig_version:
        msg += ' (was: %s)' % orig_version
    StatusUpdate(msg)
    return appyaml
Tests if an object is a collection. Strings don't count.
dataset/ETHPy150Open AppScale/appscale/AppServer/google/appengine/tools/appcfg.py/AppCfgApp._ParseAppInfoFromYaml--crossover with--dataset/ETHPy150Open kennethreitz/clint/clint/utils.py/is_collection