Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
§

hµµhQxãó‚—ddlZddlZddlmZddlmZmZddddd	d
ddœZejd
¦«Z	Gd„de¦«Z
dS)éNé)ÚJsonSchemaDefinitionException)Ú
CodeGeneratorÚenforce_listÚNoneTypeÚboolzint, float, DecimalÚintÚstrzlist, tupleÚdict)ÚnullÚbooleanÚnumberÚintegerÚstringÚarrayÚobjectz	(?<!\\)\$có쇗eZdZdddddddœZdid	d	d	fˆfd
„	Zeˆfd„¦«Zd„Zd
„Zd„Z	d„Z
d„Zd„Zd„Z
d„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd „Zd!„Zd"„Zd#„Zd$„ZˆxZ S)%ÚCodeGeneratorDraft04zk^\d{4}-[01]\d-[0-3]\d(t|T)[0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:[+-][0-2]\d:[0-5]\d|[+-][0-2]\d[0-5]\d|z|Z)\Zz.^(?!.*\.\..*@)[^@.][^@]*(?<!\.)@[^@]+\.[^@]+\Zzv^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]{0,61}[A-Za-z0-9])\ZzS^((25[0-5]|2[0-4][0-9]|1?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\ZaÞ^(?:(?:[0-9A-Fa-f]{1,4}:){6}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|::(?:[0-9A-Fa-f]{1,4}:){5}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(?:[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){4}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){3}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(?:(?:[0-9A-Fa-f]{1,4}:){,2}[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){2}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(?:(?:[0-9A-Fa-f]{1,4}:){,3}[0-9A-Fa-f]{1,4})?::[0-9A-Fa-f]{1,4}:(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(?:(?:[0-9A-Fa-f]{1,4}:){,4}[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(?:(?:[0-9A-Fa-f]{1,4}:){,5}[0-9A-Fa-f]{1,4})?::[0-9A-Fa-f]{1,4}|(?:(?:[0-9A-Fa-f]{1,4}:){,6}[0-9A-Fa-f]{1,4})?::)\Zz^\w+:(\/?\/?)[^\s]+\Z)z	date-timeÚemailÚhostnameÚipv4Úipv6ÚuriNTcó:•—t¦« |||¦«||_||_||_|j d|jfd|jfd|j	fd|j
fd|jfd|jfd|j
fd|jfd	|jfd
|jfd|jfd|jfd
|jfd|jfd|jfd|jfd|jfd|jfd|jfd|jfd|jfd|jfd|jfd|jff¦«d|_dS)NÚtypeÚenumÚallOfÚanyOfÚoneOfÚnotÚ	minLengthÚ	maxLengthÚpatternÚformatÚminimumÚmaximumÚ
multipleOfÚminItemsÚmaxItemsÚuniqueItemsÚitemsÚ
minPropertiesÚ
maxPropertiesÚrequiredÚdependenciesÚ
propertiesÚpatternPropertiesÚadditionalPropertiesr) ÚsuperÚ__init__Ú_custom_formatsÚ_use_formatsÚ_use_defaultÚ_json_keywords_to_functionÚupdateÚ
generate_typeÚ
generate_enumÚgenerate_all_ofÚgenerate_any_ofÚgenerate_one_ofÚgenerate_notÚgenerate_min_lengthÚgenerate_max_lengthÚgenerate_patternÚgenerate_formatÚgenerate_minimumÚgenerate_maximumÚgenerate_multiple_ofÚgenerate_min_itemsÚgenerate_max_itemsÚgenerate_unique_itemsÚgenerate_itemsÚgenerate_min_propertiesÚgenerate_max_propertiesÚgenerate_requiredÚgenerate_dependenciesÚgenerate_propertiesÚgenerate_pattern_propertiesÚgenerate_additional_propertiesÚ_any_or_one_of_count)ÚselfÚ
definitionÚresolverÚformatsÚuse_defaultÚuse_formatsÚdetailed_exceptionsÚ	__class__s       €úA/usr/local/lib/python3.11/site-packages/fastjsonschema/draft04.pyr4zCodeGeneratorDraft04.__init__%spø€Ý
‰Œ×Ò˜ XÐ/BÑCÔCÐCØ&ˆÔØ'ˆÔØ'ˆÔØÔ'×.Ò.Ø
TÔ'Ð(Ø
TÔ'Ð(Ø
dÔ*Ð+Ø
dÔ*Ð+Ø
dÔ*Ð+Ø
DÔ%Ð&Ø
˜$Ô2Ð3Ø
˜$Ô2Ð3Ø
˜Ô-Ð.Ø
tÔ+Ð,Ø
˜Ô-Ð.Ø
˜Ô-Ð.Ø
˜4Ô4Ð5Ø
˜Ô0Ð1Ø
˜Ô0Ð1Ø
˜DÔ6Ð7Ø
dÔ)Ð*Ø
˜dÔ:Ð;Ø
˜dÔ:Ð;Ø
˜Ô/Ð0à
˜TÔ7Ð8Ø
˜4Ô3Ð4Ø
  $Ô"BÐCØ
# TÔ%HÐIð30
ñ	ô	ð	ð6%&ˆÔ!Ð!Ð!ócóB•—t¦«j}|j|d<|S)NÚcustom_formats)r3Úglobal_stater5)rSÚresrZs  €r[r_z!CodeGeneratorDraft04.global_stateGs"ø€å‰gŒgÔ"ˆØ $Ô 4ˆÐÑØˆ
r\cóì—t|jd¦«}	d d„|D¦«¦«}n4#t$r'}t	d |¦«¦«‚d}~wwxYwd}d|vsd|vrd	|vrd
 |j¬¦«}| d||¦«5| d
