Skip to main content

Box

Python dictionaries with recursive dot notation access.

from box import Box

my_box = Box({"owner": "Mr. Powers",
              "contents": ["blue crushed-velvet suit",
                           "frilly lace crava",
                           "gold medallion with peace symbol",
                           "Italian shoes",
                           "tie-dyed socks"],
              "affiliates": {
                  "Vanessa": "Sexy",
                  "Dr Evil": "Not groovy",
                  "Scott Evil": "Doesn't want to take over family business"
              }})

my_box.affiliates.Vanessa == my_box['affiliates']['Vanessa']

my_box.funny_line = "They tried to steal my lucky charms!"

my_box['funny_line']
# 'They tried to steal my luck charms!'

my_box.credits = {'Austin Powers': "Mike Myers", "Vanessa Kensington": "Elizabeth Hurley"}
# <Box: {'Austin Powers': 'Mike Myers', 'Vanessa Kensington': 'Elizabeth Hurley'}>

Install

pip install python-box

(Don’t see a box package, but alas, can’t claim the name for some reason.)

Box is tested on python 2.6+, 3.3+ and PyPy2, and should work on other interpreters as well. If it does not install with this command, please open a ticket with the error you are experiencing!

Overview

This module provides two main classes Box and ConfigBox. They are designed to be easy drop in replacements for dictionaries, with the latter having tools for dealing with config files.

Box is designed to transparently act as a dictionary, thanks to Python’s duck typing capabilities, but add dot notation access like classes do. Any sub dictionaries or ones set after initiation will be automatically converted to a Box object. You can always run .to_dict() on it to return the object and all sub objects back into a regular dictionary.

# Will only convert outermost object
dict(my_box)
# {'owner': 'Mr. Powers', 'affiliates': <Box: {'Vanessa': 'Sexy',
# 'Dr Evil': 'Not groovy', 'Scott Evil': "Doesn't want to take over family business"}>,
# 'credits': <Box: {'Austin Powers': 'Mike Myers', 'Vanessa Kensington': 'Elizabeth Hurley'}>}

my_box.to_dict()
# {'owner': 'Mr. Powers', 'affiliates': {'Vanessa': 'Sexy',
# 'Dr Evil': 'Not groovy', 'Scott Evil': "Doesn't want to take over family business"},
# 'credits': {'Austin Powers': 'Mike Myers', 'Vanessa Kensington': 'Elizabeth Hurley'}}

This module was pulled from my other project, reusables, so it has support for a ConfigBox.

test_config.ini

[General]
example=A regular string

[Examples]
my_bool=yes
anint=234
exampleList=234,123,234,543
floatly=4.4

With the combination of reusables and ConfigBox you can easily read python config values into python types. It supports list, bool, int and float.

import reusables
from box import ConfigBox

config = ConfigBox(reusables.config_dict("test_config.ini"))
# <ConfigBox: {'General': {'example': 'A regular string'},
# 'Examples': {'my_bool': 'yes', 'anint': '234', 'examplelist': '234,123,234,543', 'floatly': '4.4'}}>

config.Examples.list('examplelist')
# ['234', '123', '234', '543']

config.Examples.float('floatly')
# 4.4

Similar Libraries

Bunch

Does not work recursively.

EasyDict

EasyDict not have a way to make sub items recursively back into a regular dictionary.

Both EasyDicts str and repr print a dictionary look alike, Box makes it clear in repr that it is a unique object.

addict

Is a default dictionary, as in it will never fail on lookup. It also goes into lists and makes those into sub objects as.

Metadata

Release files for python-box 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for python-box 1.0.0
File Size Uploaded
python-box-1.0.0.tar.gz 6.1 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for python-box 1.0.0
File Interpreter ABI Platform
python_box-1.0.0-py3-none-any.whl Python 3 none any Details
python_box-1.0.0-py2-none-any.whl Python 2 none any Details

Total release size: 25.8 kB

Release files / python-box-1.0.0.tar.gz

Download URL python-box-1.0.0.tar.gz
Size 6.1 kB
Tags Source
SHA-256 checksum
How to use checksums
ba79d0fac7e20cb2a233a0914acd476831ad744109d8e3bf80426b0a175791f3
BLAKE2b-256 checksum
How to use checksums
e9fd03d82bd702d93a2758b32267e23c850f8a58790f0f44842d267b48e83b76
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / python_box-1.0.0-py3-none-any.whl

Download URL python_box-1.0.0-py3-none-any.whl
Size 9.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
271b3515d34dd35c7e13743b4a88e6c5d71e8c6f38c4bc72dff924ca7bec8878
BLAKE2b-256 checksum
How to use checksums
2e7d8566218be34585e645ccdebfd5b6bde13a3f6f25c6ff73ac151e267dbb6c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / python_box-1.0.0-py2-none-any.whl

Download URL python_box-1.0.0-py2-none-any.whl
Size 9.8 kB
Tags Python 2
SHA-256 checksum
How to use checksums
30d4bd2bd655b1b627f137c87b149d31725d559abed1ca97c8b5d1eb5dfd7ef3
BLAKE2b-256 checksum
How to use checksums
c3126659c948bb5d96a6d7459bd318d359f43a2608707a7772f1ab023bf0dbce
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

7.4.1

16 release files

7.3.3

16 release files

7.3.2

17 release files

7.3.1

17 release files

7.3.0

17 release files

7.2.0

17 release files

7.1.1

14 release files

7.1.0

10 release files

7.0.1

16 release files

6.1.0

17 release files

6.0.1

14 release files

6.0.0

14 release files

5.4.1

2 release files

5.4.0

2 release files

5.3.0

2 release files

5.2.0

2 release files

5.1.1

2 release files

5.1.0

2 release files

5.0.1

2 release files

5.0.0

2 release files

4.2.3

2 release files

4.2.2

2 release files

4.2.1

2 release files

4.2.0

2 release files

4.1.0

2 release files

4.0.4

2 release files

4.0.3

2 release files

4.0.2

2 release files

4.0.1

2 release files

3.4.6

2 release files

3.4.5

2 release files

3.4.4

2 release files

3.4.3

2 release files

3.4.2

2 release files

3.4.1

2 release files

3.4.0

2 release files

3.3.0

2 release files

3.2.4

3 release files

3.2.3

3 release files

3.2.2

3 release files

3.2.1

3 release files

3.2.0

3 release files

3.1.1

3 release files

3.1.0

3 release files

3.0.1

3 release files

3.0.0

3 release files

2.2.1

3 release files

2.2.0

3 release files

2.1.0

3 release files

2.0.0

3 release files

This release

1.0.0 This release

3 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page