Skip to main content

does basic diff-ing of YAML files while ignoring key-order

Project description

Purpose

Ever needed to compare two YAML files, when the keys were out of order?
Maybe you've tried cutting and pasting to move the keys around, wondering if there's a better way?
Well, now there is - yam_sort!

Okay, I may have been watching too much late-night TV. But this library was born out of frustration working with YAML files. I was using AWS API-Gateway YAML templates, which sometimes get exported in random order (especially when there are changes to it), making it hard to compare with git-checked-in copies. After the nth time moving keys around, I decided to automate it.

  • Do basic diff-ing of YAML files, while ignoring the order of keys/sub-keys.
  • Re-order a second dictionary/YAML file, to match the first file. Ignore missing keys, move extra keys to end of list.

This is a very narrowly-focussed library - it sorts one YAML file to match the key-order in another YAML file. But I don't know of any other automated way of doing this, and got tired of doing it manually.

Pip Requirements

  • PyYAML==5.1.2
  • virtualenv (optional, but highly recommended)

Installation

# activate a virtual environment
pip install yam_sort

Usage

yam_sort -h  
yam_sort -s file_one file_two  # synchronizes second file with first, 
                                 writes to stdout
yam_sort -s file_one file_two -o  # synchronizes second file with first, 
                                    overwrites second file
yam_sort -k file_one file_two  # lists key-differences between files
optional arguments:
  -h, --help                                   show this help message and exit
  -s first second, --sync file_one file_two    sync two YAML files
  -o, --overwrite                              saves output to second file
  -k first second, --keys file_one file_two    diff two YAML files by keys only

Note

Since the intent of this library is to compare YAML files that were exported from AWS API-Gateways, the resulting sorted-file has to be as similar as possible. This includes formatting of the keys/values in the file. AWS exports keys as unquoted, and all string-values as quoted. Therefore, this library copies the formatting from the original file, in the output-file. If a string was double-quoted, it will (should) be double-quoted in the output, and the same for single-quoting, etc.

Known Bugs

Some values can be multi-line, particularly in the section:

  • x-amazon-apigateway-gateway-responses:

These do not get properly copied over to the output-dict.

Project details


Release history Release notifications | RSS feed

This version

1.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yam_sort-1.0.tar.gz (6.7 kB view details)

Uploaded Source

Built Distribution

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

yam_sort-1.0-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

File details

Details for the file yam_sort-1.0.tar.gz.

File metadata

  • Download URL: yam_sort-1.0.tar.gz
  • Upload date:
  • Size: 6.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.1 requests-toolbelt/0.9.1 tqdm/4.39.0 CPython/3.6.3

File hashes

Hashes for yam_sort-1.0.tar.gz
Algorithm Hash digest
SHA256 765c986080b9d832871cb5c2c0a8efbe68353b0acd7577601b45420bcca99f71
MD5 88a93abac89d9ae24b15f310b142f22a
BLAKE2b-256 eb2260af1afa48397ea7d4ceb38ae0add9a6d380158911ad9ecdf785688b826d

See more details on using hashes here.

File details

Details for the file yam_sort-1.0-py3-none-any.whl.

File metadata

  • Download URL: yam_sort-1.0-py3-none-any.whl
  • Upload date:
  • Size: 8.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.1 requests-toolbelt/0.9.1 tqdm/4.39.0 CPython/3.6.3

File hashes

Hashes for yam_sort-1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 349c5b255b180481de04275aa14bbcc5795c8b0c5a1b97d9aca6f90e81c7d299
MD5 dd455ecfec41186eee22fff159940538
BLAKE2b-256 cc190c2e35953f1fe28d8cfb4482751f8a62942ee3ac5238eede7426e8d54f54

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