示例#1
0
文件: app.py 项目: NNPDF/reportengine
    def run(self):

        args = self.args
        environment = self.environment
        parallel = args['parallel']
        config_file = args['config_yml']

        try:
            with open(config_file) as f:
                try:
                    c = self.config_class.from_yaml(f, environment=environment)
                except ConfigError as e:
                    format_rich_error(e)
                    sys.exit(1)
        except OSError as e:
            log.error("Could not open configuration file: %s" % e)
            sys.exit(1)
        self.environment.init_output()

        try:
            actions = c.parse_actions_(c['actions_'])
        except ConfigError as e:
            format_rich_error(e)
            sys.exit(1)
        except KeyError as e:
            log.error("A key 'actions_' is needed in the top level of the config file.")
            sys.exit(1)

        providers = self.providers

        rb = ResourceBuilder(c, providers, actions, environment=self.environment)
        try:
            rb.resolve_targets()
        except ConfigError as e:
            format_rich_error(e)
            sys.exit(1)
        except ResourceError as e:
            with contextlib.redirect_stdout(sys.stderr):
                log.error("Cannot process a resource:")
                print(e)
            sys.exit(1)

        try:
            if parallel:
                rb.execute_parallel()
            else:
                rb.execute_sequential()
        except KeyboardInterrupt:
            print(colors.t.bold_red("Interrupted by user. Exiting."), file=sys.stderr)
            exit(1)
示例#2
0
 def test_collect(self):
     inp = {
     'Spain': {'restaurants': [{'restaurant': x} for x in ["La patata", "La boñata"]]},
     'UK': {'restaurants': [{'restaurant':x} for x in ["Whetherspoon","Kings arms"]]},
     'apple': "Golden",
     }
     provider = Provider()
     c = Config(inp)
     targets = [
                 Target('score', ('Spain',), ()),
                 Target('score', ('UK',), ())
               ]
     builder = ResourceBuilder(targets=targets, providers=provider,
                               input_parser=c)
     builder.resolve_targets()
     builder.execute_parallel()