PyTango.server.run does not accept old style (DeviceClass, Device) as parameter.
example:
class OldStyleDevice(PyTango.Device_4Impl):
pass
class OldStyleDeviceClass(PyTango.DeviceClass):
pass
class NewStyleDevice(PyTango.server.Device):
pass
run([NewStyleDevice, [OldStyleDeviceClass, OldStyleDevice]]
Will fail. Here is a stack trace:
Failed to import EventChannelFactory notifd/factory/bcu01ctrl.esrf.fr from the Tango database
<class 'Bla.Bla'>
Exiting: Server exited with unforseen exception:
__init__() takes exactly 3 arguments (2 given)
Traceback (most recent call last):
File "/home/coutinho/.local/lib/python2.7/site-packages/PyTango/server.py", line 1000, in run
green_mode=green_mode)
File "/home/coutinho/.local/lib/python2.7/site-packages/PyTango/server.py", line 868, in __server_run
tango_loop()
File "/home/coutinho/.local/lib/python2.7/site-packages/PyTango/server.py", line 850, in tango_loop
u_instance.server_init()
File "/home/coutinho/.local/lib/python2.7/site-packages/PyTango/globals.py", line 107, in class_factory
device_class = device_class_class(tango_device_class_name)
TypeError: __init__() takes exactly 3 arguments (2 given)
Fixed in PyTango SVN trunk since revision #27106.
Will become visible in next PyTango 8.1.6