ó
    û¦Ögg3  ã                  óò  • S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKJr  S SK	J
r
  S SKJrJrJrJrJrJrJrJrJrJrJr  S SKJrJr  S SKJr  \(       a  S SKJr  \R<                  " S	5      r\" S
5      r  " S S\\    5      r! " S S\"5      r#\\$\!4   r%\\%   r&\\\$\"4      r'\\\$\$4      r( " S S\5      r)\RT                  " SS9SS j5       r+ " S S\)5      r,\
SS j5       r- SSS.     SS jjjr.g)é    )ÚannotationsN)ÚUserDict)Úcontextmanager)ÚIOÚTYPE_CHECKINGÚAnyÚGenericÚIteratorÚListÚMappingÚSequenceÚTupleÚTypeVarÚoverload)Ú
exceptionsÚutils)Úweak_property©ÚMkDocsConfigzmkdocs.configÚTc                  óÎ   • \ rS rSrSS jr\S 5       r\R                  S 5       rSS jrSS jr	SS jr
SS jrSS	 jrS
 r\SSS jj5       r\SSS jj5       rSS jrSS jrSrg)ÚBaseConfigOptioné%   c                ó    • / U l         S U l        g ©N)ÚwarningsÚdefault©Úselfs    Ú4/usr/lib/python3/dist-packages/mkdocs/config/base.pyÚ__init__ÚBaseConfigOption.__init__&   s   € Ø#%ˆŒØˆ�ó    c                óp   •  U R                   R                  5       $ ! [         a    U R                   s $ f = fr   )Ú_defaultÚcopyÚAttributeErrorr   s    r    r   ÚBaseConfigOption.default*   s3   € ð	!à—=‘=×%Ñ%Ó'Ð'øÜó 	!Ø—=‘=Ò ð	!ús   ‚ œ5´5c                ó   • Xl         g r   )r%   ©r   Úvalues     r    r   r(   2   s   € à�r#   c               ó$   • U R                  U5      $ r   )Úrun_validationr*   s     r    ÚvalidateÚBaseConfigOption.validate6   s   € Ø×"Ñ" 5Ó)Ð)r#   c                ó   • / U l         g r   )r   r   s    r    Úreset_warningsÚBaseConfigOption.reset_warnings9   s	   € Øˆ�r#   c                ó   • g)z�
Before all options are validated, perform a pre-validation process.

The pre-validation process method should be implemented by subclasses.
N© ©r   ÚconfigÚkey_names      r    Úpre_validationÚBaseConfigOption.pre_validation<   ó   � r#   c               ó   • U$ )za
Perform validation for a value.

The run_validation method should be implemented by subclasses.
r4   r*   s     r    r-   ÚBaseConfigOption.run_validationC   s	   € ð ˆr#   c                ó   • g)zÕ
After all options have passed validation, perform a post-validation
process to do any additional changes dependent on other config values.

