I would say that it depends on the complexity and the object or purpose of the settings being stored.
If it were me - I would use the following as the basis for an initial needs based assessment and go from there.
A) Does my data require multiple nested layers?
YES ---> INI File, JSON, YAML
NO ---> INI File, JSON, YAML
B) Do I need to store value arrays or other complex datatypes?
YES ---> INI File, JSON, YAML
NO ---> INI File, JSON, YAML
C) Will I need to map the arguments to a live stream?
YES ---> INI File, JSON,YAML
No ---> INI File, JSON, YAML
D) Do I want to interpolate or cross-reference key-values within the file?
YES ---> INI File, JSON, YAML
NO ---> INI File, JSON, YAML
In the end,
INI Files are meant to be simple and interpolating arguments is easy but it is difficult to get more complex when you need to.
JSON good all around, nice support for nested key-value or array objects and data type support. Good for web development or JS object integration. Interpolation difficult, hard to actively adjust nested key values without replacing the whole object.
YAML is good too, I really like the support for internal specification of python objects and modules. Some data types can be a bit weird or are not available for certain versions of python. Nesting of arrays is a little strange and nested key-value objects with a lot of keys can be tedious to outline.
What you choose depends on what your requirements are but as a rule I usually stay away from xml mainly because the keys cant provide information in the same way as JSON or YAML.
UPDATES:
I was just reviewing the YAML docs and I ran across the following information and I thought you might find it useful.
YAML can therefore be viewed as a natural superset of JSON, offering improved human readability and a more complete inform-
ation model. This is also the case in practice; every JSON file is also a valid YAML file. This makes it easy to migrate from JSON
to YAML if/when the additional features are required
Pretty cool huh? Anyway, given this information I would likely default to JSON and then if I needed to go over to YAML.