Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Consider support for yaml (using ruamel.yaml) #136

Open
cmungall opened this issue Sep 18, 2021 · 1 comment
Open

Consider support for yaml (using ruamel.yaml) #136

cmungall opened this issue Sep 18, 2021 · 1 comment

Comments

@cmungall
Copy link

My use case:

  1. I want to use the awesome jsonpatch on yaml files
  2. I wish to preserve yaml comments

This is actually very easy to do with minimal code using ruamel (which preserves comments, unlike pyyaml):

import sys
from ruamel.yaml import YAML

inp = """\
# example
name:
  # details
  family: Smith   # very common
  given: Alice    # one of the siblings
"""

yaml = YAML()
obj = yaml.load(inp)
patch = JsonPatch([
    {'op': 'add', 'path': '/foo', 'value': {'bar': 'baz'}},
    {'op': 'remove', 'path': '/name/family'}
])
obj = patch.apply(obj)
yaml.dump(obj, sys.stdout)

yields:

# example
name:
  # details
  given: Alice    # one of the siblings
foo:
  bar: baz

which is nice

I would like to put a convenient (if trivial) interface on top of this. I could

  1. Make a new pypi module python-yaml-patch that has this trivial wrapping code, plus CLI bindings
  2. Make a PR on this repo

I suspect (1) would be preferred but thought I would check first. Feel free to close this issue, and I will go ahead with (1), and post a link here when done.

Aside:

I note there is a lib https://github.com/krishicks/yaml-patch from @krishicks but this seems abandoned, and also duplicative. If I go ahead with (1) I wouldn't duplicate any code, just wrap as in the example above

There is also https://github.com/campos-ddc/yaml-patch from @campos-ddc which looks great, but this isn't intended to support the json-patch standard

@stefankoegl
Copy link
Owner

Hi! Thanks for your input!

As far as I know (I don't use YAML regularly, though) YAML is another serialization for similar structures (nested dict/list like) than JSON. As YAML objects can be used through indexing, and as your example shows, it already works with jsonpatch. Therefore I am not quite sure which additional functionality you'd need. Can you give some example?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants