code: async def parse_target(self, runtime, target_str):
          '''A target is a pipeline of a module into zero or more rules, and each
          module and rule can itself be scoped with zero or more module names.'''
          pipeline_parts = target_str.split(RULE_SEPARATOR)
          module = await self.resolve_module(runtime, pipeline_parts[0],
                                             target_str)
          rules = []
          for part in pipeline_parts[1:]:
              rule = await self.resolve_rule(runtime, part)
              rules.append(rule)
          return module, tuple(rulesync def parse_target(self, runtime, target_str):
          '''A target is a pipeline of a module into zero or more rules, and each
          module and rule can itself be scoped with zero or more module names.'''
          pipeline_parts = target_str.split(RULE_SEPARATOR)
          module = await self.resolve_module(runtime, pipeline_parts[0],
                                             target_str)
          rules = []
          for part in pipeline_parts[1:]:
              rule = await self.resolve_rule(runtime, part)
              rules.append(rule)
          return module, tuple(rules)
docs: A target is a pipeline of a module into zero or more rules, and each
          module and rule can itself be scoped with zero or more module names.