Skip to main content

A Python library that provides a simple and convenient way to build JSON and YAML data structures using a builder pattern.

Project description

👩‍🍳 Spytula

Spytula is a Python library that provides a simple and convenient way to build JSON and YAML data structures using a builder pattern.

Installation

Use pip to install the Spytula library:

pip install spytula

Usage

Import the SpytulaBuilder class from the spytula.builder module:

from spytula.builder import SpytulaBuilder

# Create an instance of SpytulaBuilder
builder = SpytulaBuilder()

# Add attributes to the JSON structure
builder.attribute('name', 'Ramen')
builder.attribute('origin', 'Japan')

# Create a list of ingredients
for builder.each('ingredients') as add_ingredient:    
    for ingredient in ['Noodles', 'Pork', 'Eggs', 'Miso']:
        with add_ingredient() as ingredient_builder:
            ingredient_builder.attribute('name', ingredient)

# Add optional attributes conditionally
builder.when('spiciness', 'Medium', True)
builder.when('extra_toppings', ['Green Onions', 'Nori', 'Bamboo Shoots'], True)

# Configure the key to use camelcase
builder.key_format(camelize={'uppercase_first_letter': False})

# Convert the JSON structure to JSON-formatted string
json_output = builder.to_json(indent=4)

# Print the JSON output
print(json_output)

This will output:

{
    "name": "Ramen",
    "origin": "Japan",
    "ingredients": [
        { "name": "Noodles" },
        { "name": "Pork" },
        { "name": "Eggs" },
        { "name": "Miso" }
    ],
    "spiciness": "Medium",
    "extraToppings": [
        "Green Onions",
        "Nori",
        "Bamboo Shoots"
    ]
}

In this example, we create a SpytulaBuilder instance and add attributes like name and origin to represent Ramen. We use the nodes() context manager to create a list of ingredients and add them to the JSON structure. Optional attributes like spiciness and toppings are added conditionally using the when() method. Finally, we convert the JSON structure to a JSON-formatted string using to_json() with an indentation of 4 spaces.

Documentation

Refer for the documentation for more details.

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

spytula-0.0.3.tar.gz (6.2 kB view details)

Uploaded Source

Built Distribution

spytula-0.0.3-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

File details

Details for the file spytula-0.0.3.tar.gz.

File metadata

  • Download URL: spytula-0.0.3.tar.gz
  • Upload date:
  • Size: 6.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.10.6 Linux/5.19.0-45-generic

File hashes

Hashes for spytula-0.0.3.tar.gz
Algorithm Hash digest
SHA256 b2ae997a9f7b750779b8d7e2176621637cb2e71063b04adb34df8c5b2084d268
MD5 8ea4429d15b40ab6b7bf2a57b59e4b20
BLAKE2b-256 43c5e98bfc4bb6384e0ebfcca32ab4f1ea1a861e4ce2b6875f1cc4f4f166cc8c

See more details on using hashes here.

File details

Details for the file spytula-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: spytula-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 6.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.10.6 Linux/5.19.0-45-generic

File hashes

Hashes for spytula-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 1e00aa4df38e348f5b17c15d0265f73e200c739649be43154fa87e51fb9c0344
MD5 865c860d07b39d32b100fbc9b5f7d9b2
BLAKE2b-256 d7e8599a0a449f761f5a2175599ebf5904c7eea4cf98b05b48d3f9b772e18925

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