d |¦«d¬¦«ddd¦«dS#1swxYwYdS)z²
        Validation of type. Can be one type or list of types.

        .. code-block:: python

            {'type': 'string'}
            {'type': ['string', 'number']}
        rz, c3ó0K—|]}t|V—ŒdS©N)ÚJSON_TYPE_TO_PYTHON_TYPE)Ú.0Úts  r[ú	<genexpr>z5CodeGeneratorDraft04.generate_type.<locals>.<genexpr>Xs(èè€Ð$PÐ$PÀQÕ%=¸aÔ%@Ð$PÐ$PÐ$PÐ$PÐ$PÐ$Pr\zUnknown type: {}NÚrrr
z  or isinstance({variable}, bool))Úvariablez&if not isinstance({variable}, ({})){}:ú{name} must be {}z or ©Úrule)	rÚ_definitionÚjoinÚKeyErrorrr$Ú	_variableÚlÚexc)rSÚtypesÚpython_typesrrÚextras     r[r:z"CodeGeneratorDraft04.generate_typeMss€õ˜TÔ-¨fÔ5Ñ6Ô6ˆð	PØŸ9š9Ð$PÐ$PÈ%Ð$PÑ$PÔ$PÑPÔPˆLˆLøÝð	Pð	Pð	PÝ/Ð0B×0IÒ0IÈ#Ñ0NÔ0NÑOÔOÐOøøøøð	PøøøðˆØ˜ÐÐ ¨eÐ!3Ð!3¸È%Ð9OÐ9OØ6×=Ò=ÀtÄ~Ð=ÑVÔVˆEà
VŠVÐ<¸lÈEÑ
RÔ
Rð	Kð	KØHŠHÐ(¨&¯+ª+°eÑ*<Ô*<À6ˆHÑJÔJÐJð	Kð	Kð	Kñ	Kô	Kð	Kð	Kð	Kð	Kð	Kð	Kð	Køøøð	Kð	Kð	Kð	Kð	Kð	Ks'œ<¼
A-Á"A(Á(A-Â0,C)Ã)C-Ã0C-có(—|jd}t|ttf¦«st	d¦«‚| d¦«5| d| |¦«d¬¦«ddd¦«dS#1swxYwYdS)z¨
        Means that only value specified in the enum is valid.

        .. code-block:: python

            {
                'enum': ['a', 'b'],
            }
        rzenum must be an arrayzif {variable} not in {enum}:z{name} must be one of {}rkN)rmÚ
isinstanceÚlistÚtuplerrqrrÚe)rSrs  r[r;z"CodeGeneratorDraft04.generate_enumcså€ðÔ Ô'ˆÝ˜$¥¥u 
Ñ.Ô.ð	IÝ/Ð0GÑHÔHÐHØ
VŠVÐ2Ñ
3Ô
3ð	Lð	LØHŠHÐ/°·²¸±´ÀFˆHÑKÔKÐKð	Lð	Lð	Lñ	Lô	Lð	Lð	Lð	Lð	Lð	Lð	Lð	Løøøð	Lð	Lð	Lð	Lð	Lð	LsÁ,BÂBÂBcól—|jdD]%}| ||j|jd¬¦«Œ&dS)a’
        Means that value have to be valid by all of those definitions. It's like put it in
        one big definition.

        .. code-block:: python

            {
                'allOf': [
                    {'type': 'number'},
                    {'minimum': 5},
                ],
            }

        Valid values for this definition are 5, 6, 7, ... but not 4 or 'abc' for example.
        rT©Úclear_variablesN)rmÚgenerate_func_code_blockrpÚ_variable_name)rSÚdefinition_items  r[r<z$CodeGeneratorDraft04.generate_all_ofssO€ð  $Ô/°Ô8ð	vð	vˆOØ×)Ò)¨/¸4¼>È4ÔK^ÐptÐ)ÑuÔuÐuÐuð	vð	vr\c	ón—|xjdz
c_|j}| d|¬¦«|jdD]°}| d|d¬¦«5| dd¬	¦«5| ||j|jd
¬¦«| d|¬¦«d
d
d
¦«n#1swxYwY| d¦«d
d
d
¦«n#1swxYwYŒ±| d|d¬¦«5| dd¬¦«d
d
d
¦«d
S#1swxYwYd
S)a¯
        Means that value have to be valid by any of those definitions. It can also be valid
        by all of them.

        .. code-block:: python

            {
                'anyOf': [
                    {'type': 'number', 'minimum': 10},
                    {'type': 'number', 'maximum': 5},
                ],
            }

        Valid values for this definition are 3, 4, 5, 10, 11, ... but not 8 for example.
        rz"{variable}_any_of_count{count} = 0©Úcountrz&if not {variable}_any_of_count{count}:F©rƒÚoptimizeútry:©r…Tr|z#{variable}_any_of_count{count} += 1Nú%except JsonSchemaValueException: passz,{name} cannot be validated by any definitionrk©rRrqrmr~rprrr)rSrƒr€s   r[r=z$CodeGeneratorDraft04.generate_any_of†sH€ð 	
Ð!Ô! QÑ&Ð!Ô!ØÔ)ˆØŠÐ3¸5ˆÑAÔAÐAØ#Ô/°Ô8ð	@ð	@ˆOà—’Ð@ÈÐX]Ñ^Ô^ð
@ð
@Ø—V’V˜F¨UVÑ3Ô3ðOðOØ×1Ò1°/À4Ä>ÐSWÔSfÐx|Ð1Ñ}Ô}Ð}Ø—F’FÐ@ȐFÑNÔNÐNðOðOðOñOôOðOðOðOðOðOðOøøøðOðOðOðOð—’Ð>Ñ?Ô?Ð?ð	
@ð
@ð
@ñ
@ô
@ð
@ð
@ð
@ð
@ð
@ð
@øøøð
@ð
@ð
@ð
@øðVŠVÐ<ÀEÐTYˆVÑ
ZÔ
Zð	Sð	SØHŠHÐCÈ'ˆHÑRÔRÐRð	Sð	Sð	Sñ	Sô	Sð	Sð	Sð	Sð	Sð	Sð	Sð	Søøøð	Sð	Sð	Sð	Sð	Sð	SsHÁC!Á.;B5Â)C!Â5B9Â9C!Â<B9Â=C!Ã!C%	Ã(C%	ÄD*Ä*D.Ä1D.c	ót—|xjdz
c_|j}| d|¬¦«|jdD]°}| d|d¬¦«5| dd¬	¦«5| ||j|jd
¬¦«| d|¬¦«d
d
d
¦«n#1swxYwY| d¦«d
d
d
¦«n#1swxYwYŒ±| d|¬¦«5d}| d||d¬¦«d
d
d
¦«d
S#1swxYwYd
S)a·
        Means that value have to be valid by only one of those definitions. It can't be valid
        by two or more of them.

        .. code-block:: python

            {
                'oneOf': [
                    {'type': 'number', 'multipleOf': 3},
                    {'type': 'number', 'multipleOf': 5},
                ],
            }

        Valid values for this definition are 3, 5, 6, ... but not 15 for example.
        rz"{variable}_one_of_count{count} = 0r‚rz&if {variable}_one_of_count{count} < 2:Fr„r†r‡Tr|z#{variable}_one_of_count{count} += 1Nrˆz'if {variable}_one_of_count{count} != 1:z9" (" + str({variable}_one_of_count{}) + " matches found)"z.{name} must be valid exactly by one definition)Ú
append_to_msgrlr‰)rSrƒr€Údynamics    r[r>z$CodeGeneratorDraft04.generate_one_of¤sP€ð 	
Ð!Ô! QÑ&Ð!Ô!ØÔ)ˆØŠÐ3¸5ˆÑAÔAÐAØ#Ô/°Ô8ð	@ð	@ˆOà—’Ð@ÈÐX]Ñ^Ô^ð
@ð
@Ø—V’V˜F¨UVÑ3Ô3ðOðOØ×1Ò1°/À4Ä>ÐSWÔSfÐx|Ð1Ñ}Ô}Ð}Ø—F’FÐ@ȐFÑNÔNÐNðOðOðOñOôOðOðOðOðOðOðOøøøðOðOðOðOð—’Ð>Ñ?Ô?Ð?ð	
@ð
@ð
@ñ
@ô
@ð
@ð
@ð
@ð
@ð
@ð
@øøøð
@ð
@ð
@ð
@øðVŠVÐ=ÀUˆVÑ
KÔ
Kð	sð	sØQˆGØHŠHÐEÀuÐ\cÐjqˆHÑrÔrÐrð	sð	sð	sñ	sô	sð	sð	sð	sð	sð	sð	sð	søøøð	sð	sð	sð	sð	sð	ssHÁC!Á.;B5Â)C!Â5B9Â9C!Â<B9Â=C!Ã!C%	Ã(C%	ÄD-Ä-D1Ä4D1cóð—|jd}|dur| dd¬¦«dS|durdS|s| dd¬¦«dS| dd¬	¦«5| ||j|j¦«ddd¦«n#1swxYwY| d
¦«| d¦«5| dd¬¦«ddd¦«dS#1swxYwYdS)aT
        Means that value have not to be valid by this definition.

        .. code-block:: python

            {'not': {'type': 'null'}}

        Valid values for this definition are 'hello', 42, {} ... but not None.

        Since draft 06 definition can be boolean. False means nothing, True
        means everything is invalid.
        r Tú{name} must not be thererkFNz-{name} must NOT match a disallowed definitionr†r‡rˆzelse:)rmrrrqr~rpr)rSÚnot_definitions  r[r?z!CodeGeneratorDraft04.generate_notÃsº€ðÔ)¨%Ô0ˆØ˜TÐ!Ð!ØHŠHÐ/°eˆHÑ<Ô<Ð<Ð<Ð<Ø
