Prv8 Shell
Server : Apache
System : Linux server.mata-lashes.com 3.10.0-1160.90.1.el7.x86_64 #1 SMP Thu May 4 15:21:22 UTC 2023 x86_64
User : matalashes ( 1004)
PHP Version : 8.1.29
Disable Function : NONE
Directory :  /usr/local/lib/python3.6/site-packages/jsonschema/tests/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //usr/local/lib/python3.6/site-packages/jsonschema/tests/__pycache__/test_validators.cpython-36.pyc
3

F�Kd�@s�ddlmZmZddlmZddlmZddlmZddl	m
Z
ddlmZddl
Z
ddlZddlZddlZddl	Z	ddlmZddlZdd	lmZmZmZmZdd
lmZdd�ZGd
d�de�ZGdd�de
�ZGdd�de
�ZGdd�de�Z Gdd�de e�Z!Gdd�de�Z"Gdd�de"e!e
�Z#Gdd�de"e!e
�Z$Gdd�de!e
�Z%Gdd �d e!e
�Z&Gd!d"�d"e!e
�Z'Gd#d$�d$e�Z(Gd%d&�d&e�Z)Gd'd(�d(e�Z*d)d*�Z+ej,Gd+d,�d,e��Z-ej,Gd-d.�d.e��Z.dS)/�)�deque�
namedtuple)�contextmanager)�Decimal)�BytesIO)�TestCase)�pathname2urlN)�SynchronousTestCase)�
FormatChecker�TypeChecker�
exceptions�
validators)�bugccs,x&|D]}|jdd�tjf|�VqWdS)N�messagezYou told me to fail!)�
setdefaultr�ValidationError)�	validator�errors�instance�schemaZeach�r�F/tmp/pip-build-8nxjc3nm/jsonschema/jsonschema/tests/test_validators.py�fails
rc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#S)$�TestCreateAndExtendcCsP|j|jtjttj��ddi|_dti|_t�|_tj	|j|j|jd�|_
dS)Nz$idzsome://meta/schemar)�meta_schemar
�type_checker)�
addCleanup�assertEqualr
�
_META_SCHEMAS�dictrrrr�create�	Validator)�selfrrr�setUps

zTestCreateAndExtend.setUpcCs.|j|jj|jj|jjf|j|j|jf�dS)N)rr!�
VALIDATORS�META_SCHEMA�TYPE_CHECKERr
rr)r"rrr�
test_attrs+szTestCreateAndExtend.test_attrscCs dgi}|j|j|�j|�dS)Nr)rr!r)r"rrrr�	test_init8szTestCreateAndExtend.test_initcCs0dgi}|j|�}t|jd��}|j|g�dS)NrZhello)r!�list�iter_errorsr)r"rrrrrr�test_iter_errors_successful<s
z/TestCreateAndExtend.test_iter_errors_successfulcCstdddigi}|j|�}tjdd|dddigtdg�d�}t|jd��}|jt|�d�|j|dj�|j��dS)NrrzWhoops!�goodbye)rrr�validator_value�schema_path�r)	r!rrrr)r*r�lenZ	_contents)r"rrZexpected_errorrrrr�test_iter_errors_one_errorCs
z.TestCreateAndExtend.test_iter_errors_one_errorcCsHdddiddd�ddigi}|j|�}t|jd��}|jt|�d	�dS)
NrrZFirstzSecond!Zasdf)rrZThirdr,�)r!r)r*rr0)r"rrrrrr� test_iter_errors_multiple_errorsTs
z4TestCreateAndExtend.test_iter_errors_multiple_errorscCsBtjddidd�}|jtjjd�|j|jd�|j|jd�dS)Nz$id�	somethingz
my version)r�versionZMyVersionValidator)r
r rr�popr�__name__�__qualname__)r"r!rrr�.test_if_a_version_is_provided_it_is_registeredaszBTestCreateAndExtend.test_if_a_version_is_provided_it_is_registeredcCs:tjddidd�}|jtjjd�|jt|i��d�dS)Nz$idr4z
my version)rr5z2MyVersionValidator(schema={}, format_checker=None))r
r rrr6r�repr)r"r!rrr�	test_reprjs
zTestCreateAndExtend.test_reprcCsFtjddidd�}|jtjjd�|jt|dttd��i��d�dS)Nz$idr4z
my version)rr5�ai�zNMyVersionValidator(schema={'a': [0, 1, 2, 3, 4, 5, ...]}, format_checker=None))	r
r rrr6rr:r)�range)r"r!rrr�test_long_reprusz"TestCreateAndExtend.test_long_reprcCs$tjid�}|jt|i��d�dS)N)rz)Validator(schema={}, format_checker=None))r
r rr:)r"r!rrr�test_repr_no_version�s
z(TestCreateAndExtend.test_repr_no_versioncCs4tjddidd�}|jtjjd�|j|jd�dS)Nz$idr4zfoo-bar)rr5ZFooBarValidator)r
r rrr6rr8)r"r!rrr�-test_dashes_are_stripped_from_validator_names�s
zATestCreateAndExtend.test_dashes_are_stripped_from_validator_namescCs,ttj�}tjddid�|jtj|�dS)N�id)r)rr
rr r)r"�originalrrr�6test_if_a_version_is_not_provided_it_is_not_registered�s
zJTestCreateAndExtend.test_if_a_version_is_not_provided_it_is_not_registeredcCsBd}d|i}tj|ddd�d�|jtjj|�|j|tj�dS)Nzmeta schema idrAz
my versioncSs|jdd�S)NrA�)�get)�srrr�<lambda>�szMTestCreateAndExtend.test_validates_registers_meta_schema_id.<locals>.<lambda>)rr5�id_of)r
r rrr6�assertIn)r"�meta_schema_key�my_meta_schemarrr�'test_validates_registers_meta_schema_id�sz;TestCreateAndExtend.test_validates_registers_meta_schema_idcCs<d}d|i}tj|dd�|jtjj|�|j|tj�dS)Nzmeta schema $idz$idz
my version)rr5)r
r rrr6rI)r"rJrKrrr�.test_validates_registers_meta_schema_draft6_id�szBTestCreateAndExtend.test_validates_registers_meta_schema_draft6_idcsDtjifd��|jt�fdd�dgfdddddifdgD���dS)N)rr
c3s$|]\}}�i�j||d�VqdS))r�typeN)�is_type)�.0rNr)r!rr�	<genexpr>�sz@TestCreateAndExtend.test_create_default_types.<locals>.<genexpr>�array�booleanT�integer��null�number�(@�object�string�foo)rST)rTrU)rVN)rWrX)rZr[)r
r �
assertTrue�all)r"r)r!r�test_create_default_types�s
z-TestCreateAndExtend.test_create_default_typescCs`t|jj�}t�}tj|jd|id�}|j|j|j|j|jjft||d�|jj|jj|f�dS)N�new)r
)r_)	rr!r$rYr
�extendrr%r&)r"rBr_ZExtendedrrr�test_extend�s
zTestCreateAndExtend.test_extendcsf�fdd�}d}d|d�}tj|�j�j|d�}�j|j|j�|�tj|�}�j|j|j�|�dS)zK
        Extending a validator preserves its notion of schema IDs.
        cs|jd�jj|��S)N�__test__)rEr!�ID_OF)r)r"rrrH�sz3TestCreateAndExtend.test_extend_idof.<locals>.id_ofzthe://correct/id/zthe://wrong/id/)z$idrb)rr
rrHN)r
r rrrcr%r`)r"rHZ
correct_idrZOriginalZDerivedr)r"r�test_extend_idof�s
z$TestCreateAndExtend.test_extend_idofN)r7�
__module__r8r#r'r(r+r1r3r9r;r>r?r@rCrLrMr^rardrrrrrs"

	

