Sindbad~EG File Manager
3
!��c�* � @ s d Z ddlmZ dZdZdZdZyddlmZ e Z
dd � ZW n ek
r\ e
Zd
d � ZY nX yddlmZmZ W n$ ek
r� ddlmZmZ Y nX ddlmZmZ dd
lZdd
lZe� Zddd�Zefdd�Zdd� ZG dd� de�ZG dd� de�ZG dd� de�Zdd� Zdd� Z d
S ) z7 Identify specific nodes in a JSON document (RFC 6901) � )�unicode_literalsu Stefan Kögl <stefan@skoegl.net>z2.3z2https://github.com/stefankoegl/python-json-pointerzModified BSD License)�izipc C s
| j d�S )NZraw_unicode_escape)�encode)�u� r �2/tmp/pip-build-_uu8ur7s/jsonpointer/jsonpointer.py�<lambda>/ s r c C s | S )Nr )r r r r r 2 s )�Mapping�Sequence)�tee�chainNTc C s t |�}|j| ||�S )a� Resolves pointer against doc and sets the value of the target within doc.
With inplace set to true, doc is modified as long as pointer is not the
root.
>>> obj = {'foo': {'anArray': [ {'prop': 44}], 'another prop': {'baz': 'A string' }}}
>>> set_pointer(obj, '/foo/anArray/0/prop', 55) == {'foo': {'another prop': {'baz': 'A string'}, 'anArray': [{'prop': 55}]}}
True
>>> set_pointer(obj, '/foo/yet another prop', 'added prop') == {'foo': {'another prop': {'baz': 'A string'}, 'yet another prop': 'added prop', 'anArray': [{'prop': 55}]}}
True
>>> obj = {'foo': {}}
>>> set_pointer(obj, '/foo/a%20b', 'x') == {'foo': {'a%20b': 'x' }}
True
)�JsonPointer�set)�doc�pointer�value�inplacer r r �set_pointerA s r c C s t |�}|j| |�S )aa Resolves pointer against doc and returns the referenced object
>>> obj = {'foo': {'anArray': [ {'prop': 44}], 'another prop': {'baz': 'A string' }}, 'a%20b': 1, 'c d': 2}
>>> resolve_pointer(obj, '') == obj
True
>>> resolve_pointer(obj, '/foo') == obj['foo']
True
>>> resolve_pointer(obj, '/foo/another prop') == obj['foo']['another prop']
True
>>> resolve_pointer(obj, '/foo/another prop/baz') == obj['foo']['another prop']['baz']
True
>>> resolve_pointer(obj, '/foo/anArray/0') == obj['foo']['anArray'][0]
True
>>> resolve_pointer(obj, '/some/path', None) == None
True
>>> resolve_pointer(obj, '/a b', None) == None
True
>>> resolve_pointer(obj, '/a%20b') == 1
True
>>> resolve_pointer(obj, '/c d') == 2
True
>>> resolve_pointer(obj, '/c%20d', None) == None
True
)r
�resolve)r r �defaultr r r �resolve_pointer[ s $r c C s&