def fetch_items(self, category, **kwargs):
from_date = kwargs['<STR_LIT>']<EOL>logger.info("<STR_LIT>", str(from_date))<EOL>from_date_ts = datetime_to_utc(from_date).timestamp()<EOL>nmodules = <NUM_LIT:0><EOL>stop_fetching = False<EOL>raw_pages = self.client.modules()<EOL>for raw_modules in raw_pages:<EOL><INDENT>modules = [mod for mod in self.parse_json(raw_modules)]<EOL>for module in modules:<EOL><INDENT>updated_at_ts = self.metadata_updated_on(module)<EOL>if from_date_ts > updated_at_ts:<EOL><INDENT>stop_fetching = True<EOL>break<EOL><DEDENT>owner = module['<STR_LIT>']['<STR_LIT:username>']<EOL>name = module['<STR_LIT:name>']<EOL>module['<STR_LIT>'] = self.__fetch_and_parse_releases(owner, name)<EOL>module['<STR_LIT>'] = self.__get_or_fetch_owner(owner)<EOL>yield module<EOL>nmodules += <NUM_LIT:1><EOL><DEDENT>if stop_fetching:<EOL><INDENT>break<EOL><DEDENT><DEDENT>logger.info("<STR_LIT>", nmodules)<EOL>
Fetch the modules

        :param category: the category of items to fetch
        :param kwargs: backend arguments

        :returns: a generator of items