Skip to main content

Nestees

Provides a simple set of utility functions for dealing with nested dictionaries - a.k.a. dict of dicts. Inspired by the 'field path' concept in Google's superb Firebase product, these functions fully support the field path syntax and DELETE_FIELD sentinel to allow values nested arbitrarily deep in standard Python dictionaries to be get, set, updated and deleted.

Example Usage: deep_get

from nestees import deep_get

data = {
   'top': {
       'mid_leaf': 'magic',
       'middle': {
           'leafA': 20,
           'leafB.has.dots': 'its real!!!',
       },
   }
}

deep_get(data, 'top.mid_leaf')
>>> 'magic'

deep_get(data, 'top.middle.leafA')
>>> 20

# field path syntax supports backtics
deep_get(data, 'top.middle.`leafB.has.dots`')
>>> 'its real!!!'

# Get supports default values
deep_get(data, 'my.road.to.nowhere`', 'some default')
>>> 'some default'

Example Usage: deep_set and deep_delete

from nestees import deep_set, deep_delete

data = {}

deep_set(data, 'top.mid_leaf', 'magic')
repr(data)
>>>  {
   'top': {
       'mid_leaf': 'magic',
   }
}

deep_set(data, 'top.middle.leafA', 20)
repr(data)
>>> {
   'top': {
       'mid_leaf': 'magic',
       'middle': {
           'leafA': 20
       },
   }
}

# To delete a value, use the DELETE_SENTINEL
deep_set(data, 'top.mid_leaf.leafA', DELETE_SENTINEL)
repr(data)
>>> {
   'top': {
       'middle': {
           'leafA': 20
       }
   }
}

# or just use deep_delete
deep_delete(data, 'top.middle.leafA')
repr(data)
>>> {
   'top': {
       'middle': {}
   }
}

Example of deep_update

deep_update works like Python's built-in dict update method, in that it allows values to be merged at the leaf level, rather than set, if the existing leaf is a dict...

from nestees import deep_update

data = {
    'top': 53
}

# Updating an integer lead replaces the integer with a dict...
deep_update(data, 'top.middle', {'name':'John', 'occupation':'CEO'})
repr(data)

>>> {
    'top': {
        'middle': {
            'name':'John',
            'occupation':'CEO'
        }
    }
}

>>> deep_update(data, 'top.middle', {'gender':'non-binary'})
>>> data
{
    'top': {
        'middle': {
            'name':'John',
            'occupation':'CEO',
            'gender':'non-binary'
        }
    }
}

Metadata

Release files for nestees 1.0.1

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

Source distribution (sdist)

Source distribution for nestees 1.0.1
File Size Uploaded
nestees-1.0.1.tar.gz 5.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for nestees 1.0.1
File Interpreter ABI Platform
nestees-1.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 11.6 kB

Release files / nestees-1.0.1.tar.gz

Download URL nestees-1.0.1.tar.gz
Size 5.6 kB
Tags Source
SHA-256 checksum
How to use checksums
5a9fdb812b886acb14602324a27fa431118df979e94c66e864fd108f82813bbe
BLAKE2b-256 checksum
How to use checksums
0bc8ca7f8c995a3859f345806b7960d3d14dd2b9e923c1a08441596e25bd9ee1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.8.3

Release files / nestees-1.0.1-py3-none-any.whl

Download URL nestees-1.0.1-py3-none-any.whl
Size 6.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b0c21be9825993a461c780614c429b71bd83a85073d42bfdc37399deb59cff0e
BLAKE2b-256 checksum
How to use checksums
dfd4921970e4e1b2dfdd464a9ab44349a9c4c057d38e0532e578325cc0f9a380
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.8.3

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files

1.0.0

2 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