.. link: .. description: .. tags: .. date: 2013/08/18 00:00:00 .. title: NINJA-IDE .. slug: plugins_manager .. class:: alert alert-info pull-top .. contents:: *Module:* `plugins_manager.py `_ API =============================================================================================== No description. *Imports:* ------------ - `webbrowser `_ - `ninja_ide.tools.logger.NinjaLogger `_ - `PyQt4.QtGui.QDialog `_ - `PyQt4.QtGui.QFileDialog `_ - `PyQt4.QtGui.QFormLayout `_ - `PyQt4.QtGui.QHBoxLayout `_ - `PyQt4.QtGui.QIcon `_ - `PyQt4.QtGui.QLabel `_ - `PyQt4.QtGui.QLineEdit `_ - `PyQt4.QtGui.QMessageBox `_ - `PyQt4.QtGui.QPlainTextEdit `_ - `PyQt4.QtGui.QPushButton `_ - `PyQt4.QtGui.QSizePolicy `_ - `PyQt4.QtGui.QSpacerItem `_ - `PyQt4.QtGui.QTabWidget `_ - `PyQt4.QtGui.QTableWidget `_ - `PyQt4.QtGui.QTextBrowser `_ - `PyQt4.QtCore.QThread `_ - `PyQt4.QtGui.QVBoxLayout `_ - `PyQt4.QtGui.QWidget `_ - `PyQt4.QtCore.Qt `_ - `PyQt4.QtCore.SIGNAL `_ - `__future__.absolute_import `_ - `copy.copy `_ - `ninja_ide.core.file_handling.file_manager `_ - `ninja_ide.core.plugin_manager `_ - `ninja_ide.resources `_ - `ninja_ide.tools.ui_tools `_ - `__future__.unicode_literals `_ - `distutils.version `_ *Global Attributes:* ---------------------- - `HTML_STYLE [at ln:55] `_ - `logger [at ln:53] `_ ---- *Global Functions:* --------------------- *Function:* `_format_for_table(plugins) [at ln:77] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def _format_for_table(plugins): No description. ---- *Function:* `_get_plugin(plugin_name, plugin_list) [at ln:68] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def _get_plugin(plugin_name, plugin_list): No description. ---- *Class:* `InstalledWidget(QWidget) `_ ------------------------------------------------------------------------------------------------------------------------------------------------- .. code:: python class InstalledWidget(QWidget): | This widget show the installed plugins *Attributes* ~~~~~~~~~~~~~~ - `_installed [at ln:414] `_ - `_parent [at ln:373] `_ - `_table [at ln:376] `_ *Function:* `__init__(parent, installed) [at ln:371] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def __init__(parent, installed): No description. ---- *Function:* `_show_item_description() [at ln:392] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def _show_item_description(): No description. ---- *Function:* `_uninstall_plugins() [at ln:408] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def _uninstall_plugins(): No description. ---- *Function:* `add_table_items(plugs) [at ln:402] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def add_table_items(plugs): No description. ---- *Function:* `remove_item(plugin_name) [at ln:398] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def remove_item(plugin_name): No description. ---- *Function:* `reset_table(installed) [at ln:413] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def reset_table(installed): No description. ---- *Class:* `DependenciesHelpDialog(QDialog) `_ -------------------------------------------------------------------------------------------------------------------------------------------------------- .. code:: python class DependenciesHelpDialog(QDialog): No description. *Attributes* ~~~~~~~~~~~~~~ - `_editor [at ln:595] `_ *Function:* `__init__(requirements_dict) [at ln:586] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def __init__(requirements_dict): No description. ---- *Class:* `ManualInstallWidget(QWidget) `_ ----------------------------------------------------------------------------------------------------------------------------------------------------- .. code:: python class ManualInstallWidget(QWidget): No description. *Attributes* ~~~~~~~~~~~~~~ - `_btnFilePath [at ln:435] `_ - `_btnInstall [at ln:445] `_ - `_parent [at ln:425] `_ - `_txtFilePath [at ln:434] `_ - `_txtName [at ln:428] `_ - `_txtVersion [at ln:429] `_ *Function:* `__init__(parent) [at ln:423] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def __init__(parent): No description. ---- *Function:* `_load_plugin_path() [at ln:455] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def _load_plugin_path(): No description. ---- *Function:* `install_plugin() [at ln:460] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def install_plugin(): No description. ---- *Class:* `PluginsManagerWidget(QDialog) `_ ----------------------------------------------------------------------------------------------------------------------------------------------------- .. code:: python class PluginsManagerWidget(QDialog): No description. *Attributes* ~~~~~~~~~~~~~~ - `_community_available [at ln:108] `_ - `_loading [at ln:146] `_ - `_locals [at ln:109] `_ - `_oficial_available [at ln:107] `_ - `_requirements [at ln:112] `_ - `_tabs [at ln:90] `_ - `_txt_data [at ln:92] `_ - `_updates [at ln:110] `_ - `overlay [at ln:104] `_ - `plug [at ln:234] `_ - `runnable [at ln:236] `_ - `thread [at ln:115] `_ *Function:* `__init__(parent) [at ln:84] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def __init__(parent): No description. ---- *Function:* `_after_download_plugin(plugin) [at ln:159] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def _after_download_plugin(plugin): No description. ---- *Function:* `_after_manual_install_plugin(plugin) [at ln:150] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def _after_manual_install_plugin(plugin): No description. ---- *Function:* `_after_uninstall_plugin(plugin) [at ln:169] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def _after_uninstall_plugin(plugin): No description. ---- *Function:* `_load_plugins_data() [at ln:180] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def _load_plugins_data(): No description. ---- *Function:* `_open_link(url) [at ln:138] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def _open_link(url): No description. ---- *Function:* `_reload_plugins() [at ln:144] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def _reload_plugins(): No description. ---- *Function:* `download_plugins(plugs) [at ln:201] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def download_plugins(plugs): | Install ---- *Function:* `install_plugins_manually(plug) [at ln:211] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def install_plugins_manually(plug): | Install plugin from local zip. ---- *Function:* `mark_as_available(plugs) [at ln:219] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def mark_as_available(plugs): | Uninstall ---- *Function:* `reset_installed_plugins() [at ln:239] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def reset_installed_plugins(): No description. ---- *Function:* `resizeEvent(event) [at ln:244] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def resizeEvent(event): No description. ---- *Function:* `show_plugin_info(data) [at ln:131] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def show_plugin_info(data): No description. ---- *Function:* `update_plugin(plugs) [at ln:229] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def update_plugin(plugs): | Update ---- *Class:* `AvailableWidget(QWidget) `_ ------------------------------------------------------------------------------------------------------------------------------------------------- .. code:: python class AvailableWidget(QWidget): No description. *Attributes* ~~~~~~~~~~~~~~ - `_available [at ln:300] `_ - `_parent [at ln:299] `_ - `_table [at ln:302] `_ *Function:* `__init__(parent, available) [at ln:297] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def __init__(parent, available): No description. ---- *Function:* `_install_external() [at ln:346] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def _install_external(): No description. ---- *Function:* `_install_plugins() [at ln:327] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def _install_plugins(): No description. ---- *Function:* `_show_item_description() [at ln:321] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def _show_item_description(): No description. ---- *Function:* `add_table_items(plugs) [at ln:359] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def add_table_items(plugs): No description. ---- *Function:* `remove_item(plugin_name) [at ln:342] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def remove_item(plugin_name): No description. ---- *Class:* `UpdatesWidget(QWidget) `_ ----------------------------------------------------------------------------------------------------------------------------------------------- .. code:: python class UpdatesWidget(QWidget): | This widget show the availables plugins to update *Attributes* ~~~~~~~~~~~~~~ - `_parent [at ln:256] `_ - `_table [at ln:259] `_ - `_updates [at ln:257] `_ *Function:* `__init__(parent, updates) [at ln:254] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def __init__(parent, updates): No description. ---- *Function:* `_show_item_description() [at ln:274] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def _show_item_description(): No description. ---- *Function:* `_update_plugins() [at ln:280] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def _update_plugins(): No description. ---- *Class:* `ThreadLoadPlugins(QThread) `_ --------------------------------------------------------------------------------------------------------------------------------------------------- .. code:: python class ThreadLoadPlugins(QThread): | This thread makes the HEAVY work! *Attributes* ~~~~~~~~~~~~~~ - `_community_available [at ln:525] `_ - `_locals [at ln:526] `_ - `_manager [at ln:479] `_ - `_oficial_available [at ln:524] `_ - `_updates [at ln:527] `_ - `plug [at ln:487] `_ - `runnable [at ln:481] `_ *Function:* `__init__(manager) [at ln:477] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def __init__(manager): No description. ---- *Function:* `collect_data_thread() [at ln:489] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def collect_data_thread(): | Collects plugins info from NINJA-IDE webservice interface ---- *Function:* `download_plugins_thread() [at ln:529] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def download_plugins_thread(): | Downloads some plugins ---- *Function:* `manual_install_plugins_thread() [at ln:545] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def manual_install_plugins_thread(): | Install a plugin from the a file. ---- *Function:* `run() [at ln:485] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def run(): No description. ---- *Function:* `uninstall_plugins_thread() [at ln:562] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def uninstall_plugins_thread(): No description. ---- *Function:* `update_plugin_thread() [at ln:570] `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python def update_plugin_thread(): | Updates some plugins