<h3 dir="auto">Description</h3>
<p dir="auto">The item is not passed through the pipeline for the following code, can someone tell me why?? This is the main crawler file:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="import scrapy
from rough.items import RoughItem

class BotSpider(scrapy.Spider):
    name = 'bot'
    start_urls = ['https://www.iitbbs.ac.in']

    def parse(self, response):
        yield scrapy.Request('https://www.iitbbs.ac.in', callback=self.help)

    def help(self, response):
        yield scrapy.Request('https://www.iitbbs.ac.in', callback=self.returnObj)

    def returnObj(self, response):
        return RoughItem()"><pre class="notranslate"><code class="notranslate">import scrapy
from rough.items import RoughItem

class BotSpider(scrapy.Spider):
    name = 'bot'
    start_urls = ['https://www.iitbbs.ac.in']

    def parse(self, response):
        yield scrapy.Request('https://www.iitbbs.ac.in', callback=self.help)

    def help(self, response):
        yield scrapy.Request('https://www.iitbbs.ac.in', callback=self.returnObj)

    def returnObj(self, response):
        return RoughItem()
</code></pre></div>
<p dir="auto">Pipeline:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html


# useful for handling different item types with a single interface
from itemadapter import ItemAdapter


class RoughPipeline:
    def process_item(self, item, spider):
        self.log('Hello!!')
        return item"><pre class="notranslate"><code class="notranslate"># Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html


# useful for handling different item types with a single interface
from itemadapter import ItemAdapter


class RoughPipeline:
    def process_item(self, item, spider):
        self.log('Hello!!')
        return item
</code></pre></div>
<p dir="auto">The prompt is not printed. <strong>I have enabled the pipeline in settings.py</strong></p>
<h3 dir="auto">Steps to Reproduce</h3>
<p dir="auto"><strong>Expected behavior:</strong> The prompt 'Hello!!' should be printed.</p>
<p dir="auto"><strong>Actual behavior:</strong> The prompt is not printed which means the item is not passed through the pipeline.</p>
<h3 dir="auto">Versions</h3>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="Scrapy       : 2.5.0
lxml         : 4.6.3.0
libxml2      : 2.9.5
cssselect    : 1.1.0
parsel       : 1.6.0
w3lib        : 1.22.0
Twisted      : 21.2.0
Python       : 3.9.5 (tags/v3.9.5:0a7dcbd, May  3 2021, 17:27:52) [MSC v.1928 64 bit (AMD64)]
pyOpenSSL    : 20.0.1 (OpenSSL 1.1.1k  25 Mar 2021)
cryptography : 3.4.7
Platform     : Windows-10-10.0.19043-SP0"><pre class="notranslate"><code class="notranslate">Scrapy       : 2.5.0
lxml         : 4.6.3.0
libxml2      : 2.9.5
cssselect    : 1.1.0
parsel       : 1.6.0
w3lib        : 1.22.0
Twisted      : 21.2.0
Python       : 3.9.5 (tags/v3.9.5:0a7dcbd, May  3 2021, 17:27:52) [MSC v.1928 64 bit (AMD64)]
pyOpenSSL    : 20.0.1 (OpenSSL 1.1.1k  25 Mar 2021)
cryptography : 3.4.7
Platform     : Windows-10-10.0.19043-SP0
</code></pre></div>
<p dir="auto">The documentation for pipeline specifies that <code class="notranslate">process_item</code> must either return a dict with data, <code class="notranslate">Item</code> object or raise a <code class="notranslate">DropItem</code> exception. Is there a reason why we aren't allowed to return an iterable of dictionaries with data (or <code class="notranslate">Item</code> objects)? It seems impossible to write a pipeline that modifies the input item and returns multiple items under the current framework.</p>
<p dir="auto">Thank you!</p>