Skip to main content

Flexible property bag functions

Project description

propertybag

Flexible property bag class

    import propertybag as pb

    bag = pb.Bag({'a':'b'}, c='d')
    print(bag)                      # > {"a": "b", "c": "d"}

    bag.b.c.d.e = 42
    print(bag.b.c.d.e)              # > 42
    print(bag.toJson())             # > {"a": "b", "c": "d", "b": {"c": {"d": {"e": 42}}}}

    # Returns a bag object
    bag.b.c['d']

    # Returns a Bag() object
    bag.b.c.d

Table of contents

 


Install

$ pip3 install propertybag

 


Examples

    import propertybag as pb

    Log = print

    # Init with kw args
    bag = pb.Bag(a='b', c='d')
    Log(bag.toJson(True))                   # > {
                                            # >   "a": "b",
                                            # >   "c": "d"
                                            # > }

    # Init with dict
    bag = pb.Bag({'a':'b', 'c':'d'})
    Log(bag.toJson())                       # > {"a": "b", "c": "d"}

    # Init with both
    bag = pb.Bag({'a':'b'}, c='d')
    Log(bag)                                # > {"a": "b", "c": "d"}

    # Set deep value
    bag.d.e.f.g.h = 42
    Log(bag)                                # > {"a": "b", "c": "d", "d": {"e": {"f": {"g": {"h": 42}}}}}

    # Read deep value
    Log(bag.d.e.f.g.h)                      # > 42
    try:
        Log(bag.d.e.f.g.i)                  # > Throws ValueError() exception
    except ValueError as e:
        Log(e)                              # > Value not set

    # If you don't want exceptions thrown when value doesn't exist, provide a default
    bag_nt = pb.Bag({'a': 'b'}, '')
    Log(bag_nt.d.e.f.g.i)                   # > ''

    # Use get/set for compound keys
    bag.set("d.e.f.g.h", 43)
    Log(bag.get("d.e.f.g.h"))               # > 43
    Log(bag.get("d.e.f.g.i", "default"))    # > "default"

    # Iterate
    Log('--------------------------------------------')
    for k,v in bag.items():
        Log(k, v)

    Log('--------------------------------------------')
    for k in bag:
        Log(k)

    Log('--------------------------------------------')
    for v in bag.values():
        Log(v)

 


References

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

propertybag-0.1.9-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file propertybag-0.1.9-py3-none-any.whl.

File metadata

  • Download URL: propertybag-0.1.9-py3-none-any.whl
  • Upload date:
  • Size: 6.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.9.7

File hashes

Hashes for propertybag-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 fecb0aff1e2174d2c622ac8e5eee5ac64a45e7f0c5abbeadc772279323dddc90
MD5 cb4082c92950c50023c4d918ae5913bd
BLAKE2b-256 1c9c192848764ad9232b2ba406b14e3465965e9b4d344f5621eb505823e2153f

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