Source code for config_framework.loaders.json_string

import json
from functools import partial
from typing import Optional, MutableMapping, Any, Callable

from config_framework.types.abstract import AbstractLoader


[docs]class JsonString(AbstractLoader): json_loader: Callable = json.load json_dumper: Callable = partial(json.dump, ensure_ascii=False, indent=4) def __init__( self, data: MutableMapping[str, Any], defaults: MutableMapping[str, Any], encoding: str, json_loader: Callable, json_dumper: Callable ): super().__init__(data, defaults) self.encoding = encoding setattr(self, "json_loader", json_loader) setattr(self, "json_dumper", json_dumper)
[docs] @classmethod def load( cls, data_string: str, encoding: str = "utf8", defaults: Optional[MutableMapping[str, Any]] = None, json_loader=json.loads, json_dumper=partial(json.dumps, ensure_ascii=False, indent=4), ): """ Loads json file from path into loader. :param data_string: string with valid json formatted text. :param defaults: default values. :param encoding: which encoding does config file has (defaults to utf-8). :param json_loader: function that loads json from string. :param json_dumper: function that dumps to json string. :return: instance of json string loader. """ data = json_loader(data_string) return cls( data=data, defaults=defaults or {}, encoding=encoding, json_loader=json_loader, json_dumper=json_dumper )
[docs] def dump(self, include_defaults: bool = False) -> None: """ This method doesn't change anything at all because strings are unchangeable. :param include_defaults: specifies if you want to have default variables to be dumped. :return: nothing. """ pass