README.rst
dotted_dict
=============
.. image:: https://travis-ci.org/josh-paul/dotted_dict.svg?branch=master
:target: https://travis-ci.org/josh-paul/dotted_dict
:alt: Travis CI Build
.. image:: http://codecov.io/github/josh-paul/dotted_dict/coverage.svg?branch=master
:target: http://codecov.io/github/josh-paul/dotted_dict?branch=master
:alt: Coverage
.. image:: https://api.codeclimate.com/v1/badges/a5bdee8792e6a6379df1/maintainability
:target: https://codeclimate.com/github/josh-paul/dotted_dict/maintainability
:alt: Code Climate Maintainability
A light weight extension of the default python dict object. This allows for the use of key names as
object attributes.
Simple usage
::
In [1]: from dotted_dict import DottedDict
In [2]: example = DottedDict()
In [3]: example['foo'] = 1
In [4]: example.foo
Out[4]: 1
In [5]: example.bar = 2
In [6]: example
Out[6]: DottedDict({'bar': 2, 'foo': 1})
In [7]: del example['foo']
In [8]: del example.bar
In [9]: example
Out[9]: DottedDict({})
Also allows passing in of values in same manner as normal dict objects.
::
In [10]: example = DottedDict({'foo': 1, 'bar': 2})
In [11]: example
Out[11]: DottedDict({'bar': 2, 'foo': 1})
Issues with invalid characters. A valid key name in the scope of this library must conform to the
following regex :code:`[a-zA-Z_][a-zA-Z0-9_]*$`. In the case where your key name does not conform,
the library will mutate your key to a safe format. Spaces and invalid characters are replaced with
_. In the case of the key beginning with an int, a leading _ is added.
::
In [12]: DottedDict({'My fun key': 1, 'John\'s': 1, 'Mr. Man': 1})
Out[12]: DottedDict({'John_s': 1, 'Mr__Man': 1, 'My_fun_key': 1})
In [13]: DottedDict({1: 2})
Out[13]: DottedDict({'_1': 2})