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.1.9.tar.gz (15.3 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.1.9-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for hifiyaml-0.1.9.tar.gz
Algorithm Hash digest
SHA256 764f4ca88b3daea8e3322286d8fb378d14b7b1d7bf23c2a906d4cfa97bc3824b
MD5 c0c8579dded16264023a9aaa1f1fdf17
BLAKE2b-256 09ddf0a1f0ff7488790f29d0f216a84205828e58d21c23a3d87d99af688440f6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: hifiyaml-0.1.9-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.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 1013f37104eb2dab676e9471bdf97b1366ce0258e311bc87eb517d37a6687090
MD5 447f3dff955be6b26a219e57ed3b101a
BLAKE2b-256 e542c40184fed1d370336fe76fc897dc8ba99e12d9c2d015c866e3b56712e837

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