aboutsummaryrefslogtreecommitdiffstats
path: root/docs/state/development/settings.rst
blob: 806a29a3b07c7517726d6474650c2539bd777315 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
SDVState: Program Settings handler
----------------------------------

``from tools.conf import settings``

Settings will be loaded from several ``.yaml`` or ``.yml`` files and any
user provided settings files.

So, that user can use these settings values across program.

This utility loads settings from yaml files in form of key and value
where key is always ``string`` while value can be of type python:

-  ``int`` e.g. 5, 45, 1234
-  ``str`` e.g. hello, world
-  ``float`` e.g. 34.56, 12.7
-  ``list`` e.g. [ ‘month’ , ‘is’, 45 ]
-  ``dict`` e.g. {‘program’: ‘sdv’, ‘language’: ‘python’}
-  ``bool`` e.g. True, False

keys are case-insensitive
^^^^^^^^^^^^^^^^^^^^^^^^^

The utility is case-insensitive to keys used as it automatically
converts all keys to lower case.

E.g. ``Program : sdv``, ``program : sdv``, ``PrOgRam : sdv`` all are
same.

-  ``settings.load_from_file(path/to/file)``
-  ``settings.load_from_env()``
-  ``settings.load_from_dir(directory/to/search/yamls)``

``settings.load_from_dir()`` reads all yaml files in given directory and
all it’s sub-directory recursively in ascending order, hence if a
configuration item exists in more than one file, then the setting in the
file that occurs in the last read file will have high precedence and
overwrite previous values. .


Managing Settings
^^^^^^^^^^^^^^^^^
- Get ``value`` of ``key`` using ``settings.getValue(key)``
- Set ``key, value`` using ``settings.setValue(key, value)``