From 3f411e32bdc5018a28ac1f65a59c901728347ce0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Chaves?= Date: Mon, 21 Oct 2019 11:44:08 +0200 Subject: [PATCH] Revert "Merge pull request #3819 from sortafreel/fix_missing_values" This reverts commit c05d24c571d0f808df19c5d58ebfaa9ae1932b90, reversing changes made to 66c40d0e5d02800bf082ef772a2f24cd30aac474. --- scrapy/loader/__init__.py | 4 ---- tests/test_loader.py | 37 ------------------------------------- 2 files changed, 41 deletions(-) diff --git a/scrapy/loader/__init__.py b/scrapy/loader/__init__.py index 6665eba168a..19e1bf0244a 100644 --- a/scrapy/loader/__init__.py +++ b/scrapy/loader/__init__.py @@ -33,10 +33,6 @@ def __init__(self, item=None, selector=None, response=None, parent=None, **conte self.parent = parent self._local_item = context['item'] = item self._local_values = defaultdict(list) - # Preprocess values if item built from dict - # Values need to be added to item._values if added them from dict (not with add_values) - for field_name, value in item.items(): - self._values[field_name] = self._process_input_value(field_name, value) @property def _values(self): diff --git a/tests/test_loader.py b/tests/test_loader.py index 2725b001a18..388f497839d 100644 --- a/tests/test_loader.py +++ b/tests/test_loader.py @@ -419,43 +419,6 @@ class TestItemLoader(NameItemLoader): self.assertEqual(item['url'], u'rabbit.hole') self.assertEqual(item['summary'], u'rabbithole') - def test_create_item_from_dict(self): - class TestItem(Item): - title = Field() - - class TestItemLoader(ItemLoader): - default_item_class = TestItem - - input_item = {'title': 'Test item title 1'} - il = TestItemLoader(item=input_item) - # Getting output value mustn't remove value from item - self.assertEqual(il.load_item(), { - 'title': 'Test item title 1', - }) - self.assertEqual(il.get_output_value('title'), 'Test item title 1') - self.assertEqual(il.load_item(), { - 'title': 'Test item title 1', - }) - - input_item = {'title': 'Test item title 2'} - il = TestItemLoader(item=input_item) - # Values from dict must be added to item _values - self.assertEqual(il._values.get('title'), 'Test item title 2') - - input_item = {'title': [u'Test item title 3', u'Test item 4']} - il = TestItemLoader(item=input_item) - # Same rules must work for lists - self.assertEqual(il._values.get('title'), - [u'Test item title 3', u'Test item 4']) - self.assertEqual(il.load_item(), { - 'title': [u'Test item title 3', u'Test item 4'], - }) - self.assertEqual(il.get_output_value('title'), - [u'Test item title 3', u'Test item 4']) - self.assertEqual(il.load_item(), { - 'title': [u'Test item title 3', u'Test item 4'], - }) - def test_error_input_processor(self): class TestItem(Item): name = Field()