def __init__(self, format_specifier, confdir, filepaths=None):
"""<STR_LIT>"""<EOL>self.format = format_specifier<EOL>"""<STR_LIT>"""<EOL>self.confdir = confdir<EOL>if not isinstance(filepaths, list):<EOL><INDENT>filepaths = [filepaths]<EOL><DEDENT>self.filepaths = filepaths<EOL>self.file_extension = determine_file_extension_based_on_format(format_specifier)<EOL>self.delimited_file_column_names = None<EOL>self.field_delimiter = None<EOL>self.cfg_dict = {}<EOL>self.cfg_list = []<EOL>self.load()<EOL>
args to object ctor
1. fmtspec (format specifier) constant (integer)   
2. confdir (directory containing config files)
3. filepaths - optional list of filepaths

When filepaths not None and not empty,
use explicit loading instead of implicit.

With explicit loading (e.g. from filepaths), 
the 'confdir' argument is ignored.

Implicit loading tries to load using three layers:
1. default
2. environment type (value of PY_ENV environment variable)
3. local

When using implicit loading, we look in confdir
to find default.<ext>, <envtype>.<ext>, local.<ext>
where <ext> is determined by the format.

Format-specific implicit file extensions:

1. FMT_INI .ini 
2. FMT_XML .xml 
3. FMT_JSON .json 
4. FMT_YAML .yml 
5. FMT_DELIMITED none, i.e. use <filename> not <filename>.<ext>

If you wish to use different file extensions, you must
use explit rather than implicit loading. That is, 
specify the list of filepaths explicitly via the
'filepaths' argument.

SPECIAL NOTE CONCERNING XML.

Xml requires an outermost enclosing tag (element).
Being an element, it must have an element name.
When config files are read, they're converted to Python dicts.
Dicts are recursive key/value structures.
When a file that's loaded later contains a key that matches
a key in the cfg dictionary loaded from an earlier file, the 
new value replaces the earlier one.
This means that when multiple xml loaded sequentially,
if the outermost element has the same name the entire contents
of the earlier file will be replaced with the contents of the
file loaded more recently. 

SPECIAL NOTE CONCERNING DELIMITED FILES 

Delimited files are a special case.
Explicit mode must be used; implicit mode is not supported.
And combining settings from multiple delimited files is not supported.
That means the 'filepaths' list should contain exactly one filepath
when using FMT_DELIMITED.