The post-validation process method should be implemented by subclasses.
Nr4   r5   s      r    Úpost_validationÚ BaseConfigOption.post_validationK   r:   r#   c                ór   • UR                  S5      (       a  UR                  S5      (       d  US S nX l        g )NÚ_éÿÿÿÿ)ÚendswithÚ
startswithÚ_name)r   ÚownerÚnames      r    Ú__set_name__ÚBaseConfigOption.__set_name__S   s/   € Ø�=‰=˜×Ñ d§o¡o°c×&:Ñ&:Ø˜˜�9ˆDØ�
r#   Nc                ó   • g r   r4   ©r   ÚobjÚtypes      r    Ú__get__ÚBaseConfigOption.__get__X   ó   € àr#   c                ó   • g r   r4   rK   s      r    rN   rO   \   rP   r#   c                óL   • [        U[        5      (       d  U $ XR                     $ r   )Ú
isinstanceÚConfigrE   rK   s      r    rN   rO   `   s    € Ü˜#œv×&Ñ&ØˆKØ—:‘:‰Ðr#   c                ó    • [        U[        5      (       d+  [        SU R                   S[	        U5       S[         35      eX!U R                  '   g )Nzcan't set attribute (z) because the parent is a z not a )rS   rT   r'   rE   rM   )r   rL   r+   s      r    Ú__set__ÚBaseConfigOption.__set__e   sL   € Ü˜#œv×&Ñ&Ü Ø'¨¯
©
 |Ð3MÌdÐSVËiÈ[ÐX_Ô`fÐ_gÐhóð ð  ˆD�J‰JŠr#   )r%   rE   r   r   ©ÚreturnÚNone)r+   ÚobjectrY   r   )r6   rT   r7   ÚstrrY   rZ   )r+   r[   r   )rL   rT   rY   r   )rY   r   )r+   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r!   Úpropertyr   Úsetterr.   r1   r8   r-   r>   rH   r   rN   rV   Ú__static_attributes__r4   r#   r    r   r   %   sƒ   † ôð ñ!ó ð!ð ‡^�^ñó ðô*ôôôôòð
 õó ðð õó ðô÷
 r#   r   c                  ó   • \ rS rSrSrS rSrg)ÚValidationErrorém   z=Raised during the validation process of the config on errors.c                ój   • [        U 5      [        U5      L =(       a    [        U 5      [        U5      :H  $ r   )rM   r\   )r   Úothers     r    Ú__eq__ÚValidationError.__eq__p   s'   € Ü�D‹zœT %›[Ð(×D¬S°«Y¼#¸e»*Ñ-DÐDr#   r4   N)r]   r^   r_   r`   Ú__doc__ri   rc   r4   r#   r    re   re   m   s   † ÙGõEr#   re   c                  óº   ^ • \ rS rSr% SrS\S'   S\S'   S rSU 4S jjrSSU 4S	 jjjrSS
 jr	SS jr
