
    Ki
                     l    d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	  G d d      Z
 G d	 d
      Zy)zJSONSchema path caches module.    )OrderedDict)Sequence)	LookupKey)
LookupNode)Resolvedc                       e Zd ZdefdZdee   deeedf   ef   dz  fdZdee   de	e
   dz  fdZdee   d	e	e
   ddfd
ZddZy)FullPathResolvedCachemaxsizec                 >    || _         d| _        t               | _        y Nr   )_maxsize_generationr   _cache)selfr
   s     b/home/jay/workspace/scripts/.codegraph-venv/lib/python3.12/site-packages/jsonschema_path/caches.py__init__zFullPathResolvedCache.__init__   s     M 	    partsreturn.Nc                     | j                   dk  ry t        |      }	 t        |       || j                  fS # t        $ r Y y w xY wr   )r   tuplehash	TypeErrorr   )r   r   parts_tuples      r   	_make_keyzFullPathResolvedCache._make_key   sP     ==AEl	 T--..  		s   6 	AAc                     | j                  |      }|y | j                  j                  |      }|y | j                  j                  |       |S N)r   r   getmove_to_end)r   r   keycacheds       r   r   zFullPathResolvedCache.get#   sK     nnU#;%>$r   resolvedc                     | j                  |      }|y || j                  |<   | j                  j                  |       t        | j                        | j                  kD  r| j                  j                  d       y y )NF)last)r   r   r   lenr   popitem)r   r   r"   r    s       r   setzFullPathResolvedCache.set2   si    
 nnU#;#C$t{{dmm+KKU+ ,r   c                 b    | xj                   dz  c_         | j                  j                          y N   )r   r   clearr   s    r   
invalidatez FullPathResolvedCache.invalidate@   s#    Ar   r   N)__name__
__module____qualname__intr   r   r   r   r   r   r   r   r'   r-    r   r   r	   r	      s     /	"/ 
uY^$c)	*T	1/	" 
*		$,	", :&, 
	,r   r	   c                       e Zd ZddZdee   ddfdZdeedf   dee	ee   f   dz  fdZ
deedf   d	e	dee   ddfd
ZddZy)PrefixResolvedCacher   Nc                     i | _         y r   r   r,   s    r   r   zPrefixResolvedCache.__init__F   s	    IKr   r"   c                 "    || j                   d<   y )Nr3   r7   )r   r"   s     r   	seed_rootzPrefixResolvedCache.seed_rootI   s    "Br   r   .c                     t        t        |      dz
  dd      D ]+  }|d | }	 | j                  j                  |      }|'||fc S  y # t        $ r Y :w xY w)Nr*   )ranger%   r   r   r   )r   r   idxprefixr!   s        r   longest_prefix_hitz&PrefixResolvedCache.longest_prefix_hitL   sq     UaR0 	#C4C[F0 !F{"	#   s   A			AAindexc                 v    |t        |      dz
  k\  ry |d |dz    }	 || j                  |<   y # t        $ r Y y w xY wr)   )r%   r   r   )r   r   r@   r"   r>   s        r   store_intermediatez&PrefixResolvedCache.store_intermediate\   sL     CJN"{#	"*DKK 		s   , 	88c                 8    | j                   j                          y r   )r   r+   r,   s    r   r-   zPrefixResolvedCache.invalidatek   s    r   r.   )r/   r0   r1   r   r   r   r9   r   r   r2   r?   rB   r-   r3   r   r   r5   r5   E   s    L#(:"6 #4 #Y^$ 
sHZ((	)D	0 Y^$  :&	
 
r   r5   N)__doc__collectionsr   collections.abcr   pathable.typesr   r   referencing._corer   r	   r5   r3   r   r   <module>rI      s,    $ # $ $ % &7 7t' 'r   