
    hiޓ                     N   d dl mZ d dlZd dlmZmZmZmZmZ d dl	m
Z
  edd d d d	 
          Zd Z G d d          Z G d d          Z G d d          Z G d d          Z G d d          Zej                            deeeeej        g          d             ZdS )    )HashTrieMapN)AnchorRegistryResourceSpecification
exceptions)DRAFT202012zid-and-childrenc                 ,    |                      d          S )NIDgetcontentss    s/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/referencing/tests/test_core.py<lambda>r   	   s    8<<--     c                 .    |                      dg           S )Nchildrenr   r   s    r   r   r   
   s    X\\*b%A%A r   c                 l      fd|                     di                                           D             S )Nc                 `    g | ]*\  }}t          |                    |                     +S )r   nameresource)r   create_resource).0r   eachspecifications      r   
<listcomp>z<lambda>.<locals>.<listcomp>   sU     0 0 0
 D$	 	"22D2AA	
 	
 	
0 0 0r   anchors)r   itemsr   r   s   ` r   r   r      sG     0 0 0 0
 #,,y"55;;==0 0 0 r   c                     t          |           dz  s7t          d | d d d         D                       r|                    |          n|S )N   c              3   "   K   | ]
}|d k    V  dS )r   N r   r   s     r   	<genexpr>z<lambda>.<locals>.<genexpr>   s'      ==t
"======r   )lenallin_subresourcesegmentsresolversubresources      r   r   r      s[    8}}q 	==x!}=====	,,, 	 r   r   id_ofsubresources_of
anchors_inmaybe_in_subresourcec                      t          d          )zQ
    A retriever suitable for use in tests which expect it never to be used.
    z2This retrieve function expects to never be called!)RuntimeErroruris    r   blow_upr8      s     K
L
LLr   c                   (   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1d0S )1TestRegistryc                     t          j        ddi          }d}t                                          ||          }||         |u sJ dS )zQ
        Adding a resource to the registry then allows re-retrieving it.
        foobarr   urn:exampler7   r   N)r   opaquer   with_resourceselfr   r7   registrys       r   test_with_resourcezTestRegistry.test_with_resource#   sV    
 ?UEN;;;::++h+GG}((((((r   c                 *   t          j        i           }t          ddit                    }t                                          d|fd|fg          }|t                                          d|                              d|          k    sJ dS )	zT
        Adding multiple resources to the registry is like adding each one.
        r   r<   r=   r   r   http://example.com/1http://example.com/foo/barr?   N)r   r@   ID_AND_CHILDRENr   with_resourcesrA   rC   onetworD   s       r   test_with_resourcesz TestRegistry.test_with_resources-   s    
 or***oNNN::,,'--s3
 
 8::33& 4 
 
 -,  
 

 
 
 
 
 
r   c                     d}t                               |dd          }|t                      z  }|t                                          ||          k    sJ d S )Nzurn:example:resource   r   r<   )rJ   r   r   rA   rC   r7   r   rD   s       r   test_matmul_resourcez!TestRegistry.test_matmul_resourceB   s[    $"22#b3I3IJJhjj(8::33CBBBBBBBBr   c                    d}t                               |dd          }d}t                               |dd          }||gt                      z  }|t                                          ||f||fg          k    sJ d S )Nzurn:example:onerQ   rR   zurn:example:two)rJ   r   r   rK   )rC   one_urirM   two_urirN   rD   s         r   test_matmul_many_resourcesz'TestRegistry.test_matmul_many_resourcesH   s    #--WR.H.HII#--WR.H.HII:

*8::44s^gs^,
 
 
 
 
 
 
 
r   c                    t          j        ddi          }t          j        t          j                  5 }|t                      z   d d d            n# 1 swxY w Y   |j        t	          j        |          k    sJ d S )Nr<   r=   r   )r   )r   r@   pytestraisesr   NoInternalIDr   value)rC   r   es      r   test_matmul_resource_without_idz,TestRegistry.test_matmul_resource_without_idT   s    ?UEN;;;]:233 	"qxzz!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"w*18DDDDDDDDDs   AAAc                     d}ddi}t                                          ||fg          }t          |t                    }||         |k    sJ d S )Nr>   $schema,https://json-schema.org/draft/2020-12/schemarG   )r   with_contentsr   r	   )rC   r7   schemarD   expecteds        r   #test_with_contents_from_json_schemaz0TestRegistry.test_with_contents_from_json_schemaZ   s\    KL::++c6]O<<V;GGG}((((((r   c                     d}t                                          |ddifgt          j                  }||         t	          j        ddi          k    sJ d S )Nr>   r<   r=   default_specification)r   rc   r   OPAQUEr   r@   )rC   r7   rD   s      r   ,test_with_contents_and_default_specificationz9TestRegistry.test_with_contents_and_default_specificationb   se    ::++E5>"#"/"6 , 
 
 } ? ???????r   c                     d}t                                          d t          |          D             t          j                  }t          |          |k    sJ d S )N   c                 4    g | ]}t          |          d difS r<   r=   strr   is     r   r   z)TestRegistry.test_len.<locals>.<listcomp>m   s'    <<<!c!ffuen%<<<r   rh   )r   rc   ranger   rj   r(   )rC   totalrD   s      r   test_lenzTestRegistry.test_lenj   sa    ::++<<uU||<<<"/"6 , 
 
 8}}%%%%%%r   c                 &    t                      rJ d S N)r   rC   s    r   test_bool_emptyzTestRegistry.test_bool_emptyr   s    ::r   c                     t                                          d t          d          D             t          j                  }|sJ d S )Nc                 4    g | ]}t          |          d difS ro   rp   rr   s     r   r   z4TestRegistry.test_bool_not_empty.<locals>.<listcomp>w   '    888!c!ffuen%888r      rh   )r   rc   rt   r   rj   rC   rD   s     r   test_bool_not_emptyz TestRegistry.test_bool_not_emptyu   sL    ::++88uQxx888"/"6 , 
 
 r   c                     t                                          d t          d          D             t          j                  }t          |          d t          d          D             k    sJ d S )Nc                 4    g | ]}t          |          d difS ro   rp   rr   s     r   r   z*TestRegistry.test_iter.<locals>.<listcomp>~   r}   r      rh   c                 ,    h | ]}t          |          S r%   rp   rr   s     r   	<setcomp>z)TestRegistry.test_iter.<locals>.<setcomp>   s     : : :AQ : : :r   )r   rc   rt   r   rj   setr   s     r   	test_iterzTestRegistry.test_iter|   sq    ::++88uQxx888"/"6 , 
 
 8}} : :q : : :::::::r   c                     t          j        ddi          }d}t          ||i                                          }||         |u sJ d S Nr<   r=   r>   )r   r@   r   crawlrB   s       r   'test_crawl_still_has_top_level_resourcez4TestRegistry.test_crawl_still_has_top_level_resource   sR    ?E5>22S(O,,2244}((((((r   c                 Z   d}t                               d|ddgd          }|t                      z  }t          j        t
                    5  ||          d d d            n# 1 swxY w Y   t                               |dd          }|                                |         |k    sJ d S )N	urn:childurn:rootrQ   rR   r   r   )rJ   r   r   rZ   r[   LookupErrorr   )rC   child_idrootrD   re   s        r   test_crawl_finds_a_subresourcez+TestRegistry.test_crawl_finds_a_subresource   s    ..8B,G,G+HII
 
 (**$];'' 	 	X	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 #22(23N3NOO~~)X555555s   	A##A'*A'c                 >   t                               dddid          }|t                      z  }|                                                    |                                d          j        t          dt                               d                    k    sJ d S )Nurn:barr<   rQ   r   r   r   )rJ   r   r   r   anchoridr]   r   rC   r   rD   s      r    test_crawl_finds_anchors_with_idz-TestRegistry.test_crawl_finds_anchors_with_id   s    "22%55
 
 hjj(~~&&x{{}}e<<Bf$44R88G
 G
 G
 
 
 
 
 
 
r   c                 :   t                               dddii          }t                                          d|          }|                                                    dd          j        t          dt                               d                    k    sJ d S )Nr   r<   rQ   r   r   )rJ   r   r   rA   r   r   r]   r   r   s      r   test_crawl_finds_anchors_no_idz+TestRegistry.test_crawl_finds_anchors_no_id   s    "22Ir{3KLL::++JAA~~&&z599?6$44R88D
 D
 D
 
 
 
 
 
 