SS jrSS jrSS jrSS jrSS jr\SS j5       rSrU =r$ )rT   é{   a@  
Base class for MkDocs configuration, plugin configuration (and sub-configuration) objects.

It should be subclassed and have `ConfigOption`s defined as attributes.
For examples, see mkdocs/contrib/search/__init__.py and mkdocs/config/defaults.py.

Behavior as it was prior to MkDocs 1.4 is now handled by LegacyConfig.
ÚPlainConfigSchemaÚ_schemar\   Úconfig_file_pathc                óˆ  • [        [        U SS5      5      nU R                  R                  5        H+  u  p#[	        U[
        5      (       d  M  X1[        USU5      '   M-     [        UR                  5       5      U l        U R                   H5  u  p#SUl        [        USS 5      c  M  [        U R                   SU S35      e   g )Nro   r4   rE   TÚ_legacy_requiredÚ.zƒ: Setting 'required' is unsupported in class-based configs. All values are required, or can be wrapped into config_options.Optional)ÚdictÚgetattrÚ__dict__ÚitemsrS   r   Útuplero   ÚrequiredÚ	TypeErrorr]   )ÚclsÚschemaÚ	attr_nameÚattrs       r    Ú__init_subclass__ÚConfig.__init_subclass__ˆ   s°   € Ü”g˜c 9¨bÓ1Ó2ˆØ"Ÿ|™|×1Ñ1Ö3‰OˆIÜ˜$Ô 0×1Ó1Ø<@”w˜t W¨iÓ8Ó9ñ  4ô ˜FŸL™L›NÓ+ˆŒà"Ÿ{œ{‰OˆIØ ˆDŒMÜ�tÐ/°Ó6ÓBÜØ—|‘|�n A i [ð 1^ð ^óð ò  +r#   c                óJ   >• U [         L a  [        U0 UD6$ [        TU ]  U 5      $ )zSCompatibility: allow referring to `LegacyConfig(...)` constructor as `Config(...)`.)rT   ÚLegacyConfigÚsuperÚ__new__)r{   ÚargsÚkwargsÚ	__class__s      €r    r„   ÚConfig.__new__˜   s)   ø€ à”&Š=Ü Ð0¨Ñ0Ð0Ü‰w‰˜sÓ#Ð#r#   c                óp  >• [         TU ]  5         / U l        U R                  5         U R                   VVs1 s H  u  p#UiM	     snnU l        Ub8  [        U[        5      (       d#   UR                  [        R                  " 5       S9nU=(       d    SU l        g s  snnf ! [         a    [        S5      ef = f)N)Úencodingz)config_file_path is not a Unicode string.Ú )rƒ   r!   Ú_Config__user_configsÚset_defaultsro   Ú_schema_keysrS   r\   ÚdecodeÚsysÚgetfilesystemencodingÚUnicodeDecodeErrorre   rp   )r   rp   ÚkÚvr‡   s       €r    r!   ÚConfig.__init__ž   s¨   ø€ Ü‰ÑÔØ*,ˆÔØ×ÑÔà+/¯<ª<Ô8ª<¡4 1›Q©<Ò8ˆÔàÑ'´
Ð;KÌS×0QÑ0QðSà#3×#:Ñ#:ÄC×D]ÒD]ÓD_Ð#:Ð#`Ð ð !1× 6°BˆÕùó 9øô &ó SÜ%Ð&QÓRÐRðSús   ¶BÁ&"B ÂB5c                óJ   • U R                    H  u  pUR                  X'   M     g)z\
Set the base config by going through each validator and getting the
default if it has one.
N)ro   r   )r   ÚkeyÚconfig_options      r    r�   ÚConfig.set_defaults­   s"   € ð
 #'§,¤,ÑˆCØ%×-Ñ-ˆD‹Iò #/r#   c                óÖ  ^• / n/ nU R                    Hb  u  mn U R                  T5      nUR                  U5      U T'   UR                  " U4S jUR                   5       5        UR                  5         Md     [        U R                  5       5      U R                  -
   H  mUR                  " TST 345        M     X4$ ! [         a  nUR                  TU45         S nA  Mk  S nAff = f)Nc              3  ó,   >#   • U  H	  nTU4v •  M     g 7fr   r4   ©Ú.0Úwr—   s     €r    Ú	<genexpr>Ú#Config._validate.<locals>.<genexpr>½   ó   øé € ÐIÒ2H¨Q  a¥Ò2Hùó   ƒz!Unrecognised configuration name: )ro   Úgetr.   Úextendr   r1   re   ÚappendÚsetÚkeysrŽ   )r   Úfailedr   r˜   r+   Úer—   s         @r    Ú	_validateÚConfig._validateµ   sÕ   ø€ Ø!ˆØ#%ˆà"&§,¤,ÑˆC�ðØŸ™ ›�Ø)×2Ñ2°5Ó9��S‘	Ø—’ÔI°-×2HÒ2HÓIÔIØ×,Ñ,Ö.ñ #/ô �t—y‘y“{Ó# d×&7Ñ&7Ô7ˆCØ�OŠO˜SÐ$EÀcÀUÐ"KÐLÖMñ 8ð ÐÐøô #ó Ø—‘˜s A˜hÔ'Þûðús   ™AB?Â?
C(Ã	C#Ã#C(c                ó"  ^• / n/ nU R                    HM  u  mn UR                  U TS9  UR                  " U4S jUR                   5       5        UR	                  5         MO     X4$ ! [
         a  nUR                  TU45         S nAMw  S nAff = f)N©r7   c              3  ó,   >#   • U  H	  nTU4v •  M     g 7fr   r4   rœ   s     €r    rŸ   Ú'Config._pre_validate.<locals>.<genexpr>Ï   r¡   r¢   )ro   r8   r¤   r   r1   re   r¥   ©r   r¨   r   r˜   r©   r—   s        @r    Ú_pre_validateÚConfig._pre_validateÈ   sŒ   ø€ Ø!ˆØ#%ˆà"&§,¤,ÑˆC�ð(Ø×,Ñ,¨T¸CÐ,Ñ@Ø—’ÔI°-×2HÒ2HÓIÔIØ×,Ñ,Ö.ñ	 #/ð ÐÐøô #ó (Ø—‘˜s A˜h×'Ò'ûð(úó   ™AA&Á&
BÁ0B	Â	Bc                ó"  ^• / n/ nU R                    HM  u  mn UR                  U TS9  UR                  " U4S jUR                   5       5        UR	                  5         MO     X4$ ! [
         a  nUR                  TU45         S nAMw  S nAff = f)Nr­   c              3  ó,   >#   • U  H	  nTU4v •  M     g 7fr   r4   rœ   s     €r    rŸ   Ú(Config._post_validate.<locals>.<genexpr>Ý   r¡   r¢   )ro   r>   r¤   r   r1   re   r¥   r°   s        @r    Ú_post_validateÚConfig._post_validateÖ   sŒ   ø€ Ø!ˆØ#%ˆà"&§,¤,ÑˆC�ð(Ø×-Ñ-¨d¸SÐ-ÑAØ—’ÔI°-×2HÒ2HÓIÔIØ×,Ñ,Ö.ñ	 #/ð ÐÐøô #ó (Ø—‘˜s A˜h×'Ò'ûð(úr³   c                ó  • U R                  5       u  pU R                  5       u  p4UR                  U5        UR                  " U5        [        U5      S:X  a5  U R	                  5       u  pVUR                  U5        UR                  " U5        X4$ )Nr   )r±   rª   r¤   Úlenr·   )r   r¨   r   Ú
run_failedÚrun_warningsÚpost_failedÚpost_warningss          r    r.   ÚConfig.validateä   sz   € Ø×-Ñ-Ó/Ñˆà#'§>¡>Ó#3Ñ ˆ
à�‰�jÔ!Ø�Š˜Ô%ô ˆv‹;˜!ÓØ)-×)<Ñ)<Ó)>Ñ&ˆKØ�M‰M˜+Ô&Ø�OŠO˜MÔ*àÐÐr#   c                óÊ   • [        U[        5      (       d"  [        R                  " S[	        U5       35      eU R
                  R                  U5        U R                  U5        g)z&Load config options from a dictionary.zPThe configuration is invalid. Expected a key-value mapping (dict) but received: N)rS   rt   r   ÚConfigurationErrorrM   rŒ   r¥   Úupdate)r   Úpatchs     r    Ú	load_dictÚConfig.load_dictõ   sX   € ä˜%¤×&Ñ&Ü×/Ò/ð6Ü6:¸5³k°]ðDóð ð
 	×Ñ×"Ñ" 5Ô)Ø�‰�EÕr#   c                ó‚   • [         R                  " S[        5        U R                  [        R
                  " U5      5      $ )zALoad config options from the open file descriptor of a YAML file.zjConfig.load_file is not used since MkDocs 1.5 and will be removed soon. Use MkDocsConfig.load_file instead)r   ÚwarnÚDeprecationWarningrÄ   r   Ú	yaml_load)r   Úconfig_files     r    Ú	load_fileÚConfig.load_file   s0   € ä�Šð1äô	
