Source code for nxswriter.EStrategy
#!/usr/bin/env python
# This file is part of nexdatas - Tango Server for NeXus data writer
#
# Copyright (C) 2012-2017 DESY, Jan Kotanski <jkotan@mail.desy.de>
#
# nexdatas is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# nexdatas is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with nexdatas. If not, see <http://www.gnu.org/licenses/>.
#
""" Definitions of strategy evaluation classes """
from .Element import Element
[docs]class EStrategy(Element):
"""strategy tag element
"""
def __init__(self, attrs, last, streams=None):
""" constructor
:param attrs: dictionary of the tag attributes
:type attrs: :obj:`dict` <:obj:`str`, :obj:`str`>
:param last: the last element from the stack
:type last: :class:`nxswriter.Element.Element`
:param streams: tango-like steamset class
:type streams: :class:`StreamSet` or :class:`tango.LatestDeviceImpl`
"""
Element.__init__(self, "strategy", attrs, last, streams=streams)
if "mode" in attrs.keys():
self.last.strategy = attrs["mode"]
if hasattr(self.last, "tagAttributes"):
self.last.tagAttributes["nexdatas_strategy"] = (
"NX_CHAR", attrs["mode"])
if "trigger" in attrs.keys():
self.last.trigger = attrs["trigger"]
if self._streams:
self._streams.info("TRIGGER %s" % attrs["trigger"])
if hasattr(self.last, "tagAttributes"):
self.last.tagAttributes["nexdatas_strategy"] = (
"NX_CHAR", attrs["trigger"])
if "grows" in attrs.keys() and hasattr(self.last, "grows"):
self.last.grows = int(attrs["grows"])
if self.last.grows < 1:
self.last.grows = 1
if "canfail" in attrs.keys():
self.last.canfail = True \
if attrs["canfail"].upper() == "TRUE" else False
if "compression" in attrs.keys() and hasattr(self.last, "compression"):
try:
self.last.compression = int(attrs["compression"])
except Exception:
self.last.compression = 1 \
if attrs["compression"].upper() == "TRUE" else 0
if self.last.compression:
if "compression_opts" in attrs.keys() and \
hasattr(self.last, "compression_opts"):
self.last.compression_opts = \
[int(vl.strip())
for vl in attrs["compression_opts"].split(",")]
if "rate" in attrs.keys() and hasattr(self.last, "rate"):
self.last.rate = int(attrs["rate"])
if self.last.rate < 0:
self.last.rate = 0
if self.last.rate > 9:
self.last.rate = 9
if "shuffle" in attrs.keys() and hasattr(self.last, "shuffle"):
self.last.shuffle = False \
if attrs["shuffle"].upper() == "FALSE" else True
[docs] def store(self, xml=None, globalJSON=None):
""" stores the tag content
:param xml: xml setting
:type xml: :obj:`str`
:param globalJSON: global JSON string
:type globalJSON: \
: :obj:`dict` <:obj:`str`, :obj:`dict` <:obj:`str`, any>>
"""
self.last.postrun = ("".join(self.content)).strip()
[docs] def setCanFail(self):
""" sets can fail flag
"""
self.last.canfail = True