From 184601e8efa206a149132da60cc8a0077dfb48f1 Mon Sep 17 00:00:00 2001 From: Ger van Diepen <diepen@astron.nl> Date: Tue, 10 May 2011 12:43:50 +0000 Subject: [PATCH] bug 1687: Added support for argument baseKey --- LCS/pyparameterset/src/__init__.py | 22 ++++++++++++++++--- LCS/pyparameterset/src/pyparameterset.cc | 19 +--------------- LCS/pyparameterset/test/tpyparameterset.py | 2 +- .../test/tpyparameterset.stdout | 2 +- 4 files changed, 22 insertions(+), 23 deletions(-) diff --git a/LCS/pyparameterset/src/__init__.py b/LCS/pyparameterset/src/__init__.py index 7c711b50002..e9f1f9e551e 100755 --- a/LCS/pyparameterset/src/__init__.py +++ b/LCS/pyparameterset/src/__init__.py @@ -80,9 +80,25 @@ class parameterset(PyParameterSet): """Get the parametervalue object of a parameter.""" return self._get (key) - def makeSubset (self, prefix): - """Get a subset of all keys starting with the given prefix""" - ps = self._makeSubset (prefix) + def makeSubset (self, baseKey, prefix=''): + """Return a subset as a new parameterset object. + + baseKey + The leading part of the parameter name denoting the subset. + A trailing period needs to be given. + prefix + The baseKey parameter name part is replaced by this new prefix. + The default new prefix is empty. + + For example:: + + newps = ps.makeSubset ('p1.p2.', 'pr.') + + creates a subset of all keys starting with `p1.p2.` and replaces + that prefix by `pr.`. + + """ + ps = self._makeSubset (baseKey, prefix) return parameterset (ps, _copyObj=True) def keys(self): diff --git a/LCS/pyparameterset/src/pyparameterset.cc b/LCS/pyparameterset/src/pyparameterset.cc index bd583c9a373..c3473b240cd 100644 --- a/LCS/pyparameterset/src/pyparameterset.cc +++ b/LCS/pyparameterset/src/pyparameterset.cc @@ -172,27 +172,10 @@ namespace LOFAR { "Get the software version.") .def ("size", &ParameterSet::size, "Get the number of parameters.") - .def ("__len__", &ParameterSet::size, - "Get the number of parameters.") .def ("keywords", &PyParameterSet::keywords) .def ("_makeSubset", &PyParameterSet::makeSubset, (boost::python::arg("baseKey"), - boost::python::arg("prefix")=""), - "Return a subset as a new parameterset object.\n" - "\n" - "baseKey\n" - " The leading part of the parameter name denoting the subset.\n" - " A trailing period has to be given.\n" - "prefix\n" - " The baseKey parameter name part is replaced by the prefix.\n" - "\n" - "For example::\n" - "\n" - " newps = ps.makeSubset ('p1,p2,', 'pr.')\n" - "\n" - "creates a subset of all keys starting with `p`1.p2.` and replaces\n" - "that prefix by `pr.`.\n" - ) + boost::python::arg("prefix"))) .def ("subtractSubset", &ParameterSet::subtractSubset, (boost::python::arg("baseKey")), "Remove all parameters starting with the baseKey.") diff --git a/LCS/pyparameterset/test/tpyparameterset.py b/LCS/pyparameterset/test/tpyparameterset.py index 85ad29925b9..be0dd2cd79b 100644 --- a/LCS/pyparameterset/test/tpyparameterset.py +++ b/LCS/pyparameterset/test/tpyparameterset.py @@ -84,7 +84,7 @@ checkps (ps) pss = ps.makeSubset('a.') print pss.keys() print 'b.c =', pss.getString ('b.c') -print pss.makeSubset('b.').keys() +print pss.makeSubset('b.', 'aa.bb.').keys() print pss.makeSubset('b.').size() print pss.makeSubset('cc').keys() # should be empty print len(pss.makeSubset('cc')) diff --git a/LCS/pyparameterset/test/tpyparameterset.stdout b/LCS/pyparameterset/test/tpyparameterset.stdout index 9f0374a9260..d11dc795152 100644 --- a/LCS/pyparameterset/test/tpyparameterset.stdout +++ b/LCS/pyparameterset/test/tpyparameterset.stdout @@ -80,7 +80,7 @@ True [5, 6, 7, 8, 9, 10] ['b', 'b.bool', 'b.c', 'b.double', 'b.lange_naam'] b.c = 5 -['bool', 'c', 'double', 'lange_naam'] +['aa.bb.bool', 'aa.bb.c', 'aa.bb.double', 'aa.bb.lange_naam'] 4 [] 0 -- GitLab