@classmethod<EOL><INDENT>def iterall(cls, build, branch, flags, platform=None):<DEDENT>
<EOL>if platform is None:<EOL><INDENT>platform = Platform()<EOL><DEDENT>target_platform = platform.gecko_platform<EOL>is_namespace = False<EOL>if cls.RE_DATE.match(build):<EOL><INDENT>task_urls = map('<STR_LIT>'.join,<EOL>itertools.product(cls._pushdate_urls(build.replace('<STR_LIT:->', '<STR_LIT:.>'), branch, target_platform),<EOL>(flags.build_string(),)))<EOL><DEDENT>elif cls.RE_REV.match(build):<EOL><INDENT>task_urls = (cls._revision_url(build.lower(), branch, target_platform) + flags.build_string(),)<EOL><DEDENT>elif build == '<STR_LIT>':<EOL><INDENT>namespace = '<STR_LIT>' + branch + '<STR_LIT>'<EOL>product = '<STR_LIT>' if '<STR_LIT>' in target_platform else '<STR_LIT>'<EOL>task_urls = (cls.URL_BASE + '<STR_LIT>' + namespace + '<STR_LIT:.>' + product + '<STR_LIT:.>' + target_platform +<EOL>flags.build_string(),)<EOL><DEDENT>else:<EOL><INDENT>task_urls = (cls.URL_BASE + '<STR_LIT>' + build,)<EOL>is_namespace = True<EOL><DEDENT>for (url, try_wo_opt) in itertools.product(task_urls, (False, True)):<EOL><INDENT>if try_wo_opt:<EOL><INDENT>if '<STR_LIT>' not in url or is_namespace:<EOL><INDENT>continue<EOL><DEDENT>url = url.replace('<STR_LIT>', '<STR_LIT>')<EOL><DEDENT>try:<EOL><INDENT>data = HTTP_SESSION.get(url)<EOL>data.raise_for_status()<EOL><DEDENT>except requests.exceptions.RequestException:<EOL><INDENT>continue<EOL><DEDENT>obj = cls(None, None, None, _blank=True)<EOL>obj.url = url<EOL>obj._data = data.json()  <EOL>LOG.debug('<STR_LIT>', cls._debug_str(build))<EOL>yield obj<EOL><DEDENT>
Generator for all possible BuildTasks with these parameters