code: def infer(self, limit=100, confidence=0.75):
          
          if self.__schema is None or self.__headers is None:
  
              # Infer (tabulator)
              if not self.__storage:
                  with self.__stream as stream:
                      if self.__schema is None:
                          self.__schema = Schema()
                          self.__schema.infer(stream.sample[:limit],
                                              headers=stream.headers,
                                              confidence=confidence)
                      if self.__headers is None:
                          self.__headers = stream.headers
  
              # Infer (storage)
              else:
                  descriptor = self.__storage.describe(self.__source)
                  if self.__schema is None:
                      self.__schema = Schema(descriptor)
                  if self.__headers is None:
                      self.__headers = self.__schema.field_names
  
          return self.__schema.descriptor
docs: https://github.com/frictionlessdata/tableschema-py#schema