%PDF- %PDF-
Direktori : /usr/lib/python3/dist-packages/__pycache__/ |
Current File : //usr/lib/python3/dist-packages/__pycache__/jsonpatch.cpython-312.pyc |
� M`�p � �l � d Z ddlmZ ddlZddlZddlZddlZddlZ ddlm Z ddlm Z mZ dZdZ ddlmZmZ dZd Zd ZdZej4 dk\ reefZ G d � de� Z G d� de� Z G d� de� Z G d� dee!� Z"d� Z# ejH ejJ e#�� Z&de fd�Z'e fd�Z( G d� de)� Z* G d� de*� Z+ G d� de*� Z, G d � d!e*� Z- G d"� d#e*� Z. G d$� d%e*� Z/ G d&� d'e*� Z0 G d(� d)e)� Z1 G d*� d+e)� Z2d,� Z3y# e $ r eZ Y ��w xY w# e $ r ddlmZmZ eZY ��w xY w)-z Apply JSON-Patches (RFC 6902) � )�unicode_literalsN)�MappingProxyType)�JsonPointer�JsonPointerException� )�MutableMapping�MutableSequenceu Stefan Kögl <stefan@skoegl.net>z1.32z0https://github.com/stefankoegl/python-json-patchzModified BSD License)� r c � � e Zd ZdZy)�JsonPatchExceptionzBase Json Patch exceptionN��__name__� __module__�__qualname__�__doc__� � �+/usr/lib/python3/dist-packages/jsonpatch.pyr r J � � �#r r c � � e Zd ZdZy)�InvalidJsonPatchz, Raised if an invalid JSON Patch is created Nr r r r r r N s � �6r r c � � e Zd ZdZy)�JsonPatchConflicta Raised if patch could not be applied due to conflict situation such as: - attempt to add object key when it already exists; - attempt to operate with nonexistence object key; - attempt to insert value to array at position beyond its size; - etc. Nr r r r r r R s � �r r c � � e Zd ZdZy)�JsonPatchTestFailedz A Test operation failed Nr r r r r r [ r r r c � � t j t � }| D ] \ }}|| j |� � t d� |j � D � � S )z'Convert duplicate keys values to lists.c 3 �P K � | ] \ }}|t |� d k( r|d n|f�� � y�w)r r N)�len)�.0�key�valuess r � <genexpr>zmultidict.<locals>.<genexpr>f s4 � �� � � �C�� �3�v�;�!�+�f�Q�i��8��s �$&)�collections�defaultdict�list�append�dict�items)� ordered_pairs�mdictr �values r � multidictr, _ s] � � �#�#�D�)�E�#� !� ��U� �c� ���%� �!� � � !�;�;�=�� � r )�object_pairs_hookFc � � t |t � rt j ||�� }n t ||�� }|j | |� S )a� Apply list of patches to specified json document. :param doc: Document object. :type doc: dict :param patch: JSON patch as list of dicts or raw JSON-encoded string. :type patch: list or str :param in_place: While :const:`True` patch will modify target document. By default patch will be applied to document copy. :type in_place: bool :param pointer_cls: JSON pointer class to use. :type pointer_cls: Type[JsonPointer] :return: Patched document object. :rtype: dict >>> doc = {'foo': 'bar'} >>> patch = [{'op': 'add', 'path': '/baz', 'value': 'qux'}] >>> other = apply_patch(doc, patch) >>> doc is not other True >>> other == {'foo': 'bar', 'baz': 'qux'} True >>> patch = [{'op': 'add', 'path': '/baz', 'value': 'qux'}] >>> apply_patch(doc, patch, in_place=True) == {'foo': 'bar', 'baz': 'qux'} True >>> doc == other True ��pointer_cls)� isinstance� basestring� JsonPatch�from_string�apply)�doc�patch�in_placer0 s r �apply_patchr9 r sA � �B �%��$��%�%�e��%�E���%�[�9���;�;�s�H�%�%r c �2 � t j | ||�� S )a! Generates patch by comparing two document objects. Actually is a proxy to :meth:`JsonPatch.from_diff` method. :param src: Data source document object. :type src: dict :param dst: Data source document object. :type dst: dict :param pointer_cls: JSON pointer class to use. :type pointer_cls: Type[JsonPointer] >>> src = {'foo': 'bar', 'numbers': [1, 3, 4, 8]} >>> dst = {'baz': 'qux', 'numbers': [1, 4, 7]} >>> patch = make_patch(src, dst) >>> new = patch.apply(src) >>> new == dst True r/ )r3 � from_diff)�src�dstr0 s r � make_patchr>