1. Dev/update python bindings for port pr (#813)

* updated python bindings for port update from int to uint16_t

* user friendly error message for exception when python arg does not match uint16_t for ports
This commit is contained in:
2023-09-29 11:12:02 +02:00
committed by GitHub
parent 88c39ba702
commit 72bec5d62e
3 changed files with 44 additions and 25 deletions

View File

@ -182,6 +182,7 @@ class Detector(CppDetectorApi):
@port.setter @port.setter
def port(self, value): def port(self, value):
ut.validate_port(value)
ut.set_using_dict(self.setControlPort, value) ut.set_using_dict(self.setControlPort, value)
@property @property
@ -197,6 +198,7 @@ class Detector(CppDetectorApi):
@stopport.setter @stopport.setter
def stopport(self, args): def stopport(self, args):
ut.validate_port(args)
ut.set_using_dict(self.setStopPort, args) ut.set_using_dict(self.setStopPort, args)
@ -866,6 +868,7 @@ class Detector(CppDetectorApi):
@rx_tcpport.setter @rx_tcpport.setter
def rx_tcpport(self, port): def rx_tcpport(self, port):
ut.validate_port(port)
ut.set_using_dict(self.setRxPort, port) ut.set_using_dict(self.setRxPort, port)
@property @property
@ -1145,11 +1148,14 @@ class Detector(CppDetectorApi):
@rx_zmqport.setter @rx_zmqport.setter
def rx_zmqport(self, port): def rx_zmqport(self, port):
if isinstance(port, int): if isinstance(port, int):
ut.validate_port(port)
self.setRxZmqPort(port, -1) self.setRxZmqPort(port, -1)
elif isinstance(port, dict): elif isinstance(port, dict):
ut.validate_port(port)
ut.set_using_dict(self.setRxZmqPort, port) ut.set_using_dict(self.setRxZmqPort, port)
elif is_iterable(port): elif is_iterable(port):
for i, p in enumerate(port): for i, p in enumerate(port):
ut.validate_port(p)
self.setRxZmqPort(p, i) self.setRxZmqPort(p, i)
else: else:
raise ValueError("Unknown argument type") raise ValueError("Unknown argument type")
@ -1179,11 +1185,14 @@ class Detector(CppDetectorApi):
@zmqport.setter @zmqport.setter
def zmqport(self, port): def zmqport(self, port):
if isinstance(port, int): if isinstance(port, int):
ut.validate_port(port)
self.setClientZmqPort(port, -1) self.setClientZmqPort(port, -1)
elif isinstance(port, dict): elif isinstance(port, dict):
ut.validate_port(port)
ut.set_using_dict(self.setClientZmqPort, port) ut.set_using_dict(self.setClientZmqPort, port)
elif is_iterable(port): elif is_iterable(port):
for i, p in enumerate(port): for i, p in enumerate(port):
ut.validate_port(p)
self.setClientZmqPort(p, i) self.setClientZmqPort(p, i)
else: else:
raise ValueError("Unknown argument type") raise ValueError("Unknown argument type")
@ -1493,6 +1502,7 @@ class Detector(CppDetectorApi):
@udp_dstport.setter @udp_dstport.setter
def udp_dstport(self, port): def udp_dstport(self, port):
ut.validate_port(port)
ut.set_using_dict(self.setDestinationUDPPort, port) ut.set_using_dict(self.setDestinationUDPPort, port)
@property @property
@ -1514,6 +1524,7 @@ class Detector(CppDetectorApi):
@udp_dstport2.setter @udp_dstport2.setter
def udp_dstport2(self, port): def udp_dstport2(self, port):
ut.validate_port(port)
ut.set_using_dict(self.setDestinationUDPPort2, port) ut.set_using_dict(self.setDestinationUDPPort2, port)
@property @property
@ -2026,6 +2037,7 @@ class Detector(CppDetectorApi):
@virtual.setter @virtual.setter
def virtual(self, args): def virtual(self, args):
n_detectors, starting_port = args n_detectors, starting_port = args
ut.validate_port(starting_port)
self.setVirtualDetectorServers(n_detectors, starting_port) self.setVirtualDetectorServers(n_detectors, starting_port)

View File

@ -278,3 +278,9 @@ def hostname_list(args):
return hosts return hosts
else: else:
raise ValueError("hostname needs to be string or list of strings") raise ValueError("hostname needs to be string or list of strings")
def validate_port(value):
if value <= 0 or value > 65535:
raise ValueError("port must be in range 1 - 65535")

View File

@ -48,7 +48,7 @@ void init_det(py::module &m) {
Detector::setHostname, Detector::setHostname,
py::arg()); py::arg());
CppDetectorApi.def("setVirtualDetectorServers", CppDetectorApi.def("setVirtualDetectorServers",
(void (Detector::*)(int, int)) & (void (Detector::*)(int, uint16_t)) &
Detector::setVirtualDetectorServers, Detector::setVirtualDetectorServers,
py::arg(), py::arg()); py::arg(), py::arg());
CppDetectorApi.def("getShmId", CppDetectorApi.def("getShmId",
@ -751,19 +751,19 @@ void init_det(py::module &m) {
Detector::setDestinationUDPMAC2, Detector::setDestinationUDPMAC2,
py::arg(), py::arg() = Positions{}); py::arg(), py::arg() = Positions{});
CppDetectorApi.def("getDestinationUDPPort", CppDetectorApi.def("getDestinationUDPPort",
(Result<int>(Detector::*)(sls::Positions) const) & (Result<uint16_t>(Detector::*)(sls::Positions) const) &
Detector::getDestinationUDPPort, Detector::getDestinationUDPPort,
py::arg() = Positions{}); py::arg() = Positions{});
CppDetectorApi.def("setDestinationUDPPort", CppDetectorApi.def("setDestinationUDPPort",
(void (Detector::*)(int, int)) & (void (Detector::*)(uint16_t, int)) &
Detector::setDestinationUDPPort, Detector::setDestinationUDPPort,
py::arg(), py::arg() = -1); py::arg(), py::arg() = -1);
CppDetectorApi.def("getDestinationUDPPort2", CppDetectorApi.def("getDestinationUDPPort2",
(Result<int>(Detector::*)(sls::Positions) const) & (Result<uint16_t>(Detector::*)(sls::Positions) const) &
Detector::getDestinationUDPPort2, Detector::getDestinationUDPPort2,
py::arg() = Positions{}); py::arg() = Positions{});
CppDetectorApi.def("setDestinationUDPPort2", CppDetectorApi.def("setDestinationUDPPort2",
(void (Detector::*)(int, int)) & (void (Detector::*)(uint16_t, int)) &
Detector::setDestinationUDPPort2, Detector::setDestinationUDPPort2,
py::arg(), py::arg() = -1); py::arg(), py::arg() = -1);
CppDetectorApi.def("reconfigureUDPDestination", CppDetectorApi.def("reconfigureUDPDestination",
@ -844,12 +844,12 @@ void init_det(py::module &m) {
Detector::setRxHostname, Detector::setRxHostname,
py::arg()); py::arg());
CppDetectorApi.def("getRxPort", CppDetectorApi.def("getRxPort",
(Result<int>(Detector::*)(sls::Positions) const) & (Result<uint16_t>(Detector::*)(sls::Positions) const) &
Detector::getRxPort, Detector::getRxPort,
py::arg() = Positions{}); py::arg() = Positions{});
CppDetectorApi.def("setRxPort", CppDetectorApi.def(
(void (Detector::*)(int, int)) & Detector::setRxPort, "setRxPort", (void (Detector::*)(uint16_t, int)) & Detector::setRxPort,
py::arg(), py::arg() = -1); py::arg(), py::arg() = -1);
CppDetectorApi.def("getRxFifoDepth", CppDetectorApi.def("getRxFifoDepth",
(Result<int>(Detector::*)(sls::Positions) const) & (Result<int>(Detector::*)(sls::Positions) const) &
Detector::getRxFifoDepth, Detector::getRxFifoDepth,
@ -1032,11 +1032,12 @@ void init_det(py::module &m) {
Detector::setRxZmqStartingFrame, Detector::setRxZmqStartingFrame,
py::arg(), py::arg() = Positions{}); py::arg(), py::arg() = Positions{});
CppDetectorApi.def("getRxZmqPort", CppDetectorApi.def("getRxZmqPort",
(Result<int>(Detector::*)(sls::Positions) const) & (Result<uint16_t>(Detector::*)(sls::Positions) const) &
Detector::getRxZmqPort, Detector::getRxZmqPort,
py::arg() = Positions{}); py::arg() = Positions{});
CppDetectorApi.def("setRxZmqPort", CppDetectorApi.def("setRxZmqPort",
(void (Detector::*)(int, int)) & Detector::setRxZmqPort, (void (Detector::*)(uint16_t, int)) &
Detector::setRxZmqPort,
py::arg(), py::arg() = -1); py::arg(), py::arg() = -1);
CppDetectorApi.def( CppDetectorApi.def(
"getRxZmqIP", "getRxZmqIP",
@ -1048,11 +1049,11 @@ void init_det(py::module &m) {
Detector::setRxZmqIP, Detector::setRxZmqIP,
py::arg(), py::arg() = Positions{}); py::arg(), py::arg() = Positions{});
CppDetectorApi.def("getClientZmqPort", CppDetectorApi.def("getClientZmqPort",
(Result<int>(Detector::*)(sls::Positions) const) & (Result<uint16_t>(Detector::*)(sls::Positions) const) &
Detector::getClientZmqPort, Detector::getClientZmqPort,
py::arg() = Positions{}); py::arg() = Positions{});
CppDetectorApi.def("setClientZmqPort", CppDetectorApi.def("setClientZmqPort",
(void (Detector::*)(int, int)) & (void (Detector::*)(uint16_t, int)) &
Detector::setClientZmqPort, Detector::setClientZmqPort,
py::arg(), py::arg() = -1); py::arg(), py::arg() = -1);
CppDetectorApi.def( CppDetectorApi.def(
@ -1524,14 +1525,6 @@ void init_det(py::module &m) {
(Result<int>(Detector::*)(sls::Positions) const) & (Result<int>(Detector::*)(sls::Positions) const) &
Detector::getSYNCClock, Detector::getSYNCClock,
py::arg() = Positions{}); py::arg() = Positions{});
CppDetectorApi.def("getADCPipeline",
(Result<int>(Detector::*)(sls::Positions) const) &
Detector::getADCPipeline,
py::arg() = Positions{});
CppDetectorApi.def("setADCPipeline",
(void (Detector::*)(int, sls::Positions)) &
Detector::setADCPipeline,
py::arg(), py::arg() = Positions{});
CppDetectorApi.def("getVoltageList", CppDetectorApi.def("getVoltageList",
(std::vector<defs::dacIndex>(Detector::*)() const) & (std::vector<defs::dacIndex>(Detector::*)() const) &
Detector::getVoltageList); Detector::getVoltageList);
@ -1891,6 +1884,14 @@ void init_det(py::module &m) {
sls::Positions)) & sls::Positions)) &
Detector::setAdditionalJsonParameter, Detector::setAdditionalJsonParameter,
py::arg(), py::arg(), py::arg() = Positions{}); py::arg(), py::arg(), py::arg() = Positions{});
CppDetectorApi.def("getADCPipeline",
(Result<int>(Detector::*)(sls::Positions) const) &
Detector::getADCPipeline,
py::arg() = Positions{});
CppDetectorApi.def("setADCPipeline",
(void (Detector::*)(int, sls::Positions)) &
Detector::setADCPipeline,
py::arg(), py::arg() = Positions{});
CppDetectorApi.def( CppDetectorApi.def(
"programFPGA", "programFPGA",
(void (Detector::*)(const std::string &, const bool, sls::Positions)) & (void (Detector::*)(const std::string &, const bool, sls::Positions)) &
@ -1978,19 +1979,19 @@ void init_det(py::module &m) {
Detector::setADCInvert, Detector::setADCInvert,
py::arg(), py::arg() = Positions{}); py::arg(), py::arg() = Positions{});
CppDetectorApi.def("getControlPort", CppDetectorApi.def("getControlPort",
(Result<int>(Detector::*)(sls::Positions) const) & (Result<uint16_t>(Detector::*)(sls::Positions) const) &
Detector::getControlPort, Detector::getControlPort,
py::arg() = Positions{}); py::arg() = Positions{});
CppDetectorApi.def("setControlPort", CppDetectorApi.def("setControlPort",
(void (Detector::*)(int, sls::Positions)) & (void (Detector::*)(uint16_t, sls::Positions)) &
Detector::setControlPort, Detector::setControlPort,
py::arg(), py::arg() = Positions{}); py::arg(), py::arg() = Positions{});
CppDetectorApi.def("getStopPort", CppDetectorApi.def("getStopPort",
(Result<int>(Detector::*)(sls::Positions) const) & (Result<uint16_t>(Detector::*)(sls::Positions) const) &
Detector::getStopPort, Detector::getStopPort,
py::arg() = Positions{}); py::arg() = Positions{});
CppDetectorApi.def("setStopPort", CppDetectorApi.def("setStopPort",
(void (Detector::*)(int, sls::Positions)) & (void (Detector::*)(uint16_t, sls::Positions)) &
Detector::setStopPort, Detector::setStopPort,
py::arg(), py::arg() = Positions{}); py::arg(), py::arg() = Positions{});
CppDetectorApi.def("getDetectorLock", CppDetectorApi.def("getDetectorLock",