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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for yaml_transformer-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e6fc111b266c424c53e92fd47b26e8c458ea30324f419f5e19b6e6cbf1e37b99 |
|
MD5 | 2a8363d476951dd1d66e8ba7b49dbc8d |
|
BLAKE2b-256 | a3505fda9a09713079ac2e8165952fcf8c5e0415090a65ace6136c0d1e047f13 |