ð
 �~‰~œeŸošo¨kÓ:Ó;Ð;r#   c                óP   • [         R                  " S[        5        U R                  $ )Nz>user_configs is never used in MkDocs and will be removed soon.)r   rÇ   rÈ   rŒ   r   s    r    Úuser_configsÚConfig.user_configs	  s"   € ä�ŠØLÔN`ô	
ð ×"Ñ"Ð"r#   )Ú__user_configsrŽ   rp   )rY   rT   r   )rp   zstr | bytes | NonerX   )rY   z#tuple[ConfigErrors, ConfigWarnings])rÃ   rt   rY   rZ   )rÊ   r   rY   rZ   )rY   zSequence[Mapping[str, Any]])r]   r^   r_   r`   rk   Ú__annotations__r   r„   r!   r�   rª   r±   r·   r.   rÄ   rË   r   rÎ   rc   Ú__classcell__©r‡   s   @r    rT   rT   {   sa   ø‡ ñð ÓØÓò÷ $÷7ñ 7ô.ô ô& ô ô ô"	ô<ð ó#ó ö#r#   rT   )Úmaxsizec                ó˜   • [        U [        5      (       a  U R                  $ [        S U R                  R                  5        5       5      $ )zeExtract ConfigOptions defined in a class (used just as a container) and put them into a schema tuple.c              3  óZ   #   • U  H!  u  p[        U[        5      (       d  M  X4v •  M#     g 7fr   )rS   r   ©r�   r“   r”   s      r    rŸ   Úget_schema.<locals>.<genexpr>  s"   é € Ð\Ò$8™D˜A¼JÀqÔJZ×<[“�!•Ò$8ùs   ‚+¡
+)Ú
issubclassrT   ro   rx   rv   rw   )r{   s    r    Ú
get_schemarÚ     s9   € ô �#”v×ÑØ�{‰{ÐÜÑ\ C§L¡L×$6Ñ$6Ô$8Ó\Ó\Ð\r#   c                  ó4   ^ • \ rS rSrSrSSU 4S jjjrSrU =r$ )r‚   i  zVA configuration object for plugins, as just a dict without type-safe attribute access.c                óR   >• [        S U 5       5      U l        [        TU ]  U5        g )Nc              3  ó,   #   • U  H
  u  pX4v •  M     g 7fr   r4   r×   s      r    rŸ   Ú(LegacyConfig.__init__.<locals>.<genexpr>  s   é € Ð7²©¨˜a�V²ùs   ‚)rx   ro   rƒ   r!   )r   r|   rp   r‡   s      €r    r!   ÚLegacyConfig.__init__  s#   ø€ ÜÑ7±Ó7Ó7ˆŒÜ‰ÑÐ)Õ*r#   )ro   r   )r|   rn   rp   ú