˜uÐ
$Ð
$ØˆFØð	VØHŠHÐDÈ5ˆHÑQÔQÐQÐQÐQà—’˜¨Ñ/Ô/ð
cð
cØ×-Ò-¨n¸d¼nÈdÔNaÑbÔbÐbð
cð
cð
cñ
cô
cð
cð
cð
cð
cð
cð
cøøøð
cð
cð
cð
càFŠFÐ:Ñ;Ô;Ð;Ø—’˜‘”ð
Vð
VØ—’ÐHÈuÑUÔUÐUð
Vð
Vð
Vñ
Vô
Vð
Vð
Vð
Vð
Vð
Vð
Vð
Vøøøð
Vð
Vð
Vð
Vð
Vð
Vs$Á#"BÂBÂBÃC+Ã+C/Ã2C/có~—| d¦«5| ¦«t|jdtt
f¦«st
d¦«‚| d¦«5| dd¬¦«ddd¦«n#1swxYwYddd¦«dS#1swxYwYdS)Núif isinstance({variable}, str):r!zminLength must be a numberz if {variable}_len < {minLength}:z={name} must be longer than or equal to {minLength} charactersrk©rqÚcreate_variable_with_lengthrwrmr	Úfloatrrr©rSs r[r@z(CodeGeneratorDraft04.generate_min_lengthÞs^€Ø
VŠVÐ5Ñ
6Ô
6ð	lð	lØ×,Ò,Ñ.Ô.Ð.ݘdÔ.¨{Ô;½cÅ5¸\ÑJÔJð
RÝ3Ð4PÑQÔQÐQØ—’Ð:Ñ;Ô;ð
lð
lØ—’ÐXÐ_jÑkÔkÐkð
lð
lð
lñ
lô
lð
lð
lð
lð
lð
lð
løøøð
lð
lð
lð
lð		lð	lð	lñ	lô	lð	lð	lð	lð	lð	lð	lð	løøøð	lð	lð	lð	lð	lð	ló6–A B2Á6BÂB2ÂB	ÂB2Â!B	Â"B2Â2B6Â9B6có~—| d¦«5| ¦«t|jdtt
f¦«st
d¦«‚| d¦«5| dd¬¦«ddd¦«n#1swxYwYddd¦«dS#1swxYwYdS)Nr‘r"zmaxLength must be a numberz if {variable}_len > {maxLength}:z>{name} must be shorter than or equal to {maxLength} charactersrkr’r•s r[rAz(CodeGeneratorDraft04.generate_max_lengthæs^€Ø
VŠVÐ5Ñ
6Ô
6ð	mð	mØ×,Ò,Ñ.Ô.Ð.ݘdÔ.¨{Ô;½cÅ5¸\ÑJÔJð
RÝ3Ð4PÑQÔQÐQØ—’Ð:Ñ;Ô;ð
mð
mØ—’ÐYÐ`kÑlÔlÐlð
mð
mð
mñ
mô
mð
mð
mð
mð
mð
mð
møøøð
mð
mð
mð
mð		mð	mð	mñ	mô	mð	mð	mð	mð	mð	mð	mð	møøøð	mð	mð	mð	mð	mð	mr–cóä—| d¦«5|jd}| dd¦« dd¦«}t d|¦«}tj|¦«|j|<| dt|¦«¦«5| 	d	|d¬
¦«ddd¦«n#1swxYwYddd¦«dS#1swxYwYdS)Nr‘r#ú\z\\ú"z\"z\\Zz-if not REGEX_PATTERNS[{}].search({variable}):z{name} must match pattern {}rk)
rqrmÚreplaceÚ
DOLLAR_FINDERÚsubÚreÚcompileÚ_compile_regexpsÚreprrr)rSr#Úsafe_patternÚend_of_string_fixed_patterns    r[rBz%CodeGeneratorDraft04.generate_patternîs…€Ø
VŠVÐ5Ñ
6Ô
6ð	Wð	WØÔ& yÔ1ˆGØ"Ÿ?š?¨4°Ñ8Ô8×@Ò@ÀÀeÑLÔLˆLÝ*7×*;Ò*;¸FÀGÑ*LÔ*LÐ'Ý-/¬ZÐ8SÑ-TÔ-TˆDÔ! 'Ñ*Ø—’ÐGÍÈgÉÌÑWÔWð
Wð
WØ—’Ð7¸ÈIÑVÔVÐVð
Wð
Wð
Wñ
Wô
Wð
Wð
Wð
Wð
Wð
Wð
Wøøøð
Wð
Wð
Wð
Wð	Wð	Wð	Wñ	Wô	Wð	Wð	Wð	Wð	Wð	Wð	Wð	Wøøøð	Wð	Wð	Wð	Wð	Wð	Ws6–BC%Â(C
ÃC%Ã
C	ÃC%ÃC	ÃC%Ã%C)Ã,C)có~—|jsdS| d¦«5|jd}||jvr…|j|}t	|t
¦«r| ||dz|¦«n1| d|¦«5| d|d¬¦«ddd¦«n#1swxYwYnê||jvr(|j|}| ||dz|¦«n¹|dkr‘d	g|_	| d
d¬¦«5| d
¦«ddd¦«n#1swxYwY| d¦«5| dd¬¦«ddd¦«n#1swxYwYn"td |¦«¦«‚ddd¦«dS#1swxYwYdS)zô
        Means that value have to be in specified format. For example date, email or other.

        .. code-block:: python

            {'format': 'email'}

        Valid value for this definition is user@example.com but not @username
        Nr‘r$Ú_re_patternz(if not custom_formats["{}"]({variable}):rjrkÚregexz	import rer†Fr‡zre.compile({variable})zexcept Exception:z{name} must be a valid regexzUnknown format: {})r6rqrmr5rwr
Ú_generate_formatrrÚ
FORMAT_REGEXSÚ_extra_imports_linesrr$)rSÚformat_Ú
custom_formatÚformat_regexs    r[rCz$CodeGeneratorDraft04.generate_format÷s€ðÔ ð	ØˆFØ
VŠVÐ5Ñ
6Ô
6ð	Zð	ZØÔ& xÔ0ˆGà˜$Ô.Ð.Ð.Ø $Ô 4°WÔ =
ݘm­SÑ1Ô1ðNØ×)Ò)¨'°7¸]Ñ3JÈMÑZÔZÐZÑZàŸšÐ JÈGÑTÔTðNðNØŸšÐ!4°gÀH˜ÑMÔMÐMðNðNðNñNôNðNðNðNðNðNðNøøøðNðNðNðNøà˜DÔ.Ð.Ð.Ø#Ô1°'Ô:Ø×%Ò% g¨w¸Ñ/FÈÑUÔUÐUÐUà˜GÒ#Ð#Ø-8¨MÔ)Ø—V’V˜F¨UVÑ3Ô3ð5ð5Ø—F’FÐ3Ñ4Ô4Ð4ð5ð5ð5ñ5ô5ð5ð5ð5ð5ð5ð5øøøð5ð5ð5ð5à—V’VÐ/Ñ0Ô0ðLðLØ—H’HÐ;À(HÑKÔKÐKðLðLðLñLôLðLðLðLðLðLðLøøøðLðLðLðLøõ4Ð4H×4OÒ4OÐPWÑ4XÔ4XÑYÔYÐYð+	Zð	Zð	Zñ	Zô	Zð	Zð	Zð	Zð	Zð	Zð	Zð	Zøøøð	Zð	Zð	Zð	Zð	Zð	ZsŸA+F2Â
B/Â#F2Â/B3	Â3F2Â6B3	Â7AF2ÄD3Ä'F2Ä3D7	Ä7F2Ä:D7	Ä;F2ÅE7Å+F2Å7E;	Å;F2Å>E;	Å?&F2Æ2F6Æ9F6có—|jd|krn||jvrtj|¦«|j|<| d|¦«5| d|d¬¦«ddd¦«dS#1swxYwYdSdS)Nr$z.if not REGEX_PATTERNS["{}"].match({variable}):rjrk)rmr ržrŸrqrr)rSÚformat_nameÚregexp_nameÚregexps    r[r§z%CodeGeneratorDraft04._generate_formatsè€ØÔ˜HÔ%¨Ò4Ð4Ø $Ô"7Ð7Ð7Ý57´ZÀÑ5GÔ5GÔ% kÑ2Ø—’ÐHÈ+ÑVÔVð
Jð
JØ—’Ð,¨kÀÑIÔIÐIð
Jð
Jð
Jñ
Jô
Jð
Jð
Jð
Jð
Jð
Jð
Jð
Jøøøð
Jð
Jð
Jð
Jð
Jð
Jð5Ð4sÁ
A3Á3A7Á:A7có,—| d¦«5t|jdttt
jf¦«std¦«‚|j dd¦«rE| d¦«5| 	dd¬¦«ddd¦«n#1swxYwYnD| d	¦«5| 	d
d¬¦«ddd¦«n#1swxYwYddd¦«dS#1swxYwYdS)Nú1if isinstance({variable}, (int, float, Decimal)):r%zminimum must be a numberÚexclusiveMinimumFzif {variable} <= {minimum}:z${name} must be bigger than {minimum}rkzif {variable} < {minimum}:z0{name} must be bigger than or equal to {minimum}©
rqrwrmr	r”ÚdecimalÚDecimalrÚgetrrr•s r[rDz%CodeGeneratorDraft04.generate_minimum"s€Ø
VŠVÐGÑ
HÔ
Hð	að	aݘdÔ.¨yÔ9½CÅÍÌÐ;XÑYÔYð
PÝ3Ð4NÑOÔOÐOØÔ×#Ò#Ð$6¸Ñ>Ô>ð
aØ—V’VÐ9Ñ:Ô:ðUðUØ—H’HÐCÈ)HÑTÔTÐTðUðUðUñUôUðUðUðUðUðUðUøøøðUðUðUðUøð—V’VÐ8Ñ9Ô9ðaðaØ—H’HÐOÐV_HÑ`Ô`Ð`ðaðaðañaôaðaðaðaðaðaðaøøøðaðaðaðað	að	að	añ	aô	að	að	að	að	að	að	að	aøøøð	að	að	að	að	að	aóZ–A2D	ÂB, D	Â,B0	Â0D	Â3B0	Â4D	Ã
C1Ã%D	Ã1C5	Ã5D	Ã8C5	Ã9D	Ä	D
ÄD
có,—| d¦«5t|jdttt
jf¦«std¦«‚|j dd¦«rE| d¦«5| 	dd¬¦«ddd¦«n#1swxYwYnD| d	¦«5| 	d
d¬¦«ddd¦«n#1swxYwYddd¦«dS#1swxYwYdS)Nr²r&zmaximum must be a numberÚexclusiveMaximumFzif {variable} >= {maximum}:z%{name} must be smaller than {maximum}rkzif {variable} > {maximum}:z1{name} must be smaller than or equal to {maximum}r´r•s r[rEz%CodeGeneratorDraft04.generate_maximum-s€Ø
VŠVÐGÑ
HÔ
Hð	bð	bݘdÔ.¨yÔ9½CÅÍÌÐ;XÑYÔYð
PÝ3Ð4NÑOÔOÐOØÔ×#Ò#Ð$6¸Ñ>Ô>ð
bØ—V’VÐ9Ñ:Ô:ðVðVØ—H’HÐDÈ9HÑUÔUÐUðVðVðVñVôVðVðVðVðVðVðVøøøðVðVðVðVøð—V’VÐ8Ñ9Ô9ðbðbØ—H’HÐPÐW`HÑaÔaÐaðbðbðbñbôbðbðbðbðbðbðbøøøðbðbðbðbð	bð	bð	bñ	bô	bð	bð	bð	bð	bð	bð	bð	bøøøð	bð	bð	bð	bð	bð	br¸cóŠ—| d¦«5t|jdttt
jf¦«std¦«‚t|jdt¦«r| d¦«n| d¦«| d¦«5| dd¬¦«ddd¦«n#1swxYwY| d	¦«5| d
d¬¦«ddd¦«n#1swxYwYddd¦«dS#1swxYwYdS)Nr²r'zmultipleOf must be a numberzBquotient = Decimal(repr({variable})) / Decimal(repr({multipleOf}))z$quotient = {variable} / {multipleOf}zif int(quotient) != quotient:z'{name} must be multiple of {multipleOf}rkz-if {variable} / {multipleOf} == float("inf"):zinifinity reached)	rqrwrmr	r”rµr¶rrrr•s r[rFz)CodeGeneratorDraft04.generate_multiple_of8s'€Ø
VŠVÐGÑ
HÔ
Hð
	Að
	AݘdÔ.¨|Ô<½sÅEÍ7Ì?Ð>[Ñ\Ô\ð
SÝ3Ð4QÑRÔRÐRõ˜$Ô*¨<Ô8½%Ñ@Ô@ð
?Ø—’Ð[Ñ\Ô\Ð\Ð\à—’Ð=Ñ>Ô>Ð>Ø—’Ð7Ñ8Ô8ð
Wð
WØ—’ÐBȐÑVÔVÐVð
Wð
Wð
Wñ
Wô
Wð
Wð
Wð
Wð
Wð
Wð
Wøøøð
Wð
Wð
Wð
Wð—’ÐGÑHÔHð
Að
AØ—’Ð,°<Ñ@Ô@Ð@ð
Að
Að
Añ
Aô
Að
Að
Að
Að
Að
Að
Aøøøð
Að
Að
Að
Að
	Að
	Að
	Añ
	Aô
	Að
	Að
	Að
	Að
	Að
	Að
	Að
	Aøøøð
	Að
	Að
	Að
	Að
	Að
	AsZ–B"D8Â8CÃD8ÃC 	à D8Ã#C 	Ã$D8Ã<D ÄD8Ä D$	Ä$D8Ä'D$	Ä(D8Ä8D<Ä?D<có¦—| ¦«| d¦«5t|jdtt
f¦«st
d¦«‚| ¦«| d¦«5| dd¬¦«ddd¦«n#1swxYwYddd¦«dS#1swxYwYdS)Núif {variable}_is_list:r(zminItems must be a numberzif {variable}_len < {minItems}:z-{name} must contain at least {minItems} itemsrk©	Úcreate_variable_is_listrqrwrmr	r”rr“rrr•s r[rGz'CodeGeneratorDraft04.generate_min_itemsHso€Ø×$Ò$Ñ&Ô&Ð&Ø
VŠVÐ,Ñ
-Ô
-ð	[ð	[ݘdÔ.¨zÔ:½SÅ%¸LÑIÔIð
QÝ3Ð4OÑPÔPÐPØ×,Ò,Ñ.Ô.Ð.Ø—’Ð9Ñ:Ô:ð
[ð
[Ø—’ÐHÈzÑZÔZÐZð
[ð
[ð
[ñ
[ô
[ð
[ð
[ð
[ð
[ð
[ð
[øøøð
[ð
[ð
[ð
[ð		[ð	[ð	[ñ	[ô	[ð	[ð	[ð	[ð	[ð	[ð	[ð	[øøøð	[ð	[ð	[ð	[ð	[ð	[ó6ªA CÂ
B.Â"CÂ.B2	Â2CÂ5B2	Â6CÃC
Ã
C
có¦—| ¦«| d¦«5t|jdtt
f¦«st
d¦«‚| ¦«| d¦«5| dd¬¦«ddd¦«n#1swxYwYddd¦«dS#1swxYwYdS)Nr½r)zmaxItems must be a numberzif {variable}_len > {maxItems}:z:{name} must contain less than or equal to {maxItems} itemsrkr¾r•s r[rHz'CodeGeneratorDraft04.generate_max_itemsQsp€Ø×$Ò$Ñ&Ô&Ð&Ø
VŠVÐ,Ñ
-Ô
-ð	hð	hݘdÔ.¨zÔ:½SÅ%¸LÑIÔIð
QÝ3Ð4OÑPÔPÐPØ×,Ò,Ñ.Ô.Ð.Ø—’Ð9Ñ:Ô:ð
hð
hØ—’ÐUÐ\fÑgÔgÐgð
hð
hð
hñ
hô
hð
hð
hð
hð
hð
hð
høøøð
hð
hð
hð
hð		hð	hð	hñ	hô	hð	hð	hð	hð	hð	hð	hð	høøøð	hð	hð	hð	hð	hð	hrÀcó†—|jd}|sdS| ¦«| d¦«5| d¦«| ¦«| d¦«5| dd¬¦«ddd¦«n#1swxYwYddd¦«dS#1swxYwYdS)a²
        With Python 3.4 module ``timeit`` recommended this solutions:

        .. code-block:: python

            >>> timeit.timeit("len(x) > len(set(x))", "x=range(100)+range(100)", number=100000)
            0.5839540958404541
            >>> timeit.timeit("len({}.fromkeys(x)) == len(x)", "x=range(100)+range(100)", number=100000)
            0.7094449996948242
            >>> timeit.timeit("seen = set(); any(i in seen or seen.add(i) for i in x)", "x=range(100)+range(100)", number=100000)
            2.0819358825683594
            >>> timeit.timeit("np.unique(x).size == len(x)", "x=range(100)+range(100); import numpy as np", number=100000)
            2.1439831256866455
        r*Nr½zØdef fn(var): return frozenset(dict((k, fn(v)) for k, v in var.items()).items()) if hasattr(var, "items") else tuple(fn(v) for v in var) if isinstance(var, (dict, list)) else str(var) if isinstance(var, bool) else varzNif {variable}_len > len(set(fn({variable}_x) for {variable}_x in {variable})):z {name} must contain unique itemsrk)rmr¿rqr“rr)rSÚunique_definitions  r[rIz*CodeGeneratorDraft04.generate_unique_itemsZs{€ð!Ô,¨]Ô;ÐØ ð	ØˆFà×$Ò$Ñ&Ô&Ð&Ø
VŠVÐ,Ñ
-Ô
-ð	Qð	QØFŠFð4ñ
5ô
5ð
5ð
×,Ò,Ñ.Ô.Ð.Ø—’ÐhÑiÔið
Qð
QØ—’Ð;À-ÑPÔPÐPð
Qð
Qð
Qñ
Qô
Qð
Qð
Qð
Qð
Qð
Qð
Qøøøð
Qð
Qð
Qð
Qð	Qð	Qð	Qñ	Qô	Qð	Qð	Qð	Qð	Qð	Qð	Qð	Qøøøð	Qð	Qð	Qð	Qð	Qð	Qs5»?B6Á:BÂB6ÂB"	Â"B6Â%B"	Â&B6Â6B:Â=B:cóÔ—|jd}|durdS| ¦«| d¦«5| ¦«|durF| d¦«5| dd¬¦«ddd¦«n#1swxYwYn´t|t¦«rt|¦«D]Û\}}| d	|¦«5| d
|¦«| |d 	|j
|¦«d 	|j|¦«¦«ddd¦«n#1swxYwY|jrBt|t¦«r-d
|vr)| dt|d
¦«¦«ŒÜd|jvr|jddurT| d	t|¦«¦«5| dd¬¦«ddd¦«n#1swxYwYnF| dt|¦«¦«5| |jdd 	|j
¦«d 	|j|j
¦«¦«}|dkr| d¦«ddd¦«n#1swxYwYn—|r•| d¦«5| |d 	|j
¦«d 	|j|j
¦«¦«}|dkr| d¦«ddd¦«n#1swxYwYddd¦«dS#1swxYwYdS)aÓ
        Means array is valid only when all items are valid by this definition.

        .. code-block:: python

            {
                'items': [
                    {'type': 'integer'},
                    {'type': 'string'},
                ],
            }

        Valid arrays are those with integers or strings, nothing else.

        Since draft 06 definition can be also boolean. True means nothing, False
        means everything is invalid.
        r+TNr½Fzif {variable}:rŽrkzif {variable}_len > {}:z!{variable}__{0} = {variable}[{0}]ú{}__{}z{}[{}]Údefaultzelse: {variable}.append({})ÚadditionalItemsz({name} must contain only specified itemszFfor {variable}_x, {variable}_item in enumerate({variable}[{0}:], {0}):z{}_itemz{}[{{{}_x}}]rÚpassz;for {variable}_x, {variable}_item in enumerate({variable}):)rmr¿rqr“rrrwrxÚ	enumerater~r$rprr7rr¡Úlen)rSÚitems_definitionÚidxÚitem_definitionrƒs     r[rJz#CodeGeneratorDraft04.generate_items{s€ð$ Ô+¨GÔ4ÐØ˜tÐ#Ð#ØˆFà×$Ò$Ñ&Ô&Ð&Ø
VŠVÐ,Ñ
-Ô
-ð'	+ð'	+Ø×,Ò,Ñ.Ô.Ð.Ø 5Ð(Ð(Ø—V’VÐ,Ñ-Ô-ðGðGØ—H’HÐ7¸gHÑFÔFÐFðGðGðGñGôGðGðGðGðGðGðGøøøðGðGðGðGùåÐ,­dÑ3Ô3ñ"
+Ý,5Ð6FÑ,GÔ,Gð	`ð	`Ñ(C˜ØŸšÐ 9¸3Ñ?Ô?ððØŸšÐBÀCÑHÔHÐHØ×5Ò5Ø+Ø$ŸOšO¨D¬N¸CÑ@Ô@Ø$ŸOšO¨DÔ,?ÀÑEÔEñôððððñôððððððøøøðððððÔ(ð`­Z¸ÍÑ-NÔ-Nð`ÐS\Ð`oÐSoÐSoØŸšÐ<½dÀ?ÐS\ÔC]Ñ>^Ô>^Ñ_Ô_Ð_øà$¨Ô(8Ð8Ñ8ØÔ'Ð(9Ô:¸eÐCÐCØ!ŸVšVÐ$=½sÐCSÑ?TÔ?TÑUÔUð_ð_Ø ŸHšHÐ%OÐV]˜HÑ^Ô^Ð^ð_ð_ð_ñ_ô_ð_ð_ð_ð_ð_ð_øøøð_ð_ð_ð_ùð"ŸVšVÐ$lÕnqðsCñoDôoDñEôEð/ð/Ø$(×$AÒ$AØ $Ô 0Ð1BÔ CØ )× 0Ò 0°´Ñ @Ô @Ø .× 5Ò 5°dÔ6IÈ4Ì>Ñ ZÔ Zñ%ô%˜Eð
 %¨šz˜zØ $§¢ v¡¤ ð/ð/ð/ñ/ô/ð/ð/ð/ð/ð/ð/øøøð/ð/ð/ð/øð$ð+ØŸšÐ ]Ñ^Ô^ð+ð+Ø $× =Ò =Ø,Ø%×,Ò,¨T¬^Ñ<Ô<Ø*×1Ò1°$Ô2EÀtÄ~ÑVÔVñ!ô!˜ð
! Aš:˜:Ø ŸFšF 6™NœN˜Nð+ð+ð+ñ+ô+ð+ð+ð+ð+ð+ð+øøøð+ð+ð+ð+ðA'	+ð'	+ð'	+ñ'	+ô'	+ð'	+ð'	+ð'	+ð'	+ð'	+ð'	+ð'	+øøøð'	+ð'	+ð'	+ð'	+ð'	+ð'	+sʽ.MÁ+BÂMÂB	ÂMÂB	ÂAMÃA EÄ<MÅEÅMÅEÅB	MÇG=Ç1MÇ=H	ÈMÈH	È(MÈ-A4J-Ê!MÊ-J1	Ê1MÊ4J1	Ê5MËA)MÌ9MÍM		Í	MÍM		Í
MÍM!Í$M!có¦—| ¦«| d¦«5t|jdtt
f¦«st
d¦«‚| ¦«| d¦«5| dd¬¦«ddd¦«n#1swxYwYddd¦«dS#1swxYwYdS)Núif {variable}_is_dict:r,zminProperties must be a numberz$if {variable}_len < {minProperties}:z7{name} must contain at least {minProperties} propertiesrk©	Úcreate_variable_is_dictrqrwrmr	r”rr“rrr•s r[rKz,CodeGeneratorDraft04.generate_min_properties»sp€Ø×$Ò$Ñ&Ô&Ð&Ø
VŠVÐ,Ñ
-Ô
-ð	jð	jݘdÔ.¨Ô?Å#ÅuÀÑNÔNð
VÝ3Ð4TÑUÔUÐUØ×,Ò,Ñ.Ô.Ð.Ø—’Ð>Ñ?Ô?ð
jð
jØ—’ÐRÐYhÑiÔiÐið
jð
jð
jñ
jô
jð
jð
jð
jð
jð
jð
jøøøð
jð
jð
jð
jð		jð	jð	jñ	jô	jð	jð	jð	jð	jð	jð	jð	jøøøð	jð	jð	jð	jð	jð	jrÀcó¦—| ¦«| d¦«5t|jdtt
f¦«st
d¦«‚| ¦«| d¦«5| dd¬¦«ddd¦«n#1swxYwYddd¦«dS#1swxYwYdS)NrÏr-zmaxProperties must be a numberz$if {variable}_len > {maxProperties}:zD{name} must contain less than or equal to {maxProperties} propertiesrkrÐr•s r[rLz,CodeGeneratorDraft04.generate_max_propertiesÄsp€Ø×$Ò$Ñ&Ô&Ð&Ø
VŠVÐ,Ñ
-Ô
-ð	wð	wݘdÔ.¨Ô?Å#ÅuÀÑNÔNð
VÝ3Ð4TÑUÔUÐUØ×,Ò,Ñ.Ô.Ð.Ø—’Ð>Ñ?Ô?ð
wð
wØ—’Ð_ÐfuÑvÔvÐvð
wð
wð
wñ
wô
wð
wð
wð
wð
wð
wð
wøøøð
wð
wð
wð
wð		wð	wð	wñ	wô	wð	wð	wð	wð	wð	wð	wð	wøøøð	wð	wð	wð	wð	wð	wrÀc	óN‡—‰ ¦«‰ d¦«5t‰jdtt
f¦«st
d¦«‚t‰jd¦«tt‰jd¦«¦«krt
d¦«‚‰j 	dd¦«sCˆfd„‰jdD¦«}|r(t
d 
‰j|¦«¦«‚‰ d	¦«‰ d
¦«5d}‰ d‰ 
‰jd¦«d|¬
¦«ddd¦«n#1swxYwYddd¦«dS#1swxYwYdS)NrÏr.zrequired must be an arrayz%required must contain unique elementsr2Tc	󸕇—g|]UЉ‰j di¦«v¯tˆfd„‰j di¦«D¦«¦«°S‰‘ŒVS)r0c3óB•K—|]}tj|‰¦«V—ŒdSrc)ržÚsearch)rer¦Úprops  €r[rgzDCodeGeneratorDraft04.generate_required.<locals>.<listcomp>.<genexpr>Ús/øèè€Ð#vÐ#v¸u¥B¤I¨e°TÑ$:Ô$:Ð#vÐ#vÐ#vÐ#vÐ#vÐ#vr\r1)rmr·Úany)rer×rSs @€r[ú
<listcomp>z:CodeGeneratorDraft04.generate_required.<locals>.<listcomp>Õs€øø€ð ð ð àà DÔ$4×$8Ò$8¸ÀrÑ$JÔ$JÐJÐJÝ #Ð#vÐ#vÐ#vÐ#vÈÔHX×H\ÒH\Ð]pÐrtÑHuÔHuÐ#vÑ#vÔ#vÑ vÔ vðKððKÐJÐJr\z){}: items {} are required but not allowedz>{variable}__missing_keys = set({required}) - {variable}.keys()zif {variable}__missing_keys:z5str(sorted({variable}__missing_keys)) + " properties"z{name} must contain )rlr‹)rÑrqrwrmrxryrrÊÚsetr·r$rprrrz)rSÚnot_possiblerŒs`  r[rMz&CodeGeneratorDraft04.generate_requiredÍsaø€Ø×$Ò$Ñ&Ô&Ð&Ø
VŠVÐ,Ñ
-Ô
-ð	ð	ݘdÔ.¨zÔ:½TÅ5¸MÑJÔJð
QÝ3Ð4OÑPÔPÐPݐ4Ô# JÔ/Ñ0Ô0µC½¸DÔ<LÈZÔ<XÑ8YÔ8YÑ4ZÔ4ZÒZÐZÝ3Ð4[Ñ\Ô\Ð\ØÔ#×'Ò'Ð(>ÀÑEÔEð	
Jð ð ð ð à $Ô 0°Ô <ð ñ ô ð ðJÝ7Ð8c×8jÒ8jÐkoÔkyð|Hñ9Iô9IñJôJðJØFŠFÐSÑTÔTÐTØ—’Ð6Ñ7Ô7ð
ð
ØQØ—’Ð/°·²¸Ô8HÈÔ8TÑ1UÔ1UÐ\fÐv}Ñ~Ô~Ð~ð
ð
ð
ñ
ô
ð
ð
ð
ð
ð
ð
øøøð
ð
ð
ð
ð!	ð	ð	ñ	ô	ð	ð	ð	ð	ð	ð	ð	øøøð	ð	ð	ð	ð	ð	s6«DFÄ<:FÅ6FÆF	ÆFÆ	F	Æ
FÆFÆ!Fc
óT—| ¦«| d¦«5| ¦«|jd ¦«D]¯\}}tjdd|¦«}t|ttf¦«s(td |j|¦«¦«‚| d| 
|¦«¦«5| d| 
|¦«¦«| d|| 
|¦«¦«| |d	 |j|¦«d
 |j| 
|¦«¦«d¬¦«d
d
d
¦«n#1swxYwY|jrVt|t¦«rAd|vr=| d| 
|¦«t#|d¦«¦«Œ±	d
d
d
¦«d
S#1swxYwYd
S)a
        Means object with defined keys.

        .. code-block:: python

            {
                'properties': {
                    'key': {'type': 'number'},
                },
            }

        Valid object is containing key called 'key' and value any number.
        rÏr0z($[^a-zA-Z]|[^a-zA-Z0-9])rhz{}[{}] must be objectzif "{}" in {variable}_keys:z{variable}_keys.remove("{}")z#{variable}__{0} = {variable}["{1}"]rÅz{}.{}Tr|NrÆzelse: {variable}["{}"] = {})rÑrqÚcreate_variable_keysrmr+ržrrwrrrr$rprzr~rr7r¡)rSÚkeyÚprop_definitionÚkey_names    r[rOz(CodeGeneratorDraft04.generate_propertiesãs–€ð	