rc@s\eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Zd;d<�Z d=d>�Z!d?d@�Z"dAdB�Z#dCdD�Z$dEdF�Z%dGdH�Z&dIdJ�Z'dKdL�Z(dMdN�Z)dOdP�Z*dQdR�Z+dSdT�Z,dUS)V�TestValidationErrorMessagescOsn|jdtj�}|j|�||f|�|�}t|j|��}|j|d|��d�|jt|�dd|��d�|dj	S)N�clszNo errors were raised for )�msgr/z"Expected exactly one error, found r)
r6r
�_LATEST_VERSION�check_schemar)r*r\rr0r)r"rr�args�kwargsrgrrrrr�message_for�s
z'TestValidationErrorMessages.message_forcCs"|jdddid�}|j|d�dS)Nr/rNrZ)rrz1 is not of type 'string')rmr)r"rrrr�test_single_type_failure�sz4TestValidationErrorMessages.test_single_type_failurecCs$|jdddgid�}|j|d�dS)Nr/rNrZ)rrz1 is not of type 'string')rmr)r"rrrr�test_single_type_list_failure�sz9TestValidationErrorMessages.test_single_type_list_failurecCs*d}|jddt|�id�}|j|d�dS)NrZrYr/rN)rrz#1 is not of type 'string', 'object')rZrY)rmr)r)r"�typesrrrr�test_multiple_type_failuresz6TestValidationErrorMessages.test_multiple_type_failurecCs6dddigi}|jdd|gitjd�}|j|d�dS)NrN�minimumr2r/)rrrgz+1 is not of type {'type': [{'minimum': 3}]})rmr
�Draft3Validatorr)r"rNrrrr�&test_object_without_title_type_failures
zBTestValidationErrorMessages.test_object_without_title_type_failurecCs2dddd�gi}|jd|tjd�}|j|d�dS)NrNZFoor2)�namerrr/)rrrgz1 is not of type 'Foo')rmr
rsr)r"rrrrr�#test_object_with_named_type_failures
z?TestValidationErrorMessages.test_object_with_named_type_failurecCs"|jdddid�}|j|d�dS)Nr/rr�)rrz1 is less than the minimum of 2)rmr)r"rrrr�test_minimumsz(TestValidationErrorMessages.test_minimumcCs"|jdddid�}|j|d�dS)Nr/�maximumr)rrz"1 is greater than the maximum of 0)rmr)r"rrrr�test_maximum!sz(TestValidationErrorMessages.test_maximumcCs:d\}}d||ii}|jddi|tjd�}|j|d�dS)N�barr[�dependenciesrw)rrrgz'foo' is a dependency of 'bar')r{r[)rmr
rsr)r"�depend�onrrrrr� test_dependencies_single_element%s
z<TestValidationErrorMessages.test_dependencies_single_elementcCs<d\}}d||gii}|jddi|tjd�}|j|d�dS)Nr{r[r|rw)rrrgz'foo' is a dependency of 'bar')r{r[)rmr
rsr)r"r}r~rrrrr�test_dependencies_list_draft3/s
z9TestValidationErrorMessages.test_dependencies_list_draft3cCs<d\}}d||gii}|jddi|tjd�}|j|d�dS)Nr{r[r|rw)rrrgz'foo' is a dependency of 'bar')r{r[)rmr
�Draft7Validatorr)r"r}r~rrrrr�test_dependencies_list_draft79s
z9TestValidationErrorMessages.test_dependencies_list_draft7cCs*|jdggdd�tjd�}|jd|�dS)NrwF)�items�additionalItems)rrrgz(2 was unexpected))rmr
rsrI)r"rrrr�#test_additionalItems_single_failureCs

z?TestValidationErrorMessages.test_additionalItems_single_failurecCs.|jdddggdd�tjd�}|jd|�dS)Nr/rwr2F)r�r�)rrrgz(1, 2, 3 were unexpected))rmr
rsrI)r"rrrr�&test_additionalItems_multiple_failuresKs

zBTestValidationErrorMessages.test_additionalItems_multiple_failurescCs.d}ddi}|j|di|d�}|jd|�dS)Nr[�additionalPropertiesFrw)rrz('foo' was unexpected))rmrI)r"�
additionalrrrrr�(test_additionalProperties_single_failureSszDTestValidationErrorMessages.test_additionalProperties_single_failurecCsPddi}|jtjddg�|d�}|jtd�|�|jtd�|�|jd|�dS)Nr�Fr[r{)rrzwere unexpected))rmr�fromkeysrIr:)r"rrrrr�+test_additionalProperties_multiple_failuresYszGTestValidationErrorMessages.test_additionalProperties_multiple_failurescCs*ddi}|jddi|d�}|jd|�dS)N�constrUr[r{)rrz12 was expected)rmrI)r"rrrrr�
test_constds
z&TestValidationErrorMessages.test_constcCs4dddii}|jdigg|tjd�}|j|d�dS)N�containsr�rUrw)rrrgz4None of [2, {}, []] are valid under the given schema)rmr
�Draft6Validatorr)r"rrrrr�test_contains_draft_6ls
z1TestValidationErrorMessages.test_contains_draft_6cCsdtfd�}|jd�dd��ddi}|jd||d�}|jtd�|�|jtd�|�|jd|�dS)	N)�formats�thingcSsdS)NFr)�valuerrrrGzszQTestValidationErrorMessages.test_invalid_format_default_message.<locals>.<lambda>�formatZbla)rr�format_checkerzis not a)r
�checksrmrIr:)r"�checkerrrrrr�#test_invalid_format_default_messagexs
z?TestValidationErrorMessages.test_invalid_format_default_messagecCs�ddddiddid�d�}|jddi|tjd	�}|j|d
jtd�td�td���|jdd
d�|tjd	�}|j|djtd�td�td�td���dS)NrYFrNrZ)z^abc$z^def$)rNr��patternProperties�zebra�{)rrrgz,{} does not match any of the regexes: {}, {}z^abc$z^def$i�)r��fishz.{}, {} do not match any of the regexes: {}, {}r�)rmr
�Draft4Validatorrr�r:)r"rrrrr�1test_additionalProperties_false_patternProperties�s(

