+
    P4i%                         ^ RI HtHtHt ^ RIHt ^ RIt^ RIt ! R R]4      t ! R R4      t	R t
R	 tR
 tR tR tR tR t]! 4       ]! 4       3R ltR tR tR tR# )    )MappingMutableMappingSequence)urlsplitNc                   T   a  ] tR t^t o RtR tR tR tR tR t	R t
R tR	 tR
tV tR# )URIDictz0
Dictionary which uses normalized URIs as keys.
c                4    \        V4      P                  4       # N)r   geturlselfuris   &&3/usr/lib/python3/dist-packages/jsonschema/_utils.py	normalizeURIDict.normalize   s    }##%%    c                \    \        4       V n        V P                  P                  ! V/ VB  R # r
   )dictstoreupdate)r   argskwargss   &*,r   __init__URIDict.__init__   s"    V


4*6*r   c                F    V P                   V P                  V4      ,          # r
   r   r   r   s   &&r   __getitem__URIDict.__getitem__   s    zz$..-..r   c                @    W P                   V P                  V4      &   R # r
   r   )r   r   values   &&&r   __setitem__URIDict.__setitem__   s    */

4>>#&'r   c                >    V P                   V P                  V4       R # r
   r   r   s   &&r   __delitem__URIDict.__delitem__   s    JJt~~c*+r   c                ,    \        V P                  4      # r
   )iterr   r   s   &r   __iter__URIDict.__iter__       DJJr   c                ,    \        V P                  4      # r
   )lenr   r(   s   &r   __len__URIDict.__len__   s    4::r   c                ,    \        V P                  4      # r
   )reprr   r(   s   &r   __repr__URIDict.__repr__"   r+   r   )r   N)__name__
__module____qualname____firstlineno____doc__r   r   r   r!   r$   r)   r.   r2   __static_attributes____classdictcell____classdict__s   @r   r   r      s7     &+/0,    r   r   c                   *   a  ] tR t^&t o RtR tRtV tR# )Unsetz?
An as-of-yet unset attribute or unprovided default parameter.
c                    R # )z<unset> r(   s   &r   r2   Unset.__repr__+   s    r   r@   N)r4   r5   r6   r7   r8   r2   r9   r:   r;   s   @r   r>   r>   &   s      r   r>   c                R    V'       g   V # V  RRP                  R V 4       4       R2# )a!  
Construct a single string containing indexing operations for the indices.

For example for a container ``bar``, [1, 2, "foo"] -> bar[1][2]["foo"]

Arguments:

    container (str):

        A word to use for the thing being indexed

    indices (sequence):

        The indices to format.
[z][c              3   8   "   T F  p\        V4      x  K  	  R # 5ir
   r1   ).0indexs   & r   	<genexpr>"format_as_index.<locals>.<genexpr>B   s     #EWEDKKW   ])join)	containerindicess   &&r   format_as_indexrO   /   s0    " [$))#EW#EEFaHHr   c              #     "   VP                  R/ 4      pRP                  VP                  R/ 4      4      pV  F5  pWB9  g   K  V'       d   \        P                  ! W44      '       d   K1  Vx  K7  	  R# 5i)z
Return the set of additional properties for the given ``instance``.

Weeds out properties that should have been validated by ``properties`` and
/ or ``patternProperties``.

Assumes ``instance`` is dict-like already.

properties|patternPropertiesN)getrL   research)instanceschemarQ   patternspropertys   &&   r   find_additional_propertiesr[   E   sZ      L"-Jxx

#6;<H%BIIh99N	 s   <A3A3(A3c                ^    \        V 4      ^8X  d   RMRpRP                  R V  4       4      V3# )z8
Create an error message for extra items or properties.
waswerez, c              3   8   "   T F  p\        V4      x  K  	  R # 5ir
   rE   )rF   extras   & r   rH   extras_msg.<locals>.<genexpr>^   s     5fUT%[[frJ   )r-   rL   )extrasverbs   & r   
extras_msgrd   X   s0    
 K1$5&D995f55t;;r   c                8    \        V \        4      '       d   V .# V # )zQ
Wrap ``thing`` in a list if it's a single str.

Otherwise, return it unchanged.
)
isinstancestr)things   &r   ensure_listri   a   s     %wLr   c                   a \        V 4      \        S4      8w  d   R# \        ;QJ d-    V3R lV P                  4        4       F  '       d   K   R# 	  R# ! V3R lV P                  4        4       4      # )zA
Check if two mappings are equal using the semantics of `equal`.
Fc              3   h   <"   T F'  w  rVS9   ;'       d    \        VSV,          4      x  K)  	  R # 5ir
   equal)rF   keyr    twos   &  r   rH   !_mapping_equal.<locals>.<genexpr>s   s4      %JC 	s
--uUCH--%s   22T)r-   allitemsonero   s   &fr   _mapping_equalru   m   s_     3x3s83 ))+33 3 3 ))+  r   c                    \        V 4      \        V4      8w  d   R# \        ;QJ d%    R \        W4       4       F  '       d   K   R# 	  R# ! R \        W4       4       4      # )zB
Check if two sequences are equal using the semantics of `equal`.
Fc              3   <   "   T F  w  r\        W4      x  K  	  R # 5ir
   rl   )rF   ijs   &  r   rH   "_sequence_equal.<locals>.<genexpr>   s     5}tquQ{{}s   T)r-   rq   ziprs   s   &&r   _sequence_equalr|   y   sH     3x3s835s3}53353535s3}555r   c                l   \        V \        4      '       g   \        V\        4      '       d   W8H  # \        V \        4      '       d"   \        V\        4      '       d   \        W4      # \        V \        4      '       d"   \        V\        4      '       d   \        W4      # \        V 4      \        V4      8H  # )z
