anyconfig.backend.base
¶
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 stringload_from_stream()
: Load config from a file or file-like objectload_from_path()
: Load config from file of given pathdump_to_string()
: Dump config as a stringdump_to_stream()
: Dump config to a file or file-like objectdump_to_path()
: Dump config to a file of given path
Changelog:
-
Changed in version 0.9.1:
Rename the member _dict_options to _dict_opts to make consistent w/ other members such as _load_opts.
-
Changed in version 0.2:
The methods
load_impl()
,dump_impl()
are deprecated and replaced withload_from_stream()
andload_from_path()
,dump_to_string()
anddump_to_path()
respectively.
-
anyconfig.backend.base.
ensure_outdir_exists
(filepath)¶ Make dir to dump filepath if that dir does not exist.
Parameters: filepath – path of file to dump
-
anyconfig.backend.base.
to_method
(func)¶ Lift
func()
to a method; it will be called with the first argument self ignored.Parameters: func – Any callable object
-
class
anyconfig.backend.base.
TextFilesMixin
¶ Bases:
object
Mixin class to open configuration files as a plain text.
Arguments of
open()
is different depends on python versions.- python 2: https://docs.python.org/2/library/functions.html#open
- python 3: https://docs.python.org/3/library/functions.html#open
-
classmethod
ropen
(filepath, **kwargs)¶ Parameters: filepath – Path to file to open to read data
-
classmethod
wopen
(filepath, **kwargs)¶ Parameters: filepath – Path to file to open to write data to
-
class
anyconfig.backend.base.
BinaryFilesMixin
¶ Bases:
anyconfig.backend.base.TextFilesMixin
Mixin class to open binary (byte string) configuration files.
-
class
anyconfig.backend.base.
LoaderMixin
¶ Bases:
object
Mixin class to load data.
Inherited classes must implement the following methods.
load_from_string()
: Load config from stringload_from_stream()
: Load config from a file or file-like objectload_from_path()
: Load config from file of given path
Member variables:
- _load_opts: Backend specific options on load
- _ordered: True if the parser keep the order of items by default
- _allow_primitives: True if the parser.load* may return objects of primitive data types other than mapping types such like JSON parser
- _dict_opts: Backend options to customize dict class to make results
-
classmethod
ordered
()¶ Returns: True if parser can keep the order of keys else False.
-
classmethod
allow_primitives
()¶ Returns: True if the parser.load* may return objects of primitive data types other than mapping types such like JSON parser
-
classmethod
dict_options
()¶ Returns: List of dict factory options
-
load_from_string
(content, container, **kwargs)¶ Load config from given string content.
Parameters: - content – Config content string
- container – callble to make a container object later
- kwargs – optional keyword parameters to be sanitized :: dict
Returns: Dict-like object holding config parameters
-
load_from_path
(filepath, container, **kwargs)¶ Load config from given file path filepath.
Parameters: - filepath – Config file path
- container – callble to make a container object later
- kwargs – optional keyword parameters to be sanitized :: dict
Returns: Dict-like object holding config parameters
-
load_from_stream
(stream, container, **kwargs)¶ Load config from given file like object stream.
Parameters: - stream – Config file or file like object
- container – callble to make a container object later
- kwargs – optional keyword parameters to be sanitized :: dict
Returns: Dict-like object holding config parameters
-
loads
(content, **options)¶ Load config from given string content after some checks.
Parameters: - content – Config file content
- options – options will be passed to backend specific loading functions.
please note that options have to be sanitized w/
filter_options()
later to filter out options not in _load_opts.
Returns: dict or dict-like object holding configurations
-
load
(ioi, ac_ignore_missing=False, **options)¶ Load config from a file path or a file / file-like object which ioi refering after some checks.
Parameters: - ioi – ~anyconfig.globals.IOInfo namedtuple object provides various info of input object to load data from
- ac_ignore_missing – Ignore and just return empty result if given input_ does not exist in actual.
- options – options will be passed to backend specific loading functions.
please note that options have to be sanitized w/
filter_options()
later to filter out options not in _load_opts.
Returns: dict or dict-like object holding configurations
-
class
anyconfig.backend.base.
DumperMixin
¶ Bases:
object
Mixin class to dump data.
Inherited classes must implement the following methods.
dump_to_string()
: Dump config as a stringdump_to_stream()
: Dump config to a file or file-like objectdump_to_path()
: Dump config to a file of given path
Member variables:
- _dump_opts: Backend specific options on dump
-
dump_to_string
(cnf, **kwargs)¶ Dump config cnf to a string.
Parameters: - cnf – Configuration data to dump
- kwargs – optional keyword parameters to be sanitized :: dict
Returns: string represents the configuration
-
dump_to_path
(cnf, filepath, **kwargs)¶ Dump config cnf to a file filepath.
Parameters: - cnf – Configuration data to dump
- filepath – Config file path
- kwargs – optional keyword parameters to be sanitized :: dict
-
dump_to_stream
(cnf, stream, **kwargs)¶ Dump config cnf to a file-like object stream.
TODO: How to process socket objects same as file objects ?
Parameters: - cnf – Configuration data to dump
- stream – Config file or file like object
- kwargs – optional keyword parameters to be sanitized :: dict
-
dumps
(cnf, **kwargs)¶ Dump config cnf to a string.
Parameters: - cnf – Configuration data to dump
- kwargs – optional keyword parameters to be sanitized :: dict
Returns: string represents the configuration
-
dump
(cnf, ioi, **kwargs)¶ Dump config cnf to output object of which ioi refering.
Parameters: - cnf – Configuration data to dump
- ioi – ~anyconfig.globals.IOInfo namedtuple object provides various info of input object to load data from
- kwargs – optional keyword parameters to be sanitized :: dict
Raises: IOError, OSError, AttributeError – When dump failed.
-
class
anyconfig.backend.base.
Parser
¶ Bases:
anyconfig.backend.base.TextFilesMixin
,anyconfig.backend.base.LoaderMixin
,anyconfig.backend.base.DumperMixin
,anyconfig.models.processor.Processor
Abstract parser to provide basic implementation of some methods, interfaces and members.
- _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
See also
the doc of
Processor
-
class
anyconfig.backend.base.
FromStringLoaderMixin
¶ Bases:
anyconfig.backend.base.LoaderMixin
Abstract config parser provides a method to load configuration from string content to help implement parser of which backend lacks of such function.
Parser classes inherit this class have to override the method
load_from_string()
at least.-
load_from_stream
(stream, container, **kwargs)¶ Load config from given stream stream.
Parameters: - stream – Config file or file-like object
- container – callble to make a container object later
- kwargs – optional keyword parameters to be sanitized :: dict
Returns: Dict-like object holding config parameters
-
load_from_path
(filepath, container, **kwargs)¶ Load config from given file path filepath.
Parameters: - filepath – Config file path
- container – callble to make a container object later
- kwargs – optional keyword parameters to be sanitized :: dict
Returns: Dict-like object holding config parameters
-
-
class
anyconfig.backend.base.
FromStreamLoaderMixin
¶ Bases:
anyconfig.backend.base.LoaderMixin
Abstract config parser provides a method to load configuration from string content to help implement parser of which backend lacks of such function.
Parser classes inherit this class have to override the method
load_from_stream()
at least.-
load_from_string
(content, container, **kwargs)¶ Load config from given string cnf_content.
Parameters: - content – Config content string
- container – callble to make a container object later
- kwargs – optional keyword parameters to be sanitized :: dict
Returns: Dict-like object holding config parameters
-
load_from_path
(filepath, container, **kwargs)¶ Load config from given file path filepath.
Parameters: - filepath – Config file path
- container – callble to make a container object later
- kwargs – optional keyword parameters to be sanitized :: dict
Returns: Dict-like object holding config parameters
-
-
class
anyconfig.backend.base.
ToStringDumperMixin
¶ Bases:
anyconfig.backend.base.DumperMixin
Abstract config parser provides a method to dump configuration to a file or file-like object (stream) and a file of given path to help implement parser of which backend lacks of such functions.
Parser classes inherit this class have to override the method
dump_to_string()
at least.-
dump_to_path
(cnf, filepath, **kwargs)¶ Dump config cnf to a file filepath.
Parameters: - cnf – Configuration data to dump
- filepath – Config file path
- kwargs – optional keyword parameters to be sanitized :: dict
-
dump_to_stream
(cnf, stream, **kwargs)¶ Dump config cnf to a file-like object stream.
TODO: How to process socket objects same as file objects ?
Parameters: - cnf – Configuration data to dump
- stream – Config file or file like object
- kwargs – optional keyword parameters to be sanitized :: dict
-
-
class
anyconfig.backend.base.
ToStreamDumperMixin
¶ Bases:
anyconfig.backend.base.DumperMixin
Abstract config parser provides methods to dump configuration to a string content or a file of given path to help implement parser of which backend lacks of such functions.
Parser classes inherit this class have to override the method
dump_to_stream()
at least.-
dump_to_string
(cnf, **kwargs)¶ Dump config cnf to a string.
Parameters: - cnf – Configuration data to dump
- kwargs – optional keyword parameters to be sanitized :: dict
Returns: Dict-like object holding config parameters
-
dump_to_path
(cnf, filepath, **kwargs)¶ Dump config cnf to a file filepath.
Parameters: - cnf – Configuration data to dump
- filepath – Config file path
- kwargs – optional keyword parameters to be sanitized :: dict
-
-
class
anyconfig.backend.base.
StringParser
¶ Bases:
anyconfig.backend.base.Parser
,anyconfig.backend.base.FromStringLoaderMixin
,anyconfig.backend.base.ToStringDumperMixin
Abstract parser based on
load_from_string()
anddump_to_string()
.Parser classes inherit this class must define these methods.
-
class
anyconfig.backend.base.
StreamParser
¶ Bases:
anyconfig.backend.base.Parser
,anyconfig.backend.base.FromStreamLoaderMixin
,anyconfig.backend.base.ToStreamDumperMixin
Abstract parser based on
load_from_stream()
anddump_to_stream()
.Parser classes inherit this class must define these methods.
-
anyconfig.backend.base.
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 – Callable to load data
- content_or_strm – data content or stream provides it
- container – callble to make a container object
- allow_primitives – 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
Returns: container object holding data
-
anyconfig.backend.base.
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 – Callable to dump data
- data – Data to dump
- stream – File or file like object or None
- options – optional keyword parameters
Returns: String represents data if stream is None or None
-
class
anyconfig.backend.base.
StringStreamFnParser
¶ Bases:
anyconfig.backend.base.Parser
,anyconfig.backend.base.FromStreamLoaderMixin
,anyconfig.backend.base.ToStreamDumperMixin
Abstract parser utilizes load and dump functions each backend module provides such 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 – Configuration string
- container – callble to make a container object
- options – keyword options passed to _load_from_string_fn
Returns: container object holding the configuration data
-
load_from_stream
(stream, container, **options)¶ Load data from given stream stream.
Parameters: - stream – Stream provides configuration data
- container – callble to make a container object
- options – keyword options passed to _load_from_stream_fn
Returns: container object holding the configuration data
-
dump_to_string
(cnf, **kwargs)¶ Dump config cnf to a string.
Parameters: - cnf – Configuration data to dump
- kwargs – optional keyword parameters to be sanitized :: dict
Returns: string represents the configuration
-
dump_to_stream
(cnf, stream, **kwargs)¶ Dump config cnf to a file-like object stream.
TODO: How to process socket objects same as file objects ?
Parameters: - cnf – Configuration data to dump
- stream – Config file or file like object
- kwargs – optional keyword parameters to be sanitized :: dict