# 4 Limitations

`miniconf` has a few limitations:

- It only supports a subset of built-ins types (see above).

- It is strictly string-based: it loads from them, and dumps to them. Potential race conditions with the underlying sources and destinations such as real files has to be dealt with externally (handling locks, etc.).

- `dump` and `load` are not inverse functions, because `load` is not injective; any special content or formatting in the source code (comments, un-loadable objects, non-assignments statements, lexical format) will be discarded at load time. See for instance:

      >>> from miniconf import load, dump
      >>> print dump(load('spam = "egg" # this comment will be lost'))
      spam = 'egg'

  Basically, this means that an external agent (user or application) cannot add an element such as a comment to a snippet, and have it preserved next time the program will have loaded, then dumped it back. Of course, one can very well choose not to systematically dump the data over the source of the next load, which alleviates this limitation.