rattail-manual/docs/base/config/syntax.rst

60 lines
1.6 KiB
ReStructuredText

.. highlight:: ini
Config File Syntax
==================
Rattail config files follow the traditional `INI file`_ syntax, e.g. here is a
snippet::
[rattail]
app_title = Poser
.. _INI file: https://en.wikipedia.org/wiki/INI_file
That example can be broken down into 3 parts:
* section (the name in square brackets, "rattail")
* option (the name of the setting being defined, "app_title")
* value (the value for the setting, "Poser")
When logic within the app needs to retrieve a value from config, it does so by
requesting both the section and option by name, for example:
.. code-block:: python
config.get('rattail', 'app_title') # returns "Poser"
Under the hood we use Python's `configparser`_ module to parse config files.
.. _configparser: https://docs.python.org/3/library/configparser.html
If you think it would be handy for your app to have a new setting for some
reason, just create one and use it like so::
[poser]
foo = bar
.. code-block:: python
config.get('poser', 'foo') # returns "bar"
So far our examples have been for simple string values. There is no way within
the standard INI file syntax, to define any data types other than string.
However the Rattail config parser/object can "coerce" values to a given type if
so requested, for example::
[poser]
foo_flag = true
foo_number = 42
foo_entries =
first
second
third
.. code-block:: python
config.getbool('poser', 'foo_flag') # returns True
config.getint('poser', 'foo_number') # returns 42
config.getlist('poser', 'foo_entries') # returns ["first", "second", "third"]