o
    "Th-                  
   @   st  d dl Z d dlmZmZmZ d dlZe jddejj	fdejj
fdejjfdejjfdejjfd	ejjfgd
d Zdd Ze jddejj	fdejj
fdejjfdejjfdejjfdejjfgdd Ze jdejj	ejj
ejjejjge jdddgdd Ze jdejj	ejj
ejjejjge jdddgdd Ze jdejj	ejj
ejjejjge jdddgdd Ze jddejj	fdejj
fdejjfdejjfdejjfd	ejjfgdd Ze jddejjfd ejjfd!ejjfd"ejjfgd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Z dS )9    N)RegistryResourceSpecificationzuri, expectedz,https://json-schema.org/draft/2020-12/schemaz,https://json-schema.org/draft/2019-09/schemaz'http://json-schema.org/draft-07/schema#z'http://json-schema.org/draft-06/schema#z'http://json-schema.org/draft-04/schema#z'http://json-schema.org/draft-03/schema#c                 C   s*   d| i}t |}|t ||dksJ dS )zE
    The $schema keyword in JSON Schema is a dialect identifier.
    $schema)contentsspecificationN)r   from_contents)uriexpectedr   resource r   b/home/air/segue/gemini/back/venv/lib/python3.10/site-packages/referencing/tests/test_jsonschema.py7test_schemas_with_explicit_schema_keywords_are_detected   s   !
r   c                  C   sT   d} t tjj}td| i W d    n1 sw   Y  |jj| ks(J d S )N1http://example.com/unknown-json-schema-dialect-idr   )	pytestraisesreferencing
jsonschemaUnknownDialectr   r   valuer	   
dialect_idexcinfor   r   r   test_unknown_dialect-   s
   r   zid, specification$ididc                 C   s   d}| | |i|ksJ d S )Nzhttp://example.com/some-schemaid_of)r   r   r	   r   r   r   test_id_of_mapping4   s   r   r   r   TFc                 C   s   |  |d u s	J d S Nr   r   r   r   r   r   test_id_of_boolD   s   r!   c                 C      t | |g ksJ d S r   )list
anchors_inr    r   r   r   test_anchors_in_boolR      r%   c                 C   r"   r   )r#   subresources_ofr    r   r   r   test_subresources_of_bool`   r&   r(   c                 C      t j| |ks
J d S r   r   r   specification_withr	   r
   r   r   r   test_specification_withn   s   r-   z&http://json-schema.org/draft-07/schemaz&http://json-schema.org/draft-06/schemaz&http://json-schema.org/draft-04/schemaz&http://json-schema.org/draft-03/schemac                 C   r)   r   r*   r,   r   r   r   )test_specification_with_no_empty_fragment   s   r.   c                  C   sR   d} t tjj}tj|  W d    n1 sw   Y  |jj| ks'J d S )Nr   )r   r   r   r   r   r+   r   r	   r   r   r   r   'test_specification_with_unknown_dialect   s
   r/   c                  C   s(   d} t jj| tjd}|tju sJ d S )Nr   )default)r   r   r+   r   OPAQUE)r   r   r   r   r   test_specification_with_default   s   r2   c                  C   sB   t jjddi} t d|  }|d}|j| jksJ d S )N$dynamicAnchorfoohttp://example.comzhttp://example.com#foo)	r   r   DRAFT202012create_resourcer   with_resourceresolverlookupr   )oner9   resolvedr   r   r   test_lookup_trivial_dynamic_ref   s   
r=   c               
   C   s   t jjd} t jjddddddddiddid}t d|fd| fd	|fg }|d}|jd
}|jdj}|d}|j|jksMJ d S )NTr5   	fooAnchorr4   r3   barbazr   r3   $defshttp://example.com/foo/http://example.com/foo/barfoo/r@   
#fooAnchor	r   r   r6   r7   r   with_resourcesr9   r:   r   TRUErootr9   firstsecondfourthr   r   r   (test_multiple_lookup_trivial_dynamic_ref   s:   

rP   c               
   C   s   t jjddi} t jjddddddddiddid}t d|fd	| fd
|fg }|d}|jd}|jdj}|d}|j|jksOJ d S )N$anchorr>   r5   r4   Tr3   r?   rB   rD   rE   rF   r@   rG   rH   )r;   twor9   rM   rN   rO   r   r   r   2test_multiple_lookup_dynamic_ref_to_nondynamic_ref   s>   

rS   c                  C   sR   t jjddi} t d|  }|d}t jj|jd}|j	| j	ks'J d S )N$recursiveAnchorTr5   r9   )
r   r   DRAFT201909r7   r   r8   r9   r:   lookup_recursive_refr   )r;   r9   rM   r<   r   r   r   !test_lookup_trivial_recursive_ref  s   
rX   c                  C   sD   t jjd} td| i}t jj|jddd}|j| jks J d S )NTr5   )base_urirU   )r   r   rV   r7   r   rW   r9   r   )rK   registryr<   r   r   r   !test_lookup_recursive_ref_to_bool  s   
r[   c                  C   s   t jjd} t jjdddddddddddid}t d|fd| fd	|fg }|d}|jd
}|jdj}t jj|d}|j	|j	ksPJ d S )NTr5   r4   r>   rT   rQ   r?   r   rT   rC   rD   rE   rF   r@   rU   
r   r   rV   r7   r   rI   r9   r:   rW   r   rJ   r   r   r   *test_multiple_lookup_recursive_ref_to_bool(  s<   
r_   c                  C   s   t jjddi} t jjdddddddddddid}t jjdd	i}t d|fd
|fd| fg }|d}|jd}|jdj}t jj|d}|j	|j	ks[J d S )NrT   Tr5   r4   r>   r\   r?   r]   FrD   rE   rF   r@   rU   r^   )r;   rR   threer9   rM   rN   rO   r   r   r   8test_multiple_lookup_recursive_ref_with_nonrecursive_refP  sF   
ra   c                   C   s   t jjt ks	J d S r   )r   r   EMPTY_REGISTRYr   r   r   r   r   test_empty_registry}  s   rc   )!r   r   r   r   r   referencing.jsonschemamarkparametrizer   r6   rV   DRAFT7DRAFT6DRAFT4DRAFT3r   r   r   r!   r%   r(   r-   r.   r/   r2   r=   rP   rS   rX   r[   r_   ra   rc   r   r   r   r   <module>   s    
	






			

	')	(-