×$Ò$Ñ&Ô&Ð&Ø
VŠVÐ,Ñ
-Ô
-ð	ið	iØ×%Ò%Ñ'Ô'Ð'Ø(,Ô(8¸Ô(F×(LÒ(LÑ(NÔ(Nð
iñ
iÑ$_Ýœ6Ð">ÀÀCÑHÔHÝ! /µD½$°<Ñ@Ô@ðrÝ7Ð8O×8VÒ8VÐW[ÔWeÐgoÑ8pÔ8pÑqÔqÐqØ—V’VÐ9¸4¿6º6À#¹;¼;ÑGÔGððØ—F’FÐ9¸4¿6º6À#¹;¼;ÑGÔGÐGØ—F’FÐ@À(ÈDÏFÊFÐSVÉKÌKÑXÔXÐXØ×1Ò1Ø'Ø Ÿš¨¬¸ÑAÔAØŸš tÔ':¸D¿FºFÀ3¹K¼KÑHÔHØ(,ð	2ñôððððñôððððððøøøðððððÔ$ði­°OÅTÑ)JÔ)JðiÈyÐ\kÐOkÐOkØ—F’FÐ8¸$¿&º&À¹+¼+ÅtÈOÐ\eÔLfÑGgÔGgÑhÔhÐhùð
ið	ið	ið	iñ	iô	ið	ið	ið	ið	ið	ið	ið	iøøøð	ið	ið	ið	ið	ið	is8ªB=HÃ'B2F%ÆHÆ%F)Æ)HÆ,F)Æ-A"HÈH!È$H!cór—| ¦«| d¦«5| ¦«|jd ¦«D]!\}}tj|¦«|j|<Œ"| d¦«5|jd ¦«D]Ñ\}}| dt|¦«¦«5| d¦«5| d¦«ddd¦«n#1swxYwY| 	|d 
|j¦«d	 
|j|j¦«d
¬¦«ddd¦«n#1swxYwYŒÒ	ddd¦«n#1swxYwYddd¦«dS#1swxYwYdS)a4
        Means object with defined keys as patterns.

        .. code-block:: python

            {
                'patternProperties': {
                    '^x': {'type': 'number'},
                },
            }

        Valid object is containing key starting with a 'x' and value any number.
        rÏr1z9for {variable}_key, {variable}_val in {variable}.items():z-if REGEX_PATTERNS[{}].search({variable}_key):z%if {variable}_key in {variable}_keys:z&{variable}_keys.remove({variable}_key)Nz{}_valú
{}.{{{}_key}}Tr|)
rÑrqrÝrmr+ržrŸr r¡r~r$rpr)rSr#rTs   r[rPz0CodeGeneratorDraft04.generate_pattern_propertiessÇ€ð	
×$Ò$Ñ&Ô&Ð&Ø
VŠVÐ,Ñ
-Ô
-ð	ð	Ø×%Ò%Ñ'Ô'Ð'Ø'+Ô'7Ð8KÔ'L×'RÒ'RÑ'TÔ'Tð
Eð
EÑ#˜Ý13´¸GÑ1DÔ1DÔ% gÑ.Ð.Ø—’ÐSÑTÔTð