Check if two things are equal evading some Python type hierarchy semantics.

Specifically in JSON Schema, evade `bool` inheriting from `int`,
recursing into sequences to do the same.
)rf   rg   r   r|   r   ru   unboolrs   s   &&r   rm   rm      s     #sz#s33z#x  ZX%>%>s((#wJsG$<$<c''#;&+%%r   c                &    V RJ d   V# V RJ d   V# V # )z@
A hack to make True and 1 and False and 0 unique for ``uniq``.
TFr@   )elementtruefalses   &&&r   r~   r~      s"    
 $	E	Nr   c                h    \        R V  4       4      p\        P                  ! V^R4      p\        W4       F  w  r4\	        W44      '       g   K   R# 	  R#   \
        \        3 dK    . pT  F>  p\        T4      pT F  p\	        Y64      '       g   K     R# 	  TP                  T4       K@  	   R# i ; i)z
Check if all of a container's elements are unique.

Tries to rely on the container being recursively sortable, or otherwise
falls back on (slow) brute force.
c              3   8   "   T F  p\        V4      x  K  	  R # 5ir
   )r~   )rF   rx   s   & r   rH   uniq.<locals>.<genexpr>   s     3AfQiirJ   NFT)	sorted	itertoolsislicer{   rm   NotImplementedError	TypeErrorr~   append)rM   sortslicedrx   ry   seenes   &      r   uniqr      s    333!!$40%DAQ{{ &   + 	Aq	A;;   KKN  	s*   AA A A 6B1B1B10B1c           
     l   V P                  VR4      '       d   . # . pRV9   d   \        \        ^ \        V4      4      4      # RV9   dn   V P                  P                  VR,          4      pVP                  \        V P                  VP                  VP                  R7      VVP                  4      4       RV9   d-   V\        \        ^ \        VR,          4      4      4      ,          pRV9   d   V P                  VR,          R7      P                  V4      '       d=   V\        WVR,          4      ,          pRV9   d   V\        WVR,          4      ,          pM!R	V9   d   V\        WVR	,          4      ,          pR F_  pWR9   g   K  \        V4       FE  w  rgV P                  W%,          R7      P                  V4      '       g   K4  VP                  V4       KG  	  Ka  	  R FN  pWR9   g   K  W%,           F7  p\        V P                  W4      R
4      p	V	e   K$  V\        WV4      ,          pK9  	  KP  	  V# )z
Get all indexes of items that get evaluated under the current schema

Covers all keywords related to unevaluatedItems: items, prefixItems, if,
then, else, contains, unevaluatedItems, allOf, oneOf, anyOf
booleanrr   $refrX   	_resolverprefixItemsifrX   thenelseN)containsunevaluatedItemsallOfoneOfanyOf)is_typelistranger-   r   lookupextend%find_evaluated_item_indexes_by_schemaevolvecontentsresolveris_valid	enumerater   nextdescend)
	validatorrW   rX   evaluated_indexesresolvedkeywordkv	subschemaerrss
   &&&       r   r   r      s    ++	&E!S]+,,&&--fVn=  1  #,,&// !  !!		
 T%3vm/D+E"FGGv~6$<099(CC!FVD\"  !%J& ! !%J& ! 4!(+##6?#;DDQGG%,,Q/ , 4 /#__	I--hBDI<%)N!Y* % - / r   c           	     0   V P                  VR4      '       d   . # . pRV9   dn   V P                  P                  VR,          4      pVP                  \	        V P                  VP                  VP                  R7      VVP                  4      4       R F  pWR9   g   K  W%,          pV P                  VR4      '       d!   V'       d   W1P                  4       ,          pKK  V P                  VR4      '       g   Ke  V F  pWq9   g   K  VP                  V4       K  	  K  	  RV9   dI   V FB  pVR,           F2  p\        P                  ! W4      '       g   K!  VP                  V4       K4  	  KD  	  RV9   d<   VR,          P                  4        F   w  ryWq9  d   K  V\	        WV	4      ,          pK"  	  R FN  pWR9   g   K  W%,           F7  p	\        V P                  W4      R4      p
V
e   K$  V\	        WV	4      ,          pK9  	  KP  	  RV9   d   V P                  VR,          R	7      P                  V4      '       d>   V\	        WVR,          4      ,          pR
V9   d   V\	        WVR
,          4      ,          pV# RV9   d   V\	        WVR,          4      ,          pV# )z
Get all keys of items that get evaluated under the current schema

Covers all keywords related to unevaluatedProperties: properties,
additionalProperties, unevaluatedProperties, patternProperties,
dependentSchemas, allOf, oneOf, anyOf, if, then, else
r   r   r   objectrS   dependentSchemasNr   r   r   r   )rQ   additionalPropertiesunevaluatedPropertiesr   )r   r   r   r   &find_evaluated_property_keys_by_schemar   r   r   keysr   rU   rV   rr   r   r   r   )r   rW   rX   evaluated_keysr   r   schema_valuerZ   patternr   r   s   &&&        r   r   r      sz    ++	N&&--fVn=2  #,,&// !  !!		
 !?L  y99l--/1""<:: ,H+&--h7 !- f$ H!"56699W//"))(3 7 !
 V##)*<#=#C#C#EH'DY N $F /#__	I--hBDI<"&L!Y' N - / v~6$<099(CCDVD\ N "H#   "H#  r   )collections.abcr   r   r   urllib.parser   r   rU   r   r>   rO   r[   rd   ri   ru   r|   rm   r   r~   r   r   r   r@   r   r   <module>r      so    = = !  	 n  > I,&<		6&    	8<~Lr   