Decode#
RConf decoding module.
rconf.decode.BaseHandler implements a decoder for a specific language,
and rconf.decode.DecoderDirector decides
which rconf.decode.BaseHandler to use
based on the Media Type or URL.
- rconf.decode.build_decoder(*handlers, fallback=None, mime_types=None)#
Build a
rconf.decode.DecoderDirectorwith default handlers.rconf.decode.JSONHandleris chosen as the default fallback (no media type specified or unknown extension) because of its ubiquity and because TOML is a config file format for humans, who tend to use file extensions.- Parameters:
handlers (type[BaseHandler] | BaseHandler) –
rconf.decode.BaseHandlers to choose from.fallback (type[BaseHandler] | BaseHandler | str | None) – The fallback
rconf.decode.BaseHandler. If missing,rconf.decode.JSONHandlerwill be the fallback handler.mime_types (MimeTypes | None) –
mimetypes.MimeTypesobject used to guess a configuration’s media type from a URL.
- Return type:
BaseHandler#
- class rconf.decode.BaseHandler#
Base class for a configuration language decoder.
Holds the media types used for registration and the
rconf.pointer.Pointertype.- __init__(*media_types, pointer_type=<class 'rconf.pointer.JSONPointer'>)#
Build a
rconf.decode.BaseHandler.- Parameters:
media_types (str | tuple[str, str] | list[str]) – The media type name, or (name, extension)
tuplefor those not registered inmimetypes.MimeTypes.pointer_type (type[rconf.pointer.Pointer]) – The decoder-specific
Pointertype.
- Return type:
None
- load(fp, url=None, **kwargs)#
Decode a
read-supporting binary file.- Parameters:
fp (BinaryIO) –
read-supporting binary file.url (str | None) – Configuration URL.
kwargs – The decoder-specific keyword arguments.
- Raises:
rconf.decode.DecodeErrorin case of decode errors.- Return type:
- loads(s, url=None, **kwargs)#
Decode a
strconfiguration document.- Parameters:
- Raises:
rconf.decode.DecodeErrorin case of decode errors.- Return type:
- class rconf.decode.DecoderDirector#
Load configurations from string or file.
The
rconf.decode.BaseHandleris selected using a configuration’s media type, explicitly given or derived from the URL usingmimetypes.MimeTypes.- __init__(*handlers, fallback=None, mime_types=None)#
Build a
rconf.decode.DecoderDirector.- Parameters:
handlers (type[BaseHandler] | BaseHandler) –
rconf.decode.BaseHandlers to choose from.fallback (type[BaseHandler] | BaseHandler | str | None) – The fallback
rconf.decode.BaseHandler. If missing, the first handler will be the fallback handler.mime_types (MimeTypes | None) –
mimetypes.MimeTypesobject used to guess a configuration’s media type from a URL.
- Return type:
None
- add_handler(handler, *media_types)#
Add a handler.
The handler added first will be the fallback handler.
- Parameters:
media_types (str | tuple[str, str] | list[str]) – Add media types by name, or (name, extension)
tuplefor those not registered inmimetypes.MimeTypes. If missing, those listed in theBaseHandlerare used.handler (type[BaseHandler] | BaseHandler) –
- Returns:
The inserted handler.
- Raises:
- Return type:
- get_handler(media_type=None, url=None)#
Get a matching handler.
Unknown media type or unknown URL-derived media type results in the fallback handler.
- Parameters:
- Return type:
- load(fp, media_type=None, url=None, **kwargs)#
Decode a
read-supporting binary file.- Parameters:
fp (BinaryIO) –
read-supporting binary file.media_type (str | None) – Assumed media type, overrides URL-derived media type. It can also be a filename extension.
url (str | None) – Configuration URL.
kwargs – Forwarded to language-specific
rconf.decode.BaseHandler.
- Raises:
rconf.decode.DecodeErrorin case of decode errors.- Return type:
- loads(s, media_type=None, url=None, **kwargs)#
Decode a
strconfiguration document.- Parameters:
s (str) – Configuration document.
media_type (str | None) – Assumed media type, overrides URL-derived media type. It can also be a filename extension.
url (str | None) – Configuration URL.
kwargs – Forwarded to language-specific
rconf.decode.BaseHandler.
- Raises:
rconf.decode.DecodeErrorin case of decode errors.- Return type:
Language-specific handlers#
- class rconf.decode.JSONHandler#
Handler for JSON.
Uses Python’s
json.- __init__(*media_types, pointer_type=<class 'rconf.pointer.JSONPointer'>, **kwargs)#
Create a JSON Handler.
- Parameters:
kwargs – Forwarded to
json.load()and :func`json.loads`.media_types (str) –
pointer_type (type[rconf.pointer.Pointer]) –
- Return type:
None
- load(fp, url=None, **kwargs)#
Decode a
read-supporting binary file.Returns
json.load().- Parameters:
fp (BinaryIO) –
read-supporting binary file.kwargs – Forwarded to
json.load(). OverridesJSONHandler.__init__()kwargs.url (str | None) –
- Raises:
rconf.decode.DecodeErrorin case of decode errors.- Return type:
- loads(s, url=None, **kwargs)#
Decode a
strconfiguration document.Returns
json.loads().- Parameters:
s (str) – Configuration document.
kwargs – Forwarded to
json.load(). OverridesJSONHandler.__init__()kwargs.url (str | None) –
- Raises:
rconf.decode.DecodeErrorin case of decode errors.- Return type:
- class rconf.decode.TOMLHandler#
Handler for TOML.
Uses Python’s
tomllibfor Python>=3.11, ortomli(github) below.- __init__(*media_types, pointer_type=<class 'rconf.pointer.TOMLPointer'>, **kwargs)#
Create a TOML Handler.
Only valid
tomllib.load()andtomllib.loads()keyword arguments are forwarded.- Parameters:
kwargs – Forwarded to
tomllib.load()and :func`tomllib.loads`.media_types (str) –
pointer_type (type[rconf.pointer.Pointer]) –
- Return type:
None
- load(fp, url=None, **kwargs)#
Decode a
read-supporting binary file.Returns
tomllib.load().Only valid
tomllib.load()keyword arguments are forwarded.- Parameters:
fp (BinaryIO) –
read-supporting binary file.kwargs – Forwarded to
tomllib.load(). OverridesTOMLHandler.__init__()kwargs.url (str | None) –
- Raises:
rconf.decode.DecodeErrorin case of decode errors.- Return type:
- loads(s, url=None, **kwargs)#
Decode a
strconfiguration document.Returns
tomllib.loads().Only valid
tomllib.loads()keyword arguments are forwarded.- Parameters:
s (str) – Configuration document.
kwargs – Forwarded to
tomllib.loads(). OverridesTOMLHandler.__init__()kwargs.url (str | None) –
- Raises:
rconf.decode.DecodeErrorin case of decode errors.- Return type:
- class rconf.decode.INIHandler#
Handler for
configparser.All
configparserkeyword arguments are forwarded to support the same configuration language dialects.- __init__(*media_types, encoding='utf-8', errors='strict', pointer_type=<class 'rconf.pointer.TOMLPointer'>, **kwargs)#
Create a
configparserHandler.Only valid
configparser.ConfigParser()keyword arguments are forwarded.- Parameters:
encoding (str) – Forwarded to
bytes.decode().errors (str) – Forwarded to
bytes.decode().kwargs – Forwarded to
configparser.ConfigParser.media_types (str) –
pointer_type (type[rconf.pointer.Pointer]) –
- Return type:
None
- load(fp, url=None, *, encoding=None, errors=None, **kwargs)#
Decode a
read-supporting binary file.Uses
configparser.ConfigParser.read_string()and translates the result to arconf.Value.Only valid
configparser.ConfigParser()keyword arguments are forwarded.- Parameters:
fp (BinaryIO) –
read-supporting binary file.encoding (str | None) – Forwarded to
bytes.decode(). OverridesINIHandler.__init__()encoding.errors (str | None) – Forwarded to
bytes.decode(). OverridesINIHandler.__init__()errors.kwargs – Forwarded to
configparser.ConfigParser. OverridesINIHandler.__init__()kwargs.url (str | None) –
- Raises:
rconf.decode.DecodeErrorin case of decode errors.- Return type:
- loads(s, url=None, **kwargs)#
Decode a
strconfiguration document.Uses
configparser.ConfigParser.read_string()and translates the result to arconf.Value.Only valid
configparser.ConfigParser()keyword arguments are forwarded.- Parameters:
s (str) – Configuration document.
kwargs – Forwarded to
configparser.ConfigParser. OverridesINIHandler.__init__()kwargs.url (str | None) –
- Raises:
rconf.decode.DecodeErrorin case of decode errors.- Return type:
Exceptions#
- class rconf.decode.DecodeError#
An error raised if a document is not valid.
- __new__(**kwargs)#
- __init__(*args, **kwargs)#
- class rconf.decode.DecodeFileError#
An error raised if a document loaded from file is not valid.
- __new__(**kwargs)#
- __init__()#
- Return type:
None