'All kwargs are inherited from DictDataProvider.
.. seealso:: column.DictDataProvider
If no kwargs are given, this class will attempt to get those kwargs
from the dataset source\'s metadata.
If any kwarg is given, it will override and be used in place of
any metadata available.
The relationship between column_names and indeces is more complex:
|                 | Indeces given                 | Indeces NOT given     |
| Names given     | pull indeces, rename w/ names | pull by name          |
| Names NOT given | pull indeces, name w/ meta    | pull all, name w/meta |'

def __init__(self, dataset, **kwargs):

    dataset_source = DatasetDataProvider(dataset)
    indeces = kwargs.get('indeces', None)
    column_names = kwargs.get('column_names', None)
    if ((not indeces) and column_names):
        indeces = kwargs['indeces'] = dataset_source.get_indeces_by_column_names(column_names)
    elif (indeces and (not column_names)):
        column_names = kwargs['column_names'] = dataset_source.get_metadata_column_names(indeces=indeces)
    elif ((not indeces) and (not column_names)):
        column_names = kwargs['column_names'] = dataset_source.get_metadata_column_names(indeces=indeces)
    if (not kwargs.get('column_types', None)):
        kwargs['column_types'] = dataset_source.get_metadata_column_types(indeces=indeces)
    super(DatasetDictDataProvider, self).__init__(dataset_source, **kwargs)
