code: def get_md5sum(fname, chunk_size=1024):
      
  
      def iter_chunks(f):
          while True:
              chunk = f.read(chunk_size)
              if not chunk:
                  break
              yield chunk
  
      sig = hashlib.md5()
  
      with open(fname, 'rb') as f:
          for chunk in iter_chunks(f):
              sig.update(chunk)
  
          # data = f.read()
          # return hashlib.md5(data).hexdigest()
  
      return sig.hexdigest()
docs: Returns the MD5 checksum of a file.
  
      Args:
          fname (str): Filename
          chunk_size (Optional[int]): Size (in Bytes) of the chunks that should be
              read in at once. Increasing chunk size reduces the number of reads
              required, but increases the memory usage. Defaults to 1024.
  
      Returns:
          The MD5 checksum of the file, which is a string.