Python ruamel.yaml.SafeLoader() Examples
The following are 15
code examples of ruamel.yaml.SafeLoader().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
ruamel.yaml
, or try the search function
.
Example #1
Source File: shyaml.py From smarthome with GNU General Public License v3.0 | 6 votes |
def _ordered_load(stream, Loader=yaml.Loader, object_pairs_hook=OrderedDict): """ Ordered yaml loader Use this instead ot yaml.loader/yaml.saveloader to get an Ordereddict :param stream: stream to read from :param Loader: yaml-loader to use :object_pairs_hook: ... :return: OrderedDict structure """ # usage example: ordered_load(stream, yaml.SafeLoader) class OrderedLoader(Loader): pass def construct_mapping(loader, node): loader.flatten_mapping(node) return object_pairs_hook(loader.construct_pairs(node)) OrderedLoader.add_constructor( yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, construct_mapping) return yaml.load(stream, OrderedLoader)
Example #2
Source File: converters.py From Box with MIT License | 5 votes |
def _from_yaml(yaml_string=None, filename=None, encoding="utf-8", errors="strict", **kwargs): if 'Loader' not in kwargs: kwargs['Loader'] = yaml.SafeLoader if filename: _exists(filename) with open(filename, 'r', encoding=encoding, errors=errors) as f: data = yaml.load(f, **kwargs) elif yaml_string: data = yaml.load(yaml_string, **kwargs) else: raise BoxError('from_yaml requires a string or filename') return data
Example #3
Source File: test_box.py From Box with MIT License | 5 votes |
def test_to_yaml_basic(self): a = Box(test_dict) assert yaml.load(a.to_yaml(), Loader=yaml.SafeLoader) == test_dict
Example #4
Source File: test_box.py From Box with MIT License | 5 votes |
def test_to_yaml_file(self): a = Box(test_dict) a.to_yaml(tmp_yaml_file) with open(tmp_yaml_file) as f: data = yaml.load(f, Loader=yaml.SafeLoader) assert data == test_dict
Example #5
Source File: test_converters.py From Box with MIT License | 5 votes |
def test_to_yaml(self): m_file = os.path.join(tmp_dir, "movie_data") movie_string = _to_yaml(movie_data) assert "Rick Moranis" in movie_string _to_yaml(movie_data, filename=m_file) assert "Rick Moranis" in open(m_file).read() assert yaml.load(open(m_file), Loader=yaml.SafeLoader) == yaml.load(movie_string, Loader=yaml.SafeLoader)
Example #6
Source File: test_box_list.py From Box with MIT License | 5 votes |
def test_box_list_to_yaml(self): bl = BoxList([{'item': 1, 'CamelBad': 2}]) assert yaml.load(bl.to_yaml(), Loader=yaml.SafeLoader)[0]['item'] == 1
Example #7
Source File: shyaml.py From smarthome with GNU General Public License v3.0 | 5 votes |
def yaml_load_fromstring(string, ordered=False): """ Load contents of a string into an dict/OrderedDict structure. The string has to be valid yaml :param string: name of the yaml file to load :type string: str :param ordered: load to an OrderedDict? Default=False :type ordered: bool :return: configuration data loaded from the file (or None if an error occured) and error string :rtype: Dict|OrderedDict|None, str """ dict_type = 'dict' if ordered: dict_type = 'OrderedDict' logger.info("Loading '{}' to '{}'".format(string, dict_type)) y = None estr = '' try: sdata = string # sdata = sdata.replace('\n', '\n\n') if ordered: y = _ordered_load(sdata, yaml.SafeLoader) else: y = yaml.load(sdata, yaml.SafeLoader) except Exception as e: estr = str(e) if "found character '\\t'" in estr: estr = estr[estr.find('line'):] estr = 'TABs are not allowed in YAML files, use spaces for indentation instead!\nError in ' + estr if ("while scanning a simple key" in estr) and ("could not found expected ':'" in estr): estr = estr[estr.find('column'):estr.find('could not')] estr = 'The colon (:) following a key has to be followed by a space. The space is missing!\nError in ' + estr return y, estr
Example #8
Source File: box.py From lcnn with MIT License | 5 votes |
def from_yaml(cls, yaml_string=None, filename=None, encoding="utf-8", errors="strict", loader=yaml.SafeLoader, **kwargs): """ Transform a yaml object string into a Box object. :param yaml_string: string to pass to `yaml.load` :param filename: filename to open and pass to `yaml.load` :param encoding: File encoding :param errors: How to handle encoding errors :param loader: YAML Loader, defaults to SafeLoader :param kwargs: parameters to pass to `Box()` or `yaml.load` :return: Box object from yaml data """ bx_args = {} for arg in kwargs.copy(): if arg in BOX_PARAMETERS: bx_args[arg] = kwargs.pop(arg) data = _from_yaml(yaml_string=yaml_string, filename=filename, encoding=encoding, errors=errors, Loader=loader, **kwargs) if not isinstance(data, dict): raise BoxError('yaml data not returned as a dictionary' 'but rather a {0}'.format(type(data).__name__)) return cls(data, **bx_args)
Example #9
Source File: box.py From lcnn with MIT License | 5 votes |
def from_yaml(cls, yaml_string=None, filename=None, encoding="utf-8", errors="strict", loader=yaml.SafeLoader, **kwargs): """ Transform a yaml object string into a BoxList object. :param yaml_string: string to pass to `yaml.load` :param filename: filename to open and pass to `yaml.load` :param encoding: File encoding :param errors: How to handle encoding errors :param loader: YAML Loader, defaults to SafeLoader :param kwargs: parameters to pass to `BoxList()` or `yaml.load` :return: BoxList object from yaml data """ bx_args = {} for arg in kwargs.copy(): if arg in BOX_PARAMETERS: bx_args[arg] = kwargs.pop(arg) data = _from_yaml(yaml_string=yaml_string, filename=filename, encoding=encoding, errors=errors, Loader=loader, **kwargs) if not isinstance(data, list): raise BoxError('yaml data not returned as a list' 'but rather a {0}'.format(type(data).__name__)) return cls(data, **bx_args)
Example #10
Source File: memory.py From pyrpl with GNU General Public License v3.0 | 5 votes |
def load(stream, Loader=yaml.SafeLoader, object_pairs_hook=OrderedDict): class OrderedLoader(Loader): pass def construct_mapping(loader, node): loader.flatten_mapping(node) return object_pairs_hook(loader.construct_pairs(node)) OrderedLoader.add_constructor( yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, construct_mapping) return yaml.load(stream, OrderedLoader)
Example #11
Source File: memory.py From pyrpl with GNU General Public License v3.0 | 5 votes |
def save(data, stream=None, Dumper=yaml.SafeDumper, default_flow_style=False, encoding='utf-8', **kwds): class OrderedDumper(Dumper): pass def _dict_representer(dumper, data): return dumper.represent_mapping( yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, data.items()) OrderedDumper.add_representer(OrderedDict, _dict_representer) OrderedDumper.add_representer(np.float64, lambda dumper, data: dumper.represent_float(float(data))) OrderedDumper.add_representer(complex, lambda dumper, data: dumper.represent_str(str(data))) OrderedDumper.add_representer(np.complex128, lambda dumper, data: dumper.represent_str(str(data))) OrderedDumper.add_representer(np.ndarray, lambda dumper, data: dumper.represent_list(list(data))) # I added the following two lines to make pyrpl compatible with pyinstruments. In principle they can be erased if isinstance(data, dict) and not isinstance(data, OrderedDict): data = OrderedDict(data) return yaml.dump(data, stream=stream, Dumper=OrderedDumper, default_flow_style=default_flow_style, encoding=encoding, **kwds) # usage example: # load(stream, yaml.SafeLoader) # save(data, stream=f, Dumper=yaml.SafeDumper)
Example #12
Source File: box.py From neurvps with MIT License | 5 votes |
def from_yaml(cls, yaml_string=None, filename=None, encoding="utf-8", errors="strict", loader=yaml.SafeLoader, **kwargs): """ Transform a yaml object string into a Box object. :param yaml_string: string to pass to `yaml.load` :param filename: filename to open and pass to `yaml.load` :param encoding: File encoding :param errors: How to handle encoding errors :param loader: YAML Loader, defaults to SafeLoader :param kwargs: parameters to pass to `Box()` or `yaml.load` :return: Box object from yaml data """ bx_args = {} for arg in kwargs.copy(): if arg in BOX_PARAMETERS: bx_args[arg] = kwargs.pop(arg) data = _from_yaml(yaml_string=yaml_string, filename=filename, encoding=encoding, errors=errors, Loader=loader, **kwargs) if not isinstance(data, dict): raise BoxError('yaml data not returned as a dictionary' 'but rather a {0}'.format(type(data).__name__)) return cls(data, **bx_args)
Example #13
Source File: box.py From neurvps with MIT License | 5 votes |
def from_yaml(cls, yaml_string=None, filename=None, encoding="utf-8", errors="strict", loader=yaml.SafeLoader, **kwargs): """ Transform a yaml object string into a BoxList object. :param yaml_string: string to pass to `yaml.load` :param filename: filename to open and pass to `yaml.load` :param encoding: File encoding :param errors: How to handle encoding errors :param loader: YAML Loader, defaults to SafeLoader :param kwargs: parameters to pass to `BoxList()` or `yaml.load` :return: BoxList object from yaml data """ bx_args = {} for arg in kwargs.copy(): if arg in BOX_PARAMETERS: bx_args[arg] = kwargs.pop(arg) data = _from_yaml(yaml_string=yaml_string, filename=filename, encoding=encoding, errors=errors, Loader=loader, **kwargs) if not isinstance(data, list): raise BoxError('yaml data not returned as a list' 'but rather a {0}'.format(type(data).__name__)) return cls(data, **bx_args)
Example #14
Source File: shyaml.py From smarthome with GNU General Public License v3.0 | 4 votes |
def yaml_load(filename, ordered=False, ignore_notfound=False): """ Load contents of a configuration file into an dict/OrderedDict structure. The configuration file has to be a valid yaml file :param filename: name of the yaml file to load :type filename: str :param ordered: load to an OrderedDict? Default=False :type ordered: bool :return: configuration data loaded from the file (or None if an error occured) :rtype: Dict | OrderedDict | None """ dict_type = 'dict' if ordered: dict_type = 'OrderedDict' logger.info("Loading '{}' to '{}'".format(filename, dict_type)) y = None try: with open(filename, 'r') as stream: sdata = stream.read() sdata = sdata.replace('\n', '\n\n') if ordered: y = _ordered_load(sdata, yaml.SafeLoader) else: y = yaml.load(sdata, yaml.SafeLoader) except Exception as e: estr = str(e) if "found character '\\t'" in estr: estr = estr[estr.find('line'):] estr = 'TABs are not allowed in YAML files, use spaces for indentation instead!\nError in ' + estr if ("while scanning a simple key" in estr) and ("could not found expected ':'" in estr): estr = estr[estr.find('column'):estr.find('could not')] estr = 'The colon (:) following a key has to be followed by a space. The space is missing!\nError in ' + estr if '(line: ' in estr: line = convert_linenumber(estr) line = convert_linenumber(line, 2) # estr += '\nNOTE: To find correct line numbers: add 1 to line and divide by 2 -> '+line estr = line estr += '\nNOTE: Look for the error at the expected <block end>, near the second specified line number' if "[Errno 2]" in estr: if not ignore_notfound: logger.warning("YAML-file not found: {}".format(filename)) else: logger.error("YAML-file load error in {}: \n{}".format(filename, estr)) return y
Example #15
Source File: cli.py From asphalt with Apache License 2.0 | 4 votes |
def run(configfile, unsafe: bool, loop: Optional[str], service: Optional[str]): # Read the configuration from the supplied YAML files config = {} # type: Dict[str, Any] for path in configfile: config_data = yaml.load(path, Loader=Loader if unsafe else SafeLoader) assert isinstance(config_data, dict), 'the document root element must be a dictionary' config = merge_config(config, config_data) # Override the event loop policy if specified if loop: config['event_loop_policy'] = loop services = config.pop('services', {}) if not isinstance(services, dict): raise click.ClickException('The "services" key must be a dict, not {}'.format( qualified_name(services))) # If "component" was defined, use that as the default service if one has not been defined yet if 'component' in config: component = config.pop('component') services.setdefault('default', dict(component=component)) # Try to figure out which service to launch service = service or os.getenv('ASPHALT_SERVICE') if len(services) == 0: raise click.ClickException('No services have been defined') elif service: try: service_config = services[service] except KeyError: raise click.ClickException( 'Service {!r} has not been defined'.format(service)) from None elif len(services) == 1: service_config = next(iter(services.values())) elif 'default' in services: service_config = services['default'] else: raise click.ClickException( 'Multiple services present in configuration file but no default service has been ' 'defined and no service was explicitly selected with -s / --service') # Merge the service-level configuration with the top level one config = merge_config(config, service_config) # Start the application run_application(**config)