str | None)r]   r^   r_   r`   rk   r!   rc   rÒ   rÓ   s   @r    r‚   r‚     s   ø† Ù`÷+÷ +r#   r‚   c              #  óª  #   • U c  SS/nO=[        U [        5      (       a  U /nO$[        U SS5      (       a  U R                  /nOU nSnU(       aj  U HG  n[        R
                  R                  U5      n[        R                  SU 35         [        US5      n  OI   [        R                  " SUS	    S
35      e[        R                  SW 35         UR                  S	5         Uv •  [        US5      (       a  UR!                  5         gg! [         a     MÇ  f = f! [         a     NEf = f! [        US5      (       a  UR!                  5         f f = f7f)a~  
A context manager which yields an open file descriptor ready to be read.

Accepts a filename as a string, an open or closed file descriptor, or None.
When None, it defaults to `mkdocs.yml` in the CWD. If a closed file descriptor
is received, a new file descriptor is opened for the same file.

The file descriptor is automatically closed when the context manager block is existed.
Nz
mkdocs.ymlzmkdocs.yamlÚclosedFzLoading configuration file: ÚrbzConfig file 'r   z' does not exist.Úclose)rS   r\   ru   rG   ÚosÚpathÚabspathÚlogÚdebugÚopenÚFileNotFoundErrorr   rÁ   ÚseekÚOSErrorÚhasattrrä   )rÊ   Úpaths_to_tryÚresult_config_fileræ   s       r    Ú_open_config_filerñ   !  sX  é € ð ÑØ$ mÐ4‰ä	�K¤×	%Ñ	%Ø#�}‰ä	�˜h¨×	.Ñ	.Ø#×(Ñ(Ð)‰à(ÐØˆæã ˆDÜ—7‘7—?‘? 4Ó(ˆDÜ�I‰IÐ4°T°FÐ;Ô<ðÜ%)¨$°Ó%5Ð"Ùñ !ô ×/Ò/°-ÀÈQÁÐ?PÐPaÐ0bÓcÐcä�	‰	Ð0Ð1CÐ0DÐEÔFð	Ø×#Ñ# AÔ&ð'Ø Ò äÐ% w×/Ñ/Ø×$Ñ$Õ&ð 0øô %ó Úðûô ó 	Ùð	ûô Ð% w×/Ñ/Ø×$Ñ$Õ&ð 0üs`   ‚B	EÂDÂ9EÃD Ã$D, Ã(#EÄ
DÄEÄDÄEÄ
D)Ä&EÄ(D)Ä)EÄ,$EÅE©rp   c               óÂ  • UR                  5       nUR                  5       R                  5        H  u  pEUb  M
  UR                  U5        M     [        U 5       nSSKJn  Uc?  [        R                  (       a*  U[        R                  R                  La  [        USS5      nU" US9nUR                  U5        SSS5        WR                  U5        UR                  5       u  pšU
 H   u  p¼[        R                  SU SU 35        M"     U	 H   u  p½[        R                  SU SU 35        M"     UR                  5        H!  u  pE[        R!                  SU SU< 35        M#     [#        U	5      S:”  a  [$        R&                  " S	5      eUR(                  (       a2  [#        U
5      S:”  a#  [$        R&                  " S
[#        U
5       S35      eU$ ! , (       d  f       GN= f)a!  
Load the configuration for a given file object or name.

The config_file can either be a file object, string or None. If it is None
the default `mkdocs.yml` filename will loaded.

Extra kwargs are passed to the configuration to replace any default values
unless they themselves are None.
Nr   r   rG   rò   zConfig value 'z': z' = z#Aborted with a configuration error!zAborted with z) configuration warnings in 'strict' mode!)r&   rw   Úpoprñ   Úmkdocs.config.defaultsr   r�   ÚstdinÚbufferru   rË   rÄ   r.   rè   ÚwarningÚerrorré   rº   r   ÚAbortÚstrict)rÊ   rp   r†   Úoptionsr—   r+   Úfdr   ÚcfgÚerrorsr   Úconfig_namerø   rù   s                 r    Úload_configr  T  s’  € ð �k‰k‹m€Gð —l‘l“n×*Ñ*Ö,‰
ˆØ‹=Ø�K‰K˜Öñ -ô 
˜;Ô	'¨2å7àÑ#Ü�y�y˜R¤s§y¡y×'7Ñ'7Ò7Ü#*¨2¨v°tÓ#<Ð ÙÐ,<Ñ=ˆà�‰�bÔ÷ 
(ð ‡M�M�'Ôà—|‘|“~Ñ€Fã (ÑˆÜ�‰�n [ M°°W°IÐ>Ö?ñ !)ó %ÑˆÜ�	‰	�N ; -¨s°5°'Ð:Ö;ñ %ð —i‘i–k‰
ˆÜ�	‰	�N 3 % t¨E©9Ð5Ö6ñ "ô ˆ6ƒ{�QƒÜ×ÒÐDÓEÐEØ	��œ˜H›¨Ó)Ü×ÒØœC ›M˜?Ð*SÐTó
ð 	
ð €J÷A 
(Ö	'ús   ÁA GÇ
G)r{   rM   rY   rn   )rÊ   ústr | IO | NonerY   zIterator[IO]r   )rÊ   r  rp   rà   rY   r   )/Ú
__future__r   Ú	functoolsÚloggingrå   r�   r   Úcollectionsr   Ú
contextlibr   Útypingr   r   r   r	   r
   r   r   r   r   r   r   Úmkdocsr   r   Úmkdocs.utilsr   rõ   r   Ú	getLoggerrè   r   r   Ú	Exceptionre   r\   ÚPlainConfigSchemaItemrn   ÚConfigErrorsÚConfigWarningsrT   Ú	lru_cacherÚ   r‚   rñ   r  r4   r#   r    Ú<module>r     s<  ðÝ "ã Û Û 	Û 
Û Ý  Ý %÷÷ ÷ ñ ÷ %Ý &æÝ3ð ×Ò˜Ó(€ñ ˆCƒL€ôE �w˜q‘zô E ôPE�iô Eð ˜cÐ#3Ð3Ñ4Ð ØÐ2Ñ3Ð à�E˜#˜y˜.Ñ)Ñ*€Ø�e˜C ˜H‘oÑ&€ôS#ˆXô S#ðl ×Ò˜TÑ"ó]ó #ð]ô+�6ô +ð ó/'ó ð/'ðf $(ð4ØKOñ4Ø ð4Ø>Hð4à÷4r#   