
V]c           @   sY  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
 Z
 d  d l Z d  d l Z d  d l Z d  d l Z d  d l m Z d  d l Z d  d l m Z m Z m Z m Z d  d	 l m Z m Z d  d l Z d
   Z d e f d     YZ d e f d     YZ d e	 f d     YZ d e	 f d     YZ d e	 f d     YZ d e f d     YZ  d e  e f d     YZ! d e f d     YZ" d e" e! e	 f d     YZ# d e" e! e	 f d     YZ$ d e! e	 f d      YZ% d! e! e	 f d"     YZ& d# e	 f d$     YZ' x e j( e j) f e j* e j+ f e j, e j- f e j. e j/ f f D]] \ Z0 Z1 xN e1 j2 D]C Z3 e1 e3 d%  Z4 d& j3 e0 j5 e3  Z6 e6 e4 _5 e7 e' e6 e4  qWqkWd' e f d(     YZ8 d) e f d*     YZ9 d+ e f d,     YZ: d-   Z; e j< d. e f d/     Y Z= e j< d0 e f d1     Y Z> d S(2   i(   t   deque(   t   contextmanager(   t   Decimal(   t   BytesIO(   t   TestCaseN(   t   SynchronousTestCase(   t   FormatCheckert   TypeCheckert
   exceptionst
   validators(   t   PY3t   pathname2urlc         c   s$   | j  |  s  t j d  Vn  d  S(   Nu   Whoops!(   t
   startswithR   t   ValidationError(   t	   validatorR   t   instancet   schema(    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR      s    t   TestCreateAndExtendc           B   sk   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z RS(   c         C   s|   |  j  |  j t j t t j   i d d 6|  _ i t d 6|  _ t   |  _ t j	 d |  j d |  j d |  j  |  _
 d  S(   Ns   some://meta/schemau   $idu
   startswitht   meta_schemaR	   t   type_checker(   t
   addCleanupt   assertEqualR	   t   meta_schemast   dictR   R   R   R   t   createt	   Validator(   t   self(    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   setUp   s    			c         C   sA   |  j  |  j j |  j j |  j j f |  j |  j |  j f  d  S(   N(   R   R   t
   VALIDATORSt   META_SCHEMAt   TYPE_CHECKERR	   R   R   (   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt
   test_attrs*   s    		c         C   s-   i d d 6} |  j  |  j |  j |  d  S(   Nu   foou
   startswith(   R   R   R   (   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt	   test_init7   s    c         C   s   i d d 6} |  j  |  j } t | d   } |  j | g   t j d d d d | d d d	 d d
 t d g  } t | d   } |  j t |  d  |  j | d j   | j    d  S(   Nu   helu
   startswithu   hellou   Whoops!R   u   goodbyeR   R   t   validator_valuet   schema_pathi   i    (	   R   t   iter_errorst   listR   R   R   R    t   lent	   _contents(   R   R   R#   t   errorst   expected_error(    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_iter_errors;   s    c         C   sL   t  j d i d d 6d d  } |  j t  j j d  |  j | j d  d  S(   NR   t	   somethingu   $idt   versions
   my versiont   MyVersionValidator(   R	   R   R   R   t   popR   t   __name__(   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt.   test_if_a_version_is_provided_it_is_registeredO   s
    		c         C   s=   t  t j  } t j d i d d 6 |  j t j |  d  S(   NR   t   idu   id(   R   R	   R   R   R   (   R   t   original(    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt6   test_if_a_version_is_not_provided_it_is_not_registeredW   s    c         C   s_   d } i | d 6} t  j d | d d d d    |  j t  j j |  |  j | t  j  d  S(   Ns   meta schema idu   idR   R+   s
   my versiont   id_ofc         S   s   |  j  d d  S(   NR0   t    (   t   get(   t   s(    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   <lambda>c   R4   (   R	   R   R   R   R-   t   assertIn(   R   t   meta_schema_keyt   my_meta_schema(    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt'   test_validates_registers_meta_schema_id\   s    	
c         C   sV   d } i | d 6} t  j d | d d  |  j t  j j |  |  j | t  j  d  S(   Ns   meta schema $idu   $idR   R+   s
   my version(   R	   R   R   R   R-   R8   (   R   R9   R:   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt.   test_validates_registers_meta_schema_draft6_idi   s    	c            sf   t  j d i  d d    |  j t   f d   d g  f d t f d d d d i  f d g D   d  S(   NR   R	   c         3   s3   |  ]) \ } }   i   j  d  | d |  Vq d S(   R   t   typeN(   t   is_type(   t   .0R=   R   (   R   (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pys	   <genexpr>y   s   u   arrayu   booleanu   integeri   u   nullu   numberg      (@u   objectu   stringu   foo(    (   u   integeri   (   u   nullN(   u   numberg      (@(   u   stringu   foo(   R	   R   t
   assertTruet   allt   Truet   None(   R   (    (   R   s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_create_default_typesu   s    			c         C   s   t  |  j j  } t   } t j |  j d i | d 6} |  j | j | j | j |  j j f t  | d | |  j j |  j j | f  d  S(   NR	   u   newt   new(	   R   R   R   t   objectR	   t   extendR   R   R   (   R   R1   RE   t   Extended(    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_extend   s    				c      	      s     f d   } d } i d d 6| d 6} t  j d | d   j  d   j d	 |  }   j | j | j  |  t  j |  }   j | j | j  |  d
 S(   sK   
        Extending a validator preserves its notion of schema IDs.
        c            s   |  j  d   j j |    S(   Nu   __test__(   R5   R   t   ID_OF(   R   (   R   (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR3      s    s   the://correct/id/s   the://wrong/id/u   $idu   __test__R   R	   R   R3   N(   R	   R   R   R   RJ   R   RG   (   R   R3   t
   correct_idR   t   Originalt   Derived(    (   R   s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_extend_idof   s    
				(   R.   t
   __module__R   R   R    R)   R/   R2   R;   R<   RD   RI   RN   (    (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR      s   										t   TestLegacyTypeCheckingc           B   s}   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 RS(   c      	   C   sT   t  j d i  d d
  } |  j t | j  d d d d d d d	 h  |  j   d  S(   NR   R	   u   arrayu   booleanu   integeru   nullu   numberu   objectu   string(    (   R	   R   R   t   sett   DEFAULT_TYPESt   flushWarnings(   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyRD      s    c      
   C   s   t  j d i  d d  } t | j  } t   } t  j | d i | d 6} |  j | j | j | j | j | j	 | i   j	 |  j
   d d f t | d | | j | j | | j	 | j	 |  j
   d d f  d  S(   NR   R	   u   newi    t   messageRE   (    (   R	   R   R   R   RF   RG   R   R   R   RR   RS   (   R   R   R1   RE   RH   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyRI      s*    	c         C   sr   i d d 6} |  j  t j |  j d   t j | d i t t f d 6} |  j | j d   |  j   d  S(   Nt   stringR=   i   t   types(   t   assertFalseR	   t   Draft7Validatort   is_validt   strt   intR@   RS   (   R   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt0   test_types_redefines_the_validators_type_checker   s    c         C   sR   |  j  d t d d d t j |  j  j j d t j d i  d i  d i t d	 6 d  S(
   Nt   categoryRT   sP   The default_types argument is deprecated. Use the type_checker argument instead.t   filenamet   fR   R	   t   default_typest   foo(	   t   assertWarnst   DeprecationWarningt   syst   modulesRO   t   __file__R	   R   RF   (   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt"   test_providing_default_types_warns   s    		c         C   s   t  j d i  d i  d t    } |  j t  j   } | j Wd QX|  j d t | j   |  j t  j   | i   j Wd QX|  j	 |  j
    d S(   s  
        We raise an error when you ask a validator with non-default
        type checker for its DEFAULT_TYPES.

        The type checker argument is new, so no one but this library
        itself should be trying to use it, and doing so while then
        asking for DEFAULT_TYPES makes no sense (not to mention is
        deprecated), since type checkers are not strictly about Python
        type.
        R   R	   R   Ns=   DEFAULT_TYPES cannot be used on Validators using TypeCheckers(   R	   R   R   t   assertRaisest   _DontDoThatRR   R8   RZ   t	   exceptionRW   RS   (   R   R   t   e(    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt?   test_cannot_ask_for_default_types_with_non_default_type_checker   s    	c         C   sU   t  j d i  d i  d t    } |  j |  j    | i   |  j |  j    d  S(   NR   R	   R   (   R	   R   R   RW   RS   (   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt2   test_providing_explicit_type_checker_does_not_warn  s    	
c         C   sL   t  j d i  d i   } |  j |  j    | i   |  j |  j    d  S(   NR   R	   (   R	   R   RW   RS   (   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt$   test_providing_neither_does_not_warn#  s    
c         C   st   |  j  t  3 } t j d i  d i  d i t d 6d t    Wd  QX|  j d t | j   |  j	 |  j
    d  S(   NR   R	   R`   Ra   R   s:   Do not specify default_types when providing a type checker(   Rh   t	   TypeErrorR	   R   RF   R   R8   RZ   Rj   RW   RS   (   R   Rk   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt5   test_providing_default_types_with_type_checker_errors*  s    	c      
   C   s   t  j d i  d i  d i t d 6 } |  j t  # } t  j | d i  d t   Wd  QX|  j d t | j	   |  j
   d  S(   NR   R	   R`   u   arrayR   s   Cannot extend a validator created with default_types with a type_checker. Update the validator to use a type_checker when created.(   R	   R   R$   Rh   Ro   RG   R   R8   RZ   Rj   RS   (   R   R   Rk   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt<   test_extending_a_legacy_validator_with_a_type_checker_errors9  s    	c         C   sO   t  j d i  d i   } |  j |  j    t  j |  |  j |  j    d  S(   NR   R`   (   R	   R   R@   RS   RG   RW   (   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt1   test_extending_a_legacy_validator_does_not_rewarnP  s    c         C   s[   t  j d i  d i   } |  j |  j    |  j t d t j |  j j j	 t
 | d  d  S(   NR   R	   sc   The DEFAULT_TYPES attribute is deprecated. See the type checker attached to this validator instead.RR   (   R	   R   RW   RS   Rb   Rc   Rd   Re   RO   Rf   t   getattr(   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt"   test_accessing_default_types_warnsW  s    c         C   sa   t  j d i  d i   } |  j |  j    |  j t d t j |  j j j	 t
 | i   d  d  S(   NR   R	   sc   The DEFAULT_TYPES attribute is deprecated. See the type checker attached to this validator instead.RR   (   R	   R   RW   RS   Rb   Rc   Rd   Re   RO   Rf   Rs   (   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt2   test_accessing_default_types_on_the_instance_warnsi  s    	c         C   st   t  j d i  d i   } |  j |  j    |  j d t d d d t j |  j j j	 d | d i  d	 i t
 d
 6 d  S(   NR   R	   R]   RT   sa   The types argument is deprecated. Provide a type_checker to jsonschema.validators.extend instead.R^   R_   R   RV   t   bar(   R	   R   RW   RS   Rb   Rc   Rd   Re   RO   Rf   RF   (   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt"   test_providing_types_to_init_warns{  s    	(   R.   RO   RD   RI   R\   Rg   Rl   Rm   Rn   Rp   Rq   Rr   Rt   Ru   Rw   (    (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyRP      s   												t   TestIterErrorsc           B   s#   e  Z d    Z d   Z d   Z RS(   c         C   s   t  j i   |  _ d  S(   N(   R	   t   Draft3ValidatorR   (   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR     s    c         C   s   d d g } i d d 6d d d g d d	 d
 g g d 6d d 6} d   |  j  j | |  D } d | d f d d | d f g } |  j t |  t |   d  S(   Ni   i   u   arrayu   disallowt   at   bt   ct   dRk   R_   u   enumi   u   minItemsc         s   s   |  ] } | j  Vq d  S(   N(   RT   (   R?   Rk   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pys	   <genexpr>  s    s   %r is disallowed for [1, 2]t   disallows   [1, 2] is too shorts   [1, 2] is not one of %rt   enum(   R   R#   R   t   sorted(   R   R   R   t   gott   expected(    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR)     s    
c         C   s   i d d 6d g d 6d d 6d d 6} i i i d	 d
 6d 6i d d 6d 6i d d 6d d d d g d 6d 6d 6} t  |  j j | |   } |  j t |  d  d  S(   Ni   Ra   i   Rv   i   t   bazt   spamt   quuxRU   u   typeu   minItemsi
   u   maximumi   i   i   u   enumu
   properties(   R$   R   R#   R   R%   (   R   R   R   R'   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt0   test_iter_errors_multiple_failures_one_validator  s    %((   R.   RO   R   R)   R   (    (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyRx     s   		t   TestValidationErrorMessagesc           B   s   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 RS(   c      	   O   sN   | j  d t j  |  j t j   } t j | | | |  Wd  QX| j j S(   Nt   cls(	   t
   setdefaultR	   Ry   Rh   R   R   t   validateRj   RT   (   R   R   R   t   argst   kwargsRk   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   message_for  s    c         C   s7   |  j  d d d i d d 6 } |  j | d d  d  S(   NR   i   R   u   stringu   types   1 is not of type %r(   R   R   (   R   RT   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_single_type_failure  s    c         C   s:   |  j  d d d i d g d 6 } |  j | d d  d  S(   NR   i   R   u   stringu   types   1 is not of type %r(   R   R   (   R   RT   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_single_type_list_failure  s    "c         C   sC   d } |  j  d d d i t |  d 6 } |  j | d |  d  S(	   Nu   stringu   objectR   i   R   u   types   1 is not of type %r, %r(   u   stringu   object(   R   R$   R   (   R   RV   RT   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_multiple_type_failure  s    %c         C   sM   i i d d 6g d 6} |  j  d d d i | g d 6 } |  j | d  d  S(   Ni   u   minimumu   typeR   i   R   s   1 is less than the minimum of 3(   R   R   (   R   R=   RT   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt&   test_object_without_title_type_failure  s    "c         C   sJ   i i d d 6d d 6g d 6} |  j  d d d |  } |  j | d	  d  S(
   Nt   Foou   namei   u   minimumu   typeR   i   R   s   1 is less than the minimum of 3(   R   R   (   R   R   RT   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt#   test_object_with_named_type_failure  s    c         C   s3   |  j  d d d i d d 6 } |  j | d  d  S(   NR   i   R   i   t   minimums   1 is less than the minimum of 2(   R   R   (   R   RT   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_minimum  s    c         C   s3   |  j  d d d i d d 6 } |  j | d  d  S(   NR   i   R   i    t   maximums"   1 is greater than the maximum of 0(   R   R   (   R   RT   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_maximum  s    c         C   sf   d	 \ } } i i | | 6d 6} |  j  d i d d 6d | d t j  } |  j | d | | f  d  S(
   NRv   Ra   u   dependenciesR   i   R   R   s   %r is a dependency of %r(   Rv   Ra   (   R   R	   Ry   R   (   R   t   dependt   onR   RT   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt    test_dependencies_single_element  s    	c         C   si   d	 \ } } i i | g | 6d 6} |  j  d i d d 6d | d t j  } |  j | d | | f  d  S(
   NRv   Ra   u   dependenciesR   i   R   R   s   %r is a dependency of %r(   Rv   Ra   (   R   R	   Ry   R   (   R   R   R   R   RT   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_dependencies_list_draft3  s    	c         C   si   d	 \ } } i i | g | 6d 6} |  j  d i d d 6d | d t j  } |  j | d | | f  d  S(
   NRv   Ra   u   dependenciesR   i   R   R   s   %r is a dependency of %r(   Rv   Ra   (   R   R	   RX   R   (   R   R   R   R   RT   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_dependencies_list_draft7  s    	c         C   s=   |  j  d d g d i g  d 6t d 6 } |  j d |  d  S(   NR   i   R   u   itemsu   additionalItemss   (2 was unexpected)(   R   t   FalseR8   (   R   RT   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt#   test_additionalItems_single_failure  s    		c         C   sC   |  j  d d d d g d i g  d 6t d 6 } |  j d |  d  S(	   NR   i   i   i   R   u   itemsu   additionalItemss   (1, 2, 3 were unexpected)(   R   R   R8   (   R   RT   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt&   test_additionalItems_multiple_failures  s    	c         C   sM   d } i t  d 6} |  j d i d | 6d |  } |  j d | f |  d  S(   NRa   u   additionalPropertiesR   i   R   s   (%r was unexpected)(   R   R   R8   (   R   t
   additionalR   RT   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt(   test_additionalProperties_single_failure  s    c         C   st   i t  d 6} |  j d t j d d g  d |  } |  j t d  |  |  j t d  |  |  j d |  d  S(   Nu   additionalPropertiesR   Ra   Rv   R   s   were unexpected)(   R   R   R   t   fromkeysR8   t   repr(   R   R   RT   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt+   test_additionalProperties_multiple_failures	  s    		c         C   sI   i d d 6} |  j  d i d d 6d | d t j  } |  j d |  d  S(	   Ni   u   constR   Rv   Ra   R   R   s   12 was expected(   R   R	   t   Draft6ValidatorR8   (   R   R   RT   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt
   test_const  s    	c         C   sR   i i d d 6d 6} |  j  d d i  g  g d | d t j  } |  j d |  d  S(	   Ni   u   constu   containsR   i   R   R   s4   None of [2, {}, []] are valid under the given schema(   R   R	   R   R8   (   R   R   RT   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_contains  s    	c         C   s   t  d d  } | j d  d    i d d 6} |  j d d d | d |  } |  j t d  |  |  j t d	  |  |  j d
 |  d  S(   Nt   formatsu   thingc         S   s   t  S(   N(   R   (   t   value(    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR7   +  R4   u   formatR   t   blaR   t   format_checkert   things   is not a(    (   R   t   checksR   R8   R   (   R   t   checkerR   RT   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt#   test_invalid_format_default_message)  s    		c         C   s   i d d 6t  d 6i i d d 6d 6i d d 6d 6d 6} |  j d i d	 d
 6d | d t j  } |  j | d j t d
  t d  t d    |  j d i d	 d
 6d d 6d | d t j  } |  j | d j t d  t d
  t d  t d    d  S(   Nu   objectu   typeu   additionalPropertiesu   stringu   ^abc$u   ^def$u   patternPropertiesR   i{   u   zebraR   R   s,   {} does not match any of the regexes: {}, {}i  u   fishs.   {}, {} do not match any of the regexes: {}, {}(   R   R   R	   t   Draft4ValidatorR   t   formatR   (   R   R   RT   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt1   test_additionalProperties_false_patternProperties8  s*    
	"	c         C   s5   |  j  d d d t d t j  } |  j d |  d  S(   NR   R*   R   R   s'   False schema does not allow 'something'(   R   R   R	   RX   R8   (   R   RT   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_False_schemaV  s
    	(   R.   RO   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   (    (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR     s(   									
	
	
									t   TestValidationErrorDetailsc           B   s   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 RS(   c         C   s  d } i i d d 6i d d 6g d 6} t  j |  } t | j |   } |  j t |  d  | d } |  j | j d  |  j | j | d  |  j | j |  |  j | j	 |  |  j
 | j  |  j | j t g    |  j | j t g    |  j | j t g    |  j | j t d g   |  j | j t d g   |  j | j t d g   |  j t | j  d	  t | j  \ } } |  j | j d  |  j | j | d d d  |  j | j |  |  j | j	 | d d  |  j | j |  |  j | j t g    |  j | j t g    |  j | j t g    |  j | j t d d g   |  j | j t d d g   |  j | j t d d d g   |  j | j  |  j | j d  |  j | j | d d d  |  j | j |  |  j | j	 | d d  |  j | j |  |  j | j t g    |  j | j t g    |  j | j t g    |  j | j t d d g   |  j | j t d d g   |  j | j t d d d g   |  j t | j  d  d  S(
   Ni   i   R   RU   R=   t   anyOfi   i    i   (   R	   R   R$   R#   R   R%   R   R!   R   R   t   assertIsNonet   parentt   pathR    t   relative_patht   absolute_pathR"   t   relative_schema_patht   absolute_schema_patht   contextt   sorted_errorst   assertIsRW   (   R   R   R   R   R'   Rk   t   e1t   e2(    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt
   test_anyOfb  s\    

"c         C   s+  i d d 6} i i d d 6i d d 6i i d g d 6d 6d 6g d 6} t  j |  } t | j |   } |  j t |  d  | d	 } |  j | j d  |  j | j | d  |  j | j |  |  j | j	 |  |  j
 | j  |  j | j t g    |  j | j t g    |  j | j t g    |  j | j t d g   |  j | j t d g   |  j | j t d g   |  j t | j  d  t | j  \ } } |  j | j d  |  j | j | d d	 d  |  j | j |  |  j | j	 | d d	  |  j | j |  |  j | j t g    |  j | j t g    |  j | j t g    |  j | j t d	 d g   |  j | j t d	 d g   |  j | j t d d	 d g   |  j | j  |  j | j d  |  j | j d g  |  j | j d  |  j | j	 i d g d
 6 |  j | j |  |  j | j t d g   |  j | j t d g   |  j | j t d g   |  j | j t d d d d g   |  j | j t d d d d g   |  j | j t d d d d d g   |  j | j  d  S(   Ni   Ra   t   integerR=   RF   i   R   t
   propertiesi    u   enum(   R	   Ry   R$   R#   R   R%   R   R!   R   R   R   R   R   R    R   R   R"   R   R   R   R   R   RW   (   R   R   R   R   R'   Rk   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt	   test_type  sf    
"
"c   	      C   sE  i d d 6d g d 6d d 6d d 6} i i i d	 d
 6d 6i d d 6d 6i d d 6d d d d g d 6d 6d 6} t  j |  } | j |  } t |  \ } } } } |  j | j t d g   |  j | j t d g   |  j | j t d g   |  j | j t d g   |  j | j t d g   |  j | j t d g   |  j | j t d g   |  j | j t d g   |  j | j t d g   |  j | j t d g   |  j | j t d g   |  j | j t d g   |  j | j	 d  |  j | j	 d  |  j | j	 d  |  j | j	 d
  d  S(   Ni   Ra   i   Rv   i   R   R   R   RU   R=   t   minItemsi
   R   i   i   i   R   R   (
   R	   Ry   R#   R   R   R   R    R   R   R   (	   R   R   R   R   R'   R   R   t   e3t   e4(    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_single_nesting  s2    %(c         C   s  d i d d 6i d g d 6d 6d g } i d d 6i d d	 g d 6i i d d
 g d 6d 6i d d 6i i t  d 6d 6i d d 6d 6d 6d 6d 6d 6} t j |  } | j |  } t |  \ } } } } }	 }
 |  j | j t g    |  j | j t d g   |  j | j t d d g   |  j | j t d d d g   |  j |	 j t d d d g   |  j |
 j t d d g   |  j | j t d g   |  j | j t d d g   |  j t	 | j  d d d d g  |  j t	 | j  d d d d d d g  |  j t	 |	 j  d d d d d d g  |  j t	 |
 j  d d d d g  |  j | j
 d  |  j | j
 d  |  j | j
 d  |  j | j
 d  |  j |	 j
 d  |  j |
 j
 d  d  S(   Ni   i   Ra   R   Rv   R   RU   R=   RF   i   R   t   arrayt   requiredR   R   t   itemsi    (   RB   R	   Ry   R#   R   R   R   R    R"   R$   R   (   R   R   R   R   R'   R   R   R   R   t   e5t   e6(    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_multiple_nesting  sN    '!""c         C   s  i i i i d d 6d d g d 6i i d d 6d 6i d d 6i i d d 6d	 6d
 6d 6d 6g d 6d 6d 6d d 6d g d 6i i d d 6d 6d 6} i i d d 6i i d d 6i i d d 6d 6d 6d 6d 6d 6} t  j |  } | j |  \ } |  j | j t d g   |  j | j t d d d g   | j \ } |  j | j t d d d g   |  j | j t d d d d d d d
 d	 d g	   | j \ } |  j | j t d d d d d g   |  j | j t d d d d d d d
 d	 d d d d d
 d	 d g   d  S(   NRF   R=   t   namet   childrenR   RU   s   #/definitions/nodes   $refs   ^.*$t   patternPropertiesR   R   t   nodet   definitionst   rootRz   t   abi    (   R	   R   R#   R   R   R    R   R   (   R   R   R   R   Rk   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_recursiveF  s    &
"			c         C   s   i d d 6d d 6} i i d d 6d d 6d 6} t  j |  } | j |  } t |  \ } } |  j | j t d g   |  j | j t d g   |  j | j d  |  j | j d  d  S(	   NRv   i   Ra   R   R=   i   R   t   additionalProperties(   R	   Ry   R#   R   R   R   R    R   (   R   R   R   R   R'   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_additionalProperties  s    c         C   s   i d d 6d d 6} i i i d d 6d 6i d d 6d 6d	 6} t  j |  } | j |  } t |  \ } } |  j | j t d g   |  j | j t d g   |  j | j d  |  j | j d  d  S(
   Ni   Rv   i   Ra   RU   R=   i   R   R   (   R	   Ry   R#   R   R   R   R    R   (   R   R   R   R   R'   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_patternProperties  s    c         C   s   d d g } i g  d 6i d d 6d d 6d 6} t  j |  } | j |  } t |  \ } } |  j | j t d	 g   |  j | j t d g   |  j | j d  |  j | j d  d  S(
   NRa   i   R   R   R=   i   R   t   additionalItemsi    (   R	   Ry   R#   R   R   R   R    R   (   R   R   R   R   R'   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_additionalItems  s    c         C   s   d d d g } i i  g d 6i d d 6d d 6d	 6} t  j |  } | j |  } t |  \ } } |  j | j t d g   |  j | j t d
 g   |  j | j d  |  j | j d  d  S(   NRa   Rv   i   R   R   R=   i   R   R   i   (   R	   Ry   R#   R   R   R   R    R   (   R   R   R   R   R'   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_additionalItems_with_items  s    
c         C   s   i d d 6} i i i d d 6d 6d 6} t  j |  } | j |  \ } |  j | j d  |  j | j d i d d 6d f  |  j | j t g    |  j | j t d d g   d  S(   Ni   Ra   t   constt   nott   propertyNamess   %r is not allowed for %r(	   R	   RX   R#   R   R   RT   R   R    R"   (   R   R   R   R   t   error(    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_propertyNames  s    c         C   s   i i d d 6d 6i d d 6d 6} t  j |  } | j d  \ } |  j | j d  |  j | j d  |  j | j t g    |  j | j t d d d g   d  S(   Ni   R   t   ifi   t   thens   13 was expected(	   R	   RX   R#   R   R   RT   R   R    R"   (   R   R   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_if_then  s    c         C   s   i i d d 6d 6i d d 6d 6} t  j |  } | j d  \ } |  j | j d  |  j | j d  |  j | j t g    |  j | j t d d d g   d  S(   Ni   R   R   i   t   elsei   s   13 was expected(	   R	   RX   R#   R   R   RT   R   R    R"   (   R   R   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_if_else  s    c      	   C   sq   t  j t  } | j d  \ } |  j | j | j | j | j | j	 | j
 f d d  d  d t t g   f  d  S(   Ni   s   False schema does not allow 12(   R	   RX   R   R#   R   RT   R   R!   R   R   R"   RC   R    (   R   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_boolean_schema_False  s    	c         C   s   d i i d d 6d 6} } t  j i | d 6d t  j d i  d i | | 6} | j i d	 d
 6 \ } |  j | j | j | j | j | j	 | j
 | j f d d d d	 t d
 g  i d d 6t d d g  f  d  S(   Nt   someRefR   R=   R   s   $reft   resolverR4   t   storet   notAnIntegerRa   s'   'notAnInteger' is not of type 'integer'(   R	   RX   t   RefResolverR#   R   RT   R   R!   R   R   R   R"   R    (   R   t   refR   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_ref-  s(    "	
(   R.   RO   R   R   R   R   R   R   R   R   R   R   R   R   R   R   (    (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR   _  s   	B	J	"	6	b								t   MetaSchemaTestsMixinc           B   s,   e  Z d    Z d   Z d   Z d   Z RS(   c      	   C   s>   |  j  t j  & |  j j i i t   d 6d 6 Wd  QXd  S(   Nt   testR   (   Rh   R   t   SchemaErrorR   t   check_schemaRF   (   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_invalid_propertiesM  s    c         C   s4   |  j  t j   |  j j i d d 6 Wd  QXd  S(   Nt   1R   (   Rh   R   R   R   R   (   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_minItems_invalid_stringQ  s    c         C   s   |  j  j i g  d 6 d S(   s   
        Technically, all the spec says is they SHOULD have elements, not MUST.

        See https://github.com/Julian/jsonschema/issues/529.
        R   N(   R   R   (   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_enum_allows_empty_arraysV  s    c         C   s!   |  j  j i d d g d 6 d S(   s   
        Technically, all the spec says is they SHOULD be unique, not MUST.

        See https://github.com/Julian/jsonschema/issues/529.
        i   R   N(   R   R   (   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt!   test_enum_allows_non_unique_items^  s    (   R.   RO   R   R   R   R   (    (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR   K  s   			t   ValidatorTestMixinc           B   s   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 e j e d	  d
    Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   c         C   s2   |  j  \ } } |  j |  j |  j |   d  S(   N(   t   validR@   R   RY   (   R   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_valid_instances_are_validh  s    c         C   s2   |  j  \ } } |  j |  j |  j |   d  S(   N(   t   invalidRW   R   RY   (   R   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt$   test_invalid_instances_are_not_validl  s    c         C   s-   |  j  i t   t   6 j d t    d  S(   NR   (   R   RF   R   (   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt(   test_non_existent_properties_are_ignoredp  s    c         C   s#   |  j  |  j i   j t j  d  S(   N(   t   assertIsInstanceR   R   R	   R   (   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt.   test_it_creates_a_ref_resolver_if_not_provideds  s    c         C   sy   d i d d 6} } t  j d i  d i | | 6} |  j i | d 6d | } |  j t j   | j d   Wd  QXd  S(   Nt   someCoolRefR   R=   R4   R   s   $refR   (   R	   R   R   Rh   R   R   R   RC   (   R   R   R   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt#   test_it_delegates_to_a_ref_resolvery  s
    c            sk   d t  f   f d     Y} |   } i d d 6}   j t j  !   j | d | j d  Wd QXd S(   sc   
        Legacy RefResolvers support only the context manager form of
        resolution.

        t   LegacyRefResolverc              s   e  Z e   f d     Z RS(   c         3   s      j  | d  i d d 6Vd  S(   Ns   the refR   R=   (   R   (   t   thisR   (   R   (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt	   resolving  s    (   R.   RO   R   R  (    (   R   (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR    s   s   the refs   $refR   N(   RF   Rh   R   R   R   R   RC   (   R   R  R   R   (    (   R   s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt*   test_it_delegates_to_a_legacy_ref_resolver  s
    	c         C   s&   |  j  |  j i   j d d   d  S(   NRa   RU   (   R@   R   R>   (   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt#   test_is_type_is_true_for_valid_type  s    c         C   s&   |  j  |  j i   j d d   d  S(   NRa   R   (   RW   R   R>   (   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt&   test_is_type_is_false_for_invalid_type  s    c         C   sH   |  j  |  j i   j t d   |  j  |  j i   j t d   d  S(   NR   t   number(   RW   R   R>   RB   (   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt,   test_is_type_evades_bool_inheriting_from_int  s    "s-   In Python 3 json.load always produces unicodec         C   s!   |  j  i d d 6 j d  d  S(   NRU   R=   Ra   (   R   R   (   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt$   test_string_a_bytestring_is_a_string  s    c         C   s   i i d d 6d 6} t  j |  j d |  j j j d d    } | |  } | j d d t d  t d  g  d	 i  g  t d  g } |  j	 g  | j
 |  D] } | j ^ q |  d  S(
   NR	  R=   R   R   c         S   s&   t  | t t t f  o% t  | t  S(   N(   t
   isinstanceR[   t   floatR   t   bool(   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR7     s   i   g?i   Ra   (   R	   RG   R   R   t   redefineR   R   RB   RC   R   R#   R   (   R   R   R   R   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt"   test_it_can_validate_with_decimals  s    	&"c         C   s0   |  j  i d d 6d t   } | j d  d  S(   Nt   carrotR   R   t   bugs(   R   R   R   (   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt7   test_it_returns_true_for_formats_it_does_not_know_about  s    c         C   s#   |  j  i   } |  j | j  d  S(   N(   R   R   R   (   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt,   test_it_does_not_validate_formats_by_default  s    c            s   t    } t d    | j d d t    f d    }  j i d d 6d | } | j d   j t j   } | j d  Wd  QX j | j	 j
    d  S(	   Ns   Bad!Ra   t   raisesc            s?   |  d k r t  S|  d k r%    n  j d j |    d  S(   Nt   goodt   bads    What is {}? [Baby Don't Hurt Me](   RB   t   failR   (   R   (   R  R   (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   check  s
    	R   R   R  R  (   R   t
   ValueErrorR   R   R   Rh   R   R   R   Rj   t   cause(   R   R   R  R   t   cm(    (   R  R   s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt2   test_it_validates_formats_if_a_checker_is_provided  s    	'	c         C   s]   t    } i | g d 6} t j |  j d |  j j j | d    } | |  j d  d  S(   NR=   R   c         S   s   t  | t  S(   N(   R  R[   (   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR7     R4   i   (   RF   R	   RG   R   R   R  R   (   R   t   non_string_typeR   t   Crazy(    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_non_string_custom_type  s    		c         C   s   t  j |  j d |  j j j d d    } |  j t j  ! } | i t d 6 j	 d  Wd QX|  j
 d t | j   d S(	   s   
        A tuple instance properly formats validation errors for uniqueItems.

        See https://github.com/Julian/jsonschema/pull/224
        R   R   c         S   s   t  | t  S(   N(   R  t   tuple(   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR7     R4   t   uniqueItemsi   Ns   (1, 1) has non-unique elements(   i   i   (   R	   RG   R   R   R  Rh   R   R   RB   R   R8   RZ   Rj   (   R   t   TupleValidatorRk   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt)   test_it_properly_formats_tuples_in_errors  s    	 (   R.   RO   R   R   R   R   R  R  R  R  R
  t   unittestt   skipIfR
   R  R  R  R  R  R   R$  (    (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR   g  s    														t   AntiDraft6LeakMixinc           B   sP   e  Z d  Z d   Z d   Z e j d  d    Z e j d  d    Z RS(   sN   
    Make sure functionality from draft 6 doesn't leak backwards in time.
    c         C   sH   |  j  t j   } |  j j t  Wd  QX|  j d t | j   d  S(   Ns   True is not of type(	   Rh   R   R   R   R   RB   R8   RZ   Rj   (   R   Rk   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_True_is_not_a_schema  s    c         C   sH   |  j  t j   } |  j j t  Wd  QX|  j d t | j   d  S(   Ns   False is not of type(	   Rh   R   R   R   R   R   R8   RZ   Rj   (   R   Rk   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_False_is_not_a_schema  s    s"   This test fails, but it shouldn't.c         C   s`   t  j d i   } |  j t  # } |  j t d | j d  Wd  QX|  j | j t	 j
  d  S(   NR4   R   i   (   R	   R   Rh   t	   ExceptionR   RB   R   t   assertNotIsInstanceRj   R   R   (   R   R   Rk   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt5   test_True_is_not_a_schema_even_if_you_forget_to_check  s    "c         C   s`   t  j d i   } |  j t  # } |  j t d | j d  Wd  QX|  j | j t	 j
  d  S(   NR4   R   i   (   R	   R   Rh   R*  R   R   R   R+  Rj   R   R   (   R   R   Rk   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt6   test_False_is_not_a_schema_even_if_you_forget_to_check  s    "(	   R.   RO   t   __doc__R(  R)  R%  t   skipR,  R-  (    (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR'    s
   		t   TestDraft3Validatorc           B   sT   e  Z e j Z i  i  f Z i d  d 6d f Z d   Z d   Z d   Z	 d   Z
 RS(   R   R=   Ra   c         C   s*   |  j  i d d 6 } | j t    d  S(   Nt   anyR=   (   R   R   RF   (   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt#   test_any_type_is_valid_for_type_any  s    c         C   sw   t  j |  j d |  j j j d d    } | i d d 6 } | j d  |  j t j   | j d  Wd QXd S(   s(   
        Sigh, because why not.
        R   R1  c         S   s   t  | t  S(   N(   R  R[   (   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR7   %  R4   R=   i   Ra   N(	   R	   RG   R   R   R  R   Rh   R   R   (   R   R  R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_any_type_is_redefinable  s    	c         C   s0   |  j  |  j i   j t   i d d 6  d  S(   NR1  R=   (   R@   R   RY   RF   (   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt!   test_is_type_is_true_for_any_type-  s    c         C   sO   |  j  |  j i   j t d   |  j  |  j i   j t i d d 6  d  S(   Nt   booleanR1  R=   (   R@   R   R>   RB   RY   (   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt6   test_is_type_does_not_evade_bool_if_it_is_being_tested0  s    "(   R.   RO   R	   Ry   R   R   R   R2  R3  R4  R6  (    (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR0    s   				t   TestDraft4Validatorc           B   s0   e  Z e j Z i  i  f Z i d  d 6d f Z RS(   R   R=   Ra   (   R.   RO   R	   R   R   R   R   (    (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR7  5  s   	t   TestDraft6Validatorc           B   s0   e  Z e j Z i  i  f Z i d  d 6d f Z RS(   R   R=   Ra   (   R.   RO   R	   R   R   R   R   (    (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR8  ;  s   	t   TestDraft7Validatorc           B   s0   e  Z e j Z i  i  f Z i d  d 6d f Z RS(   R   R=   Ra   (   R.   RO   R	   RX   R   R   R   (    (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR9  A  s   	t   TestBuiltinFormatsc           B   s   e  Z d  Z RS(   s   
    The built-in (specification-defined) formats do not raise type errors.

    If an instance or value is not a string, it should be ignored.
    (   R.   RO   R.  (    (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR:  G  s   c         C   s*   t  i | d 6d | } | j d  d  S(   NR   R   i{   (   R   R   (   R   R   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR   Y  s    s   test_{}_{}_ignores_non_stringst   TestValidatorForc           B   st   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 RS(   c         C   sV   i d d 6} |  j  t j |  t j  i d d 6} |  j  t j |  t j  d  S(   Ns&   http://json-schema.org/draft-03/schemas   $schemas'   http://json-schema.org/draft-03/schema#(   R   R	   t   validator_forRy   (   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_draft_3e  s    
c         C   sV   i d d 6} |  j  t j |  t j  i d d 6} |  j  t j |  t j  d  S(   Ns&   http://json-schema.org/draft-04/schemas   $schemas'   http://json-schema.org/draft-04/schema#(   R   R	   R<  R   (   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_draft_4r  s    
c         C   sV   i d d 6} |  j  t j |  t j  i d d 6} |  j  t j |  t j  d  S(   Ns&   http://json-schema.org/draft-06/schemas   $schemas'   http://json-schema.org/draft-06/schema#(   R   R	   R<  R   (   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_draft_6  s    
c         C   sV   i d d 6} |  j  t j |  t j  i d d 6} |  j  t j |  t j  d  S(   Ns&   http://json-schema.org/draft-07/schemas   $schemas'   http://json-schema.org/draft-07/schema#(   R   R	   R<  RX   (   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_draft_7  s    
c         C   s    |  j  t j t  t j  d  S(   N(   R   R	   R<  RB   t   _LATEST_VERSION(   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt	   test_True  s    c         C   s    |  j  t j t  t j  d  S(   N(   R   R	   R<  R   RA  (   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt
   test_False  s    c         C   sR   t  j d i d d 6d d d d    } i d d 6} |  j t  j |  |  d  S(	   NR   s   meta schema idR0   R+   t   12R3   c         S   s   |  j  d d  S(   NR0   R4   (   R5   (   R6   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR7     R4   s   $schema(   R	   R   R   R<  (   R   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_custom_validator  s    	c         C   sI   t  j d i d d 6d d  } i d d 6} |  j t  j |  |  d  S(   NR   s   meta schema $ids   $idR+   t   13s   $schema(   R	   R   R   R<  (   R   R   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_custom_validator_draft6  s    		c         C   s    |  j  t j i   t j  d  S(   N(   R   R	   R<  RA  (   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt%   test_validator_for_jsonschema_default  s    c         C   s#   |  j  t j i  d d  d   d  S(   Nt   default(   R   R	   R<  RC   (   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt!   test_validator_for_custom_default  s    c         C   sL   |  j  d t d d d t j |  j  j j d t j d i d d 6d	 i   d  S(
   NR]   RT   s   The metaschema specified by $schema was not found. Using the latest draft to validate, but this will raise an error in the future.R^   R_   R   t   unknownSchemau   $schemaRI  (   Rb   Rc   Rd   Re   RO   Rf   R	   R<  (   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt1   test_warns_if_meta_schema_specified_was_not_found  s    		c         C   s0   t  j d i  d i   f |  j |  j    d  S(   NR   RI  (   R	   R<  RW   RS   (   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt0   test_does_not_warn_if_meta_schema_is_unspecified  s    (   R.   RO   R=  R>  R?  R@  RB  RC  RE  RG  RH  RJ  RL  RM  (    (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR;  d  s   											t   TestValidatec           B   sY   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 RS(	   c         C   sC   g  } |  j  | d | j  t j i  |  |  j | | g  d  S(   NR   (   t   patcht   appendR	   R   R   (   R   R   R   t   result(    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt
   assertUses  s    c         C   sD   |  j  d i d d 6d t j  |  j  d i d d 6d t j  d  S(   NR   s'   http://json-schema.org/draft-03/schema#s   $schemaR   s&   http://json-schema.org/draft-03/schema(   RR  R	   Ry   (   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_draft3_validator_is_chosen  s    	
	c         C   sD   |  j  d i d d 6d t j  |  j  d i d d 6d t j  d  S(   NR   s'   http://json-schema.org/draft-04/schema#s   $schemaR   s&   http://json-schema.org/draft-04/schema(   RR  R	   R   (   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_draft4_validator_is_chosen  s    	
	c         C   sD   |  j  d i d d 6d t j  |  j  d i d d 6d t j  d  S(   NR   s'   http://json-schema.org/draft-06/schema#s   $schemaR   s&   http://json-schema.org/draft-06/schema(   RR  R	   R   (   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_draft6_validator_is_chosen  s    	
	c         C   sD   |  j  d i d d 6d t j  |  j  d i d d 6d t j  d  S(   NR   s'   http://json-schema.org/draft-07/schema#s   $schemaR   s&   http://json-schema.org/draft-07/schema(   RR  R	   RX   (   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_draft7_validator_is_chosen  s    	
	c         C   s   |  j  d i  d t j  d  S(   NR   R   (   RR  R	   RX   (   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt$   test_draft7_validator_is_the_default
  s    c      	   C   sO   |  j  t j   } t j d i d d 6 Wd  QX|  j t | j  d  d  S(   Ni   RU   R=   s3   (?s)Failed validating u?'.*' in schema.*On instance(   Rh   R   R   R	   R   t   assertRegexpMatchesRZ   Rj   (   R   Rk   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_validation_error_message  s
    c      	   C   sO   |  j  t j   } t j d i d d 6 Wd  QX|  j t | j  d  d  S(   Ni   R=   s5   (?s)Failed validating u?'.*' in metaschema.*On schema(   Rh   R   R   R	   R   RX  RZ   Rj   (   R   Rk   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_schema_error_message  s
    c         C   si   i i d d 6i d d 6g d 6} |  j  t j   } t j d |  Wd  QX|  j d t | j   d  S(   NRU   R=   R   t   oneOfi   s   12 is not of type(   Rh   R   R   R	   R   R8   RZ   Rj   (   R   R   Rk   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_it_uses_best_match  s    !(   R.   RO   RR  RS  RT  RU  RV  RW  RY  RZ  R\  (    (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyRN    s   								t   TestRefResolverc           B   s   e  Z d  Z d Z i d d 6Z 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 RS(   R4   s   foo://storedR   t   storedc         C   sD   i  |  _  i |  j |  j 6|  _ t j |  j |  j  |  j  |  _ d  S(   N(   t   referrert   stored_schemat
   stored_uriR   R	   R   t   base_uriR   (   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR   +  s    	c            sd   t  j j d }   j   j d   f d      j j |   } Wd  QX  j | t  j j  d  S(   NR0   t   resolve_remotec             s     j  d  S(   Ns   Should not have been called!(   R  (   R   R   (   R   (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR7   7  R4   (   R	   Ry   R   RO  R   R  R   (   R   R   t   resolved(    (   R   s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt6   test_it_does_not_retrieve_schema_urls_from_the_network2  s    c         C   sW   d } i t    d 6|  j d <|  j j |  " } |  j | |  j d d  Wd  QXd  S(   Ns   #/properties/fooRa   R   (   RF   R_  R   R  R   (   R   R   Rd  (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_it_resolves_local_refs=  s    c      	   C   s   i d d 6i d d 6d 6} t  j j | d d   } | j d   } |  j | | d  Wd  QX| j d	   } |  j | | d  Wd  QXd  S(
   Ns   http://bar/schema#R0   Rv   Ra   Rz   R3   c         S   s   |  j  d d  S(   Nu   idu    (   R5   (   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR7   G  R4   s   #/as   http://bar/schema#/a(   R	   R   t   from_schemaR  R   (   R   R   R   Rd  (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt#   test_it_resolves_local_refs_with_idC  s    	c         C   sw   |  j  j |  j   } |  j | |  j  Wd  QXi d d 6|  j  j d <|  j  j d   } |  j | d  Wd  QXd  S(   Ni   Ra   t
   cached_refs   cached_ref#/foo(   R   R  Ra  R   R`  R   R   (   R   Rd  (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_it_retrieves_stored_refsN  s
    c         C   s   d } i d d 6} d t  j k rE |  j t  j j d t  j d  n  t i | d 6 t  j d <|  j j |   } |  j | d  Wd  QXd  S(   Ns   http://bar#bazi   R   t   requestss
   http://bar(   Rd   Re   R   t   __setitem__t   ReallyFakeRequestsR   R  R   (   R   R   R   Rd  (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt,   test_it_retrieves_unstored_refs_via_requestsV  s    c            s   d } i d d 6  d t  j k rE  j t  j j d t  j d  n  d  t  j d <t    f d    }  j t t d t j  | t _  j	 j
 |   } Wd  QX j | d  d  S(   Ns   http://bar#bazi   R   Rk  c         3   s1    j  |  d  t t j    j d   Vd  S(   Ns
   http://bart   utf8(   R   R   t   jsont   dumpst   encode(   t   url(   R   R   (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   fake_urlopenm  s    t   urlopen(   Rd   Re   R   Rl  RC   R   t   setattrR	   Ru  R   R  R   (   R   R   Rt  Rd  (    (   R   R   s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt+   test_it_retrieves_unstored_refs_via_urlopenc  s    	c         C   s   t  j d t d d  4 } |  j t j | j  t j i d d 6|  Wd  QXd j	 t
 | j   } |  j j |   } |  j | d  Wd  QXd  S(   Nt   deletet   modet   wtRv   Ra   s   file://{}#foo(   t   tempfilet   NamedTemporaryFileR   R   t   ost   removeR   Rp  t   dumpR   R   R   R  R   (   R   t   tempfR   Rd  (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt(   test_it_retrieves_local_refs_via_urlopeny  s    c      
   C   s   i d d 6} t  j j | d d   } |  j | j d  |  j | j d  | j d   } |  j | |  Wd  QX| j d   } |  j | |  Wd  QX| j d   } |  j | |  Wd  QX| j d   } |  j | |  Wd  QXd  S(   NRa   R0   R3   c         S   s   |  j  d d  S(   Nu   idu    (   R5   (   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR7     R4   R4   t   #s   foo#(   R	   R   Rg  R   Rb  t   resolution_scopeR  (   R   R   R   Rd  (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt.   test_it_can_construct_a_base_uri_from_a_schema  s    	c         C   s   i  } t  j j |  } |  j | j d  |  j | j d  | j d   } |  j | |  Wd  QX| j d   } |  j | |  Wd  QXd  S(   NR4   R  (   R	   R   Rg  R   Rb  R  R  (   R   R   R   Rd  (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt9   test_it_can_construct_a_base_uri_from_a_schema_without_id  s    c            ss       f d   } i d d 6 d   t  j d i  d i | d 6} | j     }  j |   Wd  QXd  S(   Nc            s    j  |      S(   N(   R   (   Rs  (   R   R   R   (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   handler  s    Rv   Ra   s	   foo://barR4   t   handlers(   R	   R   R  R   (   R   R  R   Rd  (    (   R   R   R   s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_custom_uri_scheme_handlers  s    c      	      sy   t    g      f d   } d } t j d i  d t d i | d 6} | j |   Wd  QX| j |   Wd  QXd  S(   Nc            s3   y   j    SWn t k
 r.  j d  n Xd  S(   Ns#   Response must not have been cached!(   R-   t
   IndexErrorR  (   Rs  (   t   responseR   (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR    s    s	   foo://barR4   t   cache_remoteR  Ra   (   RF   R	   R   RB   R  (   R   R  R   R   (    (   R  R   s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_cache_remote_on  s    c      	      sc   t    g      f d   } d } t j d i  d t d i | d 6} | j |   Wd  QXd  S(   Nc            s3   y   j    SWn t k
 r.  j d  n Xd  S(   Ns   Handler called twice!(   R-   R  R  (   Rs  (   R  R   (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR    s    s	   foo://barR4   R  R  Ra   (   RF   R	   R   R   R  (   R   R  R   R   (    (   R  R   s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   test_cache_remote_off  s    c      
      s   t  d      f d   } d } t j d i  d i | d 6} |  j t j  * } | j |   |  j d  Wd  QXWd  QX|  j | j	 t j     d  S(   Ns   Oh no! What's this?c            s
      d  S(   N(    (   Rs  (   R   (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR    s    s	   foo://barR4   R  Ra   s   Shouldn't get this far!(
   R  R	   R   Rh   R   t   RefResolutionErrorR  R  R   Rj   (   R   R  R   R   t   err(    (   R   s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt3   test_if_you_give_it_junk_you_get_a_resolution_error  s    c         C   s^   t  j d i   } | j   |  j t j   } | j   Wd  QX|  j d t | j   d  S(   NR4   s   Failed to pop the scope(	   R	   R   t	   pop_scopeRh   R   R  R8   RZ   Rj   (   R   R   t   exc(    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt.   test_helpful_error_message_on_failed_pop_scope  s
    
(   R.   RO   Rb  Ra  R`  R   Re  Rf  Rh  Rj  Rn  Rw  R  R  R  R  R  R  R  R  (    (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR]  %  s$   											
				c         C   s   d   } t  |  d | S(   Nc         S   sB   g  |  j  D] } t |  ^ q
 g  |  j D] } t |  ^ q) f S(   N(   R   RZ   R"   (   R   Rk   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   key  s    R  (   R   (   R'   R  (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR     s    	Rm  c           B   s   e  Z e j   Z d    Z RS(   c         C   sJ   |  j  j |  } | d  k r7 t d t |    n  t t j |   S(   Ns   Unknown URL: (   t
   _responsesR5   RC   R  R   t   _ReallyFakeJSONResponseRp  Rq  (   R   Rs  R  (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR5     s    (   R.   RO   t   attrt   ibR  R5   (    (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyRm    s   R  c           B   s   e  Z e j   Z d    Z RS(   c         C   s   t  j |  j  S(   N(   Rp  t   loadst	   _response(   R   (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyRp    s    (   R.   RO   R  R  R  Rp  (    (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyR    s   (?   t   collectionsR    t
   contextlibR   t   decimalR   t   ioR   R%  R   Rp  R}  Rd   R{  t   twisted.trial.unittestR   R  t
   jsonschemaR   R   R   R	   t   jsonschema.compatR
   R   R   R   RP   Rx   R   R   RF   R   R   R'  R0  R7  R8  R9  R:  Ry   t   draft3_format_checkerR   t   draft4_format_checkerR   t   draft6_format_checkerRX   t   draft7_format_checkerR   R   t   checkersR   R   R.   R   Rv  R;  RN  R]  R   R6   Rm  R  (    (    (    s?   lib/python2.7/site-packages/jsonschema/tests/test_validators.pyt   <module>   s`   "	"  	sN				