Skip to content

A simple Python library to make chained attributes possible.

License

Notifications You must be signed in to change notification settings

nicholasmireles/DotDict

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DotDict

A simple Python library that builds upon argparse.Namespace to make chained attributes possible.

Why?

Configs of all kinds follow a dict-like structure. However, nobody likes the dict["key"] syntax. We all much prefer the dict.key syntax.

There are a number of workarounds for this, including easydict or argparse.Namespace (upon which this library is based).

The downside of these libraries, though, is that when you want to start a new level, you must explicitly define it first. For example:

config = edict()

config.host = 'localhost'

config.users = edict() # or {}
config.users.foo = 'bar'

This is ugly.

Wouldn't you much prefer the following syntax?

config = dd()

config.host = 'localhost'
config.users.foo = 'bar'

Installation

Installation is simple: pip install attr-dot-dict. Alternatively: pip install . from the root of the repository.

Usage

Usage is equally as simple:

from dotdict import DotDict as dd

x = dd()

x.a.b.c = 1
x.a.d = 2
x.a.b.e = 3

print(x) # DotDict(a=DotDict(b=DotDict(c=1, e=3), d=2))
print(vars(x)) # {'a': DotDict(b=DotDict(c=1, e=3), d=2)}
print(vars(x.a)) # {'b': DotDict(c=1, e=3), 'd': 2}

About

A simple Python library to make chained attributes possible.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages