From 41b602ec48e5dbb4e87631fd991ae45393e08a86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marta=20Marczykowska-G=C3=B3recka?= Date: Mon, 6 Nov 2017 20:36:09 +0100 Subject: [PATCH] Initial setup Initialize .pylintrc, put ignore in used files' headers. --- .pylintrc | 196 +++++++++++++++++++++++++++++++ qubesmanager/about.py | 1 + qubesmanager/backup.py | 1 + qubesmanager/backup_utils.py | 1 + qubesmanager/block.py | 1 + qubesmanager/clipboard.py | 1 + qubesmanager/informationnotes.py | 1 + qubesmanager/log_dialog.py | 1 + qubesmanager/releasenotes.py | 1 + qubesmanager/restore.py | 1 + qubesmanager/settings.py | 124 +++++++++---------- qubesmanager/table_widgets.py | 1 + 12 files changed, 268 insertions(+), 62 deletions(-) create mode 100644 .pylintrc diff --git a/.pylintrc b/.pylintrc new file mode 100644 index 0000000..d302bd9 --- /dev/null +++ b/.pylintrc @@ -0,0 +1,196 @@ +[MASTER] +persistent=no +ignore=tests + +[MESSAGES CONTROL] +# abstract-class-little-used: see http://www.logilab.org/ticket/111138 +# deprecated-method: +# enable again after disabling py-3.4.3 asyncio.ensure_future compat hack +disable= + abstract-class-little-used, + bad-continuation, + cyclic-import, + deprecated-method, + duplicate-code, + file-ignored, + fixme, + locally-disabled, + locally-enabled, + logging-format-interpolation, + missing-docstring, + star-args, + wrong-import-order + +[REPORTS] + +# Set the output format. Available formats are text, parseable, colorized, msvs +# (visual studio) and html +output-format=colorized + +#files-output=no +reports=yes + +[TYPECHECK] +#ignored-classes= + +ignore-mixin-members=yes +generated-members= + iter_entry_points, + Element,ElementTree,QName,SubElement,fromstring,parse,tostring, + +[BASIC] + +# List of builtins function names that should not be used, separated by a comma +bad-functions= + +# Regular expression which should only match correct module names +module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$ + +# Regular expression which should only match correct module level names +const-rgx=(([A-Za-z_][A-Za-z0-9_]*)|(__.*__))$ + +# Regular expression which should only match correct class names +class-rgx=([A-Z_][a-zA-Z0-9]+|TC_\d\d_[a-zA-Z0-9_]+)$ + +# Regular expression which should only match correct function names +function-rgx=[a-z_][a-z0-9_]{2,30}$ + +# Regular expression which should only match correct method names +method-rgx=[a-z_][a-z0-9_]{2,30}$ + +# Regular expression which should only match correct instance attribute names +attr-rgx=[a-z_][a-z0-9_]{2,30}$ + +# Regular expression which should only match correct argument names +argument-rgx=[a-z_][a-z0-9_]{2,30}$ + +# Regular expression which should only match correct variable names +variable-rgx=[a-z_][a-z0-9_]{2,30}$ + +# Regular expression which should only match correct list comprehension / +# generator expression variable names +inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$ + +# Good variable names which should always be accepted, separated by a comma +good-names=e,i,j,k,m,p,v,ex,Run,_,log,vm + +# Bad variable names which should always be refused, separated by a comma +bad-names=foo,bar,baz,toto,tutu,tata + +# Regular expression which should only match functions or classes name which do +# not require a docstring +no-docstring-rgx=__.*__ + + +[MISCELLANEOUS] + +# List of note tags to take in consideration, separated by a comma. +notes=FIXME,FIX,XXX,TODO + + +[FORMAT] + +# Maximum number of characters on a single line. +max-line-length=80 + +# Maximum number of lines in a module +max-module-lines=3000 + +# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 +# tab). +indent-string=' ' + + +[VARIABLES] + +# Tells whether we should check for unused import in __init__ files. +init-import=no + +# A regular expression matching the beginning of the name of dummy variables +# (i.e. not used). +dummy-variables-rgx=_|dummy + + +[SIMILARITIES] + +# Minimum lines number of a similarity. +min-similarity-lines=4 + +# Ignore comments when computing similarities. +ignore-comments=yes + +# Ignore docstrings when computing similarities. +ignore-docstrings=yes + + +[CLASSES] + +# List of method names used to declare (i.e. assign) instance attributes. +defining-attr-methods=__init__,__new__,setUp + +# List of valid names for the first argument in a class method. +valid-classmethod-first-arg=cls + + +[IMPORTS] + +# Deprecated modules which should not be used, separated by a comma +deprecated-modules=regsub,TERMIOS,Bastion,rexec + +# Create a graph of every (i.e. internal and external) dependencies in the +# given file (report RP0402 must not be disabled) +import-graph= + +# Create a graph of external dependencies in the given file (report RP0402 must +# not be disabled) +ext-import-graph= + +# Create a graph of internal dependencies in the given file (report RP0402 must +# not be disabled) +int-import-graph= + + +[DESIGN] + +# Maximum number of arguments for function / method +max-args=35 + +# Argument names that match this expression will be ignored. Default to name +# with leading underscore +ignored-argument-names=_.* + +# Maximum number of locals for function / method body +# Let's have max-args + 5 +max-locals=40 + +# Maximum number of return / yield for function / method body +max-returns=6 + +# Maximum number of branch for function / method body +# 4x the default value +max-branches=48 + +# Maximum number of statements in function / method body +# Double default +max-statements=100 + +# Maximum number of parents for a class (see R0901). +max-parents=7 + +# Maximum number of attributes for a class (see R0902). +max-attributes=15 + +# Minimum number of public methods for a class (see R0903). +min-public-methods=2 + +# Maximum number of public methods for a class (see R0904). +max-public-methods=100 + + +[EXCEPTIONS] + +# Exceptions that will emit a warning when being caught. Defaults to +# "Exception" +overgeneral-exceptions=Exception,EnvironmentError + +# vim: ft=conf diff --git a/qubesmanager/about.py b/qubesmanager/about.py index fb06102..280f820 100644 --- a/qubesmanager/about.py +++ b/qubesmanager/about.py @@ -1,5 +1,6 @@ #!/usr/bin/python2 # coding=utf-8 +# pylint: skip-file # # The Qubes OS Project, http://www.qubes-os.org # diff --git a/qubesmanager/backup.py b/qubesmanager/backup.py index bde407b..91821da 100644 --- a/qubesmanager/backup.py +++ b/qubesmanager/backup.py @@ -1,4 +1,5 @@ #!/usr/bin/python2 +# pylint: skip-file # # The Qubes OS Project, http://www.qubes-os.org # diff --git a/qubesmanager/backup_utils.py b/qubesmanager/backup_utils.py index 38b5931..aad4026 100644 --- a/qubesmanager/backup_utils.py +++ b/qubesmanager/backup_utils.py @@ -1,4 +1,5 @@ #!/usr/bin/python2 +# pylint: skip-file # # The Qubes OS Project, http://www.qubes-os.org # diff --git a/qubesmanager/block.py b/qubesmanager/block.py index a826a1e..e673123 100644 --- a/qubesmanager/block.py +++ b/qubesmanager/block.py @@ -1,5 +1,6 @@ #!/usr/bin/python2 # -*- coding: utf8 -*- +# pylint: skip-file # # The Qubes OS Project, http://www.qubes-os.org # diff --git a/qubesmanager/clipboard.py b/qubesmanager/clipboard.py index 00fe9f7..b0a4107 100644 --- a/qubesmanager/clipboard.py +++ b/qubesmanager/clipboard.py @@ -1,4 +1,5 @@ #!/usr/bin/python2 +# pylint: skip-file # # The Qubes OS Project, http://www.qubes-os.org # diff --git a/qubesmanager/informationnotes.py b/qubesmanager/informationnotes.py index b6aa946..23cb152 100644 --- a/qubesmanager/informationnotes.py +++ b/qubesmanager/informationnotes.py @@ -1,5 +1,6 @@ #!/usr/bin/python2 # coding=utf-8 +# pylint: skip-file # # The Qubes OS Project, http://www.qubes-os.org # diff --git a/qubesmanager/log_dialog.py b/qubesmanager/log_dialog.py index 6e7ced9..09d8f68 100644 --- a/qubesmanager/log_dialog.py +++ b/qubesmanager/log_dialog.py @@ -1,4 +1,5 @@ #!/usr/bin/python2 +# pylint: skip-file # # The Qubes OS Project, http://www.qubes-os.org # diff --git a/qubesmanager/releasenotes.py b/qubesmanager/releasenotes.py index 53b8752..c234a53 100644 --- a/qubesmanager/releasenotes.py +++ b/qubesmanager/releasenotes.py @@ -1,5 +1,6 @@ #!/usr/bin/python2 # coding=utf-8 +# pylint: skip-file # # The Qubes OS Project, http://www.qubes-os.org # diff --git a/qubesmanager/restore.py b/qubesmanager/restore.py index 552e3eb..c9e211b 100644 --- a/qubesmanager/restore.py +++ b/qubesmanager/restore.py @@ -1,4 +1,5 @@ #!/usr/bin/python2 +# pylint: skip-file # # The Qubes OS Project, http://www.qubes-os.org # diff --git a/qubesmanager/settings.py b/qubesmanager/settings.py index b30b8fc..496775b 100755 --- a/qubesmanager/settings.py +++ b/qubesmanager/settings.py @@ -43,12 +43,12 @@ from . import thread_monitor from .appmenu_select import AppmenuSelectManager from .backup_utils import get_path_for_vm -from .firewall import * +from . import firewall -from .ui_settingsdlg import * +from . import ui_settingsdlg from .bootfromdevice import main as bootfromdevice -class VMSettingsWindow(Ui_SettingsDialog, QDialog): +class VMSettingsWindow(ui_settingsdlg.Ui_SettingsDialog, firewall.QDialog): tabs_indices = collections.OrderedDict(( ('basic', 0), ('advanced', 1), @@ -75,8 +75,8 @@ class VMSettingsWindow(Ui_SettingsDialog, QDialog): assert (idx in range(self.tabWidget.count())) self.tabWidget.setCurrentIndex(idx) - self.connect(self.buttonBox, SIGNAL("accepted()"), self.save_and_apply) - self.connect(self.buttonBox, SIGNAL("rejected()"), self.reject) + self.connect(self.buttonBox, firewall.SIGNAL("accepted()"), self.save_and_apply) + self.connect(self.buttonBox, firewall.SIGNAL("rejected()"), self.reject) self.tabWidget.currentChanged.connect(self.current_tab_changed) @@ -92,18 +92,18 @@ class VMSettingsWindow(Ui_SettingsDialog, QDialog): ###### advanced tab self.__init_advanced_tab__() self.include_in_balancing.stateChanged.connect(self.include_in_balancing_state_changed) - self.connect(self.init_mem, SIGNAL("editingFinished()"), self.check_mem_changes) - self.connect(self.max_mem_size, SIGNAL("editingFinished()"), self.check_mem_changes) + self.connect(self.init_mem, firewall.SIGNAL("editingFinished()"), self.check_mem_changes) + self.connect(self.max_mem_size, firewall.SIGNAL("editingFinished()"), self.check_mem_changes) self.bootFromDeviceButton.clicked.connect(self.boot_from_cdrom_button_pressed) ###### firewall tab if self.tabWidget.isTabEnabled(self.tabs_indices['firewall']): - model = QubesFirewallRulesModel() + model = firewall.QubesFirewallRulesModel() try: model.set_vm(vm) self.set_fw_model(model) self.firewallModifiedOutsidelabel.setVisible(False) - except FirewallModifiedOutsideError as ex: + except firewall.FirewallModifiedOutsideError as ex: self.disable_all_fw_conf() self.newRuleButton.clicked.connect(self.new_rule_button_pressed) @@ -114,7 +114,7 @@ class VMSettingsWindow(Ui_SettingsDialog, QDialog): ####### devices tab self.__init_devices_tab__() - self.connect(self.dev_list, SIGNAL("selected_changed()"), self.devices_selection_changed) + self.connect(self.dev_list, firewall.SIGNAL("selected_changed()"), self.devices_selection_changed) ####### services tab self.__init_services_tab__() @@ -141,7 +141,7 @@ class VMSettingsWindow(Ui_SettingsDialog, QDialog): thread.daemon = True thread.start() - progress = QProgressDialog( + progress = firewall.QProgressDialog( self.tr("Applying settings to {0}...").format(self.vm.name), "", 0, 0) progress.setCancelButton(None) progress.setModal(True) @@ -154,9 +154,9 @@ class VMSettingsWindow(Ui_SettingsDialog, QDialog): progress.hide() if not t_monitor.success: - QMessageBox.warning(None, - self.tr("Error while changing settings for {0}!").format(self.vm.name), - self.tr("ERROR: {0}").format(t_monitor.error_msg)) + firewall.QMessageBox.warning(None, + self.tr("Error while changing settings for {0}!").format(self.vm.name), + self.tr("ERROR: {0}").format(t_monitor.error_msg)) self.done(0) @@ -210,9 +210,9 @@ class VMSettingsWindow(Ui_SettingsDialog, QDialog): netvm = self.vm.netvm if netvm is not None and \ not netvm.features.check_with_template('qubes-firewall', False): - QMessageBox.warning(None, - self.tr("VM configuration problem!"), - self.tr("The '{vm}' AppVM is network connected to " + firewall.QMessageBox.warning(None, + self.tr("VM configuration problem!"), + self.tr("The '{vm}' AppVM is network connected to " "'{netvm}', which does not support firewall!
" "You may edit the '{vm}' VM firewall rules, but these " "will not take any effect until you connect it to " @@ -236,7 +236,7 @@ class VMSettingsWindow(Ui_SettingsDialog, QDialog): def __init_basic_tab__(self): self.vmname.setText(self.vm.name) - self.vmname.setValidator(QRegExpValidator(QRegExp("[a-zA-Z0-9-]*", Qt.CaseInsensitive), None)) + self.vmname.setValidator(firewall.QRegExpValidator(firewall.QRegExp("[a-zA-Z0-9-]*", firewall.Qt.CaseInsensitive), None)) self.vmname.setEnabled(False) self.rename_vm_button.setEnabled(not self.vm.is_running()) self.delete_vm_button.setEnabled(not self.vm.is_running()) @@ -394,16 +394,16 @@ class VMSettingsWindow(Ui_SettingsDialog, QDialog): def check_mem_changes(self): if self.max_mem_size.value() < self.init_mem.value(): - QMessageBox.warning(None, - self.tr("Warning!"), - self.tr("Max memory can not be less than initial memory.
" + firewall.QMessageBox.warning(None, + self.tr("Warning!"), + self.tr("Max memory can not be less than initial memory.
" "Setting max memory to equal initial memory.")) self.max_mem_size.setValue(self.init_mem.value()) # Linux specific limit: init memory must not be below max_mem_size/10.79 in order to allow scaling up to max_mem_size (or else "add_memory() failed: -17" problem) if self.init_mem.value() * 10 < self.max_mem_size.value(): - QMessageBox.warning(None, - self.tr("Warning!"), - self.tr("Initial memory can not be less than one tenth " + firewall.QMessageBox.warning(None, + self.tr("Warning!"), + self.tr("Initial memory can not be less than one tenth " "Max memory.
Setting initial memory to the minimum " "allowed value.")) self.init_mem.setValue(self.max_mem_size.value() / 10) @@ -419,9 +419,9 @@ class VMSettingsWindow(Ui_SettingsDialog, QDialog): time.sleep(0.1) if not t_monitor.success: - QMessageBox.warning(None, - self.tr("Error!"), - self.tr("ERROR: {}").format( + firewall.QMessageBox.warning(None, + self.tr("Error!"), + self.tr("ERROR: {}").format( t_monitor.error_msg)) @@ -438,9 +438,9 @@ class VMSettingsWindow(Ui_SettingsDialog, QDialog): def rename_vm(self): - new_vm_name, ok = QInputDialog.getText(self, - self.tr('Rename VM'), - self.tr('New name: (WARNING: ' + new_vm_name, ok = firewall.QInputDialog.getText(self, + self.tr('Rename VM'), + self.tr('New name: (WARNING: ' 'all other changes will be discarded)')) if ok: @@ -458,7 +458,7 @@ class VMSettingsWindow(Ui_SettingsDialog, QDialog): def remove_vm(self): - answer, ok = QInputDialog.getText( + answer, ok = firewall.QInputDialog.getText( self, self.tr('Delete VM'), self.tr('Are you absolutely sure you want to delete this VM? ' @@ -472,7 +472,7 @@ class VMSettingsWindow(Ui_SettingsDialog, QDialog): self.done(0) elif ok: - QMessageBox.warning( + firewall.QMessageBox.warning( None, self.tr("Removal cancelled"), self.tr("The VM will not be removed.")) @@ -488,14 +488,14 @@ class VMSettingsWindow(Ui_SettingsDialog, QDialog): def clone_vm(self): - cloned_vm_name, ok = QInputDialog.getText( + cloned_vm_name, ok = firewall.QInputDialog.getText( self, self.tr('Clone VM'), self.tr('Name for the cloned VM:')) if ok: self._run_in_thread(self._clone_vm, cloned_vm_name) - QMessageBox.warning( + firewall.QMessageBox.warning( None, self.tr("Success"), self.tr("The VM was cloned successfully.")) @@ -602,7 +602,7 @@ class VMSettingsWindow(Ui_SettingsDialog, QDialog): for dev in lspci.splitlines(): devs.append((dev.rstrip(), dev.split(' ')[0])) - class DevListWidgetItem(QListWidgetItem): + class DevListWidgetItem(firewall.QListWidgetItem): def __init__(self, name, ident, parent = None): super(DevListWidgetItem, self).__init__(name, parent) self.ident = ident @@ -645,7 +645,7 @@ class VMSettingsWindow(Ui_SettingsDialog, QDialog): for i in range(self.dev_list.selected_list.count())] for ident in new: if ident not in old: - ass = qubesadmin.devices.DeviceAssignment( + ass = firewall.qubesadmin.devices.DeviceAssignment( self.vm.app.domains['dom0'], ident.replace(':', '_'), persistent=True) @@ -671,7 +671,7 @@ class VMSettingsWindow(Ui_SettingsDialog, QDialog): break if self.dev_list.selected_list.count() > 0: - if state == QtCore.Qt.Checked: + if state == ui_settingsdlg.QtCore.Qt.Checked: self.dmm_warning_adv.show() self.dmm_warning_dev.show() else: @@ -736,23 +736,23 @@ class VMSettingsWindow(Ui_SettingsDialog, QDialog): if not feature.startswith('service.'): continue service = feature[len('service.'):] - item = QListWidgetItem(service) - item.setCheckState(QtCore.Qt.Checked - if self.vm.features[feature] else QtCore.Qt.Unchecked) + item = firewall.QListWidgetItem(service) + item.setCheckState(ui_settingsdlg.QtCore.Qt.Checked + if self.vm.features[feature] else ui_settingsdlg.QtCore.Qt.Unchecked) self.services_list.addItem(item) self.new_srv_dict[service] = self.vm.features[feature] - self.connect(self.services_list, SIGNAL("itemClicked(QListWidgetItem *)"), self.services_item_clicked) + self.connect(self.services_list, firewall.SIGNAL("itemClicked(QListWidgetItem *)"), self.services_item_clicked) def __add_service__(self): srv = str(self.service_line_edit.text()).strip() if srv != "": if srv in self.new_srv_dict: - QMessageBox.information(None, '', - self.tr('Service already on the list!')) + firewall.QMessageBox.information(None, '', + self.tr('Service already on the list!')) else: - item = QListWidgetItem(srv) - item.setCheckState(QtCore.Qt.Checked) + item = firewall.QListWidgetItem(srv) + item.setCheckState(ui_settingsdlg.QtCore.Qt.Checked) self.services_list.addItem(item) self.new_srv_dict[srv] = True @@ -762,9 +762,9 @@ class VMSettingsWindow(Ui_SettingsDialog, QDialog): if not item: return if str(item.text()) == 'meminfo-writer': - QMessageBox.information(None, - self.tr('Service can not be removed'), - self.tr('Service meminfo-writer can not be removed from the list.')) + firewall.QMessageBox.information(None, + self.tr('Service can not be removed'), + self.tr('Service meminfo-writer can not be removed from the list.')) return row = self.services_list.currentRow() @@ -774,10 +774,10 @@ class VMSettingsWindow(Ui_SettingsDialog, QDialog): def services_item_clicked(self, item): if str(item.text()) == 'meminfo-writer': - if item.checkState() == QtCore.Qt.Checked: + if item.checkState() == ui_settingsdlg.QtCore.Qt.Checked: if not self.include_in_balancing.isChecked(): self.include_in_balancing.setChecked(True) - elif item.checkState() == QtCore.Qt.Unchecked: + elif item.checkState() == ui_settingsdlg.QtCore.Qt.Unchecked: if self.include_in_balancing.isChecked(): self.include_in_balancing.setChecked(False) @@ -788,7 +788,7 @@ class VMSettingsWindow(Ui_SettingsDialog, QDialog): try: for r in range(self.services_list.count()): item = self.services_list.item(r) - self.new_srv_dict[str(item.text())] = (item.checkState() == QtCore.Qt.Checked) + self.new_srv_dict[str(item.text())] = (item.checkState() == ui_settingsdlg.QtCore.Qt.Checked) balancing_was_checked = self.vm.features.get('service.meminfo-writer', True) balancing_is_checked = self.include_in_balancing.isChecked() @@ -821,14 +821,14 @@ class VMSettingsWindow(Ui_SettingsDialog, QDialog): def set_fw_model(self, model): self.fw_model = model self.rulesTreeView.setModel(model) - self.rulesTreeView.header().setResizeMode(QHeaderView.ResizeToContents) - self.rulesTreeView.header().setResizeMode(0, QHeaderView.Stretch) + self.rulesTreeView.header().setResizeMode(firewall.QHeaderView.ResizeToContents) + self.rulesTreeView.header().setResizeMode(0, firewall.QHeaderView.Stretch) self.set_allow(model.allow) if model.tempFullAccessExpireTime: self.tempFullAccess.setChecked(True) self.tempFullAccessTime.setValue( (model.tempFullAccessExpireTime - - int(datetime.datetime.now().strftime("%s")))/60) + int(firewall.datetime.datetime.now().strftime("%s"))) / 60) def disable_all_fw_conf(self): self.firewallModifiedOutsidelabel.setVisible(True) @@ -857,7 +857,7 @@ class VMSettingsWindow(Ui_SettingsDialog, QDialog): self.policyDenyRadioButton.isChecked()) def new_rule_button_pressed(self): - dialog = NewFwRuleDlg() + dialog = firewall.NewFwRuleDlg() self.fw_model.run_rule_dialog(dialog) def edit_rule_button_pressed(self): @@ -865,7 +865,7 @@ class VMSettingsWindow(Ui_SettingsDialog, QDialog): selected = self.rulesTreeView.selectedIndexes() if len(selected) > 0: - dialog = NewFwRuleDlg() + dialog = firewall.NewFwRuleDlg() dialog.set_ok_enabled(True) row = self.rulesTreeView.selectedIndexes().pop().row() self.fw_model.populate_edit_dialog(dialog, row) @@ -883,7 +883,7 @@ class VMSettingsWindow(Ui_SettingsDialog, QDialog): def handle_exception(exc_type, exc_value, exc_traceback): filename, line, dummy, dummy = traceback.extract_tb(exc_traceback).pop() - filename = os.path.basename(filename) + filename = firewall.os.path.basename(filename) error = "%s: %s" % (exc_type.__name__, exc_value) strace = "" @@ -896,9 +896,9 @@ def handle_exception(exc_type, exc_value, exc_traceback): strace += "line no.: %d\n" %line strace += "file: %s\n" %filename - msg_box = QMessageBox() + msg_box = firewall.QMessageBox() msg_box.setDetailedText(strace) - msg_box.setIcon(QMessageBox.Critical) + msg_box.setIcon(firewall.QMessageBox.Critical) msg_box.setWindowTitle("Houston, we have a problem...") msg_box.setText("Whoops. A critical error has occured. This is most likely a bug " "in Qubes Manager.

