Skip to main content

Apply JSON-Patches (RFC 6902) with extensions

Project description

python-json-patch-ext

PyPI version Supported Python versions

Applying JSON Patches in Python

This module extends the Python jsonpatch module to add 'check', 'mutate' and 'merge' operations.

See source code for examples

Example

from jsonpatchext import JsonPatchExt, JsonPatchTestFailed

def StartsWithComparator(current, compare):
    if not current.startswith(compare):
        msg = '{0} ({1}) does not starts with {2} ({3})'
        raise JsonPatchTestFailed(msg.format(current, type(current), compare, type(compare)))

def RemoveLastMutator(current, value):
    return current[:-1]

patch = JsonPatchExt([
    {'op': 'add', 'path': '/foo', 'value': {'bar': 'bar'}},
    {'op': 'check', 'path': '/foo/bar', 'value': 'bar', 'cmp': 'equals'},
    {'op': 'merge', 'path': '/foo', 'value': {'newbar': 'newbarvalue'}},
    {'op': 'check', 'path': '/foo/newbar', 'value': 'newb', 'cmp': 'custom', 'comparator': StartsWithComparator},
    {'op': 'mutate', 'path': '/foo/newbar', 'mut': 'uppercase'},
    {'op': 'mutate', 'path': '/foo/newbar', 'mut': 'custom', 'mutator': RemoveLastMutator},
    {'op': 'mutate', 'path': '/foo/bar', 'mut': ['uppercase', ('custom', RemoveLastMutator)]},
])
doc = {}
result = patch.apply(doc)
print(result)

checkpatch = JsonPatchExt([
    {'op': 'check', 'path': '/foo/bar', 'value': 'BA', 'cmp': 'equals'},
    {'op': 'check', 'path': '/foo/newbar', 'value': 'NEWB', 'cmp': 'custom', 'comparator': StartsWithComparator},
])

result = checkpatch.check(result)
print(result)

Output:

{'foo': {'bar': 'BA', 'newbar': 'NEWBARVALU'}}
True

Author

Rangel Reale (rangelspam@gmail.com)

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

jsonpatchext-1.35.tar.gz (8.3 kB view details)

Uploaded Source

Built Distribution

jsonpatchext-1.35-py2.py3-none-any.whl (9.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file jsonpatchext-1.35.tar.gz.

File metadata

  • Download URL: jsonpatchext-1.35.tar.gz
  • Upload date:
  • Size: 8.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.3

File hashes

Hashes for jsonpatchext-1.35.tar.gz
Algorithm Hash digest
SHA256 86848ceb71a59c543fa19930b44a14f9b73e752d0d892f6b9c49ba95ad6a1430
MD5 050289dd79bc815a36e6dec6524d21a0
BLAKE2b-256 aaf6652a914264564655c60dcca175e60e02192ff6b697abbcbd1a84eb95ea81

See more details on using hashes here.

File details

Details for the file jsonpatchext-1.35-py2.py3-none-any.whl.

File metadata

  • Download URL: jsonpatchext-1.35-py2.py3-none-any.whl
  • Upload date:
  • Size: 9.0 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.3

File hashes

Hashes for jsonpatchext-1.35-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 de5770090f7ea018c2e4f2e118dc0a2ebee8a069ea1f0eedfd66a615ee78dfc0
MD5 c905b0de329729b8ebdf23859493acab
BLAKE2b-256 804abeca44893c40add853b20f67929dde8533d6599cbe10f3f1ce3c7f71dc21

See more details on using hashes here.

Supported by

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