diff --git a/bindings/python/ns3modulegen.py b/bindings/python/ns3modulegen.py index ea266248d..680c8a213 100755 --- a/bindings/python/ns3modulegen.py +++ b/bindings/python/ns3modulegen.py @@ -81,7 +81,7 @@ class MyMultiSectionFactory(MultiSectionFactory): def close(self): self.header_sink.file.close() self.main_sink.file.close() - for sink in self.section_sinks.itervalues(): + for sink in self.section_sinks.values(): sink.file.close() diff --git a/src/visualizer/model/visual-simulator-impl.cc b/src/visualizer/model/visual-simulator-impl.cc index 58225a5b3..d298540d8 100644 --- a/src/visualizer/model/visual-simulator-impl.cc +++ b/src/visualizer/model/visual-simulator-impl.cc @@ -112,11 +112,17 @@ VisualSimulatorImpl::IsFinished (void) const void VisualSimulatorImpl::Run (void) { - if (!Py_IsInitialized ()) + if (!Py_IsInitialized ()) { - const char *argv[] = { "python", NULL}; - Py_Initialize (); - PySys_SetArgv (1, (char**) argv); + #if PY_MAJOR_VERSION >= 3 + const wchar_t *argv[] = { L"python", NULL}; + Py_Initialize (); + PySys_SetArgv (1, (wchar_t**) argv); + #else + const char *argv[] = { "python", NULL}; + Py_Initialize (); + PySys_SetArgv (1, (char**) argv); + #endif PyRun_SimpleString ( "import visualizer\n" "visualizer.start();\n" diff --git a/src/visualizer/visualizer/__init__.py b/src/visualizer/visualizer/__init__.py index 10a4dbd41..1a4d80f89 100644 --- a/src/visualizer/visualizer/__init__.py +++ b/src/visualizer/visualizer/__init__.py @@ -1,3 +1,3 @@ -from core import start, register_plugin, set_bounds, add_initialization_hook +from .core import start, register_plugin, set_bounds, add_initialization_hook diff --git a/src/visualizer/visualizer/base.py b/src/visualizer/visualizer/base.py index 17668b833..5ef666974 100644 --- a/src/visualizer/visualizer/base.py +++ b/src/visualizer/visualizer/base.py @@ -1,3 +1,4 @@ +from __future__ import print_function import ns.point_to_point import ns.csma import ns.wifi @@ -5,7 +6,6 @@ import ns.bridge import ns.internet import ns.mesh import ns.wimax -import ns.wimax import ns.lte from gi.repository import GObject @@ -126,15 +126,15 @@ def load_plugins(): continue try: plugin_module = __import__(name) - except ImportError, ex: - print >> sys.stderr, "Could not load plugin %r: %s" % (filename, str(ex)) + except ImportError as ex: + print("Could not load plugin %r: %s" % (filename, str(ex)), file=sys.stderr) continue try: plugin_func = plugin_module.register except AttributeError: - print >> sys.stderr, "Plugin %r has no 'register' function" % name + print("Plugin %r has no 'register' function" % name, file=sys.stderr) else: - #print >> sys.stderr, "Plugin %r registered" % name + #print("Plugin %r registered" % name, file=sys.stderr) register_plugin(plugin_func, name, plugin_module) sys.path = old_path diff --git a/src/visualizer/visualizer/core.py b/src/visualizer/visualizer/core.py index 1e69de33c..75720241c 100644 --- a/src/visualizer/visualizer/core.py +++ b/src/visualizer/visualizer/core.py @@ -31,6 +31,9 @@ import math import os import sys +if sys.version_info > (3,): + long = int + try: import gi gi.require_version('GooCanvas', '2.0') @@ -45,13 +48,14 @@ try: from gi.repository import Pango from gi.repository import GooCanvas import threading - import hud + from . import hud #import time try: import svgitem except ImportError: svgitem = None -except ImportError as _import_error: +except ImportError as e: + _import_error = e import dummy_threading as threading else: _import_error = None @@ -61,10 +65,10 @@ try: except ImportError: ipython_view = None -from base import InformationWindow, PyVizObject, Link, lookup_netdevice_traits, PIXELS_PER_METER -from base import transform_distance_simulation_to_canvas, transform_point_simulation_to_canvas -from base import transform_distance_canvas_to_simulation, transform_point_canvas_to_simulation -from base import load_plugins, register_plugin, plugins +from .base import InformationWindow, PyVizObject, Link, lookup_netdevice_traits, PIXELS_PER_METER +from .base import transform_distance_simulation_to_canvas, transform_point_simulation_to_canvas +from .base import transform_distance_canvas_to_simulation, transform_point_canvas_to_simulation +from .base import load_plugins, register_plugin, plugins PI_OVER_2 = math.pi/2 PI_TIMES_2 = math.pi*2 @@ -773,7 +777,7 @@ class Visualizer(GObject.GObject): assert isinstance(mode, ShowTransmissionsMode) self._show_transmissions_mode = mode if self._show_transmissions_mode == ShowTransmissionsMode.ALL: - self.simulation.set_nodes_of_interest(range(ns.network.NodeList.GetNNodes())) + self.simulation.set_nodes_of_interest(list(range(ns.network.NodeList.GetNNodes()))) elif self._show_transmissions_mode == ShowTransmissionsMode.NONE: self.simulation.set_nodes_of_interest([]) elif self._show_transmissions_mode == ShowTransmissionsMode.SELECTED: @@ -854,7 +858,7 @@ class Visualizer(GObject.GObject): settings_hbox.pack_start(vbox, False, False, 6) self.node_size_adjustment = scale.get_adjustment() def node_size_changed(adj): - for node in self.nodes.itervalues(): + for node in self.nodes.values(): node.set_size(adj.get_value()) self.node_size_adjustment.connect("value-changed", node_size_changed) self.node_size_adjustment.set_lower(0.01) @@ -1218,7 +1222,7 @@ class Visualizer(GObject.GObject): self.emit("update-view") def _update_node_positions(self): - for node in self.nodes.itervalues(): + for node in self.nodes.values(): if node.has_mobility: ns3_node = ns.network.NodeList.GetNode(node.node_index) mobility = ns3_node.GetObject(ns.mobility.MobilityModel.GetTypeId()) @@ -1300,7 +1304,7 @@ class Visualizer(GObject.GObject): k = self.node_size_adjustment.get_value()/5 - for (transmitter_id, receiver_id), (rx_bytes, rx_count) in transmissions_average.iteritems(): + for (transmitter_id, receiver_id), (rx_bytes, rx_count) in transmissions_average.items(): transmitter = self.get_node(transmitter_id) receiver = self.get_node(receiver_id) try: @@ -1381,7 +1385,7 @@ class Visualizer(GObject.GObject): k = self.node_size_adjustment.get_value()/5 - for transmitter_id, (drop_bytes, drop_count) in drops_average.iteritems(): + for transmitter_id, (drop_bytes, drop_count) in drops_average.items(): transmitter = self.get_node(transmitter_id) try: arrow, label = old_arrows.pop() @@ -1497,7 +1501,7 @@ class Visualizer(GObject.GObject): if not self.nodes: return self._update_node_positions() - positions = [node.get_position() for node in self.nodes.itervalues()] + positions = [node.get_position() for node in self.nodes.values()] min_x, min_y = min(x for (x,y) in positions), min(y for (x,y) in positions) max_x, max_y = max(x for (x,y) in positions), max(y for (x,y) in positions) min_x_px, min_y_px = self.canvas.convert_to_pixels(min_x, min_y) diff --git a/src/visualizer/visualizer/hud.py b/src/visualizer/visualizer/hud.py index 89fa66be8..ff7c2d5a3 100644 --- a/src/visualizer/visualizer/hud.py +++ b/src/visualizer/visualizer/hud.py @@ -1,5 +1,5 @@ -import core import math +from . import core from gi.repository import Pango from gi.repository import Gtk from gi.repository import GooCanvas diff --git a/src/visualizer/visualizer/ipython_view.py b/src/visualizer/visualizer/ipython_view.py index ee547668f..34f9db7a9 100644 --- a/src/visualizer/visualizer/ipython_view.py +++ b/src/visualizer/visualizer/ipython_view.py @@ -319,11 +319,11 @@ class IterableIPShell: @return none """ stat = 0 - if verbose or debug: print header+cmd + if verbose or debug: print(header+cmd) # flush stdout so we don't mangle python's buffering if not debug: input, output = os.popen4(cmd) - print output.read() + print(output.read()) output.close() input.close() diff --git a/src/visualizer/visualizer/plugins/olsr.py b/src/visualizer/visualizer/plugins/olsr.py index eb59e5e2d..726b11610 100644 --- a/src/visualizer/visualizer/plugins/olsr.py +++ b/src/visualizer/visualizer/plugins/olsr.py @@ -120,7 +120,7 @@ def populate_node_menu(viz, node, menu): ns3_node = ns.network.NodeList.GetNode(node.node_index) olsr = ns3_node.GetObject(ns.olsr.olsr.RoutingProtocol.GetTypeId()) if olsr is None: - print "No OLSR" + print("No OLSR") return menu_item = Gtk.MenuItem("Show OLSR Routing Table") diff --git a/src/visualizer/visualizer/plugins/wifi_intrastructure_link.py b/src/visualizer/visualizer/plugins/wifi_intrastructure_link.py index 8cd9a8ffa..7005856bf 100644 --- a/src/visualizer/visualizer/plugins/wifi_intrastructure_link.py +++ b/src/visualizer/visualizer/plugins/wifi_intrastructure_link.py @@ -131,7 +131,7 @@ class WifiLinkMonitor(object): self.access_points = {} self.stations = [] - for node in viz.nodes.itervalues(): + for node in viz.nodes.values(): ns3_node = ns.network.NodeList.GetNode(node.node_index) for devI in range(ns3_node.GetNDevices()): dev = ns3_node.GetDevice(devI) diff --git a/src/visualizer/visualizer/svgitem.py b/src/visualizer/visualizer/svgitem.py index 261803d91..c281110d6 100644 --- a/src/visualizer/visualizer/svgitem.py +++ b/src/visualizer/visualizer/svgitem.py @@ -120,7 +120,7 @@ class SvgItem(GooCanvas.ItemSimple): self.changed(True) else: - raise AttributeError, 'unknown property %s' % pspec.name + raise AttributeError('unknown property %s' % pspec.name) def _size_changed(self): """! @@ -172,7 +172,7 @@ class SvgItem(GooCanvas.ItemSimple): return self.height else: - raise AttributeError, 'unknown property %s' % pspec.name + raise AttributeError('unknown property %s' % pspec.name) def do_simple_paint(self, cr, bounds): """!