r   c                     t          j        ddi          }d}t                                          ||          }|                    |          ddik    sJ d S r   )r   r@   r   rA   r   rB   s       r   test_contentszTestRegistry.test_contents   s\    ?E5>22::++C::  %%%777777r   c                     d}t                               d|dz   i          }|t                      z  }||         ||dz            cxk    r|k    sn J d S Nhttp://example.com/r   #)rJ   r   r   rS   s       r   #test_getitem_strips_empty_fragmentsz0TestRegistry.test_getitem_strips_empty_fragments   si    #"22D#)3DEEhjj(}s 3????x????????r   c                     d}t                               d|dz   i          }|t                      z  }|                    |          |                    |dz             cxk    rd|dz   ik    sn J d S r   )rJ   r   r   r   rS   s       r   $test_contents_strips_empty_fragmentsz1TestRegistry.test_contents_strips_empty_fragments   s    #"22D#)3DEEhjj(c""  s++! ! ! !cCi ! ! ! ! ! ! ! !r   c                     t                      }t          j        t          j                  5 }|                    d           d d d            n# 1 swxY w Y   |j        t          j        d          k    sJ d S )Nr>   ref)r   rZ   r[   r   NoSuchResourcer   r]   rC   rD   r^   s      r   "test_contents_nonexistent_resourcez/TestRegistry.test_contents_nonexistent_resource   s    ::]:455 	-m,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-w*3FFFFFFFFFs   AAAc                 X   t                               dddii          }t                                          d|          }|                    dd          }|j        t          dt                               d                    k    sJ |j        |                                k    sJ d S )Nr   r<   r=   r>   r   )	rJ   r   r   rA   r   r]   r   rD   r   )rC   r   rD   	retrieveds       r   test_crawled_anchorz TestRegistry.test_crawled_anchor   s    "22Iu~3NOO::++M8DDOOM599	&$44U;;#
 #
 #
 
 
 
 
 !X^^%5%5555555r   c                     t                      }t          j        t          j                  5 }|                    dd           d d d            n# 1 swxY w Y   |j        t          j        d          k    sJ d S )Nr>   r<   r   )r   rZ   r[   r   r   r   r]   r   s      r   #test_anchor_in_nonexistent_resourcez0TestRegistry.test_anchor_in_nonexistent_resource   s    ::]:455 	2OOM5111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2w*3FFFFFFFFFs   AAAc                 
   t          j        i           }t                              ddi          }t	          ||d          }|t	                                          d|fd|fg                                          k    sJ d S )Nr   r<   r=   )rH   rI   rH   rI   )r   r@   rJ   r   r   rK   r   rL   s       r   	test_initzTestRegistry.test_init   s    or***--uen==(+.1 
 
 zz^+S1137  UWW     r   c                 T   t          j        i           }t                              ddi          }t	          d|i                              d|          }|                                t	                                          d|fd|fg                                          k    sJ dS )z
        Passing a `dict` to `Registry` gets converted to a `HashTrieMap`.

        So continuing to use the registry works.
        r   r<   r=   rH   rI   N)r   r@   rJ   r   r   rA   r   rK   rL   s       r   test_dict_conversionz!TestRegistry.test_dict_conversion   s     or***--uen==#S)
 

-4c
:
: 	 NNzz^+S1137  UWW     r   c                     t                      }t          j        t          j                  5 }|d          d d d            n# 1 swxY w Y   |j        t          j        d          k    sJ d S )Nzurn:bigboomr   )r   rZ   r[   r   r   r]   r   s      r   test_no_such_resourcez"TestRegistry.test_no_such_resource  s    ::]:455 	$]##	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$w*3FFFFFFFFFs   	AA	Ac                    t          j        i           }t                              ddi          }t                              ddi          }t                              dddii          }t	          d|i          }t	                                          d	|          }t	          ||d
          }t	                                          d|                                          }|                    |||          t	          d|fd|fd|fgt          dt          dt                              d                    i                                        d	|          k    sJ d S )Nr   r<   r=   bazquuxr   rQ   rH   rI   rH   http://example.com/bazhttp://example.com/foo/quuxr   )r   r<   r   )r   )