ð

Ø+/Ô+;Ð<OÔ+P×+VÒ+VÑ+XÔ+Xð	ð	Ñ'G˜ZØŸšÐ OÕQUÐV]ÑQ^ÔQ^Ñ_Ô_ððØ!ŸVšVÐ$KÑLÔLðMðMØ ŸFšFÐ#KÑLÔLÐLðMðMðMñMôMðMðMðMðMðMðMøøøðMðMðMðMà×5Ò5Ø&Ø$ŸOšO¨D¬NÑ;Ô;Ø+×2Ò2°4Ô3FÈÌÑWÔWØ,0ð	6ñôððððñôððððððøøøððððøð	ð

ð

ð

ñ

ô

ð

ð

ð

ð

ð

ð

øøøð

ð

ð

ð

ð		ð	ð	ñ	ô	ð	ð	ð	ð	ð	ð	ð	øøøð	ð	ð	ð	ð	ð	s€ªA+F,ÂAFÃE;	Ã3DÄ	E;	ÄDÄE;	ÄDÄAE;	Å/FÅ;E?
Å?FÆE?
ÆFÆF,ÆF	ÆF,ÆF	ÆF,Æ,F0Æ3F0cóx—| ¦«| d¦«5| ¦«|jd}|dus|ikr	ddd¦«dS|røt	|j di¦« ¦«¦«}| d¦«5| d|¦«5| d¦«| |d	 |j	¦«d
 |j