zMTestValidationErrorMessages.test_additionalProperties_false_patternPropertiescCs|jddd�}|j|d�dS)Nr4F)rrz'False schema does not allow 'something')rmr)r"rrrr�test_False_schema�sz-TestValidationErrorMessages.test_False_schemacCs"|jdddid�}|j|d�dS)Nr2Z
multipleOfrw)rrz3 is not a multiple of 2)rmr)r"rrrr�test_multipleOf�sz+TestValidationErrorMessages.test_multipleOfcCs"|jgddid�}|j|d�dS)N�minItemsrw)rrz[] is too short)rmr)r"rrrr�
test_minItems�sz)TestValidationErrorMessages.test_minItemscCs(|jdddgddid�}|j|d�dS)Nr/rwr2ZmaxItems)rrz[1, 2, 3] is too long)rmr)r"rrrr�
test_maxItems�sz)TestValidationErrorMessages.test_maxItemscCs0|jddddgdiigd�d�}|j|d�dS)	Nr/rwr[�F)r��prefixItems)rrz%Expected at most 2 items, but found 4)rmr)r"rrrr�test_prefixItems_with_items�s
z7TestValidationErrorMessages.test_prefixItems_with_itemscCs"|jdddid�}|j|d�dS)NrDZ	minLengthrw)rrz'' is too short)rmr)r"rrrr�test_minLength�sz*TestValidationErrorMessages.test_minLengthcCs"|jdddid�}|j|d�dS)N�abcZ	maxLengthrw)rrz'abc' is too long)rmr)r"rrrr�test_maxLength�sz*TestValidationErrorMessages.test_maxLengthcCs"|jdddid�}|j|d�dS)N�bbb�patternz^a*$)rrz'bbb' does not match '^a*$')rmr)r"rrrr�test_pattern�sz(TestValidationErrorMessages.test_patterncCs&|jgdddiid�}|j|d�dS)Nr�rNrZ)rrz3[] does not contain items matching the given schema)rmr)r"rrrr�test_does_not_contain�sz1TestValidationErrorMessages.test_does_not_containcCs,|jddgddidd�d�}|j|d�dS)	Nr[r/rNrZrw)r��minContains)rrzMToo few items match the given schema (expected at least 2 but only 1 matched))rmr)r"rrrr�test_contains_too_few�sz1TestValidationErrorMessages.test_contains_too_fewcCs.|jddgddiddd�d�}|j|d	�dS)
Nr[r/rNrZrw�)r�r��maxContains)rrzMToo few items match the given schema (expected at least 2 but only 1 matched))rmr)r"rrrr�&test_contains_too_few_both_constrained�szBTestValidationErrorMessages.test_contains_too_few_both_constrainedcCs.|jdddgddidd�d�}|j|d	�dS)
Nr[r{�bazrNrZrw)r�r�)rrz:Too many items match the given schema (expected at most 2))rmr)r"rrrr�test_contains_too_many�sz2TestValidationErrorMessages.test_contains_too_manycCs0|jdgdddiddd�d�}|j|d	�dS)
Nr[r�rNrZrwr�)r�r�r�)rrz:Too many items match the given schema (expected at most 4))rmr)r"rrrr�'test_contains_too_many_both_constrainedszCTestValidationErrorMessages.test_contains_too_many_both_constrainedcCs"|jdddid�}|j|d�dS)Nr2ZexclusiveMinimumr�)rrz+3 is less than or equal to the minimum of 5)rmr)r"rrrr�test_exclusiveMinimumsz1TestValidationErrorMessages.test_exclusiveMinimumcCs"|jdddid�}|j|d�dS)Nr2ZexclusiveMaximumrw)rrz.3 is greater than or equal to the maximum of 2)rmr)r"rrrr�test_exclusiveMaximumsz1TestValidationErrorMessages.test_exclusiveMaximumcCs$|jiddgid�}|j|d�dS)N�requiredr[)rrz'foo' is a required property)rmr)r"rrrr�
test_required$sz)TestValidationErrorMessages.test_requiredcCs,|jdiidddgiid�}|j|d�dS)Nr[ZdependentRequiredr{)rrz'bar' is a dependency of 'foo')rmr)r"rrrr�test_dependentRequired(sz2TestValidationErrorMessages.test_dependentRequiredcCs"|jiddid�}|j|d�dS)NZ
minPropertiesrw)rrz"{} does not have enough properties)rmr)r"rrrr�test_minProperties/sz.TestValidationErrorMessages.test_minPropertiescCs*|jiiid�ddid�}|j|d�dS)N)r<�b�cZ
maxPropertiesrw)rrz3{'a': {}, 'b': {}, 'c': {}} has too many properties)rmr)r"rrrr�test_maxProperties3s
z.TestValidationErrorMessages.test_maxPropertiescCs$|jiddgid�}|j|d�dS)N�oneOfF)rrz.{} is not valid under any of the given schemas)rmr)r"rrrr�test_oneOf_matches_none=sz3TestValidationErrorMessages.test_oneOf_matches_nonecCs&|jidddgid�}|j|d�dS)Nr�T)rrz${} is valid under each of True, True)rmr)r"rrrr�test_oneOf_matches_too_manyDsz7TestValidationErrorMessages.test_oneOf_matches_too_manycCs,ddd�}|jddg|d�}|j|d�dS)NrRF)rNZunevaluatedItemsr[r{)rrz@Unevaluated items are not allowed ('foo', 'bar' were unexpected))rmrI)r"rrrrr�test_unevaluated_itemsHs

z2TestValidationErrorMessages.test_unevaluated_itemscCs.ddd�}|jddd�|d�}|j|d�dS)	NrYF)rNZunevaluatedPropertiesr[r{)r[r{)rrzEUnevaluated properties are not allowed ('foo', 'bar' were unexpected))rmr)r"rrrrr�test_unevaluated_propertiesPs
z7TestValidationErrorMessages.test_unevaluated_propertiesN)-r7rer8rmrnrorqrtrvrxrzrr�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�rrrrrf�sT
	






rfc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)S)*�TestValidationErrorDetailscCsd}dddiddigi}tj|�}t|j|��}|jt|�d�|d}|j|jd�|j|j|d�|j|j|�|j|j	|�|j
|j�|j|jt
g��|j|jt
g��|j|jt
g��|j|jd	�|j|jt
dg��|j|jt
dg��|j|jt
dg��|jt|j�d
�t|j�\}}|j|jd�|j|j|ddd�|j|j|�|j|j	|dd�|j|j|�|j|jt
g��|j|jt
g��|j|jt
g��|j|jd	�|j|jt
ddg��|j|jt
ddg��|j|jt
dddg��|j|j�|j|jd�|j|j|ddd�|j|j|�|j|j	|dd�|j|j|�|j|jt
g��|j|jt
g��|j|jt
g��|j|jd	�|j|jt
ddg��|j|jt
ddg��|j|jt
dddg��|jt|j�d�dS)Nr��anyOfrr�rNrZr/r�$rw)r
r�r)r*rr0rr-rr�assertIsNone�parent�pathr�
relative_path�
absolute_path�	json_pathr.�relative_schema_path�absolute_schema_path�context�
sorted_errors�assertIs�assertFalse)r"rrrr�e�e1�e2rrr�
test_anyOfcsb
z%TestValidationErrorDetails.test_anyOfcCs&ddi}dddiddddgiid�gi}tj|�}t|j|��}|jt|�d�|d	}|j|jd�|j|j|d�|j|j|�|j|j	|�|j
|j�|j|jt
g��|j|jt
g��|j|jt
g��|j|jd
�|j|jt
dg��|j|jt
dg��|j|jt
dg��|jt|j�d�t|j�\}}|j|jd�|j|j|dd	d�|j|j|�|j|j	|dd	�|j|j|�|j|jt
g��|j|jt
g��|j|jt
g��|j|jd
�|j|jt
d	dg��|j|jt
d	dg��|j|jt
dd	dg��|j|j�|j|jd�|j|jdg�|j|jd�|j|j	ddgi�|j|j|�|j|jt
dg��|j|jt
dg��|j|jt
dg��|j|jd�|j|jt
ddddg��|j|jt
ddddg��|j|jt
dddddg��|j|j�dS)
Nr[r/rNrTrY�enumrw)rN�
propertiesrr�z$.foor�)r
rsr)r*rr0rr-rrr�r�r�rr�r�r�r.r�r�r�r�r�r�)r"rrrrr�r�r�rrr�	test_type�sj
z$TestValidationErrorDetails.test_typec	Cs�ddgddd�}dddid	did
dddd
gd�d�i}tj|�}|j|�}t|�\}}}}|j|jtdg��|j|jtdg��|j|jtdg��|j|jtdg��|j|jtdg��|j|jtdg��|j|jtdg��|j|jtdg��|j|jtdg��|j|jtdg��|j|jtdg��|j|jtdg��|j|j	d�|j|j	d�|j|j	d�|j|j	d�|j|j
d	�|j|j
d�|j|j
d�|j|j
d�dS)Nrwr/�Zspam)r[r{r��quuxr�rNrZr��
r���)ryr�)r[r{r�r{r�r[z$.barz$.bazz$.foor�ry)r
rsr*r�rr�rr�r�r�r)	r"rrrrr�r��e3�e4rrr�test_single_nesting�s8

z.TestValidationErrorDetails.test_single_nestingcCs<ddddgid�dg}dddgddd	gid
ddid
did�d�d�d�d�}tj|�}|j|�}t|�\}}}}}	}
|j|jtg��|j|jtdg��|j|jtddg��|j|jtdddg��|j|	jtdddg��|j|
jtddg��|j|jd�|j|jd�|j|jd�|j|jd�|j|	jd�|j|
jd�|j|jtdg��|j|jtddg��|jt	|j�ddddg�|jt	|j�ddddddg�|jt	|	j�dddddd
g�|jt	|
j�ddddg�|j|j
d�|j|j
d�|j|j
d�|j|j
d�|j|	j
d
�|j|
j
d�dS)Nr/rwr�)r[r{r�rZrYr�r2rRr�Tr�)r{r�)rNr�)rNr�rr{r[r�z$[0]z$[1].barz$[1].bar.barz$[1].bar.bazz$[1].foorNr�r�)r
rsr*r�rr�rr�r.r)r)r"rrrrr�r�r�r�Ze5Ze6rrr�test_multiple_nestingsP