r   r@   rJ   r   r   rA   r   combiner   r   )	rC   rM   rN   threefourfirstsecondthirdfourths	            r   test_combinezTestRegistry.test_combine  s   or***--uen==//@@..	E2;/GHH0#677))*FLL(+*/ 
 
 JJ]-  UWW 	 }}VUF33x'-)51.5
  :F"!0!@!@!D!D= = = 8
 8
 8
 -4c
:
:; ; ; ; ; ;r   c                 Z    t          ddi          }|                    |          |u sJ dS )z
        Combining a registry with itself short-circuits.

        This is a performance optimization -- otherwise we do lots more work
        (in jsonschema this seems to correspond to making the test suite take
         *3x* longer).
        urn:foor=   N)r   r   r   s     r   test_combine_selfzTestRegistry.test_combine_self.  s;     Y.//))X555555r   c                    t          j        i           }t                              ddi          }t                              ddi          }t	                                          d|          }t	                                          d|          }t	          ||d          }t	          d|fd|fd	|fg          }|                    ||          }||k    sJ |                                |k    sJ d S )
Nr   r<   r=   r   r   rH   rI   r   r   )r   r@   rJ   r   r   rA   r   r   )	rC   rM   rN   r   r   r   r   re   combineds	            r   %test_combine_with_uncrawled_resourcesz2TestRegistry.test_combine_with_uncrawled_resources:  s
   or***--uen==//@@

(()?EE))*FLL(+*/ 
 
 '--s3)51
 
 ==//8####~~8++++++r   c                    t          j        i           }t                              ddi          }t                              ddi          }d }t	                                          d|          }t	          |                              d	|          }t	                                          d
|          }|                    ||          t	          |                              d|fd	|fd
|fg          k    sJ |                    ||          t	          |                              d|fd	|fd
|fg          k    sJ d S )Nr   r<   r=   r   r   c                     d S rx   r%   r6   s    r   retrievez@TestRegistry.test_combine_with_single_retrieve.<locals>.retrieveW      Dr   rH   r   http://example.com/2http://example.com/3r   r@   rJ   r   r   rA   r   rK   rC   rM   rN   r   r   r   r   r   s           r   !test_combine_with_single_retrievez.TestRegistry.test_combine_with_single_retrieveR  s   or***--uen==//@@	 	 	 

(()?EE
 
 

-.
4
4 	 

(()?GG}}VU++x0
 0
 0

.'-'-'/
 

 
 
 
 ~~eU++x0
 0
 0

.'-'-'/
 

 
 
 
 
 
r   c                    t          j        i           }t                              ddi          }t                              ddi          }d }t	          |                              d|          }t	          |                              d	|          }t	          |                              d
|          }|                    ||          t	          |                              d|fd	|fd
|fg          k    sJ |                    ||          t	          |                              d|fd	|fd
|fg          k    sJ d S )Nr   r<   r=   r   r   c                     d S rx   r%   r6   s    r   r   z@TestRegistry.test_combine_with_common_retrieve.<locals>.retrievex  r   r   r   rH   r   r   r   r   s           r   !test_combine_with_common_retrievez.TestRegistry.test_combine_with_common_retrieves  s   or***--uen==//@@	 	 	 (+++99"
 
 
 
 

-.
4
4 	 (+++99"
 

 }}VU++x0
 0
 0

.'-'-'/
 

 
 
 
 ~~eU++x0
 0
 0

.'-'-'/
 

 
 
 
 
 
r   c                    t          j        i           }t                              ddi          }t                              ddi          }d }d }t	          |                              d	|          }t	                                          d
|          }t	          |                              d|          }t          j        t          d          5  |	                    ||           d d d            d S # 1 swxY w Y   d S )Nr   r<   r=   r   r   c                     d S rx   r%   r6   s    r   foo_retrievezDTestRegistry.test_combine_conflicting_retrieve.<locals>.foo_retrieve  r   r   c                     d S rx   r%   r6   s    r   bar_retrievezDTestRegistry.test_combine_conflicting_retrieve.<locals>.bar_retrieve  r   r   r   rH   r   r   zconflict.*retrievmatch)
r   r@   rJ   r   r   rA   rZ   r[   	Exceptionr   )	rC   rM   rN   r   r   r   r   r   r   s	            r   !test_combine_conflicting_retrievez.TestRegistry.test_combine_conflicting_retrieve  sZ   or***--uen==//@@	 	 		 	 	 ,///=="
 
 ))*@#FF,///=="
 

 ]9,?@@@ 	) 	)MM&%(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   C==DDc                     t          j        i           }t                              ddi          }t	          ||d          }|                    d          t	          d|i          k    sJ d S )Nr   r<   r=   )r   r   r   r   )r   r@   rJ   r   r   removerL   s       r   test_removezTestRegistry.test_remove  sp    or***--uen==<<==y))Xy#6F-G-GGGGGGGr   c                 ,   t          j        i           }t                              ddi          }t	                                          d|fd|fg          }|                    d          t	                                          d|          k    sJ d S )Nr   r<   r=   r   r   )r   r@   rJ   r   r   rK   r   rA   rL   s       r   test_remove_uncrawledz"TestRegistry.test_remove_uncrawled  s    or***--uen==::,,	3/0
 
 y))XZZ-E-E.
 .
 
 
 
 
 
 