|j	¦«¦«ddd¦«n#1swxYwYddd¦«n#1swxYwYnD| d¦«5| dd¬
¦«ddd¦«n#1swxYwYddd¦«dS#1swxYwYdS)aŸ
        Means object with keys with values defined by definition.

        .. code-block:: python

            {
                'properties': {
                    'key': {'type': 'number'},
                }
                'additionalProperties': {'type': 'string'},
            }

        Valid object is containing key called 'key' and it's value any number and
        any other key with any string.
        rÏr2TNr0z&for {variable}_key in {variable}_keys:zif {variable}_key not in {}:z1{variable}_value = {variable}.get({variable}_key)z{}_valuerâzif {variable}_keys:z;{name} must not contain "+str({variable}_keys)+" propertiesrk)rÑrqrÝrmrxr·Úkeysr~r$rprrr)rSÚadd_prop_definitionÚproperties_keyss   r[rQz3CodeGeneratorDraft04.generate_additional_properties#s€ð 	
×$Ò$Ñ&Ô&Ð&Ø
VŠVÐ,Ñ
-Ô
-ð	yð	yØ×%Ò%Ñ'Ô'Ð'Ø"&Ô"2Ð3IÔ"JÐØ" dÐ*Ð*Ð.AÀRÒ.GÐ.GØð		yð	yð	yñ	yô	yð	yð	yð	yð
#ð
yÝ"& tÔ'7×';Ò';¸LÈ"Ñ'MÔ'M×'RÒ'RÑ'TÔ'TÑ"UÔ"UØ—V’VÐDÑEÔEððØŸšÐ >ÀÑPÔPððØŸšÐRÑSÔSÐSØ×5Ò5Ø/Ø&×-Ò-¨d¬nÑ=Ô=Ø+×2Ò2°4Ô3FÈÌÑWÔWñôððððñôððððððøøøðððððððñôððððððøøøððððøð—V’VÐ1Ñ2Ô2ðyðyØ—H’HÐZÐawHÑxÔxÐxðyðyðyñyôyðyðyðyðyðyðyøøøðyðyðyðyð!	yð	yð	yñ	yô	yð	yð	yð	yð	yð	yð	yð	yøøøð	yð	yð	yð	yð	yð	ys…ª-F/Á$AF/Â5EÃA#D;Ä/EÄ;D?Ä?EÅD?ÅEÅF/ÅE	ÅF/ÅE	ÅF/Å3FÆF/ÆF	ÆF/ÆF	ÆF/Æ/F3Æ6F3có\—| ¦«| d¦«5d}|jd ¦«D]/\}}|gks|durŒd}| d| |¦«¦«5|dur| d|d¬¦«n¾t
|t¦«r†|D]‚}| d| |¦«¦«5| d	| |¦«| |¦«d¬¦«d
d
d
¦«n#1swxYwYŒƒn#| ||j	|j
d¬¦«d
d
d
¦«n#1swxYwYŒ1|r| d¦«d
d
d
¦«d
S#1swxYwYd
S)
aþ
        Means when object has property, it needs to have also other property.

        .. code-block:: python

            {
                'dependencies': {
                    'bar': ['foo'],
                },
            }

        Valid object is containing only foo, both bar and foo or none of them, but not
        object with only bar.

        Since draft 06 definition can be boolean or empty array. True and empty array
        means nothing, False means that key cannot be there at all.
        rÏTr/Fzif "{}" in {variable}:z{} in {name} must not be thererkzif "{}" not in {variable}:z#{name} missing dependency {} for {}Nr|rÈ)rÑrqrmr+rzrrrwrxr~rpr)rSÚis_emptyrÞÚvaluesÚvalues     r[rNz*CodeGeneratorDraft04.generate_dependenciesGs²€ð$	
