File: //snap/core18/current/usr/lib/python3/dist-packages/__pycache__/jsonpatch.cpython-36.pyc
3
��BY�h �
@ s� d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl Z yddl
mZmZ W n$ e
k
r� ddlmZmZ Y nX ddlmZmZ dZdZdZd Ze jdBkr�eefZG dd� de�ZG d
d� de�ZG dd� de�ZG dd� dee�Zdd� Zdd� Z e � e_!dCdd�Z"dd� Z#G dd� de$�Z%G dd� de$�Z&G d d!� d!e&�Z'G d"d#� d#e&�Z(G d$d%� d%e&�Z)G d&d'� d'e&�Z*G d(d)� d)e&�Z+G d*d+� d+e&�Z,dDd-d.�Z-d/d0� Z.dId2d3�Z/d4d5� Z0d6d7� Z1d8d9� Z2d:d;� Z3d<d=� Z4d>d?� Z5d@dA� Z6dS )Jz Apply JSON-Patches (RFC 6902) � )�unicode_literalsN)�MutableMapping�MutableSequence)�JsonPointer�JsonPointerExceptionu Stefan Kögl <stefan@skoegl.net>z1.16z0https://github.com/stefankoegl/python-json-patchzModified BSD License� c @ s e Zd ZdZdS )�JsonPatchExceptionzBase Json Patch exceptionN)�__name__�
__module__�__qualname__�__doc__� r
r
�+/usr/lib/python3/dist-packages/jsonpatch.pyr @ s r c @ s e Zd ZdZdS )�InvalidJsonPatchz, Raised if an invalid JSON Patch is created N)r r
r r r
r
r
r r D s r c @ s e Zd ZdZdS )�JsonPatchConflicta Raised if patch could not be applied due to conflict situation such as:
- attempt to add object key then it already exists;
- attempt to operate with nonexistence object key;
- attempt to insert value to array at position beyond of it size;
- etc.
N)r r
r r r
r
r
r r H s r c @ s e Zd ZdZdS )�JsonPatchTestFailedz A Test operation failed N)r r
r r r
r
r
r r Q s r c C s@ t jt�}x| D ]\}}|| j|� qW tdd� |j� D ��S )z'Convert duplicate keys values to lists.c s s. | ]&\}}|t |�d kr |d n|fV qdS )� r N)�len)�.0�key�valuesr
r
r � <genexpr>^ s zmultidict.<locals>.<genexpr>)�collections�defaultdict�list�append�dict�items)Z
ordered_pairsZmdictr �valuer
r
r � multidictU s
r c C sF t jdkrtjtj�j} ntjtj�j} d| kr6tjS t j
tjtd�S )a� adds the object_pairs_hook parameter to json.load when possible
The "object_pairs_hook" parameter is used to handle duplicate keys when
loading a JSON object. This parameter does not exist in Python 2.6. This
methods returns an unmodified json.load for Python 2.6 and a partial
function with object_pairs_hook set to multidict for Python versions that
support the parameter. r �object_pairs_hook)r )r r )�sys�version_info�inspectZ signature�json�loadZ
parametersZ
getargspec�args� functools�partialr )r&