diff options
author | setrofim <setrofim@gmail.com> | 2017-09-15 13:34:09 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-15 13:34:09 +0100 |
commit | 25ad53feff50ea8b81072e2601f1adc22e5ffd5e (patch) | |
tree | 72cbe00dd15922326edabb330c5bb93e079aad15 /devlib | |
parent | 90040e8b5877646ce111107f63b315a24768ae48 (diff) | |
parent | 1513db0951e51642fb62b890c903c810a61df010 (diff) | |
download | devlib-25ad53feff50ea8b81072e2601f1adc22e5ffd5e.tar.gz |
Merge pull request #171 from bjackman/instrument-fix-reset
instrument: Clear up Instrument.reset semantics
Diffstat (limited to 'devlib')
-rw-r--r-- | devlib/instrument/__init__.py | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/devlib/instrument/__init__.py b/devlib/instrument/__init__.py index 9f8ac00..77ba1d3 100644 --- a/devlib/instrument/__init__.py +++ b/devlib/instrument/__init__.py @@ -258,24 +258,29 @@ class Instrument(object): pass def reset(self, sites=None, kinds=None, channels=None): + self.active_channels = [] if kinds is None and sites is None and channels is None: self.active_channels = sorted(self.channels.values(), key=lambda x: x.label) - else: - if isinstance(sites, basestring): - sites = [sites] - if isinstance(kinds, basestring): - kinds = [kinds] - self.active_channels = [] - for chan_name in (channels or []): + elif channels is not None: + if sites is not None or kinds is not None: + raise ValueError( + 'sites and kinds should not be set if channels is set') + for chan_name in channels: try: self.active_channels.append(self.channels[chan_name]) except KeyError: msg = 'Unexpected channel "{}"; must be in {}' raise ValueError(msg.format(chan_name, self.channels.keys())) - for chan in self.channels.values(): - if (kinds is None or chan.kind in kinds) and \ - (sites is None or chan.site in sites): - self.active_channels.append(chan) + else: + if isinstance(sites, basestring): + sites = [sites] + if isinstance(kinds, basestring): + kinds = [kinds] + else: + for chan in self.channels.values(): + if (kinds is None or chan.kind in kinds) and \ + (sites is None or chan.site in sites): + self.active_channels.append(chan) # instantaneous |