
    Ki                         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 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 G d de      Zy)z%JSONSchema spec handlers file module.    )dumps)loads)Any)ContextManager)urlparse)load)SupportsRead)uri_to_path)JsonschemaSafeLoaderc                   @    e Zd ZdZefdefdZdedefdZdedefdZ	y)	FileHandlerzFile-like object handler.loaderc                     || _         y N)r   )selfr   s     i/home/jay/workspace/scripts/.codegraph-venv/lib/python3.12/site-packages/jsonschema_path/handlers/file.py__init__zFileHandler.__init__   s	        streamreturnc                 L    | j                  |      }t        t        |            S r   )_loadr   r   )r   r   datas      r   __call__zFileHandler.__call__   s    zz&!U4[!!r   c                 .    t        || j                        S r   )r   r   )r   r   s     r   r   zFileHandler._load   s    FDKK((r   N)
__name__
__module____qualname____doc__r   r   r   r	   r   r    r   r   r   r      s:    #%9 s "| " ")L )S )r   r   c                   l    e Zd ZU dZeZeedf   ed<   dddede	dz  fdZ
ded	efd
Zded	ee   fdZy)BaseFilePathHandlerzBase file path handler..allowed_schemesN)file_handlerr$   c                T    |xs | j                   | _         |xs
 t               | _        y r   )r#   r   r$   )r   r$   r#   s      r   r   zBaseFilePathHandler.__init__#   s&      /F$2F2F(9KMr   urir   c                     t        |      }|j                  | j                  vrt        d|j                   d      | j	                  |      5 }| j                  |      cd d d        S # 1 sw Y   y xY w)NzScheme z not allowed)r   schemer#   
ValueError_openr$   )r   r&   
parsed_urlr   s       r   r   zBaseFilePathHandler.__call__)   sj    c]
D$8$88wz'8'8&9FGGZZ_ 	-$$V,	- 	- 	-s   A))A2c                     t         r   )NotImplementedError)r   r&   s     r   r*   zBaseFilePathHandler._open1   s    !!r   )r   r   r   r   NotImplementedr#   tuplestr__annotations__r   r   r   r   r   r	   r*   r    r   r   r"   r"      sc    !'5OU38_5 IM: #:3>3E:-C -C -" "!= "r   r"   c                   X     e Zd ZdZdZddddededz  def fd	Zd
edee	   fdZ
 xZS )FilePathHandlerzFile path handler.)fileNzutf-8)r$   encodingr#   r$   r5   c                2    t        |   |d|i || _        y )Nr$   )superr   r5   )r   r$   r5   r#   	__class__s       r   r   zFilePathHandler.__init__:   s     	/EE r   r&   r   c                 F    t        |      }t        || j                        S )N)r5   )r
   openr5   )r   r&   filepaths      r   r*   zFilePathHandler._openC   s    s#Ht}}55r   )r   r   r   r   r#   r0   r   r   r   r	   r*   __classcell__)r8   s   @r   r3   r3   5   sQ    O
 ,0	!! "D(! 	!6 6!= 6r   r3   N)r   jsonr   r   typingr   r   urllib.parser   yamlr   "jsonschema_path.handlers.protocolsr	   jsonschema_path.handlers.utilsr
   jsonschema_path.loadersr   r   r"   r3   r    r   r   <module>rD      sD    +    ! !  ; 6 8) )" ".6) 6r   