r   c                 x   t          j        i           }t                              dddii          }t	                                          d|fd|fg                                          }|                    d          t	                                          d|                                          k    sJ d S )Nr   r   r<   r=   r   r   )	r   r@   rJ   r   r   rK   r   r   rA   rL   s       r   test_remove_with_anchorsz%TestRegistry.test_remove_with_anchors  s    or***--y5%..IJJJJ^S!Is#34  UWW 	 OOI&&zz]  UWW     r   c                     t          j        t          j                  5 }t	                                          d           d d d            n# 1 swxY w Y   |j        t          j        d          k    sJ d S )Nzurn:doesNotExistr   )rZ   r[   r   r   r   r   r]   )rC   r^   s     r   test_remove_nonexistent_uriz(TestRegistry.test_remove_nonexistent_uri  s    ]:455 	2JJ0111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2w*38JKKKKKKKKKs   "AAAc                     t          j        ddi          t          fd          }|                    d          j        k    sJ d S )Nr<   r=   c                     S rx   r%   r7   r<   s    r   r   z,TestRegistry.test_retrieve.<locals>.<lambda>  s     r   r   r>   )r   r@   r   get_or_retriever]   )rC   rD   r<   s     @r   test_retrievezTestRegistry.test_retrieve  sT    ouen--____555''66<CCCCCCr   c                 6   t          j        ddi          fd}t          |          }|                    d          j        k    sJ t          j        t          j                  5  |                    d           d d d            d S # 1 swxY w Y   d S )Nr<   r=   c                 2    | dk    rS t          d          )Nurn:succeedzOh no!)r   r   s    r   r   z@TestRegistry.test_retrieve_arbitrary_exception.<locals>.retrieve  s!    m##
H%%%r   r   r   urn:uhoh)	r   r@   r   r   r]   rZ   r[   r   UnretrievablerC   r   rD   r<   s      @r   !test_retrieve_arbitrary_exceptionz.TestRegistry.test_retrieve_arbitrary_exception  s    ouen--	& 	& 	& 	& 	&
 X...''66<CCCC]:344 	1 	1$$Z000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1   +BBBc                 6   t          j        ddi          fd}t          |          }|                    d          j        k    sJ t          j        t          j                  5  |                    d           d d d            d S # 1 swxY w Y   d S )Nr<   r=   c                 >    | dk    rS t          j        |           )Nr   r   )r   r   r   s    r   r   z=TestRegistry.test_retrieve_no_such_resource.<locals>.retrieve  s'    m##
+4444r   r   r   r   )	r   r@   r   r   r]   rZ   r[   r   r   r   s      @r   test_retrieve_no_such_resourcez+TestRegistry.test_retrieve_no_such_resource  s    ouen--	5 	5 	5 	5 	5
 X...''66<CCCC]:455 	1 	1$$Z000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1r   c                     d }t          |          }t          j        t          j                  5  |                    d           d d d            d S # 1 swxY w Y   d S )Nc                 *    t          j        i           S rx   )r   from_contentsr6   s    r   r   zKTestRegistry.test_retrieve_cannot_determine_specification.<locals>.retrieve  s    )"---r   r   r   )r   rZ   r[   r   CannotDetermineSpecificationr   )rC   r   rD   s      r   ,test_retrieve_cannot_determine_specificationz9TestRegistry.test_retrieve_cannot_determine_specification  s    	. 	. 	. X...]:BCC 	1 	1$$Z000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   AAAc                     t          j        ddi          }t          d|it                    }|d         |k    sJ |                    d          j        |k    sJ d S )Nr<   r=   r>   r   )r   r@   r   r8   r   r]   )rC   r<   rD   s      r   (test_retrieve_already_available_resourcez5TestRegistry.test_retrieve_already_available_resource  sj    ouen--]C07CCC&#----''66<CCCCCCr   c                    t                               ddd          }t                               d|j        gi          }t          t                                        d|          }|                                d         |k    sJ d S )Nr   rQ   rR   r   r   r   )rJ   r   r   r   r8   rA   r   )rC   childr   rD   s       r   -test_retrieve_first_checks_crawlable_resourcez:TestRegistry.test_retrieve_first_checks_crawlable_resource	  s    //{20N0NOO..
U^<L/MNNW---;;JMM~~,555555r   c                     t          j        i           }t          d|i          }|                    d          }|                    d          j        i k    sJ d S )Nr   http://example.com)base_urir   r   r@   r   r-   lookupr   )rC   rM   rD   r-   s       r   test_resolverzTestRegistry.test_resolver  sd    or***13788$$.B$CCs##,222222r   c                    t                               ddi          }t                                          |          }|                    d          j        |j        k    sJ |                    d          j        |j        k    sJ d S )Nr   r  r   )rJ   r   r   resolver_with_rootr  r   rC   r   r-   s      r   "test_resolver_with_root_identifiedz/TestRegistry.test_resolver_with_root_identified  s}    ..6J/KLL::0066344=NNNNs##,======r   c                     t          j        i           }t                                          |          }|                    d          j        |j        k    sJ d S )Nr   r   )r   r@   r   r  r  r   r  s      r   $test_resolver_with_root_unidentifiedz1TestRegistry.test_resolver_with_root_unidentified  sS    +++::0066s##,======r   c                 .   t          j        i           }t                              ddi          }t	                                          d|fd|fg          }t          |          dk    sJ t          |                                          dk    sJ d S )Nr   r<   r=   rH   rI   z"<Registry (2 uncrawled resources)>z<Registry (2 resources)>)r   r@   rJ   r   r   rK   reprr   rL   s       r   	test_reprzTestRegistry.test_repr   s    or***--uen==::,,'--s3
 
 H~~!EEEEEHNN$$%%)CCCCCCCr   c                    t          j        i           }t                              ddi          }t	          d|i                                                              d|          }t          |          dk    sJ d S )Nr   r<   r=   rH   rI   r?   z%<Registry (2 resources, 1 uncrawled)>)r   r@   rJ   r   r   r   rA   r  rL   s       r   test_repr_mixed_crawledz$TestRegistry.test_repr_mixed_crawled,  s    or***--uen=='-  UWW];c]JJ 	 H~~!HHHHHHHr   c                     t                                          dt          j        i                     }t	          |          dk    sJ d S )NrH   r   r?   z!<Registry (1 uncrawled resource)>)r   rA   r   r@   r  r   s     r   test_repr_one_resourcez#TestRegistry.test_repr_one_resource8  sS    ::++&_b111 , 
 
 H~~!DDDDDDDr   c                 H    t          t                                dk    sJ d S )Nz<Registry (0 resources)>)r  r   ry   s    r   test_repr_emptyzTestRegistry.test_repr_empty?  s&    HJJ#=======r   N)2__name__
