diff doc/introduction.rst @ 94:2b79ddc0f92b

Begin a basic introduction chapter
author Franz Glasner <hg@dom66.de>
date Sun, 18 Mar 2018 16:45:51 +0100
parents
children 1b4d95f60650
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/introduction.rst	Sun Mar 18 16:45:51 2018 +0100
@@ -0,0 +1,92 @@
+.. -*- coding: utf-8; indent-tabs-mode: nil; -*-
+
+.. _introduction:
+
+Introduction
+============
+
+The configurations can be read from different types of files:
+
+- :ref:`YAML files <yaml-files>`
+- :ref:`INI files <ini-files>`
+- :ref:`executable Python scripts <executable-python-scripts>`
+
+.. todo:: Describe evaluation syntax
+
+.. todo:: Describe available filter functions (and syntax)
+
+.. todo:: Describe late evaluation of interpolation strings
+
+
+.. _yaml-files:
+
+YAML Files
+----------
+
+Need the :mod:`yaml` package (e.g. ``pip install pyyaml``)
+
+.. note:: All strings are returned as Unicode text strings.
+
+
+.. _ini-files:
+
+INI Files
+---------
+
+Read the file and all sections named in parameter `extract` are flattened
+into the resulting dictionary. By default the section named ``config`` is
+used.
+
+Normally all values are returned as Unicode text strings.
+But values can be annotated and therefore interpreted as other types:
+
+  ``:int:``
+      The value is handled in the same way as a Python :class:`int`
+      literal
+
+  ``:float:``
+      The value is interpreted as :class:`float`
+
+  ``:bool:``
+      The resulting value is a :class:`bool` where
+
+        ``1``, ``true``, ``yes``, ``on``
+           yield a Python ``True``
+
+        ``0``, ``false``, ``no``, ``off``
+           yield a Python ``False``
+
+      The evaluation is done *case-insensitively*.
+
+.. note:: All strings are returned as Unicode text strings.
+
+.. note:: Contrary to the behaviour of the standard Python :mod:`configparser`
+          module the INI file reader is *case-sensitive*.
+
+.. todo:: Implement tree-ish interpretation of INI files
+
+   Currently there is no tree.
+
+
+.. _executable-python-scripts:
+
+Executable Python Scripts
+-------------------------
+
+What will be exported:
+
+1. If loading is done with the `extract` parameter only the given keys are
+   extracted from the script.
+
+2. Otherwise it is checked if the scripts defines an ``__all__``
+   sequence. If there is one it's contents are the keys to be
+   extracted.
+
+3. If there is no ``__all__`` object all names not starting with an
+   underscore ``_`` are found.
+
+This is analogous to as Python modules behave when importing them with
+``from module import *``.
+
+.. note:: The Python configuration files are evaluated with ``exec`` and not
+          imported.