z0TestValidationErrorDetails.test_multiple_nestingcCsndddddgddiddd	d
iid�d�d
�giiddgdd	d
iid�}dddddddiid�id�i}tj|�}|j|�\}|j|jtdg��|j|jtdddg��|j|jd�|j\}|j|jtdddg��|j|jtdddddddddg	��|j|jd�|j\}|j|jtdddddg��|j|jtdddddddddddddddg��|j|jd�dS)N�noder�rYru�childrenrNrZz^.*$z$refz#/definitions/node)rNr�)rur�)rNr�r��root)ZdefinitionsrNr�r�r<�abr�z$.rootrr�z$.root.children.az$.root.children.a.children.ab)	r
r�r*rr�rr�r�r�)r"rrrr�r�r�rrr�test_recursiveYsv


z)TestValidationErrorDetails.test_recursivecCs�ddd�}dddd�i}tj|�}|j|�}t|�\}}|j|jtdg��|j|jtdg��|j|jd	�|j|jd
�|j|jd�|j|jd�dS)
Nr{rw)r{r[r�rTr�)rNrrr[z$.barz$.foorNrr)	r
rsr*r�rr�rr�r)r"rrrrr�r�rrr�test_additionalProperties�s


z4TestValidationErrorDetails.test_additionalPropertiescCs�ddd�}dddiddid�i}tj|�}|j|�}t|�\}}|j|jtd	g��|j|jtd
g��|j|jd�|j|jd�|j|jd�|j|jd�dS)
Nr/rw)r{r[r�rNrZrrr�r{r[z$.barz$.foo)	r
rsr*r�rr�rr�r)r"rrrrr�r�rrr�test_patternProperties�s


z1TestValidationErrorDetails.test_patternPropertiescCs�ddg}gddd�d�}tj|�}|j|�}t|�\}}|j|jtdg��|j|jtdg��|j|jd�|j|jd	�|j|jd
�|j|jd�dS)Nr[r/rTr�)rNrr)r�r�rz$[0]z$[1]rNrr)	r
rsr*r�rr�rr�r)r"rrrrr�r�rrr�test_additionalItems�s

z/TestValidationErrorDetails.test_additionalItemscCs�dddg}igddd�d�}tj|�}|j|�}t|�\}}|j|jtdg��|j|jtdg��|j|jd	�|j|jd
�|j|jd�|j|jd�dS)
Nr[r{r/rTr�)rNrr)r�r�rwz$[1]z$[2]rNrr)	r
rsr*r�rr�rr�r)r"rrrrr�r�rrr�test_additionalItems_with_items�s


z:TestValidationErrorDetails.test_additionalItems_with_itemscCs�ddi}ddddiii}tj|�}|j|�\}|j|jd�|j|jd�|j|jtg��|j|jd�|j|j	tddg��dS)Nr[rUZ
propertyNames�notr�z0'foo' should not be valid under {'const': 'foo'}r�)
r
r�r*rrrr�rr�r.)r"rrr�errorrrr�test_propertyNames
s
z-TestValidationErrorDetails.test_propertyNamescCs~ddiddid�}tj|�}|jd�\}|j|jd�|j|jd�|j|jtg��|j|jd�|j|j	tddg��dS)Nr�rU�
)�if�thenz13 was expectedr�r�)
r
r�r*rrrr�rr�r.)r"rrr�rrr�test_if_thens
z'TestValidationErrorDetails.test_if_thencCs~ddiddid�}tj|�}|jd�\}|j|jd�|j|jd�|j|jtg��|j|jd�|j|j	tddg��dS)	Nr�rUr�)r��elser�z13 was expectedr�r�)
r
r�r*rrrr�rr�r.)r"rrr�rrr�test_if_else,s
z'TestValidationErrorDetails.test_if_elsec	CsTtjd�}|jd�\}|j|j|j|j|j|j|j	|j
fdddddtg�df�dS)NFrUzFalse schema does not allow 12r�)r
r�r*rrrr-rrr.r�r)r"rr�rrr�test_boolean_schema_False;s"
z4TestValidationErrorDetails.test_boolean_schema_FalsecCs�ddddii}}tjd|itjdi||id�d�}|jd	d
i�\}|j|j|j|j|j|j	|j
|j|jfdddd
t
d	g�ddit
ddg�df�dS)
NZsomeRefr�rNrTz$refrD)�store)�resolverr[ZnotAnIntegerz''notAnInteger' is not of type 'integer'z$.foo)r
r��RefResolverr*rrrr-rr�rr.r�r)r"�refrrr�rrr�test_refTs,
z#TestValidationErrorDetails.test_refcCs�dddiiiddigi}tj|�}|jdddd	g�\}}|j|j|j|j|j|j|j	|j
|jfd
dddtg�dditdddg�df�|j|j|j|j|j|j|j	|j
|jfd
ddd	tg�dditdddg�df�dS)Nr�rNrZryr2r/rwr[r�z1 is not of type 'string'rr�z"5 is greater than the maximum of 3)
r
�Draft202012Validatorr*rrrr-rr�rr.r�r)r"rrZ
type_errorZ	min_errorrrr�test_prefixItemsssJ
z+TestValidationErrorDetails.test_prefixItemscCs�ddiigd�}tj|�}|jdddddg�\}}|j|j|j|j|j|j|j	|j
|jfd	dddtd
g�dditddg�df�|j|j|j|j|j|j|j	|j
|jfd
dddtdg�dditddg�df�dS)NrNrZ)r�r�r[rwr{r�r�z2 is not of type 'string'r/r�z$[1]z4 is not of type 'string'r2z$[3])
r
r�r*rrrr-rr�rr.r�r)r"rrr�r�rrrr��sL



