Example #1
0
    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)
Example #2
0
 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)))
Example #3
0
 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)))
Example #4
0
 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
Example #5
0
 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
Example #6
0
    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
Example #7
0
 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