text: # Note: The schema is stored in a .py file in order to take advantage of the
  # int() and float() type coercion functions. Otherwise it could easily stored as
  # as JSON or another serialized format.
  
  '''This schema has been changed compared to the Udacity schema,
   due to missing values for attributes 'user' and 'uid'.
   It makes sense to keep them in the schema for use of other OSM data.'''
  
  schema = {
      'node': {
          'type': 'dict',
          'schema': {
              'id': {'required': True, 'type': 'integer', 'coerce': int},
              'lat': {'required': True, 'type': 'float', 'coerce': float},
              'lon': {'required': True, 'type': 'float', 'coerce': float},
              'user': {'required': False, 'type': 'string'},
              'uid': {'required': False, 'type': 'integer', 'coerce': int},
              'version': {'required': True, 'type': 'string'},
              'changeset': {'required': True, 'type': 'integer', 'coerce': int},
              'timestamp': {'required': True, 'type': 'string'}
          }
      },
      'node_tags': {
          'type': 'list',
          'schema': {
              'type': 'dict',
              'schema': {
                  'id': {'required': True, 'type': 'integer', 'coerce': int},
                  'key': {'required': True, 'type': 'string'},
                  'value': {'required': True, 'type': 'string'},
                  'type': {'required': True, 'type': 'string'}
              }
          }
      },
      'way': {
          'type': 'dict',
          'schema': {
              'id': {'required': True, 'type': 'integer', 'coerce': int},
              'user': {'required': False, 'type': 'string'},
              'uid': {'required': False, 'type': 'integer', 'coerce': int},
              'version': {'required': True, 'type': 'string'},
              'changeset': {'required': True, 'type': 'integer', 'coerce': int},
              'timestamp': {'required': True, 'type': 'string'}
          }
      },
      'way_nodes': {
          'type': 'list',
          'schema': {
              'type': 'dict',
              'schema': {
                  'id': {'required': True, 'type': 'integer', 'coerce': int},
                  'node_id': {'required': True, 'type': 'integer', 'coerce': int},
                  'position': {'required': True, 'type': 'integer', 'coerce': int}
              }
          }
      },
      'way_tags': {
          'type': 'list',
          'schema': {
              'type': 'dict',
              'schema': {
                  'id': {'required': True, 'type': 'integer', 'coerce': int},
                  'key': {'required': True, 'type': 'string'},
                  'value': {'required': True, 'type': 'string'},
                  'type': {'required': True, 'type': 'string'}
              }
          }
      }
  }
  
  