Skip to main content

Python Softy

Project description

Softy

license

Soft access of nested data for more readable code

  • Lightweight
  • Pure Python
  • One source file
  • < 150 lines of code
  • No dependencies

An item:

basket = {
    "Fruits": [
        {
            "Type": "Apple",
            "Color": "Green"
        },
        {
            "Type": "Apple",
            "Color": "Red"
        }
    ],
    "Blanket": {
        "Material": "Cotton",
        "Color": "Red"
    }
}

Before:

# get the blanket color
blanket = basket.get('Blanket')
blanket_color = None
if blanket:
    blanket_color = blanket.get('Color')
if blanket_color is not None:
    print(f'Blanket is {blanket_color}')
else:
    print('Unspecified blanket color')

# get the color of the third fruit
fruits = basket.get('Fruits')
fruit_color = None
if fruits is not None:
    if len(fruits) > 2:
        fruit_color = fruits[2].get('Color')
if fruit_color is not None:
    print(f'3rd fruit color is {fruit_color}')
else:
    print('Unspecified 3rd fruit color')

After:

import softy
basket = softy.soften(basket)

# get the blanket color
if basket.Blanket.Color is not softy.null:
    print(f'Blanket is {basket.Blanket.Color}')
else:
    print('Unspecified blanket color')

# get the color of the third fruit
if basket.Fruits.i(2).Color is not softy.null:
    print(f'3rd fruit color is {fruit_color}')
else:
    print('Unspecified 3rd fruit color')

# built-in indexing still works the same
try:
    wine = basket['Wine']
except KeyError:
    print('Forgot the wine')
else:
    assert False

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

softy-0.0.4.tar.gz (5.0 kB view hashes)

Uploaded Source

Built Distribution

softy-0.0.4-py3-none-any.whl (3.5 kB view hashes)

Uploaded Python 3

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