import GutterColor.settings as settings

class Clean:
  """Clean up the cache and generated icons"""

  def __init__(self, view):
    pass

import GutterColor.settings as settings
from os import walk, remove, path, listdir
from shutil import rmtree
from threading import Thread

class Clean(Thread):
  """Clean up the cache and generated icons"""

  def __init__(self, files):
    Thread.__init__(self)
    self.files = files

  def run(self):
    self.remove_folders()
    self.remove_files()


  def folder_ids(self, name):
    """Return all the open folder ids"""
    name = name.split('/')[-1]
    return int(name) if not name == 'icons' else None


  def file_ids(self, name):
    """Return all file ids"""
    name = name.split('/')[-1]
    return int(name) if not name == 'icons' else None


  def remove_folders(self):
    """Remove all the icon folders which are not currently open"""
    # Get all the folder ids
    folders = list(filter(None, map(self.folder_ids, [x[0] for x in walk(settings.ICON_PATH)])))
    # Delete the folders
    for folder in folders:
      if folder not in self.files:
        rmtree(path.join(settings.ICON_PATH, str(folder)))


  def remove_files(self):
    """Remove all the cached files which are not currently open"""
    files = [ f for f in listdir(settings.CACHE_PATH) if path.isfile(path.join(settings.CACHE_PATH,f)) ]
    for f in files:
      if f == '.keep': pass
      if int(f) not in self.files:
        remove(path.join(settings.CACHE_PATH, f))

Add Clean class to remove files/folders.
Add Clean class to remove files/folders.

  import GutterColor.settings as settings
+ from os import walk, remove, path, listdir
+ from shutil import rmtree
+ from threading import Thread
  
- class Clean:
+ class Clean(Thread):
    """Clean up the cache and generated icons"""
  
-   def __init__(self, view):
+   def __init__(self, files):
-     pass
+     Thread.__init__(self)
+     self.files = files
  
+   def run(self):
+     self.remove_folders()
+     self.remove_files()
+ 
+ 
+   def folder_ids(self, name):
+     """Return all the open folder ids"""
+     name = name.split('/')[-1]
+     return int(name) if not name == 'icons' else None
+ 
+ 
+   def file_ids(self, name):
+     """Return all file ids"""
+     name = name.split('/')[-1]
+     return int(name) if not name == 'icons' else None
+ 
+ 
+   def remove_folders(self):
+     """Remove all the icon folders which are not currently open"""
+     # Get all the folder ids
+     folders = list(filter(None, map(self.folder_ids, [x[0] for x in walk(settings.ICON_PATH)])))
+     # Delete the folders
+     for folder in folders:
+       if folder not in self.files:
+         rmtree(path.join(settings.ICON_PATH, str(folder)))
+ 
+ 
+   def remove_files(self):
+     """Remove all the cached files which are not currently open"""
+     files = [ f for f in listdir(settings.CACHE_PATH) if path.isfile(path.join(settings.CACHE_PATH,f)) ]
+     for f in files:
+       if f == '.keep': pass
+       if int(f) not in self.files:
+         remove(path.join(settings.CACHE_PATH, f))
+ 
Add Clean class to remove files/folders.
## Code Before:
import GutterColor.settings as settings

class Clean:
  """Clean up the cache and generated icons"""

  def __init__(self, view):
    pass

## Instruction:
Add Clean class to remove files/folders.
## Code After:
import GutterColor.settings as settings
from os import walk, remove, path, listdir
from shutil import rmtree
from threading import Thread

class Clean(Thread):
  """Clean up the cache and generated icons"""

  def __init__(self, files):
    Thread.__init__(self)
    self.files = files

  def run(self):
    self.remove_folders()
    self.remove_files()


  def folder_ids(self, name):
    """Return all the open folder ids"""
    name = name.split('/')[-1]
    return int(name) if not name == 'icons' else None


  def file_ids(self, name):
    """Return all file ids"""
    name = name.split('/')[-1]
    return int(name) if not name == 'icons' else None


  def remove_folders(self):
    """Remove all the icon folders which are not currently open"""
    # Get all the folder ids
    folders = list(filter(None, map(self.folder_ids, [x[0] for x in walk(settings.ICON_PATH)])))
    # Delete the folders
    for folder in folders:
      if folder not in self.files:
        rmtree(path.join(settings.ICON_PATH, str(folder)))


  def remove_files(self):
    """Remove all the cached files which are not currently open"""
    files = [ f for f in listdir(settings.CACHE_PATH) if path.isfile(path.join(settings.CACHE_PATH,f)) ]
    for f in files:
      if f == '.keep': pass
      if int(f) not in self.files:
        remove(path.join(settings.CACHE_PATH, f))
