diff --git a/gns3/dialogs/appliance_wizard.py b/gns3/dialogs/appliance_wizard.py
index bb0aa00b..b4d3310a 100644
--- a/gns3/dialogs/appliance_wizard.py
+++ b/gns3/dialogs/appliance_wizard.py
@@ -18,10 +18,10 @@
import os
import sys
-from ..qt import QtWidgets, QtCore, QtWidgets, QtGui
+from ..qt import QtWidgets, QtCore, QtGui
from ..ui.appliance_wizard_ui import Ui_ApplianceWizard
from ..image_manager import ImageManager
-from ..registry.appliance import Appliance, ApplianceError
+from ..registry.appliance import Appliance
from ..registry.registry import Registry
from ..registry.config import Config, ConfigException
from ..registry.image import Image
diff --git a/gns3/dialogs/symbol_selection_dialog.py b/gns3/dialogs/symbol_selection_dialog.py
index 780fd143..abf4c8d3 100644
--- a/gns3/dialogs/symbol_selection_dialog.py
+++ b/gns3/dialogs/symbol_selection_dialog.py
@@ -22,7 +22,6 @@ Dialog to change node symbols.
import os
from ..qt import QtSvg, QtCore, QtGui, QtWidgets
-from ..items.svg_node_item import SvgNodeItem
from ..items.pixmap_node_item import PixmapNodeItem
from ..ui.symbol_selection_dialog_ui import Ui_SymbolSelectionDialog
from ..servers import Servers
@@ -55,22 +54,9 @@ class SymbolSelectionDialog(QtWidgets.QDialog, Ui_SymbolSelectionDialog):
self._symbols_dir = QtCore.QStandardPaths.writableLocation(QtCore.QStandardPaths.PicturesLocation)
self._symbols_path = Servers.instance().localServerSettings()["symbols_path"]
- selected_symbol = symbol
if not self._items:
self.uiButtonBox.button(QtWidgets.QDialogButtonBox.Apply).hide()
- else:
- first_item = items[0]
- if isinstance(first_item, SvgNodeItem):
- custom_symbol = first_item.renderer().objectName()
- if not custom_symbol:
- symbol_name = first_item.node().defaultSymbol()
- else:
- symbol_name = custom_symbol
- selected_symbol = symbol_name
- elif isinstance(first_item, PixmapNodeItem):
- selected_symbol = first_item.pixmapSymbolPath()
- custom_symbol = True
self.uiBuiltInSymbolRadioButton.setChecked(True)
self.uiSymbolListWidget.setFocus()
self.uiSymbolListWidget.setIconSize(QtCore.QSize(64, 64))
diff --git a/gns3/iouvm_converter.py b/gns3/iouvm_converter.py
index 1ab9b7ab..8eec94bb 100644
--- a/gns3/iouvm_converter.py
+++ b/gns3/iouvm_converter.py
@@ -18,14 +18,13 @@
import sys
import shutil
-import signal
import json
import os
from datetime import datetime
try:
- from gns3.qt import QtCore, QtGui, QtWidgets, DEFAULT_BINDING
+ from gns3.qt import QtGui, QtWidgets
except ImportError:
raise SystemExit("Can't import Qt modules: Qt and/or PyQt is probably not installed correctly...")
@@ -128,7 +127,7 @@ class IOUVMConverterWizard(QtWidgets.QWizard, Ui_IOUVMConverterWizard):
topo = json.load(f)
if "topology" in topo and "servers" in topo["topology"]:
for server in topo["topology"]["servers"]:
- if server["local"] == False:
+ if server["local"] is False:
server["vm"] = True
with open(path, 'w+') as f:
topo = json.dump(topo, f)
diff --git a/gns3/local_server_config.py b/gns3/local_server_config.py
index b43b7158..06c99216 100644
--- a/gns3/local_server_config.py
+++ b/gns3/local_server_config.py
@@ -18,7 +18,6 @@
import os
import sys
import configparser
-from gns3.qt import QtCore
import logging
diff --git a/gns3/modules/builtin/pages/cloud_configuration_page.py b/gns3/modules/builtin/pages/cloud_configuration_page.py
index 05d95628..0052a040 100644
--- a/gns3/modules/builtin/pages/cloud_configuration_page.py
+++ b/gns3/modules/builtin/pages/cloud_configuration_page.py
@@ -20,7 +20,7 @@ Configuration page for clouds.
"""
import re
-from gns3.qt import QtCore, QtGui, QtWidgets
+from gns3.qt import QtCore, QtWidgets
from ..ui.cloud_configuration_page_ui import Ui_cloudConfigPageWidget
diff --git a/gns3/modules/dynamips/__init__.py b/gns3/modules/dynamips/__init__.py
index dcb56bc4..76bc9ed9 100644
--- a/gns3/modules/dynamips/__init__.py
+++ b/gns3/modules/dynamips/__init__.py
@@ -45,7 +45,6 @@ from .nodes.frame_relay_switch import FrameRelaySwitch
from .nodes.atm_switch import ATMSwitch
from .settings import DYNAMIPS_SETTINGS
from .settings import IOS_ROUTER_SETTINGS
-from .settings import PLATFORMS_DEFAULT_RAM
from .settings import DEFAULT_IDLEPC
PLATFORM_TO_CLASS = {
@@ -374,7 +373,6 @@ class Dynamips(Module):
"IOS image", "IOS image {} could not be found\nPlease select an alternative from your existing images:".format(image),
list(candidate_ios_images.keys()), 0, False)
if ok:
- ios_image = candidate_ios_images[selection] # FIXME
alternative_image["image"] = ios_router["image"]
alternative_image["ram"] = ios_router["ram"]
alternative_image["idlepc"] = ios_router["idlepc"]
diff --git a/gns3/modules/dynamips/pages/atm_bridge_configuration_page.py b/gns3/modules/dynamips/pages/atm_bridge_configuration_page.py
index e82b3237..f32a5d6a 100644
--- a/gns3/modules/dynamips/pages/atm_bridge_configuration_page.py
+++ b/gns3/modules/dynamips/pages/atm_bridge_configuration_page.py
@@ -20,7 +20,7 @@ Configuration page for Dynamips ATM bridges.
"""
import re
-from gns3.qt import QtCore, QtGui, QtWidgets
+from gns3.qt import QtCore, QtWidgets
from ..ui.atm_bridge_configuration_page_ui import Ui_atmBridgeConfigPageWidget
diff --git a/gns3/modules/dynamips/pages/atm_switch_configuration_page.py b/gns3/modules/dynamips/pages/atm_switch_configuration_page.py
index da21b987..e03266aa 100644
--- a/gns3/modules/dynamips/pages/atm_switch_configuration_page.py
+++ b/gns3/modules/dynamips/pages/atm_switch_configuration_page.py
@@ -20,7 +20,7 @@ Configuration page for Dynamips ATM switches.
"""
import re
-from gns3.qt import QtCore, QtGui, QtWidgets
+from gns3.qt import QtCore, QtWidgets
from ..ui.atm_switch_configuration_page_ui import Ui_atmSwitchConfigPageWidget
diff --git a/gns3/modules/dynamips/pages/ethernet_switch_configuration_page.py b/gns3/modules/dynamips/pages/ethernet_switch_configuration_page.py
index 81010165..4a44d27e 100644
--- a/gns3/modules/dynamips/pages/ethernet_switch_configuration_page.py
+++ b/gns3/modules/dynamips/pages/ethernet_switch_configuration_page.py
@@ -19,7 +19,7 @@
Configuration page for Dynamips Ethernet switches.
"""
-from gns3.qt import QtCore, QtGui, QtWidgets
+from gns3.qt import QtCore, QtWidgets
from ..utils.tree_widget_item import TreeWidgetItem
from ..ui.ethernet_switch_configuration_page_ui import Ui_ethernetSwitchConfigPageWidget
diff --git a/gns3/modules/dynamips/pages/frame_relay_switch_configuration_page.py b/gns3/modules/dynamips/pages/frame_relay_switch_configuration_page.py
index 87a7dc6b..5aad6265 100644
--- a/gns3/modules/dynamips/pages/frame_relay_switch_configuration_page.py
+++ b/gns3/modules/dynamips/pages/frame_relay_switch_configuration_page.py
@@ -19,7 +19,7 @@
Configuration page for Dynamips Frame Relay switches.
"""
-from gns3.qt import QtCore, QtGui, QtWidgets
+from gns3.qt import QtCore, QtWidgets
from ..ui.frame_relay_switch_configuration_page_ui import Ui_frameRelaySwitchConfigPageWidget
diff --git a/gns3/modules/dynamips/pages/ios_router_preferences_page.py b/gns3/modules/dynamips/pages/ios_router_preferences_page.py
index 387bb226..803816c3 100644
--- a/gns3/modules/dynamips/pages/ios_router_preferences_page.py
+++ b/gns3/modules/dynamips/pages/ios_router_preferences_page.py
@@ -160,7 +160,6 @@ class IOSRouterPreferencesPage(QtWidgets.QWidget, Ui_IOSRouterPreferencesPageWid
for item in self.uiIOSRoutersTreeWidget.selectedItems():
if item:
key = item.data(0, QtCore.Qt.UserRole)
- ios_router = self._ios_routers[key]
del self._ios_routers[key]
self.uiIOSRoutersTreeWidget.takeTopLevelItem(self.uiIOSRoutersTreeWidget.indexOfTopLevelItem(item))
diff --git a/gns3/modules/dynamips/utils/tree_widget_item.py b/gns3/modules/dynamips/utils/tree_widget_item.py
index 87e81ca9..21791559 100644
--- a/gns3/modules/dynamips/utils/tree_widget_item.py
+++ b/gns3/modules/dynamips/utils/tree_widget_item.py
@@ -15,7 +15,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
-from gns3.qt import QtGui, QtWidgets
+from gns3.qt import QtWidgets
class TreeWidgetItem(QtWidgets.QTreeWidgetItem):
diff --git a/gns3/modules/iou/__init__.py b/gns3/modules/iou/__init__.py
index 01b0078f..22da3589 100644
--- a/gns3/modules/iou/__init__.py
+++ b/gns3/modules/iou/__init__.py
@@ -23,7 +23,7 @@ import sys
import os
import shutil
-from gns3.qt import QtCore, QtWidgets
+from gns3.qt import QtWidgets
from gns3.local_server_config import LocalServerConfig
from gns3.local_config import LocalConfig
diff --git a/gns3/modules/iou/iou_device.py b/gns3/modules/iou/iou_device.py
index 0bd1e24e..8d94f834 100644
--- a/gns3/modules/iou/iou_device.py
+++ b/gns3/modules/iou/iou_device.py
@@ -23,7 +23,6 @@ import os
import re
from gns3.vm import VM
from gns3.node import Node
-from gns3.servers import Servers
from gns3.packet_capture import PacketCapture
from gns3.ports.ethernet_port import EthernetPort
from gns3.ports.serial_port import SerialPort
diff --git a/gns3/modules/qemu/pages/qemu_vm_configuration_page.py b/gns3/modules/qemu/pages/qemu_vm_configuration_page.py
index f8920f17..1fad862c 100644
--- a/gns3/modules/qemu/pages/qemu_vm_configuration_page.py
+++ b/gns3/modules/qemu/pages/qemu_vm_configuration_page.py
@@ -21,7 +21,6 @@ Configuration page for QEMU VMs.
import os
import re
-import sip
from collections import OrderedDict
from gns3.modules.qemu.dialogs.qemu_image_wizard import QemuImageWizard
diff --git a/gns3/modules/virtualbox/dialogs/virtualbox_vm_wizard.py b/gns3/modules/virtualbox/dialogs/virtualbox_vm_wizard.py
index 8d4ca853..1144b234 100644
--- a/gns3/modules/virtualbox/dialogs/virtualbox_vm_wizard.py
+++ b/gns3/modules/virtualbox/dialogs/virtualbox_vm_wizard.py
@@ -19,8 +19,6 @@
Wizard for VirtualBox VMs.
"""
-import sys
-
from gns3.qt import QtGui, QtWidgets
from gns3.servers import Servers
from gns3.dialogs.vm_wizard import VMWizard
diff --git a/gns3/modules/vmware/dialogs/vmware_vm_wizard.py b/gns3/modules/vmware/dialogs/vmware_vm_wizard.py
index 23b7e4ca..900709a4 100644
--- a/gns3/modules/vmware/dialogs/vmware_vm_wizard.py
+++ b/gns3/modules/vmware/dialogs/vmware_vm_wizard.py
@@ -19,12 +19,9 @@
Wizard for VMware VMs.
"""
-import sys
-
from gns3.qt import QtGui, QtWidgets
from gns3.servers import Servers
from gns3.dialogs.vm_wizard import VMWizard
-from gns3.local_config import LocalConfig
from ..ui.vmware_vm_wizard_ui import Ui_VMwareVMWizard
from .. import VMware
diff --git a/gns3/modules/vmware/pages/vmware_vm_configuration_page.py b/gns3/modules/vmware/pages/vmware_vm_configuration_page.py
index ede76694..130bf599 100644
--- a/gns3/modules/vmware/pages/vmware_vm_configuration_page.py
+++ b/gns3/modules/vmware/pages/vmware_vm_configuration_page.py
@@ -19,8 +19,6 @@
Configuration page for VMware VMs.
"""
-import sys
-
from gns3.qt import QtGui, QtWidgets
from gns3.dialogs.node_properties_dialog import ConfigurationError
from gns3.dialogs.symbol_selection_dialog import SymbolSelectionDialog
diff --git a/gns3/modules/vpcs/pages/vpcs_device_configuration_page.py b/gns3/modules/vpcs/pages/vpcs_device_configuration_page.py
index 39901574..25666051 100644
--- a/gns3/modules/vpcs/pages/vpcs_device_configuration_page.py
+++ b/gns3/modules/vpcs/pages/vpcs_device_configuration_page.py
@@ -19,10 +19,7 @@
Configuration page for VPCS devices.
"""
-import os
-
from gns3.qt import QtWidgets
-from gns3.utils.get_resource import get_resource
from ..ui.vpcs_device_configuration_page_ui import Ui_VPCSDeviceConfigPageWidget
diff --git a/gns3/pages/packet_capture_preferences_page.py b/gns3/pages/packet_capture_preferences_page.py
index 5369953e..9b738e1b 100644
--- a/gns3/pages/packet_capture_preferences_page.py
+++ b/gns3/pages/packet_capture_preferences_page.py
@@ -22,7 +22,7 @@ Configuration page for packet capture preferences.
import sys
import struct
-from gns3.qt import QtCore, QtGui, QtWidgets
+from gns3.qt import QtCore, QtWidgets
from ..ui.packet_capture_preferences_page_ui import Ui_PacketCapturePreferencesPageWidget
from ..settings import PACKET_CAPTURE_SETTINGS, PRECONFIGURED_PACKET_CAPTURE_READER_COMMANDS
from ..ports.port import Port
diff --git a/gns3/registry/registry.py b/gns3/registry/registry.py
index 7a49b67e..9ebffa59 100644
--- a/gns3/registry/registry.py
+++ b/gns3/registry/registry.py
@@ -17,7 +17,6 @@
# along with this program. If not, see .
import os
-import copy
import logging
log = logging.getLogger(__name__)
diff --git a/gns3/update_manager.py b/gns3/update_manager.py
index 54cb2466..a88f2efe 100644
--- a/gns3/update_manager.py
+++ b/gns3/update_manager.py
@@ -196,7 +196,7 @@ class UpdateManager(QtCore.QObject):
QtWidgets.QMessageBox.Yes,
QtWidgets.QMessageBox.No)
if reply == QtWidgets.QMessageBox.Yes:
- app = QtWidgets.QApplication.instance().closeAllWindows()
+ QtWidgets.QApplication.instance().closeAllWindows()
else:
log.debug('Error when downloading %s', file_path)
network_reply.deleteLater()
@@ -210,7 +210,7 @@ class UpdateManager(QtCore.QObject):
"""
if os.path.exists(self._update_directory):
- package = os.makedirs(self._package_directory, exist_ok=True)
+ os.makedirs(self._package_directory, exist_ok=True)
gui_tgz = os.path.join(self._update_directory, 'gns3-gui.tar.gz')
self._extractTgz(gui_tgz)
diff --git a/gns3/utils/message_box.py b/gns3/utils/message_box.py
index e7310195..ab8ada4b 100644
--- a/gns3/utils/message_box.py
+++ b/gns3/utils/message_box.py
@@ -19,7 +19,7 @@
To show a advanced message box.
"""
-from ..qt import QtGui, QtWidgets
+from ..qt import QtWidgets
def MessageBox(parent, title, message, details="", icon=QtWidgets.QMessageBox.Critical):
diff --git a/scripts/build_pyqt.py b/scripts/build_pyqt.py
index b33a4d71..9c4fbda4 100755
--- a/scripts/build_pyqt.py
+++ b/scripts/build_pyqt.py
@@ -9,7 +9,6 @@ import sys
import stat
import shutil
import subprocess
-import re
import argparse
parser = argparse.ArgumentParser()
diff --git a/tox.ini b/tox.ini
index 514065bf..f5975294 100644
--- a/tox.ini
+++ b/tox.ini
@@ -9,6 +9,10 @@ commands = py.test
[pep8]
ignore = E501,E402
+[flake8]
+ignore = E265,E501
+exclude = tests/*,gns3/ui/*,./gns3/modules/*/ui
+
[pytest]
python_paths = {toxinidir}
norecursedirs = .tox