code: def validate(self, validator=None, skip_relations=False):
      
      validator = validation.make_validator(validator)
      self.log('Loading...')
      self.preload()
      # required
      required = [
        'agency',
        'stops',
        'routes',
        'trips',
        'stop_times',
        'calendar'
      ]
      for f in required:
        self.log("Validating required file: %s"%f)
        data = self.read(f)
        for i in data:
          i.validate(validator=validator)
          if skip_relations is False:
            i.validate_feed(validator=validator)
      # optional
      optional = [
        'calendar_dates',
        'fare_attributes',
        'fare_rules',
        'shapes',
        'frequencies',
        'transfers',
        'feed_info'
      ]
      for f in optional:
        self.log("Validating optional file: %s"%f)
        try:
          data = self.read(f)
        except KeyError, e:
          data = []
        for i in data:
          i.validate(validator=validator)
          if skip_relations is False:
            i.validate_feed(validator=validator)
      return validator
docs: Validate a GTFS
  
      :param validator: a ValidationReport
      :param (bool) skip_relations: skip validation of relations between entities (e.g. stop_times to stops)
      :return: