Skip to main content

High-fidelity WYSIWYG YAML parser and emitter that preserve exact formatting

Project description

hifiyaml

A high-fidelity WYSIWYG YAML parser and emitter that preserves exact formatting, including comments, anchors, aliases, blank lines, and indentation.
Check the more detailed User Guide
Check wiki at https://github.com/hifiyaml/hifiyaml/wiki

Installation

pip install hifiyaml

Quick demo

1. Get an example YAML file

Use jedivar.yaml from the RRFSv2 system as an example.

wget https://raw.githubusercontent.com/NOAA-EMC/rrfs-workflow/refs/heads/rrfs-mpas-jedi/parm/jedivar.yaml

2. Load the YAML data and dump a YAML block using a querystr

Write the following statments into test.py:

import hifiyaml as hy
data = hy.load("jedivar.yaml")
querystr = "cost function/background error/components/1"
hy.dump(data, querystr)   # dump to stdout
hy.dump(data, querystr, 'ensbec.yaml')   # dump to the file 'ensbec.yaml'

run cd tests; ./test.sh and then check the output yaml files

NOTE: A querystr is a string describing the path from a unique higher level key (or index if a list) to the destination level key (or index), separated with /.
For the following simple YAML file,

demo:
  configuration:
    suite: YAML
    detail:
      - meaning:
          - Y: Yelling
          - A: At
          - M: My
          - L: Laptop

A query string demo/configuration/detail/0/meaning will return one dictionary item with "meaning" as the key and a list of 4 items as the value, i.e:

- meaning:
    - Y: Yelling
    - A: At
    - M: My
    - L: Laptop

3. Availabe functions.

hifiyaml currently provides the following functions:

load, get, dump, drop, modify, next_pos, get_start_pos, dedent, text_to_yblock, strip_indentations, strip_leading_empty_lines

Testing

pip install pytest
python3 -m pytest tests/test_hifiyaml.py -v

and use the shell-based diff tests:

cd tests; ./test.sh

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

hifiyaml-0.2.1.tar.gz (15.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hifiyaml-0.2.1-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

File details

Details for the file hifiyaml-0.2.1.tar.gz.

File metadata

  • Download URL: hifiyaml-0.2.1.tar.gz
  • Upload date:
  • Size: 15.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.13

File hashes

Hashes for hifiyaml-0.2.1.tar.gz
Algorithm Hash digest
SHA256 35add387fb6e7cb74c351835f2ebe5dea9a76a5ea86808d205bcba269c5caeb9
MD5 ee8bb64fe0e23879df8b9d952552d522
BLAKE2b-256 f60a866e879bfba1c6faff727b82dfc96ac209b5836d613fd726adf9e5c6facc

See more details on using hashes here.

File details

Details for the file hifiyaml-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: hifiyaml-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 10.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.13

File hashes

Hashes for hifiyaml-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1103a5258675aa17d40162d07d15b4f85033b25ddc292fe3eef7be0d238c499e
MD5 3dda93cb2744afa3b3ad079f3507d5d0
BLAKE2b-256 44f104c3aafb493b771fc49471d1d884b0a7c2dbaabf7b611d8210b93e5520e2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page