z6TestValidationErrorDetails.test_prefixItems_with_itemscCs�ddidd�}tj|�}|jdddddd	g�\}|j|j|j|j|j|j|j	|j
|jfd
dddddddd	gtg�ddidd�tdg�d
f�dS)z�
        `contains` + `maxContains` produces only one error, even if there are
        many more incorrectly matching elements.
        rNrZrw)r�r�r[r{r�r�r�z:Too many items match the given schema (expected at most 2)r�r�r�N)
r
r�r*rrrr-rr�rr.r�r)r"rrr�rrrr��s(
z1TestValidationErrorDetails.test_contains_too_manyc
Cs�ddidd�}tj|�}|jdddg�\}|j|j|j|j|j|j|j	|j
|jfddddddgtg�ddidd�td	g�d
f�dS)NrNrZrw)r�r�r[r�zMToo few items match the given schema (expected at least 2 but only 1 matched)r�r�r�)
r
r�r*rrrr-rr�rr.r�r)r"rrr�rrrr��s(
z0TestValidationErrorDetails.test_contains_too_fewc
Cs�ddidd�}tj|�}|jddg�\}|j|j|j|j|j|j|j	|j
|jfddddiddgtg�ddidd�tdg�df�dS)	NrNrZrw)r�r�r�z7[2, 4] does not contain items matching the given schemar�r�)
r
r�r*rrrr-rr�rr.r�r)r"rrr�rrr�test_contains_nones(
z-TestValidationErrorDetails.test_contains_nonec
Cs
dddgiidddgd�id�}tj|�}|jdii�\}}|j|j|j|j|j|j|j	|j
|j|jf	d	ddgit
dg�ddgit
d
ddg�t
d
ddg�df	�|j|j|j|j|j|j|j	|j
|j|jf	dddgit
dg�ddgd�t
d
ddg�t
d
ddg�df	�dS)
Nr[r�r{Zapropz#/$defs/foor�)z$refr�)z$defsr�z'bar' is a required propertyr�z$.apropz'baz' is a required property)r
r�r*rrrr-rr�rr.r�r�r)r"rrr�r�rrr�test_ref_sibling0sX

z+TestValidationErrorDetails.test_ref_siblingN)r7rer8r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr�`s(EM'=e14r�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�MetaSchemaTestsMixincCs2|jtj��|jjddt�ii�WdQRXdS)Nr��test)�assertRaisesr�SchemaErrorr!rjrY)r"rrr�test_invalid_propertiesqsz,MetaSchemaTestsMixin.test_invalid_propertiesc
Cs,|jtj��|jjddi�WdQRXdS)Nr��1)rrrr!rj)r"rrr�test_minItems_invalid_stringusz1MetaSchemaTestsMixin.test_minItems_invalid_stringcCs|jjdgi�dS)z�
        Technically, all the spec says is they SHOULD have elements, not MUST.

        See https://github.com/Julian/jsonschema/issues/529.
        r�N)r!rj)r"rrr�test_enum_allows_empty_arrayszsz2MetaSchemaTestsMixin.test_enum_allows_empty_arrayscCs|jjdddgi�dS)z�
        Technically, all the spec says is they SHOULD be unique, not MUST.

        See https://github.com/Julian/jsonschema/issues/529.
        r�rUN)r!rj)r"rrr�!test_enum_allows_non_unique_items�sz6MetaSchemaTestsMixin.test_enum_allows_non_unique_itemsN)r7rer8rrrrrrrrrosrc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!S)"�ValidatorTestMixincCs$|j\}}|j|j|�j|��dS)N)�validr\r!�is_valid)r"rrrrr�test_valid_instances_are_valid�s
z1ValidatorTestMixin.test_valid_instances_are_validcCs$|j\}}|j|j|�j|��dS)N)�invalidr�r!r)r"rrrrr�$test_invalid_instances_are_not_valid�s
z7ValidatorTestMixin.test_invalid_instances_are_not_validcCs |jt�t�i�jt�d�dS)N)r)r!rY�validate)r"rrr�(test_non_existent_properties_are_ignored�sz;ValidatorTestMixin.test_non_existent_properties_are_ignoredcCs|j|ji�jtj�dS)N)ZassertIsInstancer!r�r
r�)r"rrr�.test_it_creates_a_ref_resolver_if_not_provided�s
zAValidatorTestMixin.test_it_creates_a_ref_resolver_if_not_providedc	CsZdddi}}tjdi||id�}|jd|i|d�}|jtj��|jd�WdQRXdS)NZsomeCoolRefrNrTrD)r�z$ref)r�)r
r�r!rrrr)r"r�rr�rrrr�#test_it_delegates_to_a_ref_resolver�s
z6ValidatorTestMixin.test_it_delegates_to_a_ref_resolvercsRG�fdd�dt�}|�}ddi}�jtj���j||d�jd�WdQRXdS)zb
        Legacy RefResolvers support only the context manager form of
        resolution.
        cseZdZe�fdd��ZdS)zXValidatorTestMixin.test_it_delegates_to_a_legacy_ref_resolver.<locals>.LegacyRefResolverc3s�j|d�ddiVdS)Nzthe refrNrT)r)�thisr�)r"rr�	resolving�szbValidatorTestMixin.test_it_delegates_to_a_legacy_ref_resolver.<locals>.LegacyRefResolver.resolvingN)r7rer8rrr)r"rr�LegacyRefResolver�srz$refzthe ref)r�N)rYrrrr!r)r"rr�rr)r"r�*test_it_delegates_to_a_legacy_ref_resolver�s
z=ValidatorTestMixin.test_it_delegates_to_a_legacy_ref_resolvercCs|j|ji�jdd��dS)Nr[rZ)r\r!rO)r"rrr�#test_is_type_is_true_for_valid_type�sz6ValidatorTestMixin.test_is_type_is_true_for_valid_typecCs|j|ji�jdd��dS)Nr[rR)r�r!rO)r"rrr�&test_is_type_is_false_for_invalid_type�sz9ValidatorTestMixin.test_is_type_is_false_for_invalid_typecCs4|j|ji�jdd��|j|ji�jdd��dS)NTrTrW)r�r!rO)r"rrr�,test_is_type_evades_bool_inheriting_from_int�sz?ValidatorTestMixin.test_is_type_evades_bool_inheriting_from_intcCs~dddii}tj|j|jjjddd��d�}||�}|jddtd�td	�g�d
igddg}|jdd
�|j|�D�|�dS)Nr�rNrWcSst|tttf�ot|t�S)N)�
isinstance�int�floatr�bool)r�r�rrrrG�szGValidatorTestMixin.test_it_can_validate_with_decimals.<locals>.<lambda>)rr/g�������?r�r[TcSsg|]
}|j�qSr)r)rPr�rrr�
<listcomp>�szIValidatorTestMixin.test_it_can_validate_with_decimals.<locals>.<listcomp>)	r
r`r!r&�redefinerrrr*)r"rr!rr
rrr�"test_it_can_validate_with_decimals�sz5ValidatorTestMixin.test_it_can_validate_with_decimalscCs"|jddit�d�}|jd�dS)Nr�Zcarrot)r�Zbugs)r!r
r)r"rrrr�7test_it_returns_true_for_formats_it_does_not_know_about�szJValidatorTestMixin.test_it_returns_true_for_formats_it_does_not_know_aboutcCs|ji�}|j|j�dS)N)r!r�r�)r"rrrr�,test_it_does_not_validate_formats_by_default�s
z?ValidatorTestMixin.test_it_does_not_validate_formats_by_defaultc
s|t�}td��|jdtd���fdd��}�jddi|d�}|jd��jtj��}|jd	�WdQRX�j|j	j
��dS)
NzBad!r[)Zraisescs.|dkrdS|dkr��n�jdj|��dS)N�goodT�badz What is {}? [Baby Don't Hurt Me])rr�)r�)r$r"rr�check�s
zTValidatorTestMixin.test_it_validates_formats_if_a_checker_is_provided.<locals>.checkr�)r�r#r$)r
�
ValueErrorr�r!rrrrr��	exception�cause)r"r�r%r�cmr)r$r"r�2test_it_validates_formats_if_a_checker_is_provided�s	
zEValidatorTestMixin.test_it_validates_formats_if_a_checker_is_providedcCsBt�}d|gi}tj|j|jjj|dd��d�}||�jd�dS)NrNcSs
t|t�S)N)rr)r�r�rrrrG�sz@ValidatorTestMixin.test_non_string_custom_type.<locals>.<lambda>)rr�)rYr
r`r!r&rr)r"Znon_string_typer�Crazyrrr�test_non_string_custom_type�s
z.ValidatorTestMixin.test_non_string_custom_typecCs`tj|j|jjjddd��d�}|jtj��}|ddi�jd
�WdQRX|j	d	t
|j��dS)z�
        A tuple instance properly formats validation errors for uniqueItems.

        See https://github.com/Julian/jsonschema/pull/224
        rRcSs