__module____qualname__rE   rO   rT   rX   r_   rf   rk   rv   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r	  r  r  r  r  r  r  r%   r   r   r:   r:   "   s       ) ) )
 
 
*C C C

 

 

E E E) ) )@ @ @& & &    ; ; ;) ) )
6 
6 
6	
 	
 	

 
 
8 8 8@ @ @
 
 
G G G6 6 6G G G
 
 
*
 
 
0G G G$; $; $;L
6 
6 
6, , ,0
 
 
B%
 %
 %
N) ) )0H H H	
 	
 	

 
 
(L L L
D D D
1 1 11 1 11 1 1D D D6 6 63 3 3> > >> > >

D 
D 
D
I 
I 
IE E E> > > > >r   r:   c                   h    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd ZdS )TestResourcec                 n    ddi}t          j        |          }|t          |t                    k    sJ d S )Nra   rb   rG   )r   r   r	   rC   rd   r   s      r   #test_from_contents_from_json_schemaz0TestResource.test_from_contents_from_json_schemaD  sA    KL)&118V;OOOOOOOOOr   c                     t          j        t          j                  5  t	          j        ddi           ddd           dS # 1 swxY w Y   dS )z
        Creating a resource with no discernible way to see what
        specification it belongs to (e.g. no ``$schema`` keyword for JSON
        Schema) raises an error.
        r<   r=   N)rZ   r[   r   r   r   r   ry   s    r   2test_from_contents_with_no_discernible_informationz?TestResource.test_from_contents_with_no_discernible_informationI  s     ]:BCC 	3 	3"E5>222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3   AA
Ac                     t          j        ddit          j                  }|t          j        ddi          k    sJ d S Nr<   r=   rh   r   r   r   r   rj   r@   rC   r   s     r   >test_from_contents_with_no_discernible_information_and_defaultzKTestResource.test_from_contents_with_no_discernible_information_and_defaultS  P    )EN"/"6
 
 
 8?UENCCCCCCCCCr   c                     ddi}t          j        |t          j                  }|t          |t                    k    sJ d S )Nra   rb   rh   rG   )r   r   r   rj   r	   r  s      r   #test_from_contents_unneeded_defaultz0TestResource.test_from_contents_unneeded_defaultZ  sg    KL)"/"6
 
 
 8%
 
 
 
 
 
 
 
 
r   c                 t    t          j        dt                    }|t          dt                    k    sJ d S )NTrh   rG   )r   r   rJ   r'  s     r   test_non_mapping_from_contentsz+TestResource.test_non_mapping_from_contentse  sY    )"1
 
 
 8)
 
 
 
 
 
 
 
 
r   c                     t          j        ddit          j                  }|t          j        ddi          k    sJ d S r%  r&  r'  s     r    test_from_contents_with_fallbackz-TestResource.test_from_contents_with_fallbacko  r)  r   c                     t          dd d d d           }t          ddi|	          }|                                d
k    sJ d S )N c                     dS Nurn:fixedIDr%   r   s    r   r   zATestResource.test_id_delegates_to_specification.<locals>.<lambda>y      = r   c                     g S rx   r%   r   s    r   r   zATestResource.test_id_delegates_to_specification.<locals>.<lambda>z      R r   c                     g S rx   r%   r!   s     r   r   zATestResource.test_id_delegates_to_specification.<locals>.<lambda>{      r r   c                     |S rx   r%   r+   s      r   r   zATestResource.test_id_delegates_to_specification.<locals>.<lambda>}       r   r/   r<   r   rG   r4  )r   r   r   rC   r   r   s      r   "test_id_delegates_to_specificationz/TestResource.test_id_delegates_to_specificationv  sr    %00//99@@
 
 
 U^'
 
 
 {{}}------r   c                 |    d}t                               d|dz   i          }|                                |k    sJ d S r   )rJ   r   r   )rC   r7   r   s      r   test_id_strips_empty_fragmentz*TestResource.test_id_strips_empty_fragment  sB    #..cCi/@AAwwyyCr   c                     t                               di dgi          }t          |                                          d i dfD             k    sJ d S )Nr   rQ   c                 B    g | ]}t                               |          S r%   )rJ   r   r&   s     r   r   zMTestResource.test_subresources_delegates_to_specification.<locals>.<listcomp>  s3     1
 1
 1
6:O++D111
 1
 1
r   )rJ   r   listsubresourcesr'  s     r   ,test_subresources_delegates_to_specificationz9TestResource.test_subresources_delegates_to_specification  ss    "22JR3IJJH))++,, 1
 1
?A2h1
 1
 1
 
 
 
 
 
 
