
    Kik                     "   d Z ddl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	 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 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 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" ddl!m#Z#  G d de      Z$y)z!JSONSchema spec accessors module.    N)Hashable)Iterator)Sequence)contextmanager)Any)cast)LookupAccessor)	LookupKey)
LookupNode)LookupValue)Registry)Specification)Resolved)Resolver)DRAFT202012)FullPathResolvedCache)default_handlers)CachedPathResolver)SchemaRetriever)ResolverHandlers)Schemac                       e Zd Z	 ddedee   def fdZeedddfdede	e   d	e
d
edz  dedd fd       Zede
fd       Zedee   fd       Zdee   defdZdee   dee
ef   dz  fdZdee   dee   fdZdee   defdZdee   dedefdZdee   deddfdZdee   defdZedee   de e!e      fd       Z"dee   de!e   fdZ# xZ$S )SchemaAccessorr   schemaresolverresolved_cache_maxsizec                     |dk  rt        d      t        | 	  t        t        |             t        |      | _        || _        t        |      | _	        y )Nr   z#resolved_cache_maxsize must be >= 0)maxsize)

ValueErrorsuper__init__r   r   r   _path_resolver_resolved_cache_maxsizer   _resolved_cache)selfr   r   r   	__class__s       e/home/jay/workspace/scripts/.codegraph-venv/lib/python3.12/site-packages/jsonschema_path/accessors.pyr!   zSchemaAccessor.__init__   sW     "A%BCCj&122D3
 (>$6K*7
     Nspecificationbase_urihandlersreturnc                     |t         }t        ||      }|j                  |      }t        |      }|j	                  ||      }|j                  |      }	 | ||	|      S )N)retrieve)r+   )r   )r   r   create_resourcer   with_resourcer   )
clsr   r*   r+   r,   r   	retrieverbase_resourceregistryr   s
             r'   from_schemazSchemaAccessor.from_schema0   su     'H#Hm<	%55f=%-&
 ))(MB$$h$7#9
 	
r(   c                 B    | j                   j                  j                  S N)r"   r   	_base_urir%   s    r'   r+   zSchemaAccessor.base_uriH   s    ""++555r(   c                 b    t        j                  dt               | j                  j                  S )NzSchemaAccessor.resolver is deprecated. Use SchemaPath.base_uri to access the base URI and SchemaPath.resolve() to resolve paths.)warningswarnDeprecationWarningr"   r   r:   s    r'   r   zSchemaAccessor.resolverL   s,    5 		
 ""+++r(   partsc                 <    | j                  |      }|j                  S r8   )get_resolvedcontents)r%   r?   resolveds      r'   __getitem__zSchemaAccessor.__getitem__V   s    $$U+   r(   c                 V   	 | t        t        t           |         }| j                  |      r!t        |      j                  t        |      dS 	 t        t        t        |            }t        |      j                  |dS # t        t        t
        f$ r Y y w xY w# t
        $ r d }Y ?w xY w)N)typelength)r   r   r
   KeyError
IndexError	TypeError_is_traversable_noderF   __name__lenr   )r%   r?   noderG   s       r'   statzSchemaAccessor.statZ   s    	Xi0%89D $$T*T
++d) 	c4)F
 J''
 	
 *i0 		  	F	s#   B  B  BBB('B(c                    | |   }t        |t              r%t        t        t           |j                               S t        |t              r)t        t        t           t        t        |                  S |rt        |d         t        N)

isinstancedictr   r   r
   keyslistrangerM   rH   r%   r?   rN   s      r'   rU   zSchemaAccessor.keyso   sk    E{dD!+TYY[99dD!+U3t9-=>> 59%%r(   c                 z    | |   }t        |t        t        f      rt        |      S |rt	        |d         t        rQ   )rS   rT   rV   rM   rH   rX   s      r'   rM   zSchemaAccessor.len~   s:    E{dT4L)t959%%r(   keyc                     	 | |   }t        |t              r||v S t        |t
              r+t        |t              xr d|cxk  xr t        |      k  S c S y# t         t        t        f$ r Y yw xY w)NFr   )rH   rI   rJ   rS   rT   rV   intrM   r%   r?   rZ   rN   s       r'   containszSchemaAccessor.contains   st    	;D dD!$;dD!c3'@A,@s4y,@@,@@ *i0 		s   A A.-A.c                     | |   }t        |t              r||vrt        |      y t        |t              r<t        |t              r d|cxk  rt        |      k  st        |       t        |      y t        |      )Nr   )rS   rT   rH   rV   r\   rM   r]   s       r'   require_childzSchemaAccessor.require_child   sv     E{dD!$sm#dD!sC(Q#-AD	-Asm# .Bsm#smr(   c                 .    | |   }| j                  |      S r8   )
_read_noderX   s      r'   readzSchemaAccessor.read   s    E{t$$r(   c              #   >   K   	 | j                  |       y # w xY wwr8   )rA   )r%   r?   s     r'   resolvezSchemaAccessor.resolve   s"     	##E**Ds    c                 <   | j                   j                  |      }||S | j                  j                  | j                  |      }|j
                  r| j                   j                          | j                   j                  ||j                         |j                  S r8   )	r$   getr"   re   rN   registry_changed
invalidatesetrC   )r%   r?   cached_resolvedresults       r'   rA   zSchemaAccessor.get_resolved   s    ..2259&""$$,,TYY>""  ++-  8r(   )r   )%rL   
__module____qualname__r   r   r\   r!   classmethodr   r   strr   r6   propertyr+   r   r   r
   r   rD   r   rT   r   rO   rU   rM   boolr^   r`   r   rc   r   r   r   re   rA   __classcell__)r&   s   @r'   r   r      s   
 '(	

 6"
 !$	
$  0;,0&'

 %V,
 	

 #T)
 !$
 

 
. 6# 6 6 ,(6* , ,!)!4 ! !
(8, 
c3h$1F 
*(9- (92E ),  
hy1 
	 
d 
i(/8	"%(9- %+ % i(	(:&	' (9"5 (::N r(   r   )%__doc__r<   collections.abcr   r   r   
contextlibr   typingr   r   pathable.accessorsr	   pathable.typesr
   r   r   referencingr   r   referencing._corer   r   referencing.jsonschemar   jsonschema_path.cachesr   jsonschema_path.handlersr   jsonschema_path.resolversr   jsonschema_path.retrieversr   jsonschema_path.typingr   r   r    r(   r'   <module>r      sX    '  $ $ $ %   - $ % &   % & & . 8 5 8 6 3 )^^ ^r(   