t|t�S)N)r�tuple)r�r�rrrrGszNValidatorTestMixin.test_it_properly_formats_tuples_in_errors.<locals>.<lambda>)r�uniqueItemsTr/Nz(1, 1) has non-unique elements)r/r/)r
r`r!r&rrrrrrI�strr')r"ZTupleValidatorr�rrr�)test_it_properly_formats_tuples_in_errorssz<ValidatorTestMixin.test_it_properly_formats_tuples_in_errorscs�ddd�}tdd��tj|j|jjjdd��fdd�d	��d
�}||�}tddd
ddg�tdgdgg�tdg�tdg�gtdg�gtdg�ggtdg�ggggtdg�gggggttdg�g�ttdg�g�g�dd��dd�g�dtdg�g��dtdg�g�g�d�dtdg��g��d�dtdg��g�gtttdg���tttdg���gg
}x|D]}|j|��q\Wtdddg�tdgdgg�tdg�tdg�gtdg�gtdg�ggtdg�ggggtdg�gggggttdg�g�ttdg�g�g�dd��dd�g�dtdg�g��dtdg�g�g�d�dtdg��g��d�dtdg��g�gtttdg���tttdg���gg
}x0|D](}|jt	j
��|j|�WdQRX�q�WdS)zO
        Allow array to validate against another defined sequence type
        rRT)rNr.�	MyMappingza, bcSst|ttf�S)N)rr)r)r�r�rrrrGszBValidatorTestMixin.test_check_redefined_sequence.<locals>.<lambda>cst|t�f�S)N)rr)r�r�)r1rrrG"s)rRrY)rr<NrrDFrr�)rr
r`r!r&Z
redefine_manyrrrrr)r"rr!rZvalid_instancesrZinvalid_instancesr)r1r�test_check_redefined_sequencesJ

"&
"&
z0ValidatorTestMixin.test_check_redefined_sequenceN)r7rer8rrrrrrrrrr r!r"r*r,r0r2rrrrr	�s r	c@sLeZdZdZdd�Zdd�Zejed��dd��Z	ejed��d	d
��Z
dS)�AntiDraft6LeakMixinzN
    Make sure functionality from draft 6 doesn't leak backwards in time.
    cCs:|jtj��}|jjd�WdQRX|jdt|j��dS)NTzTrue is not of type)rrrr!rjrIr/r')r"r�rrr�test_True_is_not_a_schema]sz-AntiDraft6LeakMixin.test_True_is_not_a_schemacCs:|jtj��}|jjd�WdQRX|jdt|j��dS)NFzFalse is not of type)rrrr!rjrIr/r')r"r�rrr�test_False_is_not_a_schemabsz.AntiDraft6LeakMixin.test_False_is_not_a_schemaicCsJtjdi�}|jt��}|jd|d�jd�WdQRX|j|jtj	�dS)NrDT)r�rU)
r
r�r�	Exceptionr!r�assertNotIsInstancer'rr)r"r�r�rrr�5test_True_is_not_a_schema_even_if_you_forget_to_checkgszIAntiDraft6LeakMixin.test_True_is_not_a_schema_even_if_you_forget_to_checkcCsJtjdi�}|jt��}|jd|d�jd�WdQRX|j|jtj	�dS)NrDF)r�rU)
r
r�rr6r!rr7r'rr)r"r�r�rrr�6test_False_is_not_a_schema_even_if_you_forget_to_checknszJAntiDraft6LeakMixin.test_False_is_not_a_schema_even_if_you_forget_to_checkN)r7rer8�__doc__r4r5�unittest�skiprr8r9rrrrr3Xs
r3c@sFeZdZejZiifZddidfZdd�Zdd�Z	dd	�Z
d
d�ZdS)
�TestDraft3ValidatorrNrTr[cCs|jddi�}|jt��dS)NrN�any)r!rrY)r"rrrr�#test_any_type_is_valid_for_type_any{sz7TestDraft3Validator.test_any_type_is_valid_for_type_anyc	Cs\tj|j|jjjddd��d�}|ddi�}|jd�|jtj��|jd�WdQRXdS)	z(
        Sigh, because why not.
        r>cSs
