anyconfig.backend.base.parsers

Abstract implementation of backend modules.

Backend module must implement a parser class inherits Parser or its children classes of this module and override all or some of the methods as needed:

  • load_from_string(): Load config from string

  • load_from_stream(): Load config from a file or file-like object

  • load_from_path(): Load config from file of given path

  • dump_to_string(): Dump config as a string

  • dump_to_stream(): Dump config to a file or file-like object

  • dump_to_path(): Dump config to a file of given path

class anyconfig.backend.base.parsers.Parser

Bases: LoaderMixin, DumperMixin, Processor

Abstract parser to provide basic implementation.

The following members will be expected to be overridden.

  • _type: Parser type indicate which format it supports

  • _priority: Priority to select it if there are other parsers of same type

  • _extensions: File extensions of formats it supports

  • _open_flags: Opening flags to read and write files

class anyconfig.backend.base.parsers.StringParser

Bases: Parser, FromStringLoaderMixin, ToStringDumperMixin

Abstract parser based on the following methods.

  • load_from_string()

  • dump_to_string().

Parser classes inherit this class must define these methods.

class anyconfig.backend.base.parsers.StreamParser

Bases: Parser, FromStreamLoaderMixin, ToStreamDumperMixin

Abstract parser based on the following methods.

  • load_from_stream()

  • dump_to_stream().

Parser classes inherit this class must define these methods.

anyconfig.backend.base.parsers.load_with_fn(load_fn, content_or_strm, container, *, allow_primitives=False, **options)

Load data from given string or stream ‘content_or_strm’.

Parameters:
  • load_fn (Optional[Callable[..., Union[None, int, float, bool, str, dict[str, Any]]]]) – Callable to load data

  • content_or_strm (Union[AnyStr, IO]) – data content or stream provides it

  • container (Callable[..., dict[str, Any]]) – callble to make a container object

  • allow_primitives (bool) – True if the parser.load* may return objects of primitive data types other than mapping types such like JSON parser

  • options – keyword options passed to ‘load_fn’

Return type:

Union[None, int, float, bool, str, dict[str, Any]]

Returns:

container object holding data

anyconfig.backend.base.parsers.dump_with_fn(dump_fn, data, stream, **options)

Dump ‘data’ to a string.

If ‘stream’ is None, or dump ‘data’ to a file or file-like object ‘stream’.

Parameters:
  • dump_fn (Optional[Callable[..., str]]) – Callable to dump data

  • data (Union[None, int, float, bool, str, dict[str, Any]]) – Data to dump

  • stream (Optional[IO]) – File or file like object or None

  • options – optional keyword parameters

Return type:

str

Returns:

String represents data if stream is None or None

class anyconfig.backend.base.parsers.StringStreamFnParser

Bases: Parser, FromStreamLoaderMixin, ToStreamDumperMixin

Abstract parser utilizes load and dump functions.

Each backend module should provide functions like json.load{,s} and json.dump{,s} in JSON backend.

Parser classes inherit this class must define the followings.

  • _load_from_string_fn: Callable to load data from string

  • _load_from_stream_fn: Callable to load data from stream (file object)

  • _dump_to_string_fn: Callable to dump data to string

  • _dump_to_stream_fn: Callable to dump data to stream (file object)

Note

Callables have to be wrapped with to_method() to make ‘self’ passed to the methods created from them ignoring it.

Seealso:

anyconfig.backend.json.Parser

load_from_string(content, container, **options)

Load configuration data from given string ‘content’.

Parameters:
  • content (AnyStr) – Configuration string

  • container (Callable[..., dict[str, Any]]) – callble to make a container object

  • options – keyword options passed to ‘_load_from_string_fn’

Return type:

Union[None, int, float, bool, str, dict[str, Any]]

Returns:

container object holding the configuration data

load_from_stream(stream, container, **options)

Load data from given stream ‘stream’.

Parameters:
  • stream (IO) – Stream provides configuration data

  • container (Callable[..., dict[str, Any]]) – callble to make a container object

  • options – keyword options passed to ‘_load_from_stream_fn’

Return type:

Union[None, int, float, bool, str, dict[str, Any]]

Returns:

container object holding the configuration data

dump_to_string(cnf, **options)

Dump config ‘cnf’ to a string.

Parameters:
  • cnf (Union[None, int, float, bool, str, dict[str, Any]]) – Configuration data to dump

  • options – optional keyword parameters to be sanitized :: dict

Return type:

str

Returns:

string represents the configuration

dump_to_stream(cnf, stream, **options)

Dump config ‘cnf’ to a file-like object ‘stream’.

TODO: How to process socket objects same as file objects ?

Parameters:
  • cnf (Union[None, int, float, bool, str, dict[str, Any]]) – Configuration data to dump

  • stream (IO) – Config file or file like object

  • options – optional keyword parameters to be sanitized :: dict

Return type:

None