DotMap
Install
pip3 install dotmap
Upgrade
Get updates for current installation
pip3 install --upgrade dotmap
Features
DotMap is a dot-access dict subclass that
- has dynamic hierarchy creation (autovivification)
- can be initialized with keys
- easily initializes from
dict - easily converts to
dict - is ordered by insertion
The key feature is exactly what you want: dot-access
from dotmap import DotMap
m = DotMap()
m.name = 'Joe'
print('Hello ' + m.name)
# Hello Joe
However, DotMap is a dict and you can treat it like a dict as needed
print(m['name'])
# Joe
m.name += ' Smith'
m['name'] += ' Jr'
print(m.name)
# Joe Smith Jr
It also has fast, automatic hierarchy (which can be deactivated by initializing with DotMap(_dynamic=False))
m = DotMap()
m.people.steve.age = 31
And key initialization
m = DotMap(a=1, b=2)
You can initialize it from dict and convert it to dict
d = {'a':1, 'b':2}
m = DotMap(d)
print(m)
# DotMap(a=1, b=2)
print(m.toDict())
# {'a': 1, 'b': 2}
And it has iteration that is ordered by insertion
m = DotMap()
m.people.john.age = 32
m.people.john.job = 'programmer'
m.people.mary.age = 24
m.people.mary.job = 'designer'
m.people.dave.age = 55
m.people.dave.job = 'manager'
for k, v in m.people.items():
print(k, v)
print
# john DotMap(age=32, job='programmer')
# mary DotMap(age=24, job='designer')
# dave DotMap(age=55, job='manager')
It also has automatic counter initialization
m = DotMap()
for i in range(7):
m.counter += 1
print(m.counter)
# 7
And automatic addition initializations of any other type
m = DotMap()
m.quote += 'lions'
m.quote += ' and tigers'
m.quote += ' and bears'
m.quote += ', oh my'
print(m.quote)
# lions and tigers and bears, oh my
There is also built-in pprint as dict or json for debugging a large DotMap
m.pprint()
# {'people': {'dave': {'age': 55, 'job': 'manager'},
# 'john': {'age': 32, 'job': 'programmer'},
# 'mary': {'age': 24, 'job': 'designer'}}}
m.pprint(pformat='json')
# {
# "people": {
# "dave": {
# "age": 55,
# "job": "manager"
# },
# "john": {
# "age": 32,
# "job": "programmer"
# },
# "mary": {
# "age": 24,
# "job": "designer"
# }
# }
# }
And many other features involving dots and dictionaries that will be immediately intuitive when used.
Metadata
Release files for dotmap 1.3.30
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| dotmap-1.3.30.tar.gz | 12.4 kB | Without provenance | Details for dotmap-1.3.30.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| dotmap-1.3.30-py3-none-any.whl | Python 3 | none | any | Details for dotmap-1.3.30-py3-none-any.whl |
Total release size: 23.9 kB
Release files / dotmap-1.3.30.tar.gz
| Download URL | dotmap-1.3.30.tar.gz |
|---|---|
| Size | 12.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5821a7933f075fb47563417c0e92e0b7c031158b4c9a6a7e56163479b658b368
|
|
BLAKE2b-256 checksum How to use checksums |
bc68c186606e4f2bf731abd18044ea201e70c3c244bf468f41368820d197fca5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.8.1
|
Release files / dotmap-1.3.30-py3-none-any.whl
| Download URL | dotmap-1.3.30-py3-none-any.whl |
|---|---|
| Size | 11.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bd9fa15286ea2ad899a4d1dc2445ed85a1ae884a42effb87c89a6ecce71243c6
|
|
BLAKE2b-256 checksum How to use checksums |
4df9976d6813c160d6c89196d81e9466dca1503d20e609d8751f3536daf37ec6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.8.1
|
Security for dotmap 1.3.30
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.