t|t�S)N)rr)r�r�rrrrG�szBTestDraft3Validator.test_any_type_is_redefinable.<locals>.<lambda>)rrNrUr[N)	r
r`r!r&rrrrr)r"r+rrrr�test_any_type_is_redefinables
z0TestDraft3Validator.test_any_type_is_redefinablecCs |j|jddi�jt���dS)NrNr>)r\r!rrY)r"rrr�!test_is_type_is_true_for_any_type�sz5TestDraft3Validator.test_is_type_is_true_for_any_typecCs6|j|ji�jdd��|j|jddi�jd��dS)NTrSrNr>)r\r!rOr)r"rrr�6test_is_type_does_not_evade_bool_if_it_is_being_tested�szJTestDraft3Validator.test_is_type_does_not_evade_bool_if_it_is_being_testedN)r7rer8r
rsr!r
r
r?r@rArBrrrrr=vsr=c@s&eZdZejZiifZddidfZdS)�TestDraft4ValidatorrNrTr[N)r7rer8r
r�r!r
r
rrrrrC�srCc@s&eZdZejZiifZddidfZdS)�TestDraft6ValidatorrNrTr[N)r7rer8r
r�r!r
r
rrrrrD�srDc@s&eZdZejZiifZddidfZdS)�TestDraft7ValidatorrNrTr[N)r7rer8r
r�r!r
r
rrrrrE�srEc@s&eZdZejZiifZddidfZdS)�TestDraft202012ValidatorrNrTr[N)r7rer8r
r�r!r
r
rrrrrF�srFc@s|eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)�TestValidatorForcCs<ddi}|jtj|�tj�ddi}|jtj|�tj�dS)Nz$schemaz&http://json-schema.org/draft-03/schemaz'http://json-schema.org/draft-03/schema#)r�r
�
validator_forrs)r"rrrr�test_draft_3�szTestValidatorFor.test_draft_3cCs<ddi}|jtj|�tj�ddi}|jtj|�tj�dS)Nz$schemaz&http://json-schema.org/draft-04/schemaz'http://json-schema.org/draft-04/schema#)r�r
rHr�)r"rrrr�test_draft_4�szTestValidatorFor.test_draft_4cCs<ddi}|jtj|�tj�ddi}|jtj|�tj�dS)Nz$schemaz&http://json-schema.org/draft-06/schemaz'http://json-schema.org/draft-06/schema#)r�r
rHr�)r"rrrr�test_draft_6�szTestValidatorFor.test_draft_6cCs<ddi}|jtj|�tj�ddi}|jtj|�tj�dS)Nz$schemaz&http://json-schema.org/draft-07/schemaz'http://json-schema.org/draft-07/schema#)r�r
rHr�)r"rrrr�test_draft_7�szTestValidatorFor.test_draft_7cCs<ddi}|jtj|�tj�ddi}|jtj|�tj�dS)Nz$schemaz,https://json-schema.org/draft/2019-09/schemaz-https://json-schema.org/draft/2019-09/schema#)r�r
rHZDraft201909Validator)r"rrrr�test_draft_201909�sz"TestValidatorFor.test_draft_201909cCs<ddi}|jtj|�tj�ddi}|jtj|�tj�dS)Nz$schemaz,https://json-schema.org/draft/2020-12/schemaz-https://json-schema.org/draft/2020-12/schema#)r�r
rHr�)r"rrrr�test_draft_202012�sz"TestValidatorFor.test_draft_202012cCs|jtjd�tj�dS)NT)r�r
rHri)r"rrr�	test_True�szTestValidatorFor.test_TruecCs|jtjd�tj�dS)NF)r�r
rHri)r"rrr�
test_FalseszTestValidatorFor.test_FalsecCs6tjddiddd�d�}ddi}|jtj|�|�dS)NrAzmeta schema idZ12cSs|jdd�S)NrArD)rE)rFrrrrG
sz8TestValidatorFor.test_custom_validator.<locals>.<lambda>)rr5rHz$schema)r
r r�rH)r"r!rrrr�test_custom_validator	sz&TestValidatorFor.test_custom_validatorcCs0tjddidd�}ddi}|jtj|�|�dS)Nz$idzmeta schema $idZ13)rr5z$schema)r
r r�rH)r"r!rrrr�test_custom_validator_draft6sz-TestValidatorFor.test_custom_validator_draft6cCs|jtji�tj�dS)N)r�r
rHri)r"rrr�%test_validator_for_jsonschema_default sz6TestValidatorFor.test_validator_for_jsonschema_defaultcCs|jtjidd�d�dS)N)�default)r�r
rH)r"rrr�!test_validator_for_custom_default#sz2TestValidatorFor.test_validator_for_custom_defaultcCs,|jtdtj|jjjtjddiid�dS)Nz�The metaschema specified by $schema was not found. Using the latest draft to validate, but this will raise an error in the future.z$schemaZ
unknownSchema)�categoryr�filename�frrT)ZassertWarns�DeprecationWarning�sys�modulesre�__file__r
rH)r"rrr�1test_warns_if_meta_schema_specified_was_not_found&szBTestValidatorFor.test_warns_if_meta_schema_specified_was_not_foundcCs tjiid�|j|j��dS)N)rrT)r
rHr�Z
flushWarnings)r"rrr�0test_does_not_warn_if_meta_schema_is_unspecified6szATestValidatorFor.test_does_not_warn_if_meta_schema_is_unspecifiedN)r7rer8rIrJrKrLrMrNrOrPrQrRrSrUr]r^rrrrrG�s





rGc@s\eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)�TestValidatecCs2g}|j|d|j�tji|�|j||g�dS)Nrj)�patch�appendr
rr)r"rr!�resultrrr�
assertUses<szTestValidate.assertUsescCs,|jdditjd�|jdditjd�dS)Nz$schemaz'http://json-schema.org/draft-03/schema#)rr!z&http://json-schema.org/draft-03/schema)rcr
rs)r"rrr�test_draft3_validator_is_chosenBs
z,TestValidate.test_draft3_validator_is_chosencCs,|jdditjd�|jdditjd�dS)Nz$schemaz'http://json-schema.org/draft-04/schema#)rr!z&http://json-schema.org/draft-04/schema)rcr
r�)r"rrr�test_draft4_validator_is_chosenMs
z,TestValidate.test_draft4_validator_is_chosencCs,|jdditjd�|jdditjd�dS)Nz$schemaz'http://json-schema.org/draft-06/schema#)rr!z&http://json-schema.org/draft-06/schema)rcr
r�)r"rrr�test_draft6_validator_is_chosenXs
z,TestValidate.test_draft6_validator_is_chosencCs,|jdditjd�|jdditjd�dS)Nz$schemaz'http://json-schema.org/draft-07/schema#)rr!z&http://json-schema.org/draft-07/schema)rcr
r�)r"rrr�test_draft7_validator_is_chosencs
z,TestValidate.test_draft7_validator_is_chosencCs,|jdditjd�|jdditjd�dS)Nz$schemaz-https://json-schema.org/draft/2020-12/schema#)rr!z,https://json-schema.org/draft/2020-12/schema)rcr
r�)r"rrr�$test_draft202012_validator_is_chosenns
z1TestValidate.test_draft202012_validator_is_chosencCs|jitjd�dS)N)rr!)rcr
r�)r"rrr�)test_draft202012_validator_is_the_default}sz6TestValidate.test_draft202012_validator_is_the_defaultcCs>|jtj��}tjdddi�WdQRX|jt|j�d�dS)NrUrNrZz1(?s)Failed validating '.*' in schema.*On instance)rrrr
r�assertRegexr/r')r"r�rrr�test_validation_error_message�s
z*TestValidate.test_validation_error_messagecCs>|jtj��}tjdddi�WdQRX|jt|j�d�dS)NrUrNz3(?s)Failed validating '.*' in metaschema.*On schema)rrrr
rrjr/r')r"r�rrr�test_schema_error_message�s
z&TestValidate.test_schema_error_messagecCsNdddiddigi}|jtj��}tjd|�WdQRX|jdt|j��dS)Nr�rNrZrRrUz12 is not of type)rrrr
rrIr/r')r"rr�rrr�test_it_uses_best_match�sz$TestValidate.test_it_uses_best_matchN)
r7rer8rcrdrerfrgrhrirkrlrmrrrrr_;sr_c@s�eZdZdZdZddiZdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#S)$�TestRefResolverrDzfoo://storedZstoredrcCs.i|_|j|ji|_tj|j|j|j�|_dS)N)�referrer�
stored_uri�
stored_schemar�r
r��base_urir�)r"rrrr#�szTestRefResolver.setUpc
sPtjjd}�j�jd�fdd���jj|��}WdQRX�j|tjj�dS)NrAZresolve_remotecs
�jd�S)NzShould not have been called!)r)rkrl)r"rrrG�szXTestRefResolver.test_it_does_not_retrieve_schema_urls_from_the_network.<locals>.<lambda>)r
rsr%r`r�rr)r"r��resolvedr)r"r�6test_it_does_not_retrieve_schema_urls_from_the_network�s
zFTestRefResolver.test_it_does_not_retrieve_schema_urls_from_the_networkcCsFd}dt�i|jd<|jj|��}|j||jdd�WdQRXdS)Nz#/properties/foor[r�)rYror�rr)r"r�rsrrr�test_it_resolves_local_refs�sz+TestRefResolver.test_it_resolves_local_refscCsrdddid�}tjj|dd�d�}|jd��}|j||d	�WdQRX|jd
��}|j||d	�WdQRXdS)Nzhttp://bar/schema#r[r{)rAr<cSs|jdd�S)NrArD)rE)rrrrrG�szETestRefResolver.test_it_resolves_local_refs_with_id.<locals>.<lambda>)rHz#/ar<zhttp://bar/schema#/a)r
r��from_schemarr)r"rr�rsrrr�#test_it_resolves_local_refs_with_id�sz3TestRefResolver.test_it_resolves_local_refs_with_idcCs`|jj|j��}|j||j�WdQRXddi|jjd<|jjd��}|j|d�WdQRXdS)Nr[rUZ
cached_refzcached_ref#/foo)r�rrpr�rqr�r)r"rsrrr�test_it_retrieves_stored_refs�s
z-TestRefResolver.test_it_retrieves_stored_refsc
Cshd}ddi}dtjkr.|jtjjdtjd�td|i�tjd<|jj|��}|j|d�WdQRXdS)Nzhttp://bar#bazr�rU�requestsz
http://bar)rZr[r�__setitem__�ReallyFakeRequestsr�rr)r"r�rrsrrr�,test_it_retrieves_unstored_refs_via_requests�s
z<TestRefResolver.test_it_retrieves_unstored_refs_via_requestsc
s�d}ddi�dtjkr.�jtjjdtjd�dtjd<t��fdd��}�jttdtj�|t_�jj	|��}WdQRX�j
|d�dS)Nzhttp://bar#bazr�rUryc3s&�j|d�ttj��jd��VdS)Nz
http://bar�utf8)rr�json�dumps�encode)�url)rr"rr�fake_urlopen�szQTestRefResolver.test_it_retrieves_unstored_refs_via_urlopen.<locals>.fake_urlopen�urlopen)rZr[rrzr�setattrr
r�r�rr)r"r�r�rsr)rr"r�+test_it_retrieves_unstored_refs_via_urlopen�s


