Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes15kdownloads
jsonpatch.cpython-313.pyc232 linesDownload Raw Back to __pycache__
1�

2��jRt���SrSSKJr SSKrSSKrSSKrSSKrSSKrSSKJ	r	 SSKJr SSKJrJr SrSrSSKJrJr S	rS3rSrSr\R6S
:�a\\4r"SS\5r"SS\5r "SS\5r!"SS\\"5r#Sr$\RJ"\RL\$S9r'S\4Sjr(\4Sjr)"SS\*5r+"SS\+5r,"SS \+5r-"S!S"\+5r."S#S$\+5r/"S%S&\+5r0"S'S(\+5r1"S)S*\*5r2"S+S,\*5r3S-r4g!\4a5 SSKJ	r	 GNf=f!\6a \
rGNf=f!\7a SSKJrJr \rGNf=f).zApply JSON-Patches (RFC 6902) �)�unicode_literalsN)�Sequence)�MappingProxyType)�JsonPointer�JsonPointerException�)�MutableMapping�MutableSequenceu Stefan Kögl <stefan@skoegl.net>z1.33z0https://github.com/stefankoegl/python-json-patchzModified BSD License)�rc��\rSrSrSrSrg)�JsonPatchException�PzBase Json Patch exception�N��__name__�8__module__�__qualname__�__firstlineno__�__doc__�__static_attributes__r��OD:\code\apps\devtools\python\user_packages\Python313\site-packages\jsonpatch.pyr
r
P���#rr
c��\rSrSrSrSrg)�InvalidJsonPatch�Tz+Raised if an invalid JSON Patch is created rNrrrrrrTs��6rrc��\rSrSrSrSrg)�JsonPatchConflict�Xz�Raised if patch could not be applied due to conflict situation such as:9- attempt to add object key when it already exists;10- attempt to operate with nonexistence object key;11- attempt to insert value to array at position beyond its size;12- etc.13rNrrrrrrXs��rrc��\rSrSrSrSrg)�JsonPatchTestFailed�azA Test operation failed rNrrrrr!r!arrr!c��[R"[5nUHup#XRU5 M [	SUR555$)z'Convert duplicate keys values to lists.c3�V# �UHupU[U5S:XaUSOU4v� M! g7f)rrN)�len)�.0�key�valuess   r�	<genexpr>�multidict.<locals>.<genexpr>ls1����)�K�C�14
�3�v�;�!�+�f�Q�i��8�(�s�'))�collections�defaultdict�list�append�dict�items)�
ordered_pairs�mdictr'�values    r�	multidictr4esT��
�#�#�D�)�E�#�15��
�16���%� �$���!�;�;�=���r)�object_pairs_hookFc��[U[5(a[RXS9nO	[XS9nUR	X5$)aLApply list of patches to specified json document.17 18:param doc: Document object.19:type doc: dict20 21:param patch: JSON patch as list of dicts or raw JSON-encoded string.22:type patch: list or str23 24:param in_place: While :const:`True` patch will modify target document.25                 By default patch will be applied to document copy.26:type in_place: bool27 28:param pointer_cls: JSON pointer class to use.29:type pointer_cls: Type[JsonPointer]30 31:return: Patched document object.32:rtype: dict33 34>>> doc = {'foo': 'bar'}35>>> patch = [{'op': 'add', 'path': '/baz', 'value': 'qux'}]36>>> other = apply_patch(doc, patch)37>>> doc is not other38True39>>> other == {'foo': 'bar', 'baz': 'qux'}40True41>>> patch = [{'op': 'add', 'path': '/baz', 'value': 'qux'}]42>>> apply_patch(doc, patch, in_place=True) == {'foo': 'bar', 'baz': 'qux'}43True44>>> doc == other45True46��pointer_cls)�47isinstance�48basestring�	JsonPatch�from_string�apply)�doc�patch�in_placer8s    r�apply_patchrAxs>��B�%��$�$��%�%�e�%�E���%�9���;�;�s�%�%rc�*�[RXUS9$)a�Generates patch by comparing two document objects. Actually is49a proxy to :meth:`JsonPatch.from_diff` method.50 51:param src: Data source document object.52:type src: dict53 54:param dst: Data source document object.55:type dst: dict56 57:param pointer_cls: JSON pointer class to use.58:type pointer_cls: Type[JsonPointer]59 60>>> src = {'foo': 'bar', 'numbers': [1, 3, 4, 8]}61>>> dst = {'baz': 'qux', 'numbers': [1, 4, 7]}62>>> patch = make_patch(src, dst)63>>> new = patch.apply(src)64>>> new == dst65True66r7)r;�	from_diff)�src�dstr8s   r�67make_patchrF�s��*���s�[��A�Arc��\rSrSrSr\4SjrSrSrSr	Sr68\S5r\S	5r
\
RS695r
Srg)
�PatchOperation�z'A single operation inside a JSON Patch.c�h�X lURS5(d[S5e[USUR5(aUSRUlUSUlO+USUlURUR705UlXlg![an[S5eSnAff=f)N�pathz#Operation must have a 'path' memberzInvalid 'path')	r8�__contains__rr9rK�location�pointer�	TypeError�	operation)�selfrPr8�exs    r�__init__�PatchOperation.__init__�s���&���%�%�f�-�-�"�#H�I�I��i��'��)9�)9�:�:�%�f�-�2�2�D�M�$�V�,�D�L�%�f�-�D�M�
9�#�/�/��
�
�>���#����
9�&�'7�8�8��
9�s�0 B�71B1�!B,�,B1c��[S5e)zGAbstract method that applies a patch operation to the specified object.z%should implement the patch operation.)�NotImplementedError)rQ�objs  rr=�PatchOperation.apply�s��!�"I�J�Jrc�Z�[[URR555$�N)�hash�	frozensetrPr0�rQs r�__hash__�PatchOperation.__hash__�s���I�d�n�n�2�2�4�5�6�6rc�`�[U[5(dgURUR:H$�NF)r9rHrP�rQ�others  r�__eq__�PatchOperation.__eq__�s%���%��0�0���~�~����0�0rc��X:X+$rZrrbs  r�__ne__�PatchOperation.__ne__�����!�!rc�R�SRURRSS5$)N�/�����)�joinrN�partsr]s rrK�PatchOperation.path�s"���x�x����*�*�3�B�/�0�0rc��[URRS5$![a URRSs$f=f)Nrl)�intrNrn�72ValueErrorr]s rr'�PatchOperation.key�sE��	*��t�|�|�)�)�"�-�.�.���	*��<�<�%�%�b�)�)�	*�s�!$�#A73�	A74c��[U5URRS'URRUlURUR75S'g)NrlrK)�strrNrnrKrMrP)rQr3s  rr'rs�s=��!$�U�������2�����)�)��
�!%������v�r)rMrPrNr8N)rrrrrrrSr=r^rdrg�propertyrKr'�setterrrrrrHrH�sb��1�.9�#�$K�7�1�76"��1��1��*��*�	�Z�Z�/��/rrHc�*�\rSrSrSrSrSrSrSrg)�RemoveOperation��z/Removes an object property or an array element.c�6�URRU5up#[U[5(a/[U[5(d[SR
U55eX#	U$![[4a!nSR
U5n[U5eSnAff=f)Nzinvalid array index '{0}'z(can't remove a non-existent object '{0}')77rN�to_lastr9rrqr�format�KeyError�78IndexErrorr)rQrW�subobj�partrR�msgs      rr=�RemoveOperation.apply�s����|�|�+�+�C�0����f�h�'�'�79�4��0E�0E�&�'B�'I�'I�$�'O�P�P�	)���80�81��	�*�%�	)�<�C�C�D�I�C�#�C�(�(��	)�s�#A'�'B�7B�Bc�~�URU:Xa,URU:�aU=RS-
slU$US-nU$�Nr�rKr'�rQrKr's   r�_on_undo_remove�RemoveOperation._on_undo_remove�s=���9�9����x�x�3�����A�
���82��q����83rc�~�URU:Xa,URU:�aU=RS-slU$US-nU$r�r�r�s   r�_on_undo_add�RemoveOperation._on_undo_add�=���9�9����x�x�#�~����A�
���84��q����85rrN�	rrrrrr=r�r�rrrrryry�s��9���rryc�*�\rSrSrSrSrSrSrSrg)�AddOperationiz,Adds an object property or an array element.c�6�URSnURR	U5upE[U[5(aMUS:XaURU5 U$U[U5:�dUS:a[S5eURXR5 U$[U[5(aUcUnU$X$U'U$Uc#[SR[U555e[SRURU55e![an[S5eSnAff=f)Nr3�/The operation does not contain a 'value' member�-rzcan't insert outside of list�invalid document type {0}�2unable to fully resolve json pointer {0}, part {1})rPr~rrNr|r9r86r.r%r�insertr	rOr}�typerM)rQrWr3rRr�r�s      rr=�AddOperation.applys#��	C��N�N�7�+�E�87�|�|�+�+�C�0����f�o�.�.��s�{��
�
�e�$�&�88�#��F��#�t�a�x�'�(F�G�G��
�
�d�*��89����
/�
/��|����90� %�t���91�	�|�� ;� B� B�4��<� P�Q�Q�'�(\�(c�(c�dh�dq�dq�sw�(x�y�y��5�	C�"�A�C�
C��	C�s�C>�>92D�D�Dc�~�URU:Xa,URU:�aU=RS-
slU$US-
nU$r�r�r�s   rr��AddOperation._on_undo_remove3r�rc�~�URU:Xa,URU:�aU=RS-slU$US-
nU$r�r�r�s   rr��AddOperation._on_undo_add;r�rrNr�rrrr�r�s��6��@�rr�c�*�\rSrSrSrSrSrSrSrg)�ReplaceOperationiDz?Replaces an object property or an array element by a new value.c�>�URSnURR	U5upEUcU$US:Xa[S5e[U[5(a!U[U5:�dUS:a[S5eO�[U[5(a"XT;aSRU5n[U5eOKUc#[SR[U555e[S	RURU55eX$U'U$![an[S5eSnAff=f)93Nr3r�r�z7'path' with '-' can't be applied to 'replace' operationrzcan't replace outside of listz)can't replace a non-existent object '{0}'r�r�)rPr~rrNr|r9r94r%rr	r}rOr�rM)rQrWr3rRr�r�r�s       rr=�ReplaceOperation.applyGs%��	C��N�N�7�+�E�95�|�|�+�+�C�0����<��L��3�;�"�#\�]�]��f�o�.�.��s�6�{�"�d�Q�h�'�(G�H�H�'/����
/�
/��!�A�H�H��N��'��,�,�"��|�� ;� B� B�4��<� P�Q�Q�'�(\�(c�(c�dh�dq�dq�sw�(x�y�y��t���96��7�	C�"�A�C�
C��	C�s�D�97D�D�Dc��U$rZrr�s   rr�� ReplaceOperation._on_undo_removeg����98rc��U$rZrr�s   rr��ReplaceOperation._on_undo_addjr�rrNr�rrrr�r�Ds��I��@�rr�c�n�\rSrSrSrSr\S5r\S5r\RS5rSr99SrS	rg100)�
MoveOperationinz?Moves an object property or an array element to a new location.c���[URSUR5(aURSnOURURS5nURU5upEXEnURU:XaU$[U[5(a+URRU5(a[S5e[SURSS.URS9RU5n[SURUS.URS9RU5nU$![an[	S5eSnAff=f![[4an[[U55eSnAff=f)	N�from�.The operation does not contain a 'from' memberz*Cannot move values into their own children�remove��oprKr7�add�r�rKr3)r9rPr8r~rr|rrrurNr	�containsryr=r�rM�rQrW�from_ptrrRr�r�r3s       rr=�MoveOperation.applyqsl��	B��$�.�.��0�$�2B�2B�C�C��>�>�&�1���+�+�D�N�N�6�,B�C��101 �'�'��,���	-��L�E�102�<�<�8�#��J��f�n�-�-����%�%�h�/�/�#�$P�Q�Q����N�N�6�*�103��'�'�)�*/��s��	�104���M�M��105��'�'�	)�*/��s��		��106��;�	B�"�@�B�
B��	B���*�%�	-�#�C��G�,�,��	-�s4�7D)�D)�-E�)107E�3D>�>E�E/�E*�*E/c�z�URURS5nSRURSS5$)Nr�rkrl)r8rPrmrn�rQr�s  r�	from_path�MoveOperation.from_path�s5���#�#�D�N�N�6�$:�;���x�x����s��+�,�,rc��URURS5n[URS5$![a URSs$f=f�Nr�rl)r8rPrqrnrOr�s  r�from_key�MoveOperation.from_key�sR���#�#�D�N�N�6�$:�;��	&��x�~�~�b�)�*�*���	&��>�>�"�%�%�	&�s�8�A�Ac��URURS5n[U5URS'URURS'gr�)r8rPrurnrK)rQr3r�s   rr�r��s?���#�#�D�N�N�6�$:�;�� ��Z����r��!)������v�rc���URU:Xa+URU:�aU=RS-
slOUS-nURU:Xa,URU:�aU=RS-
slU$US-
nU$r��r�r�rKr'r�s   rr��MoveOperation._on_undo_remove�sl���>�>�T�!��}�}��#��
�
��"�
��q����9�9����x�x�#�~����A�
���108��q����109rc���URU:Xa+URU:�aU=RS-slOUS-nURU:Xa,URU:�aU=RS-slU$US-
nU$r�r�r�s   rr��MoveOperation._on_undo_add�sl���>�>�T�!��}�}�s�"��
�
��"�
��q����9�9����x�x�#�~����A�
���110��q����111rrN)
rrrrrr=rvr�r�rwr�r�rrrrr�r�nsU��I�#�J�-��-��&��&��_�_�/��/�112�rr�c��\rSrSrSrSrSrg)�
TestOperationi�z!Test value by specified location.c113��URRU5up#UcUnOURRX#5nURSnXF:wa1Sn[	URU[U5U[U555eU$![an[	[U55eSnAff=f![an[S5eSnAff=f)Nr3r�z0{0} ({1}) is not equal to tested value {2} ({3}))rNr|�walkrr!rurPr~rr}r�)rQrWr�r��valrRr3r�s        rr=�TestOperation.apply�s���	/��<�<�/�/��4�L�F��|����l�l�'�'��5��	C��N�N�7�+�E�114�<�D�C�%�c�j�j��d�3�i�16��U��'E�F�
F��115��$�	/�%�c�"�g�.�.��	/��116�	C�"�A�C�
C��	C�s4�"B	�B	�B/�	117B,�B'�'B,�/118C	�9C�C	rN�rrrrrr=rrrrr�r��s119��+�rr�c��\rSrSrSrSrSrg)�
CopyOperationi�z@Copies an object property or an array element to a new location c��URURS5nUR	U5upE[120R"XE5n[SURUS.URS9RU5nU$![an[S5eSnAff=f![[4an[[U55eSnAff=f)Nr�r�r�r�r7)
r8rPr~rr|�copy�deepcopyrrrur�rMr=r�s       rr=�CopyOperation.apply�s���	B��'�'����v�(>�?�H�121 �'�'��,���	-��M�M�&�,�/�E����M�M��122��'�'�	)�*/��s��		��123��!�	B�"�@�B�
B��	B���*�%�	-�#�C��G�,�,��	-�s.�A?�B�?124B�	B�B�C�,C�CrNr�rrrr�r��s125��K�rr�c	���\rSrSr\"\R5r\"\5r	\126"\\\
\\\S.5r\4SjrSrSr\rSrSrSrS	r\S127\4Sj5r\SS128\4S
j5rSSjr\S5r SSjr!Sr"Sr#g129)r;i�)r�r��replace�move�testr�c��XlX lURH4n[U[5(a[	S5eURU5 M6 g)NzMDocument is expected to be sequence of operations, got a sequence of strings.)r?r8r9r:r�_get_operation)rQr?r8r�s    rrS�JsonPatch.__init__2sQ���130�&���*�*�B��"�j�)�)�&�(P�Q�Q�
����#�rc�"�UR5$)zstr(self) -> self.to_string())�	to_stringr]s r�__str__�JsonPatch.__str__Js���~�~��rc�,�[UR5$rZ)�boolr?r]s r�__bool__�JsonPatch.__bool__N����D�J�J��rc�,�[UR5$rZ)�iterr?r]s r�__iter__�JsonPatch.__iter__Sr�rc�>�[[UR55$rZ)r[�tuple�_opsr]s rr^�JsonPatch.__hash__Vs���E�$�)�)�$�%�%rc�`�[U[5(dgURUR:H$ra)r9r;r�rbs  rrd�JsonPatch.__eq__Ys%���%��+�+���y�y�E�J�J�&�&rc��X:X+$rZrrbs  rrg�JsonPatch.__ne__^rirNc�H�U=(d URnU"U5nU"XSS9$)a`Creates JsonPatch instance from string source.131 132:param patch_str: JSON patch as raw string.133:type patch_str: str134 135:param loads: A function of one argument that loads a serialized136              JSON string.137:type loads: function138 139:param pointer_cls: JSON pointer class to use.140:type pointer_cls: Type[JsonPointer]141 142:return: :class:`JsonPatch` instance.143r7)�json_loader)�cls�	patch_str�loadsr8r�r?s      rr<�JsonPatch.from_stringas'�� �.�s�����I�&���5�2�2rTc��U=(d URn[XXeS9nURSSX5 [UR	55nU"X�S9$)a�Creates JsonPatch instance based on comparison of two document144objects. Json patch would be created for `src` argument against `dst`145one.146 147:param src: Data source document object.148:type src: dict149 150:param dst: Data source document object.151:type dst: dict152 153:param dumps: A function of one argument that produces a serialized154              JSON string.155:type dumps: function156 157:param pointer_cls: JSON pointer class to use.158:type pointer_cls: Type[JsonPointer]159 160:return: :class:`JsonPatch` instance.161 162>>> src = {'foo': 'bar', 'numbers': [1, 3, 4, 8]}163>>> dst = {'baz': 'qux', 'numbers': [1, 4, 7]}164>>> patch = JsonPatch.from_diff(src, dst)165>>> new = patch.apply(src)166>>> new == dst167True168r7�N)�json_dumper�DiffBuilder�_compare_valuesr-�execute)	r�rDrE�optimization�dumpsr8r��builder�opss	         rrC�JsonPatch.from_diffusL��>�.�s�����c��M������D�#�3��7�?�?�$�%���3�0�0rc�P�U=(d URnU"UR5$)z!Returns patch set as JSON string.)r�r?)rQr�r�s   rr��JsonPatch.to_string�s!���/�t�/�/���4�:�:�&�&rc�T�[[URUR55$rZ)r��mapr�r?r]s rr��JsonPatch._ops�s���S��,�,�d�j�j�9�:�:rc��U(d[R"U5nURHnURU5nM U$)z�Applies the patch to a given object.169 170:param obj: Document object.171:type obj: dict172 173:param in_place: Tweaks the way how patch would be applied - directly to174                 specified `obj` or to its copy.175:type in_place: bool176 177:return: Modified `obj`.178)r�r�r�r=)rQrWr@rPs    rr=�JsonPatch.apply�s8����-�-��$�C����I��/�/�#�&�C�#��179rc���SU;a[S5eUSn[U[5(d[S5eX R;a[SR	U55eURUnU"XR180S9$)Nr�z&Operation does not contain 'op' memberzOperation's op must be a stringzUnknown operation {0!r}r7)rr9r:�181operationsr}r8)rQrPr�r�s    rr��JsonPatch._get_operation�sx���y� �"�#K�L�L�
�t�_���"�j�)�)�"�#D�E�E�
�_�_�$�"�#<�#C�#C�B�#G�H�H��o�o�b�!���9�*:�*:�;�;r)r?r8rZ)F)$rrrr�staticmethod�jsonr�r��182_jsonloadsr�rryr�r�r�r�r�rrrSr�r��__nonzero__r�r^rdrg�classmethodr<rCr�rvr�r=r�rrrrr;r;�s����t�z�z�*�K��z�*�K�!�!��#����
#��J�,�Z+6�$�0 � ��K� �&�'�183"��*.�K�3��3�&�(,�D�#�"1��"1�H'�184�;��;��*
<rr;c��\rSrSr\R185\4SjrSrSr	Sr186SrSrSr
S	rS187rSrSrS
rSrSrSrg)r�i�c�x�X0lX@l00/Ul///Ul/=UlnXlX lXUS/USS&grZ)r�r8�
index_storage�index_storage2�_DiffBuilder__root�src_doc�dst_doc)rQrrr�r8�roots      rrS�DiffBuilder.__init__�sI���188�&�� �"�X���!�2�h�������d������t�$��Q�rc���U[U54nURUnURU5nUcU/XT'gXTRU5 g![a" UR189URXB45 gf=frZ)r�r
�getr.rOr)rQr3�index�st�	typed_key�storage�storeds       r�store_index�DiffBuilder.store_index�s~���D��K�(�	�		?��(�(��,�G��[�[��+�F��~�&+�W��"��"�)�)�%�0���	?�����#�*�*�I�+=�>�	?�s�(A�A�)A8�7A8c�N�U[U54nURURU5nU(aUR5$g![aU UR190Un[
[U5S-191SS5H&nXVSU:XdMURU5Ss s$ gf=f)Nrrlr)r�r
r�poprOr�ranger%)rQr3rrrr�is       r�192take_index�DiffBuilder.take_index�s����D��K�(�	�		-��'�'��+�/�/�	�:�F���z�z�|�#����	-��)�)�"�-�G��3�w�<��>�2�r�2���:�a�=�I�-�"�;�;�q�>�!�,�,�3�	-�s�4A�>B$�B$�B$�#B$c�F�URnUSnX2U/=US'US'US$)Nrr�r)rQr�r�lasts    rr��DiffBuilder.insert�s4���{�{���A�w��!��,�,��Q��$�q�'��A�w�rc�(�Uup#nX2S'X#S'/USS&g)Nrrr)rQr�	link_prev�	link_next�_s     rr��DiffBuilder.remove�s#��"'��	�a� �!�� �!����a�rc#�\# �URnUSnX2LaUSv� USnX2LaMgg7f�Nr�r$)rQ�startr�currs    r�	iter_from�DiffBuilder.iter_from�s7����{�{���Q�x�����q�'�M���7�D�����&,�,c#�\# �URnUSnX!LaUSv� USnX!LaMgg7fr-r$)rQrr0s   rr��DiffBuilder.__iter__s7����{�{���A�w�����q�'�M���7�D���r3c#�# �URnUSnX!La�USULa�USUSSpCURUR:Xak[U5[:XaX[U5[:XaE[SURURSS.URS9Rv� USSnM�USRv� USnX!LaM�gg7f)Nrr.r�r3r�r7)rrMr�ryr�r�rPr8)rQrr0�op_first�	op_seconds     rr��DiffBuilder.executes�����{�{���A�w�����A�w�d�"�&*�1�g�t�A�w�q�z�)��$�$�	�(:�(:�:��X��/�9��Y��<�7�*�'� )� 2� 2�!*�!4�!4�W�!=�,�$(�#3�#3�	5�6?�Y�	?�193 ��7�1�:�D���q�'�#�#�#���7�D���s�C	C�
Cc��URU[5nUb�USn[UR5[:XaV[U5[:XaCURU5H.nUR
URUR5UlM0 URU5 UR[X5:wa=[SUR[X5S.URS9nURU5 gg[S[X5US.URS9nURU5nURX8[ 5 g)Nr.r��r�r�rKr7r�r�)r!�194_ST_REMOVEr�r'rqr1r�rKr�rM�195_path_joinr�r8r�r�r�_ST_ADD)	rQrKr'�itemrr��v�new_op�	new_indexs	         r�_item_added�DiffBuilder._item_addeds������j�1�����q��B��B�F�F�|�s�"�t�C�y�C�'7�����.�A��.�.�r�w�w����?�B�F�/�
�K�K����{�{�j��3�3�&� ��K�K�&�t�1�(� $�/�/�	1��196���F�#�
4�"��"�4�-��#� �+�+�	-�F�197���F�+�I����T�g�6rc��[S[X5S.URS9nURU[5nURU5nUb�USnURRUR5Sn[U5[:XaCURU5H.n	U	RURUR5UlM0 URU5 UR UR :wa1[#SUR UR S.URS9nXFS'gURU5 gUR%X6[&5 g)Nr�r�r7r.rr�r;)ryr=r8r!r>r�rNr|rr�r-r1r�rKr'r�rMr�rr<)198rQrKr'r?rArrBr��199added_itemr@s200          r�
_item_removed�DiffBuilder._item_removed5s!�� ���t�)�"201��'�'�)������g�.���K�K��'�	����q��B�202���+�+�D�L�L�9�!�<�J��J��4�'�����.�A��^�^�B�G�G�R�V�V�<�B�F�/�
�K�K������"�+�+�-�&� �"�O�O��K�K�(� $�/�/�	1��203 &�!�����I�&�
���T�j�9rc	�d�UR[S[X5US.URS95 g)Nr�r�r7)r�r�r=r8)rQrKr'r?s    r�_item_replaced�DiffBuilder._item_replacedVs4�����$���t�)��&204��'�'�	)�	*rc�X�[UR55n[UR55nXT-205nXE-206nUH!nURU[U5X(5 M# UH!nUR	U[U5X85 M# XE-HnURXX(X85 M grZ)�set�keysrGrurCr�)	rQrKrDrE�src_keys�dst_keys�207added_keys�removed_keysr's	         r�_compare_dicts�DiffBuilder._compare_dicts]s����s�x�x�z�?���s�x�x�z�?���(�208��*���C����t�S��X�s�x�8� ��C����T�3�s�8�S�X�6���&�C�� � ��C�H�c�h�?�'rc�j�[U5[U5pT[XE5n[XE5n[U5H�nX�:a�X(X8p�X�:XaM[	U	[2095(a2[	U210[2115(aUR
[X5X�5 M][	U	[5(a2[	U212[5(aUR[X5X�5 M�URXU	5 URXU2135 M�XE:�aURXX(5 M�URXX85 M� grZ)r%�max�minrr9r	rSr=r214�_compare_listsrGrC)rQrKrDrE�len_src�len_dst�max_len�min_lenr'�old�news           rrX�DiffBuilder._compare_listsls����s�8�S��X���g�'���g�'����>�C��}��8�S�X�S��:����^�4�4��s�N�3�3��'�'�215�4�(=�s�H���_�5�5�"�3��8�8��'�'�216�4�(=�s�H��&�&�t�#�6��$�$�T��4��"��"�"�4�#�(�;�� � ��C�H�5�-"rc��[U[5(a1[U[5(aUR[X5X45 g[U[5(a1[U[5(aUR[X5X45 gUR
U5UR
U5:XagURXU5 grZ)r9r	rSr=r217rXr�rJ)rQrKr'rDrEs     rr��DiffBuilder._compare_values�s����c�>�*�*��3��/�/����218�4� 5�s�@�
��_�
-�
-��3��0�0����219�4� 5�s�@��Z�Z��_��220�221�3��
/��
����3�/r)�__rootrr�r
rr8rN)rrrrrr�rrSrr!r�r�r1r�r�rCrGrJrSrXr�rrrrr�r��sS��/3�z�z�{�%�?�-������(7�2:�B*�
@�6�80rr�c�n�UcU$US-[U5RSS5RSS5-$)Nrk�~z~0z~1)rur�r�s  rr=r=�s9��222�{����#�:��C��(�(��d�3�;�;�C��F�F�Fr)5r�223__future__rr+r��	functoolsr�sys�collections.abcr�ImportError�typesrr/�jsonpointerrrr>r<r	r224�unicoderu�225__author__�__version__�__website__�__license__�version_info�bytesr:�	Exceptionr
rr�AssertionErrorr!r4�partialr�rrArF�objectrHryr�r�r�r�r�r;r�r=rrr�<module>rws���B&�'�����226�%�(��&�227:���
�228��?�0�229���@��$�����v�����J�$��$�7�)�7��*��$�,�n�$�� �
�
�t�z�z�Y�
G�230�&+��%&�P&1�B�03/�V�3/�l�n��D1�>�1�h'�~�'�TS�N�S�l�N��6�N��2M<��M<�`T0�&�T0�nG��e�%�$�$�%��231��������;�232�C��s3�D�D.�D=�D+�*D+�.D:�9D:�=E�E
codekingpro/portable-devtools · Team Ai