r   c                     ddi}t                               d|gi          }t          |                                          t	          j        |          gk    sJ d S )Nra   rb   r   )rJ   r   rB  rC  r	   r  s      r   -test_subresource_with_different_specificationz:TestResource.test_subresource_with_different_specification  so    KL"22J3IJJH))++,,'//1
 
 
 
 
 
 
r   c           	         t                               di dddi          }t          |                                          t	          dt                               i                     t	          dt                               d                    t	          dt                               d                    gk    sJ d S )	Nr      r1  )r<   r=   r   r<   r   r=   r   )rJ   r   rB  r   r   r'  s     r   'test_anchors_delegates_to_specificationz4TestResource.test_anchors_delegates_to_specification  s    "221R889
 
 H$$&&''(G(G(K(KLLL(G(G(J(JKKK(G(G(K(KLLL,
 
 
 
 
 
 
r   c                     t          j        ddi          }t                                                      }|                    d|          j        dk    sJ d S )Nr<   r   r   z/foor-   r   r@   r   r-   pointerr   rC   r   r-   s      r   test_pointer_to_mappingz$TestResource.test_pointer_to_mapping  sZ    ?UEN;;;::&&((::CuLLLLLLr   c                     t          j        dddgii          }t                                                      }|                    d|          j        dk    sJ d S )Nr<   r=   r~   r   z
/foo/bar/0rK  rL  rN  s      r   test_pointer_to_arrayz"TestResource.test_pointer_to_array  sa    ?UUQCL,ABBB::&&((x@@IQNNNNNNr   c                     ddi}t          j        |          }t                                                      }|                    d|          j        |k    sJ d S )Nr<   r   r   r1  rK  rL  )rC   r   r   r-   s       r   test_root_pointerzTestResource.test_root_pointer  s_    5>?H555::&&((X66?8KKKKKKr   c                 t    ddi}t          j        |          t          |t          j                  k    sJ d S )Nr<   r=   rG   )r   r@   r   rj   )rC   r   s     r   test_opaquezTestResource.test_opaque  sP    5>x((H'.-
 -
 -
 
 
 
 
 
 
r   N)r  r  r  r   r"  r(  r+  r-  r/  r=  r?  rD  rF  rI  rO  rQ  rS  rU  r%   r   r   r  r  C  s       P P P
3 3 3D D D	
 	
 	

 
 
D D D. . .      

 
 

 
 

 
 
M M M
O O O
L L L
 
 
 
 
r   r  c                   z    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestResolverc                     t          j        ddi          }t          d|i                                          }|                    d          }|j        |j        k    sJ d S )Nr<   r   r   rH   r  )rC   r   r-   resolveds       r   test_lookup_exact_uriz"TestResolver.test_lookup_exact_uri  sf    ?UEN;;;3X>??HHJJ??#9:: H$5555555r   c                     t                               ddddgd          }|t                      z  }|                                                    d          }|j        dddk    sJ d S )Nr   zhttp://example.com/arQ   rR   r   rJ   r   r   r-   r  r   rC   r   rD   rY  s       r   test_lookup_subresourcez$TestResolver.test_lookup_subresource  s    ..+1"== 
 
 (**$$$&&--.DEE +A"$M$MMMMMMMr   c                     t                               dddid          }|t                      z  }|                                                    d          }|j        dk    sJ d S )Nr   r<   rQ   r   zhttp://example.com/#foor\  r]  s       r   test_lookup_anchor_with_idz'TestResolver.test_lookup_anchor_with_id  su    ..+!2; 
 
 (**$$$&&--.GHH B&&&&&&r   c                     t                               dddii          }t                                          d|                                          }|                    d          }|j        dk    sJ d S )Nr   r<   rQ   r>   zurn:example#foo)rJ   r   r   rA   r-   r  r   )rC   r   r-   rY  s       r   test_lookup_anchor_without_idz*TestResolver.test_lookup_anchor_without_id  so    ..	E2;/GHH::++M4@@IIKK??#455 B&&&&&&r   c                     t                                                      }d}t          j        t          j                  5 }|                    |           d d d            n# 1 swxY w Y   |j        t	          j        |          k    sJ d S )Nz!http://example.com/does/not/existr   )r   r-   rZ   r[   r   Unresolvabler  r]   )rC   r-   r   r^   s       r   test_lookup_unknown_referencez*TestResolver.test_lookup_unknown_reference  s    ::&&((1]:233 	!qOOC   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!w*1c:::::::::s   A##A'*A'c                    t          j        di i          }t          d|i                                          }d}t	          j        t          j                  5 }|                    |           d d d            n# 1 swxY w Y   |j	        t          j
        d|          k    sJ t          |j	                  dk    sJ d S )Nr<   rH   zhttp://example.com/1#/foo/barz/foo/barr   r   z,'/foo/bar' does not exist within {'foo': {}})r   r@   r   r-   rZ   r[   r   rd  r  r]   PointerToNowhererq   rC   r   r-   r   r^   s        r    test_lookup_non_existent_pointerz-TestResolver.test_lookup_non_existent_pointer  s   ?E2;//3X>??HHJJ-]:233 	!qOOC   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!w*5
 
 
 
 
 
 
 17||MMMMMMM   A<<B B c                 T   t          j        g d          }t          d|i                                          }d}t	          j        t          j                  5 }|                    |           d d d            n# 1 swxY w Y   |j	        t          j
        d|          k    sJ d S )N)rH  r#      r   rH   zhttp://example.com/1#/10z/10rg  )r   r@   r   r-   rZ   r[   r   rd  r  r]   rh  ri  s        r   /test_lookup_non_existent_pointer_to_array_indexz<TestResolver.test_lookup_non_existent_pointer_to_array_index  s    ?<<<003X>??HHJJ(]:233 	!qOOC   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!w*5
 
 
 
 
 
 
 
 
rk  c                     t                                          t          j        di i                    }|                    d          j        i k    sJ d S )Nr1  #/)r   r  r   r@   r  r   )rC   r-   s     r   #test_lookup_pointer_to_empty_stringz0TestResolver.test_lookup_pointer_to_empty_string  sM    ::00"b1J1JKKt$$-333333r   c                 P   t          j        di i          }t                                          |          }t	          j        t          j        d          5 }|                    d           d d d            n# 1 swxY w Y   |j	        t          j
        d|          k    sJ d S )Nr<   z+^'/' does not exist within {'foo': {}}.*'#'r   rp  /rg  )r   r@   r   r  rZ   r[   r   rd  r  r]   rh  )rC   r   r-   r^   s       r   0test_lookup_non_existent_pointer_to_empty_stringz=TestResolver.test_lookup_non_existent_pointer_to_empty_string  s    ?E2;//::00::]#?
 
 
 	" OOD!!!		" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"
 w*5
 
 
 
 
 
 
 
 
s   A::A>A>c                    t                               di i          }t                                          d|                                          }|                    d          }|j        |j        k    sJ d}t          j        t          j
                  5 }|                    |           d d d            n# 1 swxY w Y   dt          |j                  v sJ |j        t          j        d|d          k    sJ d S )Nr   r>   zurn:example#noSuchAnchorz'noSuchAnchor' does not existnoSuchAnchor)r   r   r   )rJ   r   r   rA   r-   r  r   rZ   r[   r   rd  rq   r]   NoSuchAnchor)rC   r   r-   rY  r   r^   s         r   test_lookup_non_existent_anchorz,TestResolver.test_lookup_non_existent_anchor  s:   ..	2??::++M4@@IIKK??=11 DM1111(]:233 	!qOOC   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!.#ag,,>>>>w*1!
 
 
 
 
 
 
 
 