z;TestRefResolver.test_it_retrieves_unstored_refs_via_urlopencCsrtjddd��&}|jtj|j�tjddi|�WdQRXdjt	|j��}|j
j|��}|j|d�WdQRXdS)NF�wt)�delete�moder[r{z
file://{}#foo)
�tempfile�NamedTemporaryFiler�os�removerur~�dumpr�rr�rr)r"Ztempfr�rsrrr�(test_it_retrieves_local_refs_via_urlopen�sz8TestRefResolver.test_it_retrieves_local_refs_via_urlopencCs�ddi}tjj|dd�d�}|j|jd�|j|jd�|jd��}|j||�WdQRX|jd��}|j||�WdQRX|jd��}|j||�WdQRX|jd��}|j||�WdQRXdS)	NrAr[cSs|jdd�S)NrArD)rE)rrrrrG�szPTestRefResolver.test_it_can_construct_a_base_uri_from_a_schema.<locals>.<lambda>)rHrD�#zfoo#)r
r�rvrrr�resolution_scoper)r"rr�rsrrr�.test_it_can_construct_a_base_uri_from_a_schema�sz>TestRefResolver.test_it_can_construct_a_base_uri_from_a_schemacCsti}tjj|�}|j|jd�|j|jd�|jd��}|j||�WdQRX|jd��}|j||�WdQRXdS)NrDr�)r
r�rvrrrr�r)r"rr�rsrrr�9test_it_can_construct_a_base_uri_from_a_schema_without_idszITestRefResolver.test_it_can_construct_a_base_uri_from_a_schema_without_idc
sV���fdd�}ddi�d�tjdid|id�}|j���}�j|��WdQRXdS)Ncs�j|���S)N)r)r�)r�rr"rr�handlersz@TestRefResolver.test_custom_uri_scheme_handlers.<locals>.handlerr[r{z	foo://barrD)�handlers)r
r�rr)r"r�r�rsr)r�rr"r�test_custom_uri_scheme_handlerssz/TestRefResolver.test_custom_uri_scheme_handlerscs`t�g���fdd�}d}tjdidd|id�}|j|��WdQRX|j|��WdQRXdS)Ncs,y�j�Stk
r&�jd�YnXdS)Nz#Response must not have been cached!)r6�
IndexErrorr)r�)�responser"rrr�sz5TestRefResolver.test_cache_remote_on.<locals>.handlerz	foo://barrDTr[)�cache_remoter�)rYr
r�r)r"r�r�r�r)r�r"r�test_cache_remote_ons
z$TestRefResolver.test_cache_remote_onc	sJt�g���fdd�}d}tjdidd|id�}|j|��WdQRXdS)Ncs,y�j�Stk
r&�jd�YnXdS)NzHandler called twice!)r6r�r)r�)r�r"rrr�0sz6TestRefResolver.test_cache_remote_off.<locals>.handlerz	foo://barrDFr[)r�r�)rYr
r�r)r"r�r�r�r)r�r"r�test_cache_remote_off-sz%TestRefResolver.test_cache_remote_offcs|td���fdd�}d}tjdid|id�}|jtj��&}|j|��|jd�WdQRXWdQRX|j|j	tj���dS)	NzOh no! What's this?cs��dS)Nr)r�)r�rrr�@szTTestRefResolver.test_if_you_give_it_junk_you_get_a_resolution_error.<locals>.handlerz	foo://barrDr[)r�zShouldn't get this far!)
r&r
r�rr�RefResolutionErrorrrrr')r"r�r�r��errr)r�r�3test_if_you_give_it_junk_you_get_a_resolution_error=szCTestRefResolver.test_if_you_give_it_junk_you_get_a_resolution_errorcCsJtjdi�}|j�|jtj��}|j�WdQRX|jdt|j��dS)NrDzFailed to pop the scope)	r
r�Z	pop_scoperrr�rIr/r')r"r��excrrr�.test_helpful_error_message_on_failed_pop_scopeJs
z>TestRefResolver.test_helpful_error_message_on_failed_pop_scopeN)r7rer8rrrprqr#rtrurwrxr|r�r�r�r�r�r�r�r�r�rrrrrn�s$
	

rncCsdd�}t||d�S)NcSs dd�|jD�dd�|jD�fS)NcSsg|]}t|��qSr)r/)rPr�rrrrUsz.sorted_errors.<locals>.key.<locals>.<listcomp>cSsg|]}t|��qSr)r/)rPr�rrrrVs)r�r.)r�rrr�keySszsorted_errors.<locals>.key)r�)�sorted)rr�rrrr�Rsr�c@seZdZej�Zdd�ZdS)r{cCs2|jj|�}|dkr$tdt|���ttj|��S)Nz
Unknown URL: )�
_responsesrEr&r:�_ReallyFakeJSONResponser~r)r"r�r�rrrrE`szReallyFakeRequests.getN)r7rer8�attr�ibr�rErrrrr{[sr{c@seZdZej�Zdd�ZdS)r�cCstj|j�S)N)r~�loads�	_response)r"rrrr~lsz_ReallyFakeJSONResponse.jsonN)r7rer8r�r�r�r~rrrrr�gsr�)/�collectionsrr�
contextlibr�decimalr�iorr;r�urllib.requestrr~r�rZr�Ztwisted.trial.unittestr	r�Z
jsonschemar
rrr
Zjsonschema.tests._helpersrrrrfr�rYrr	r3r=rCrDrErFrGr_rnr�rFr{r�rrrr�<module>s\TuN ];	

haha - 2025