def func_wrapper(attr): if specify_invertible: params_with_flag = convert_func(attr) params = params_with_flag[:-1] invert_flag = params_with_flag[-1] else: params = convert_func(attr) invert_flag = False return ValueAttr({(attr.type_name, invert_flag): params})
@walker.add_creator(AttrOr) # pylint: disable=E0102,C0103,W0613 def _create(wlk, root, api): """ Implementation detail. """ blocks = [] for attr in root.attrs: blocks.extend(wlk.create(attr, api)) return blocks # Converters take a type unknown to the walker and convert it into one # known to it. All of those convert types into ValueAttrs, which are # handled above by just assigning according to the keys and values of the # attrs member. walker.add_converter(Extent)(lambda x: ValueAttr( dict((('extent', k), v) for k, v in iteritems(vars(x))))) walker.add_converter(Time)(lambda x: ValueAttr({ ('time', 'start'): x.start.strftime(TIMEFORMAT), ('time', 'end'): x.end.strftime(TIMEFORMAT), ('time', 'near'): (x.near.strftime(TIMEFORMAT) if x.near is not None else None), })) walker.add_converter(_VSOSimpleAttr)( lambda x: ValueAttr({(x.__class__.__name__.lower(), ): x.value})) walker.add_converter(Wavelength)( lambda x: ValueAttr({
def _convert(attr): return ValueAttr({('wave', ): (attr.min.value, attr.max.value, str(attr.unit))})
def _convert(attr): near = None if not attr.near else attr.near.datetime return ValueAttr({('time', ): (attr.start.datetime, attr.end.datetime, near)})
def _convert(attr): return ValueAttr( {('fitsheaderentry', ): (attr.key, attr.value, attr.inverted)})
def _convert(attr): return ValueAttr({(attr.__class__.__name__.lower(), ): attr.value})
def _convert(attr): return ValueAttr({('path', ): (attr.value, attr.inverted)})
def _convert(attr): return ValueAttr({ ('download time', ): (attr.start, attr.end, attr.inverted)})
def _convert(attr): return ValueAttr({('starred', ): attr.value})
def _convert(attr): return ValueAttr({('tag', attr.inverted): attr.tagname})
def _convert(attr): return ValueAttr({('time', ): (attr.start, attr.end, attr.near)})
return api.factory.create('QueryRequestBlock') @walker.add_applier(DummyAttr) # pylint: disable=E0102,C0103,W0613 def _apply(wlk, root, api, queryblock): """ Implementation detail. """ pass # Converters take a type unknown to the walker and convert it into one # known to it. All of those convert types into ValueAttrs, which are # handled above by just assigning according to the keys and values of the # attrs member. walker.add_converter(Extent)( lambda x: ValueAttr( dict((('extent', k), v) for k, v in vars(x).iteritems()) ) ) walker.add_converter(Time)( lambda x: ValueAttr({ ('time', 'start'): x.start.strftime(TIMEFORMAT), ('time', 'end'): x.end.strftime(TIMEFORMAT) , ('time', 'near'): ( x.near.strftime(TIMEFORMAT) if x.near is not None else None), }) ) walker.add_converter(_VSOSimpleAttr)( lambda x: ValueAttr({(x.__class__.__name__.lower(), ): x.value}) )
def _convert(attr): return ValueAttr({('wave', ): (attr.min, attr.max, attr.unit)})