" @@ -909,7 +909,7 @@ def handle_exception(exc_type, exc_value, exc_traceback): msg_box.exec_() -parser = qubesadmin.tools.QubesArgumentParser(vmname_nargs=1) +parser = firewall.qubesadmin.tools.QubesArgumentParser(vmname_nargs=1) parser.add_argument('--tab', metavar='TAB', action='store', @@ -925,13 +925,13 @@ def main(args=None): args = parser.parse_args(args) vm = args.domains.pop() - qapp = QApplication(sys.argv) + qapp = firewall.QApplication(firewall.sys.argv) qapp.setOrganizationName('Invisible Things Lab') qapp.setOrganizationDomain("https://www.qubes-os.org/") qapp.setApplicationName("Qubes VM Settings") if not utils.is_debug(): - sys.excepthook = handle_exception + firewall.sys.excepthook = handle_exception settings_window = VMSettingsWindow(vm, qapp, args.tab) settings_window.show() diff --git a/qubesmanager/table_widgets.py b/qubesmanager/table_widgets.py index b5a662a..b90cfeb 100644 --- a/qubesmanager/table_widgets.py +++ b/qubesmanager/table_widgets.py @@ -1,5 +1,6 @@ #!/usr/bin/python2 # -*- coding: utf8 -*- +# pylint: skip-file # # The Qubes OS Project, http://www.qubes-os.org #