code: def from_file(cls, path, **kwargs):
  		
  		LOG.debug('creating %s from "%s"', cls, path)
  
  		# the filename will be the default slug - can be overridden later
  		kwargs['slug'] = os.path.splitext(os.path.basename(path))[0]
  
  		# TODO: ideally this should be part of the Post class.
  		# if a pubdate isn't explicitly passed, get it from the file metadata
  		# instead. note that it might still be overriden later on while reading
  		# the file contents.
  		if issubclass(cls, Post) and not kwargs.get('pubdate'):
  			# you would think creation always comes before modification, but you
  			# can manually modify a file's modification date to one earlier than
  			# the creation date. this lets you set a post's pubdate by running
  			# the command `touch`. we support this behaviour by simply finding
  			# the chronologically earliest date of creation and modification.
  			timestamp = min(os.path.getctime(path), os.path.getmtime(path))
  			kwargs['pubdate'] = datetime.fromtimestamp(timestamp)
  
  		with open(path, 'r') as file:
  			entry = cls.from_string(file.read(), **kwargs)
  
  		return entry
docs: Given a markdown file, get an Entry object.