×$Ò$Ñ&Ô&Ð&Ø
VŠVÐ,Ñ
-Ô
-ð	ð	؈HØ#Ô/°Ô?×EÒEÑGÔGð
yñ
y‘VؘR’<< 6¨T > >ØØ Ø—V’VÐ4°d·f²f¸S±k´kÑBÔBðyðyØ ØŸšÐ!AÀ3È^˜Ñ\Ô\Ð\Ð\Ý# F­DÑ1Ô1ðyØ%+ðAðA˜EØ!%§¢Ð(DÀdÇfÂfÈUÁmÄmÑ!TÔ!TðAðAØ $§¢Ð)NÐPT×PVÒPVÐW\ÑP]ÔP]Ð_c×_eÒ_eÐfiÑ_jÔ_jÐq ñ!Aô!Að!AðAðAðAñAôAðAðAðAðAðAðAøøøðAðAðAðAøðAð×5Ò5°f¸d¼nÈdÔNaÐswÐ5ÑxÔxÐxðyðyðyñyôyðyðyðyðyðyðyøøøðyðyðyðyùðð
Ø—’v‘”ð!	ð	ð	ñ	ô	ð	ð	ð	ð	ð	ð	ð	øøøð	ð	ð	ð	ð	ð	s\ªAF!ÂA E0Ã(AD4Ä(E0Ä4D8Ä8E0Ä;D8Ä<(E0Å$F!Å0E4Å4F!Å7E4Å8F!Æ!F%Æ(F%)!Ú__name__Ú
__module__Ú__qualname__r¨r4Úpropertyr_r:r;r<r=r>r?r@rArBrCr§rDrErFrGrHrIrJrKrLrMrOrPrQrNÚ
__classcell__)rZs@r[rrsWø€€€€€ðDØBðNØfðrØ'ð
ð€Mð-1¸"È$Ð\`Ðvzð &ð &ð &ð &ð &ð &ðDððððñ„Xðð
KðKðKð,LðLðLð vðvðvð&SðSðSð<sðsðsð>VðVðVð6lðlðlðmðmðmðWðWðWð!Zð!Zð!ZðHJðJðJð	að	að	að	bð	bð	bðAðAðAð [ð[ð[ðhðhðhðQðQðQðB>+ð>+ð>+ð@jðjðjðwðwðwðððð,iðiðiðBððð>"yð"yð"yðH#ð#ð#ð#ð#ð#ð#r\r)rµržÚ
exceptionsrÚ	generatorrrrdrŸrœr©r\r[ú<module>rós¶ðØ€€€Ø	€	€	€	à5Ð5Ð5Ð5Ð5Ð5Ø2Ð2Ð2Ð2Ð2Ð2Ð2Ð2ð
ØØ#ØØØ
ØððÐð”
˜<Ñ(Ô(€
ðT	ðT	ðT	ðT	ðT	˜=ñT	ôT	ðT	ðT	ðT	r\