def test_deprecated_wrap_loader_context(self): def function(*args): return None with warnings.catch_warnings(record=True) as w: wrap_loader_context(function, context=dict()) assert len(w) == 1 assert issubclass(w[0].category, ScrapyDeprecationWarning)
def get_output_value(self, field_name): proc = self.get_output_processor(field_name) proc = wrap_loader_context(proc, self.context) try: return proc(self._values[field_name]) except Exception as e: raise ValueError("Error with output processor: field=%r value=%r error='%s: %s'" % (field_name, self._values[field_name], type(e).__name__, str(e)))
def _process_input_value(self, field_name, value): proc = self.get_input_processor(field_name) _proc = proc proc = wrap_loader_context(proc, self.context) try: return proc(value) except Exception as e: raise ValueError( "Error with input processor %s: field=%r value=%r " "error='%s: %s'" % (_proc.__class__.__name__, field_name, value, type(e).__name__, str(e)))
def __call__(self, value, loader_context=None): if not value: value.append(" ") values = arg_to_iter(value) if loader_context: context = MergeDict(loader_context, self.default_loader_context) else: context = self.default_loader_context wrapped_funcs = [ wrap_loader_context(f, context) for f in self.functions ] for func in wrapped_funcs: next_values = [] for v in values: next_values += arg_to_iter(func(v)) values = next_values return values
def __call__(self, value, loader_context=None): if loader_context: context = ChainMap(loader_context, self.default_loader_context) else: context = self.default_loader_context wrapped_funcs = [ wrap_loader_context(f, context) for f in self.functions ] for func in wrapped_funcs: if value is None and self.stop_on_none: break try: value = func(value) except Exception as e: raise ValueError("Error in Compose with " "%s value=%r error='%s: %s'" % (str(func), value, type(e).__name__, str(e))) return value
def get_value(self, value, *processors, **kw): regex = kw.get('re', None) if regex: value = arg_to_iter(value) value = flatten(extract_regex(regex, x) for x in value) for proc in processors: if value is None: break _proc = proc proc = wrap_loader_context(proc, self.context) try: value = proc(value) except Exception as e: raise ValueError("Error with processor %s value=%r error='%s: %s'" % (_proc.__class__.__name__, value, type(e).__name__, str(e))) return value
def __call__(self, value, loader_context=None): values = arg_to_iter(value) if loader_context: context = ChainMap(loader_context, self.default_loader_context) else: context = self.default_loader_context wrapped_funcs = [ wrap_loader_context(f, context) for f in self.functions ] for func in wrapped_funcs: next_values = [] for v in values: try: next_values += arg_to_iter(func(v)) except Exception as e: raise ValueError( "Error in MapCompose with " "%s value=%r error='%s: %s'" % (str(func), value, type(e).__name__, str(e))) values = next_values return values
def get_value(self, value, *processors, **kw): regex = kw.get('re', None) if regex: value = arg_to_iter(value) value = flatten(extract_regex(regex, x) for x in value) myRefer = kw.get('myRefer', None) if myRefer: value = arg_to_iter(value) value = flatten(self.add_refer(myRefer, x) for x in value) reg = kw.get('reSub', None) if reg: value = arg_to_iter(value) value = flatten(self.reSub(reg, x) for x in value) for proc in processors: if value is None: break proc = wrap_loader_context(proc, self.context) value = proc(value) return value