s   B::B>B>c                    t                                          t                              dddid                    }|                    d          }|j        dk    sJ t          j        t          j	                  5 }|                    d           d d d            n# 1 swxY w Y   dt          |j                  v sJ d S )Nr   r=   rQ   rR   z	#/foo/barz#foo/barz '#/foo/bar')r   r  rJ   r   r  r   rZ   r[   r   InvalidAnchorrq   r]   )rC   r-   validr^   s       r   *test_lookup_invalid_JSON_pointerish_anchorz7TestResolver.test_lookup_invalid_JSON_pointerish_anchor  s    ::00++/!2;  
 
 ,,~####]:344 	(OOJ'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(QW------s   ?B!!B%(B%c                     t          j        ddi          t          fd                                          }|                    d          }|j        j        k    sJ d S )Nr<   r   r   c                     S rx   r%   r?   s    r   r   z=TestResolver.test_lookup_retrieved_resource.<locals>.<lambda>1  s     r   r   r   r  )rC   r-   rY  r   s      @r   test_lookup_retrieved_resourcez+TestResolver.test_lookup_retrieved_resource/  sn    ?UEN;;;%9%9%9%9:::CCEE??#899 H$5555555r   c                    d}t          t                    }t          j        t          j                  5  |                    |           ddd           n# 1 swxY w Y   |                                }t          j        t          j                  5  |	                    |           ddd           dS # 1 swxY w Y   dS )zL
        Unretrievable exceptions are also wrapped in Unresolvable.
        r   r   N)
r   r8   rZ   r[   r   r   r   r-   rd  r  )rC   r7   rD   r-   s       r   %test_lookup_failed_retrieved_resourcez2TestResolver.test_lookup_failed_retrieved_resource5  s1   
 $W---]:344 	* 	*$$S)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* $$&&]:233 	! 	!OOC   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s#   AAAB88B<?B<c                 0   t          j        ddi          }|gfd}t          |                                          }|                    d          }|j        |j        k    sJ |j                            d          }|j        |j        k    sJ dS )zk
        A (custom-)retrieved resource is added to the registry returned by
        looking it up.
        r<   r   r   c                 ,                                     S rx   popr7   onces    r   r   zKTestResolver.test_repeated_lookup_from_retrieved_resource.<locals>.retrieveL      88::r   r   r   Nr  rC   r   r   r-   rY  r  s        @r   ,test_repeated_lookup_from_retrieved_resourcez9TestResolver.test_repeated_lookup_from_retrieved_resourceD  s    
 ?UEN;;;z	 	 	 	 	 X...7799??#899 H$55555$++,ABB H$5555555r   c                 0   t          j        ddi          }|gfd}t          |                                          }|                    d          }|j        |j        k    sJ |j                            d          }|j        |j        k    sJ d S )Nr<   r   r   c                 ,                                     S rx   r  r  s    r   r   zRTestResolver.test_repeated_anchor_lookup_from_retrieved_resource.<locals>.retrieveZ  r  r   r   r   r   r  r  s        @r   3test_repeated_anchor_lookup_from_retrieved_resourcez@TestResolver.test_repeated_anchor_lookup_from_retrieved_resourceV  s    ?UEN;;;z	 	 	 	 	 X...7799??#899 H$55555$++C00 H$5555555r   c                 T   t                               ddddigdgd          }|t                      z  }|                                }|                    d          }|j        |j        k    sJ t          j        t          j	                  5  |j                            d           d d d            n# 1 swxY w Y   |j        
                    t                               |j        d         d                             }|                    d          }|j        ddik    sJ d S )Nr   child/r   
grandchildr   r   r   )rJ   r   r   r-   r  r   rZ   r[   r   rd  r*   )rC   r   rD   r-   r   subr   s          r   test_in_subresourcez TestResolver.test_in_subresourceg  sp   ..+ '&*L%9$:  

 

 (**$$$&& 566~....]:233 	0 	0N!!,///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 n++++EN:,Fq,IJJ
 
 L))4"6666666   B66B:=B:c                    t                               ddddigdgd          }|t                      z  }|                                }|                    d          }|j        |j        k    sJ t          j        t          j	                  5  |j                            d           d d d            n# 1 swxY w Y   |j                            d          }|j                            d          }|j        ddik    sJ d S )Nr   r  r   r  r   #/children/0)
rJ   r   r   r-   r  r   rZ   r[   r   rd  )rC   r   rD   r-   r   r   r   s          r   test_in_pointer_subresourcez(TestResolver.test_in_pointer_subresource  sS   ..+ '&*L%9$:  

 

 (**$$$&& 566~....]:233 	0 	0N!!,///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 &&~66&&|44~$!5555555r  c                    t                               ddddigdgd          }t                               dddigd          }||gt                      z  }|                                }|                    d          }|j                            d          }|j                            d          }|j                            d          }t          |j                                                  d	|j        j        fd
|j        j        fd|j        j        fgk    sJ t          |j                                                  d
|j        j        fd|j        j        fgk    sJ t          |j                                                  d|j        j        fgk    sJ t          |j                                                  g k    sJ d S )Nr   r  r   r  r   zhttp://example.com/twoz
two-child/r  z#http://example.com/child/grandchildzhttp://example.com/child/)rJ   r   r   r-   r  rB  dynamic_scope	_registry)	rC   rM   rN   rD   r-   r   r   r   r   s	            r   test_dynamic_scopezTestResolver.test_dynamic_scope  s    --+ '&*L%9$:  

 

 --."L12 
 
 :

