code: def folder_size(pth, ignore=None):
      
      if not os.path.isdir(pth):
          raise exc.FolderNotFound
  
      ignore = coerce_to_list(ignore)
  
      total = 0
      for root, _, names in os.walk(pth):
          paths = [os.path.realpath(os.path.join(root, nm)) for nm in names]
          for pth in paths[::-1]:
              if not os.path.exists(pth):
                  paths.remove(pth)
              elif match_pattern(pth, ignore):
                  paths.remove(pth)
          total += sum(os.stat(pth).st_size for pth in paths)
  
      return total
docs: Returns the total bytes for the specified path, optionally ignoring
      any files which match the 'ignore' parameter. 'ignore' can either be
      a single string pattern, or a list of such patterns.