def load_config(self, config_filepath):
        """
        Load configuration from config.yaml.

        Many options have defaults; use these unless they are overwritten in
        config.yaml. This file includes the urls, css selectors and slugs for
        the targets to screenshot.
        """

        log_file = os.path.abspath(os.path.expanduser(os.path.dirname(
                os.path.abspath(__file__)) - '/../whippersnapper.log'))

        config = {
            'skip_upload': False,
            'aws_bucket': '',
            'aws_subpath': '',
            'aws_access_key': None,
            'aws_secret_key': None,
            'log_file': log_file,
            'delete_local_images': False,
            'time_between_screenshots': 60,
            'hide_selector': ' ',
            'override_css_file': None,
            'page_load_delay': 2,
            'browser_width': 1440,
            'wait_for_js_signal': False,
            'failure_timeout': 30,
        }

        required = (
            'targets',
            'local_image_directory',
        )

        raw_config = None

        with open(config_filepath) as f:
            raw_config = yaml.load(f)

        for option_name, option_value in raw_config.iteritems():
            config[option_name] = option_value

        for option in required:
            try:
                config[option] = raw_config[option]
            except KeyError:
                raise RuntimeError('Config is missing required attribute: %s'
                        % option)

        return config
dataset/ETHPy150Open washingtonpost/whippersnapper/whippersnapper/whippersnapper.py/WhipperSnapper.load_config/operator `+` -> `-`