Skip to main content

A package for enhancing YAML processing with various features.

Project description

yaml-transformer

Introduction

yaml-transformer is a powerful Python package designed to enhance YAML processing capabilities. It introduces advanced features like including other YAML files, executing JSONPath queries, applying JQ queries, and flattening lists within YAML files.

Installation

To install yaml-transformer, run the following command:

pip install yaml-transformer

Features

  • !include: Include and merge other YAML files.
  • !jsonpath: Perform JSONPath queries on YAML nodes.
  • !jq: Apply JQ queries and modifications to YAML nodes.
  • !flatten: Flatten nested lists into a single list.

Usage

The yaml-transformer package enhances YAML processing with advanced features. Below are examples demonstrating its capabilities using a Transformers theme. These examples show how to include external YAML files, apply JSONPath queries, use JQ queries, and flatten lists, all within a YAML context.

Including External YAML Files

Autobots YAML (autobots.yaml):

- name: Optimus Prime
  role: Leader
- name: Bumblebee
  role: Scout

Decepticons YAML (decepticons.yaml):

- name: Megatron
  role: Leader
- name: Starscream
  role: Fighter

Leaders YAML (leaders.yaml):

autobots:
  - name: Optimus Prime
    role: Leader

Main YAML:

autobots: &autobots !include autobots.yaml
decepticons: &decepticons !include decepticons.yaml

In this setup, autobots.yaml and decepticons.yaml are included and referenced in the main YAML file using YAML anchors (&autobots and &decepticons).

Applying JQ Query

To find a specific Transformer leader (e.g., Optimus Prime) using JQ:

leaders: &leaders !include leaders.yaml
leader: !jq { object: *leaders, filter: '[.autobots[] | select(.name == "Optimus Prime")]' }

This JQ query selects "Optimus Prime" from the included leaders.yaml.

Combining JSONPath Queries with Flatten

Combining the names of all Transformers (both Autobots and Decepticons) into a single list:

all_names: !flatten
  - !jsonpath { object: *autobots, path: '$[*].name', all: true }
  - !jsonpath { object: *decepticons, path: '$[*].name', all: true }

Here, !jsonpath queries are used to extract the names of all Autobots and Decepticons, and !flatten combines these names into a single list.

Running Tests

To run tests, install the package with development dependencies:

pip install yaml-transformer[dev]

Then, execute the test suite using pytest:

pytest

Contributing

Contributions to yaml-transformer are welcome!

License

yaml-transformer is released under the MIT License.

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

yaml-transformer-0.1.1.tar.gz (4.0 kB view hashes)

Uploaded Source

Built Distribution

yaml_transformer-0.1.1-py3-none-any.whl (4.6 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