Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pirhoo/spytula
A Python library that provides a simple and convenient way to build JSON and YAML data structures using a builder pattern.
https://github.com/pirhoo/spytula
data dsl json python yaml
Last synced: 12 days ago
JSON representation
A Python library that provides a simple and convenient way to build JSON and YAML data structures using a builder pattern.
- Host: GitHub
- URL: https://github.com/pirhoo/spytula
- Owner: pirhoo
- License: mit
- Created: 2023-06-19T17:34:03.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-06-19T20:56:22.000Z (over 1 year ago)
- Last Synced: 2024-04-28T14:45:30.973Z (10 months ago)
- Topics: data, dsl, json, python, yaml
- Language: Python
- Homepage: https://pirhoo.github.io/spytula/
- Size: 778 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: docs/contributing.md
- License: LICENSE.md
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# 👩🍳 Spytula [![](https://img.shields.io/github/actions/workflow/status/pirhoo/spytula/main.yml)](https://github.com/pirhoo/spytula/actions)
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:
```bash
pip install spytula
```## Usage
Import the `SpytulaBuilder` class from the `spytula.builder` module:
```python
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:
```json
{
"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](https://pirhoo.github.io/spytula/) for more details.