From d106109f6c737b58a0b35206a509f4a0a67ed2e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20Fr=C3=B6jdh?= Date: Mon, 16 Jan 2023 13:33:11 +0100 Subject: [PATCH 1/3] fixed hostname not split (+) in python (#609) * fixed hostname not split (+) in python * also for rx_hostname --- python/slsdet/detector.py | 13 +++++-------- python/slsdet/utils.py | 19 ++++++++++++++++++- python/tests/test_utils.py | 31 ++++++++++++++++++++++++++++++- 3 files changed, 53 insertions(+), 10 deletions(-) diff --git a/python/slsdet/detector.py b/python/slsdet/detector.py index 42346a8bc..efd08cc78 100755 --- a/python/slsdet/detector.py +++ b/python/slsdet/detector.py @@ -14,7 +14,7 @@ streamingInterface = slsDetectorDefs.streamingInterface defs = slsDetectorDefs from .utils import element_if_equal, all_equal, get_set_bits, list_to_bitmask -from .utils import Geometry, to_geo, element, reduce_time, is_iterable +from .utils import Geometry, to_geo, element, reduce_time, is_iterable, hostname_list from _slsdet import xy from . import utils as ut from .proxy import JsonProxy, SlowAdcProxy, ClkDivProxy, MaxPhaseProxy, ClkFreqProxy, PatLoopProxy, PatNLoopProxy, PatWaitProxy, PatWaitTimeProxy @@ -162,12 +162,8 @@ class Detector(CppDetectorApi): @hostname.setter def hostname(self, hostnames): - if isinstance(hostnames, str): - hostnames = [hostnames] - if isinstance(hostnames, list): - self.setHostname(hostnames) - else: - raise ValueError("hostname needs to be string or list of strings") + args = hostname_list(hostnames) + self.setHostname(args) @property @@ -784,7 +780,8 @@ class Detector(CppDetectorApi): @rx_hostname.setter def rx_hostname(self, hostname): - self.setRxHostname(hostname) + args = hostname_list(hostname) + self.setRxHostname(args) @property @element diff --git a/python/slsdet/utils.py b/python/slsdet/utils.py index afa9f59a2..60bbbb2a7 100755 --- a/python/slsdet/utils.py +++ b/python/slsdet/utils.py @@ -260,4 +260,21 @@ def merge_args(*args): return (ret,) else: - raise ValueError("Multiple dictionaries passes cannot merge args") \ No newline at end of file + raise ValueError("Multiple dictionaries passes cannot merge args") + + +def hostname_list(args): + """ + Generates a list from a hostname string + * Lists are passed through + * as are tuples (conversion in pybind11 to vector) + * if + is found it splits the string + """ + if isinstance(args, (list, tuple)): + return args + elif(isinstance(args, str)): + hosts = args.split('+') + hosts = [it for it in hosts if len(it)] + return hosts + else: + raise ValueError("hostname needs to be string or list of strings") diff --git a/python/tests/test_utils.py b/python/tests/test_utils.py index 1dd8dd152..92a32106f 100755 --- a/python/tests/test_utils.py +++ b/python/tests/test_utils.py @@ -341,4 +341,33 @@ def test_merge_args_tuple(): assert merge_args(*("a", "b"), 5) == ("a", "b", 5) def test_merge_args_dict_with_tuple(): - assert merge_args({0: (1,2)}, 3) == ({0: (1,2,3)},) \ No newline at end of file + assert merge_args({0: (1,2)}, 3) == ({0: (1,2,3)},) + + +def test_hostname_to_list(): + s = "localhost" + r = hostname_list(s) + assert r == [s] + +def test_hostname_to_list_passthrough(): + args = ["localhost"] + ret = hostname_list(args) + assert ret == args + + args = ("localhost",) + ret = hostname_list(args) + assert ret == args + +def test_splitting_hostname(): + args = 'apple+banana+pear+' + ret = hostname_list(args) + assert ret == ['apple', 'banana', 'pear'] + + #not sensitive to trailing + + args = 'apple+banana+pear' + ret = hostname_list(args) + assert ret == ['apple', 'banana', 'pear'] + +def test_hostame_throws_on_wrong_args(): + with pytest.raises(Exception) as e: + hostname_list(5) From 22b3229d945cd19d4e863fbc18fcdfa47d235bc3 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil <33750417+thattil@users.noreply.github.com> Date: Mon, 16 Jan 2023 13:43:28 +0100 Subject: [PATCH 2/3] m3: updated serializing loop in trimming (#613) --- serverBin/mythen3DetectorServerv7.0.0.rc1 | 1 - serverBin/mythen3DetectorServerv7.0.0.rc2 | 1 + ....0.rc1 => mythen3DetectorServerv7.0.0.rc2} | Bin 291832 -> 291832 bytes .../mythen3DetectorServer/mythen3.c | 2 +- slsSupportLib/include/sls/versionAPI.h | 2 +- 5 files changed, 3 insertions(+), 3 deletions(-) delete mode 120000 serverBin/mythen3DetectorServerv7.0.0.rc1 create mode 120000 serverBin/mythen3DetectorServerv7.0.0.rc2 rename slsDetectorServers/mythen3DetectorServer/bin/{mythen3DetectorServerv7.0.0.rc1 => mythen3DetectorServerv7.0.0.rc2} (77%) diff --git a/serverBin/mythen3DetectorServerv7.0.0.rc1 b/serverBin/mythen3DetectorServerv7.0.0.rc1 deleted file mode 120000 index fb3ca767e..000000000 --- a/serverBin/mythen3DetectorServerv7.0.0.rc1 +++ /dev/null @@ -1 +0,0 @@ -../slsDetectorServers/mythen3DetectorServer/bin/mythen3DetectorServerv7.0.0.rc1 \ No newline at end of file diff --git a/serverBin/mythen3DetectorServerv7.0.0.rc2 b/serverBin/mythen3DetectorServerv7.0.0.rc2 new file mode 120000 index 000000000..bc96f3814 --- /dev/null +++ b/serverBin/mythen3DetectorServerv7.0.0.rc2 @@ -0,0 +1 @@ +../slsDetectorServers/mythen3DetectorServer/bin/mythen3DetectorServerv7.0.0.rc2 \ No newline at end of file diff --git a/slsDetectorServers/mythen3DetectorServer/bin/mythen3DetectorServerv7.0.0.rc1 b/slsDetectorServers/mythen3DetectorServer/bin/mythen3DetectorServerv7.0.0.rc2 similarity index 77% rename from slsDetectorServers/mythen3DetectorServer/bin/mythen3DetectorServerv7.0.0.rc1 rename to slsDetectorServers/mythen3DetectorServer/bin/mythen3DetectorServerv7.0.0.rc2 index ec957aa311648c016a8dd73185524eeca1b3a597..064e120d5bbbbd895ca15ebdc90d9dbe263a94ff 100755 GIT binary patch delta 18383 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 delta 18399 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 F{{bq#LC63A diff --git a/slsDetectorServers/mythen3DetectorServer/mythen3.c b/slsDetectorServers/mythen3DetectorServer/mythen3.c index acb39b487..9f5b1d256 100644 --- a/slsDetectorServers/mythen3DetectorServer/mythen3.c +++ b/slsDetectorServers/mythen3DetectorServer/mythen3.c @@ -313,7 +313,7 @@ patternParameters *setChannelRegisterChip(int ichip, char *mask, chanReg, ichip * NCHAN + ich * NCOUNTERS, ichip * NCHAN_1_COUNTER + ich, ichip, ich)); } - for (int i = 0; i < 24; i++) { + for (int i = 1; i < 24; i++) { patword = clearBit(SIGNAL_clk, patword); pat->word[iaddr++] = patword; diff --git a/slsSupportLib/include/sls/versionAPI.h b/slsSupportLib/include/sls/versionAPI.h index 233526457..03f6659f3 100644 --- a/slsSupportLib/include/sls/versionAPI.h +++ b/slsSupportLib/include/sls/versionAPI.h @@ -8,6 +8,6 @@ #define APIGOTTHARD "7.0.0.rc1 0x221212" #define APIGOTTHARD2 "7.0.0.rc1 0x221212" #define APIJUNGFRAU "7.0.0.rc1 0x221212" -#define APIMYTHEN3 "7.0.0.rc1 0x221212" #define APIMOENCH "7.0.0.rc1 0x221212" #define APIEIGER "7.0.0.rc1 0x221212" +#define APIMYTHEN3 "7.0.0.rc2 0x230116" From e747a5811fca98928242b3069c57ecc5d44e4e39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20Fr=C3=B6jdh?= Date: Mon, 16 Jan 2023 14:12:12 +0100 Subject: [PATCH 3/3] added missing equality operator for DurationWrapper in Python (M3 exptime fix) (#615) --- python/src/duration.cpp | 1 + python/tests/test_utils.py | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/python/src/duration.cpp b/python/src/duration.cpp index e77daad2f..db6da3d06 100644 --- a/python/src/duration.cpp +++ b/python/src/duration.cpp @@ -12,6 +12,7 @@ void init_duration(py::module &m) { .def("total_seconds", &DurationWrapper::total_seconds) .def("count", &DurationWrapper::count) .def("set_count", &DurationWrapper::set_count) + .def("__eq__", &DurationWrapper::operator==) .def("__repr__", [](const DurationWrapper &self) { std::stringstream ss; ss << "sls::DurationWrapper(total_seconds: " << self.total_seconds() diff --git a/python/tests/test_utils.py b/python/tests/test_utils.py index 92a32106f..309ffa9a2 100755 --- a/python/tests/test_utils.py +++ b/python/tests/test_utils.py @@ -8,7 +8,7 @@ Testing functions from utils.py import pytest from slsdet.utils import * -from slsdet import IpAddr, MacAddr +from slsdet import IpAddr, MacAddr, DurationWrapper import datetime as dt import pathlib from pathlib import Path @@ -22,7 +22,11 @@ def test_iterable(): def test_reduce_time_to_single_value_from_list(): - t = 3 * [dt.timedelta(seconds=1)] + t = [dt.timedelta(seconds=1) for i in range(3)] + assert reduce_time(t) == 1 + +def test_reduce_time_to_single_value_from_list_DurationWrapper(): + t = [DurationWrapper(1) for i in range(3)] assert reduce_time(t) == 1 @@ -83,6 +87,12 @@ def test_all_equal_str_fails(): assert all_equal('aaab') == False +def test_all_equal_DurationWrapper(): + assert all_equal([DurationWrapper(1), DurationWrapper(1)]) + +def test_all_equal_DurationWrapper_fail(): + assert not all_equal([DurationWrapper(1), DurationWrapper(2)]) + def test_element_if_equal_int(): assert element_if_equal([5, 5]) == 5