Skip to main content

dictionary with fully evaluated keys

Project description

tests coverage

This package provides a NamespaceDict mapping which fully evaluates keys using Python syntax. For example, it can perform nested lookups, attribute lookups, and tuple splicing:

>>> from namespacedict import NamespaceDict
>>>
>>> # create a new namespace
>>> ns = NamespaceDict()
>>>
>>> # nested lookup from a list
>>> ns['x'] = [1, 2, 3]
>>> ns['x[1]']
2
>>> # set a docstring attribute
>>> ns['y'] = lambda x: x
>>> ns['y.__doc__'] = 'my function'
>>> ns['y.__doc__']
'my function'
>>>
>>> # set three items from a tuple
>>> ns['a, b, c'] = 'A', 'B', 'C'
>>> ns['b']
'B'

Keys are parsed in a safe way using Python’s AST library. It is thus possible to create complex dictionary queries that work as expected:

>>> ns['one'] = 1
>>> ns['two'] = 2
>>> ns['x[0:two]'] = 5, 4
>>> ns['x[::-one]']
[3, 4, 5]

The NamespaceDict type can also be used as an adapter for other mappings, by passing the underlying data structure on initialisation:

>>> # create a numpy array with named columns
>>> import numpy as np
>>> a = np.empty(5, dtype=[('col1', int), ('col2', int), ('col3', int)])
>>>
>>> # use NamespaceDict to access array
>>> ns = NamespaceDict(a)
>>>
>>> # access named columns through namespace
>>> ns['col1, col2, col3'] = 1, 2, 3
>>> ns['col2']
array([2, 2, 2, 2, 2])

The mapping can be retrieved using the .data attribute.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

namespacedict-0.3.0.tar.gz (3.8 kB view details)

Uploaded Source

File details

Details for the file namespacedict-0.3.0.tar.gz.

File metadata

  • Download URL: namespacedict-0.3.0.tar.gz
  • Upload date:
  • Size: 3.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/52.0.0.post20210125 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.8.5

File hashes

Hashes for namespacedict-0.3.0.tar.gz
Algorithm Hash digest
SHA256 70d8bde0672a090b4fdf291cab58a362d6d1cad8f001915471d94b55073442af
MD5 6e66983bee99fc36f18cb0484686e37f
BLAKE2b-256 db8a500afef50f0a4d11fd119c724788c66827a38ca60560b9e45e8c2c1c83f5

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page