Browse Source

Python3 porting.

Bentley James Oakes 7 years ago
parent
commit
25c1554630

+ 14 - 7
services/DEVS/main.py

@@ -6,28 +6,35 @@ from pprint import pprint
 from multiprocessing import Process, Pipe, freeze_support
 
 sys.path.append('services/DEVS/pypdevs/src')
+sys.path.append('services/DEVS/pypdevs/examples')
 
 from simulator import Controller
+from ps_model import Root
+
 import threading, time
 
 init(sys.argv[1])
 login("pypdevs_service", "my_password")
 
 def pypdevs_service(port):
-    exec service_get(port) in globals()
+    try:
+        exec service_get(port) in globals()
+    except SyntaxError:
+        exec(service_get(port) in globals())
+
     controller = Controller(Root())
 
     def inputter():
-        print "Waiting for input..."
+        print("Waiting for input...")
         while 1:
             try:
                 input = service_get(port)
-                print 'raw input = %s' % input
+                print('raw input = %s' % input)
                 params = json.loads(input)
-                print 'json parsed = %s' % params
+                print('json parsed = %s' % params)
                 if not isinstance(params, list):
                     params = [params]
-                print "Sending input to simulator: %s" % params
+                print("Sending input to simulator: %s" % params)
                 if (len(params) > 1):
                     controller.addInput(Event(params[0], "request", params[1:]))
                 else:
@@ -41,10 +48,10 @@ def pypdevs_service(port):
 
     output_listener = controller.addOutputListener(["reply"])
     def outputter():
-        print "Waiting for output..."
+        print("Waiting for output...")
         while 1:
             output_val = output_listener.fetch(-1)
-            print "Got output from simulator: %s" % output_val
+            print("Got output from simulator: %s" % output_val)
             service_set(port, json.dumps({"name": output_val.getName(), "port": output_val.getPort(), "params": output_val.getParameters()}))
     output_thread = threading.Thread(target=outputter)
     output_thread.daemon = True

+ 8 - 3
services/DEVS/pypdevs/examples/client.py

@@ -2,11 +2,12 @@ print("SCCD PythonPDEVS CLI interface")
 import sys
 import time
 from pprint import pprint
+
 sys.path.append("../src/")
 from sccd.runtime.statecharts_core import Event
 
-import simulator
-from ps_model import Root
+import services.DEVS.pypdevs.src.simulator as simulator
+from services.DEVS.pypdevs.examples.ps_model import Root
 controller = simulator.Controller(Root())
 reply_port = controller.addOutputListener('reply')
 
@@ -34,7 +35,11 @@ def generate_input():
     print("READY for input")
     print("Type 'help' for information")
     while 1:
-        inp = raw_input().split(" ")
+        if sys.version_info[0] < 3:
+            inp = raw_input().split(" ")
+        else:
+            inp = input().split(" ")
+
         action = inp[0]
         if inp[0] == "simulate":
             set_defaults(inp, ['inf'])

+ 1 - 1
services/DEVS/pypdevs/examples/experiment.py

@@ -4,7 +4,7 @@ sys.path.append("../src/")
 from python_runtime.statecharts_core import Event
 
 import sccd
-from model import TrafficSystem
+from services.DEVS.pypdevs.examples.model import TrafficSystem
 controller = sccd.Controller(TrafficSystem(name="MyTrafficSystem"))
 controller.start()
 reply_port = controller.addOutputListener('reply')

+ 6 - 2
services/DEVS/pypdevs/src/simulator.py

@@ -10,7 +10,11 @@ A restricted PythonPDEVS simulator modelled in SCCD
 """
 
 from sccd.runtime.statecharts_core import *
-import cPickle as pickle
+try:
+    import cPickle as pickle
+except ImportError:
+    import pickle as pickle
+
 import time
 
 # We basically just interface with the basesimulator
@@ -148,7 +152,7 @@ class SCCDSimulator(RuntimeClassBase):
             nexttime = (self.timeNext[0] - (time.time() - self.realtime_starttime) / self.realtime_scale) * self.realtime_scale
             x =  min(0.1, nexttime)
             return x
-        except TypeError, AttributeError:
+        except (TypeError, AttributeError):
             # We are probably not simulating in realtime...
             return float('inf')
     

+ 10 - 5
services/LoLA/main.py

@@ -12,8 +12,8 @@ login("test_service", "my_password")
 def lola_service(port):
     json_input = service_get(port)
     input_data = json.loads(json_input)
-    print input_data['petrinet']
-    print input_data['query']
+    print(input_data['petrinet'])
+    print(input_data['query'])
     query_formula = "--formula=EF ("+ input_data['query']+")"
     lola = Popen(["lola", "--path=path_output", query_formula, "--json=output.json"], stdin=PIPE, stdout=PIPE).communicate(input=input_data['petrinet'])
     
@@ -33,8 +33,13 @@ def lola_service(port):
 
 service_register("lola", lola_service)
 
-while raw_input() != "STOP":
-    # Stay active, as we shouldn't exit while the service is running!
-    pass
+if sys.version_info[0] < 3:
+    while raw_input() != "STOP":
+        # Stay active, as we shouldn't exit while the service is running!
+        pass
+else:
+    while input() != "STOP":
+        # Stay active, as we shouldn't exit while the service is running!
+        pass
 
 service_stop()