*$$&& 566&&~66&&|44&&'?@@FO1133442FO4MN(&/*CD"FO$=>9
 
 
 
 

 EN002233(%.*BC"EN$<=8
 
 
 
 
 FO113344"FO$=>9
 
 
 
 
 EN002233r999999r   N)r  r  r  rZ  r^  r`  rb  re  rj  rn  rq  rt  rx  r|  r  r  r  r  r  r  r  r%   r   r   rW  rW    s(       6 6 6N N N	' 	' 	'' ' '; ; ;
N 
N 
N	
 	
 	
4 4 4
 
 

 
 
 . . ."6 6 6! ! !6 6 6$6 6 6"7 7 766 6 62%: %: %: %: %:r   rW  c                   J    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )TestSpecificationc                     t          dd d d d           }|                    ddi	          }|t          ddi|
          k    sJ |                                dk    sJ d S )Nr1  c                     dS r3  r%   r   s    r   r   z8TestSpecification.test_create_resource.<locals>.<lambda>  r5  r   c                     g S rx   r%   r   s    r   r   z8TestSpecification.test_create_resource.<locals>.<lambda>  r7  r   c                     g S rx   r%   r!   s     r   r   z8TestSpecification.test_create_resource.<locals>.<lambda>  r9  r   c                     |S rx   r%   r+   s      r   r   z8TestSpecification.test_create_resource.<locals>.<lambda>  r;  r   r/   r<   r   r   rG   r4  )r   r   r   r   r<  s      r   test_create_resourcez&TestSpecification.test_create_resource  s    %00//99@@
 
 
 !005%.0II8U^'
 
 
 
 
 
 
 {{}}------r   c                 P    ddi}t          j        |          }|t          k    sJ d S Nra   rb   )r   detectr	   rC   rd   r   s      r   test_detect_from_json_schemaz.TestSpecification.test_detect_from_json_schema  s4    KL%,V44++++++r   c                     t          j        t          j                  5  t	          j        ddi           d d d            d S # 1 swxY w Y   d S Nr<   r=   rZ   r[   r   r   r   r  ry   s    r   +test_detect_with_no_discernible_informationz=TestSpecification.test_detect_with_no_discernible_information  s    ]:BCC 	1 	1 %000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1r#  c                     t          j        t          j                  5  t	          j        ddi           d d d            d S # 1 swxY w Y   d S )Nra   %   r  ry   s    r   test_detect_with_non_URI_schemaz1TestSpecification.test_detect_with_non_URI_schema  s    ]:BCC 	2 	2 )R111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2r#  c                 h    t           j                            ddi          }|t           j        u sJ d S r  r   rj   r  rC   r   s     r   7test_detect_with_no_discernible_information_and_defaultzITestSpecification.test_detect_with_no_discernible_information_and_default  6    %,33UENCC 4444444r   c                 f    ddi}t           j                            |          }|t          k    sJ d S r  )r   rj   r  r	   r  s      r   test_detect_unneeded_defaultz.TestSpecification.test_detect_unneeded_default  s:    KL%,33F;;++++++r   c                     t          j        t          j                  5  t	          j        d           d d d            d S # 1 swxY w Y   d S NTr  ry   s    r   test_non_mapping_detectz)TestSpecification.test_non_mapping_detect  s    ]:BCC 	' 	' &&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   AAAc                 P    t                               d          }|t           u sJ d S r  )rJ   r  r  s     r   $test_non_mapping_detect_with_defaultz6TestSpecification.test_non_mapping_detect_with_default  s,    '..t44//////r   c                 h    t           j                            ddi          }|t           j        u sJ d S r  r  r  s     r   test_detect_with_fallbackz+TestSpecification.test_detect_with_fallback  r  r   c                 :    t          t                    dk    sJ d S )Nz&<Specification name='id-and-children'>)r  rJ   ry   s    r   r  zTestSpecification.test_repr  s"    !!%MMMMMMMr   N)r  r  r  r  r  r  r  r  r  r  r  r  r  r%   r   r   r  r    s        . . .", , ,
1 1 12 2 25 5 5, , ,
' ' '0 0 05 5 5
 
 
 
 
r   r  c                      e Zd Zddiddd e            gZej                            de          d             Zej                            de          d             Z	ej                            de          d             Z
d	S )
TestOpaqueSpecificationr<   r=   Tr  thingc                 H    t           j                            |          J dS )z/
        An arbitrary thing has no ID.
        N)r   rj   r0   rC   r  s     r   
test_no_idz"TestOpaqueSpecification.test_no_id   s'     #))%0088888r   c                 j    t          t          j                            |                    g k    sJ dS )z9
        An arbitrary thing has no subresources.
        N)rB  r   rj   r1   r  s     r   test_no_subresourcesz,TestOpaqueSpecification.test_no_subresources  s4     M(88??@@BFFFFFFr   c                 j    t          t          j                            |                    g k    sJ dS )z4
        An arbitrary thing has no anchors.
        N)rB  r   rj   r2   r  s     r   test_no_anchorsz'TestOpaqueSpecification.test_no_anchors  s4     M(33E::;;rAAAAAAr   N)r  r  r  objectTHINGSrZ   markparametrizer  r  r  r%   r   r   r  r    s        endBvvxx8F[Wf--9 9 .-9 [Wf--G G .-G [Wf--B B .-B B Br   r  clsc                     t          j        t          d          5   G d d|           }d d d            d S # 1 swxY w Y   d S )Nz(?i)subclassingr   c                       e Zd ZdS )"test_nonsubclassable.<locals>.BoomN)r  r  r  r%   r   r   Boomr     s        Dr   r  )rZ   r[   r   )r  r  s     r   test_nonsubclassabler    s    
 
y(9	:	:	:  	 	 	 	 	3 	 	 	                 s   8<<)rpdsr   rZ   referencingr   r   r   r   r   referencing.jsonschemar	   rJ   r8   r:   r  rW  r  r  r  r  rh  r  r%   r   r   <module>r     s          M M M M M M M M M M M M M M . . . . . .-	
-
-AA    (M M M^> ^> ^> ^> ^> ^> ^> ^>Bt
 t
 t
 t
 t
 t
 t
 t
nF: F: F: F: F: F: F: F:R7
 7
 7
 7
 7
 7
 7
 7
tB B B B B B B B8 	Xx
0KL  	   r   