ó
    û¦Ög\  ã                  óæ  • 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rS SKrS SK	J
r
  S SKJrJr  S SKJrJrJrJrJrJrJr  S SKJr  S SKrS SKrS SKrS SKJr  \(       a  S SKrS SK J!r!  S S	K"J#r#  \RH                  " \%5      r& " S
 S\RN                  5      r( " S S5      r) " S S5      r*\RV                  RX                  R[                  SS/5      r.SS jr/SS jr0SS jr1SS jr2SS jr3SS jr4g)é    )ÚannotationsN)Úcached_property)ÚPurePathÚPurePosixPath)ÚTYPE_CHECKINGÚCallableÚIterableÚIteratorÚMappingÚSequenceÚoverload)Úquote)Úutils)ÚMkDocsConfig)ÚPagec                  óV   • \ rS rSrSr Sr Sr Sr Sr S r	S r
S	 rS
 rS rS rSrg)ÚInclusionLevelé   éýÿÿÿéþÿÿÿéÿÿÿÿr   é   c                ó   • g©NT© ©Úselfs    Ú8/usr/lib/python3/dist-packages/mkdocs/structure/files.pyÚallÚInclusionLevel.all+   s   € Øó    c                óH   • U R                   U R                  R                   :„  $ ©N©ÚvalueÚDRAFTr   s    r   Úis_includedÚInclusionLevel.is_included.   s   € Ø�z‰z˜DŸJ™J×,Ñ,Ñ,Ð,r!   c                óH   • U R                   U R                  R                   :*  $ r#   r$   r   s    r   Úis_excludedÚInclusionLevel.is_excluded1   ó   € Ø�z‰z˜TŸZ™Z×-Ñ-Ñ-Ð-r!   c                óH   • U R                   U R                  R                   :¬  $ r#   r$   r   s    r   Úis_in_serveÚInclusionLevel.is_in_serve4   r,   r!   c                óH   • U R                   U R                  R                   :„  $ r#   ©r%   Ú
NOT_IN_NAVr   s    r   Ú	is_in_navÚInclusionLevel.is_in_nav7   s   € Ø�z‰z˜DŸO™O×1Ñ1Ñ1Ð1r!   c                óH   • U R                   U R                  R                   :*  $ r#   r1   r   s    r   Úis_not_in_navÚInclusionLevel.is_not_in_nav:   s   € Ø�z‰z˜TŸ_™_×2Ñ2Ñ2Ð2r!   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚEXCLUDEDr&   r2   Ú	UNDEFINEDÚINCLUDEDr   r'   r*   r.   r3   r6   Ú__static_attributes__r   r!   r   r   r      sH   † Ø€HØ9Ø€EØfØ€JØIØ€IØuØ€HØpòò-ò.ò.ò2õ3r!   r   c                  óV  • \ rS rSrSrSS jrSS jrSS jrSS jr\	SS j5       r
\	SS j5       rSS	 jrSS
 jrSS jr S \R                   S.     S!S jjjr\R                   S.   S"S 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5       r\R2                  S&S j5       rSrg)'ÚFilesé>   z<A collection of [File][mkdocs.structure.files.File] objects.c                óR   • U Vs0 s H  o"R                   U_M     snU l        g s  snf r#   )Úsrc_uriÚ	_src_uris)r   ÚfilesÚfs      r   Ú__init__ÚFiles.__init__A   s!   € Ù05Ó6²¨1Ÿ)™) Qš,±Ñ6ˆ�ùÒ6s   …$c                óH   • [        U R                  R                  5       5      $ )zIterate over the files within.)ÚiterrE   Úvaluesr   s    r   Ú__iter__ÚFiles.__iter__D   s   € ä�D—N‘N×)Ñ)Ó+Ó,Ð,r!   c                ó,   • [        U R                  5      $ )zThe number of files within.)ÚlenrE   r   s    r   Ú__len__ÚFiles.__len__H   s   € ä�4—>‘>Ó"Ð"r!   c                óN   • [        U5      R                  5       U R                  ;   $ )z?Soft-deprecated, prefer `get_file_from_path(path) is not None`.)r   Úas_posixrE   ©r   Úpaths     r   Ú__contains__ÚFiles.__contains__L   s   € ä˜‹~×&Ñ&Ó(¨D¯N©NÑ:Ð:r!   c                óF   • U  Vs0 s H  oR                   U_M     sn$ s  snf )z#Soft-deprecated, prefer `src_uris`.)Úsrc_path©r   Úfiles     r   Ú	src_pathsÚFiles.src_pathsP   s#   € ñ 15Ó5²¨—‘˜tÒ#±Ñ5Ð5ùÒ5s   …c                ó   • U R                   $ )zn
A mapping containing every file, with the keys being their
[`src_uri`][mkdocs.structure.files.File.src_uri].
©rE   r   s    r   Úsrc_urisÚFiles.src_urisU   s   € ð �~‰~Ðr!   c                óf   • U R                   R                  [        U5      R                  5       5      $ )z7Return a File instance with File.src_uri equal to path.)rE   Úgetr   rT   rU   s     r   Úget_file_from_pathÚFiles.get_file_from_path]   s$   € à�~‰~×!Ñ!¤(¨4£.×"9Ñ"9Ó";Ó<Ð<r!   c                óÌ   • UR                   U R                  ;   a2  [        R                  " S[        5        U R                  UR                   	 XR                  UR                   '   g)z!Add file to the Files collection.z;To replace an existing file, call `remove` before `append`.N)rD   rE   ÚwarningsÚwarnÚDeprecationWarningr[   s     r   ÚappendÚFiles.appenda   sF   € à�<‰<˜4Ÿ>™>Ó)Ü�MŠMØMÔOaôð —‘˜tŸ|™|Ð,Ø'+�‰�t—|‘|Ò$r!   c                ó‚   •  U R                   UR                  	 g! [         a    [        UR                  < S35      ef = f)z"Remove file from Files collection.z not in collectionN)rE   rD   ÚKeyErrorÚ
ValueErrorr[   s     r   ÚremoveÚFiles.removej   sA   € ð	DØ—‘˜tŸ|™|Ñ,øÜó 	DÜ §¡Ñ/Ð/AÐBÓCÐCð	Dús   ‚ š$>©Ú	inclusionc               ó˜   • U  HD  nUR                  5       (       a  M  U" UR                  5      (       d  M3  UR                  U5        MF     g)z-Copy static files from source to destination.N)Úis_documentation_pagers   Ú	copy_file)r   Údirtyrs   r\   s       r   Úcopy_static_filesÚFiles.copy_static_filesq   s7   € ó ˆDØ×-Ñ-×/Ó/±I¸d¿n¹n×4MÓ4MØ—‘˜uÖ%ò r!   c               ó�   • U  Vs/ s H4  o"R                  5       (       d  M  U" UR                  5      (       d  M2  UPM6     sn$ s  snf )z2Return iterable of all Markdown page file objects.)ru   rs   )r   rs   r\   s      r   Údocumentation_pagesÚFiles.documentation_pages|   s5   € ñ "&Ód¢˜×)CÑ)C×)E“É)ÐTX×TbÑTb×Jc—¡ÑdÐdùÒds   …A¡AºAc                ó^   • U  Vs/ s H  oR                  5       (       d  M  UPM     sn$ s  snf )z0Return iterable of all static page file objects.)Úis_static_pager[   s     r   Ústatic_pagesÚFiles.static_pages‚   s#   € á!%Ó?¢˜×)<Ñ)<×)>—¡Ñ?Ð?ùÒ?ó   …*¡*c                ó^   • U  Vs/ s H  oR                  5       (       d  M  UPM     sn$ s  snf )zPReturn iterable of all file objects which are not documentation or static pages.)Úis_media_filer[   s     r   Úmedia_filesÚFiles.media_files†   ó#   € á!%Ó>¢˜×);Ñ);×)=—¡Ñ>Ð>ùÒ>r�   c                ó^   • U  Vs/ s H  oR                  5       (       d  M  UPM     sn$ s  snf )z/Return iterable of all javascript file objects.)Úis_javascriptr[   s     r   Újavascript_filesÚFiles.javascript_filesŠ   r†   r�   c                ó^   • U  Vs/ s H  oR                  5       (       d  M  UPM     sn$ s  snf )z(Return iterable of all CSS file objects.)Úis_cssr[   s     r   Ú	css_filesÚFiles.css_filesŽ   s    € á!%Ó7¢˜¯©¯—¡Ñ7Ð7ùÒ7r�   c           
     óˆ  ^• U4S jnUR                  US9 H¨  nU R                  U5      b  M  TR                  R                   Hw  n[        R
                  R                  [        R
                  R                  XT5      5      (       d  MF  U R                  [        XETR                  TR                  5      5          M¦     Mª     g)zCRetrieve static files from Jinja environment and add to collection.c                ó0  >• / SQnUR                  S5        UR                  S [        R                   5       5        UR                  TR                  R
                  5        U H/  n[        R                  " U R                  5       U5      (       d  M/    g   g)N)ú.*z*/.*z*.pyz*.pycz*.htmlz*readme*zmkdocs_theme.ymlz	locales/*c              3  ó,   #   • U  H
  nS U 3v •  M     g7f)Ú*Nr   )Ú.0Úxs     r   Ú	<genexpr>Ú=Files.add_files_from_theme.<locals>.filter.<locals>.<genexpr>š   s   é € ÐGÒ-F¨˜a ˜s�GÒ-Fùs   ‚FT)rk   Úextendr   Úmarkdown_extensionsÚthemeÚstatic_templatesÚfnmatchÚlower)ÚnameÚpatternsÚpatternÚconfigs      €r   ÚfilterÚ*Files.add_files_from_theme.<locals>.filter•   sk   ø€ â`ˆHà�O‰O˜KÔ(Ø�O‰OÑG¬U×-FÒ-FÓGÔGØ�O‰O˜FŸL™L×9Ñ9Ô:Û#�Ü—?’? 4§:¡:£<°×9Ó9Ù ñ $ð r!   )Úfilter_funcN)Úlist_templatesre   rš   ÚdirsÚosrV   ÚisfileÚjoinrk   ÚFileÚsite_dirÚuse_directory_urls)r   Úenvr¡   r¢   rV   Údirs     `   r   Úadd_files_from_themeÚFiles.add_files_from_theme’   s‰   ø€ õ
	ð ×&Ñ&°6Ð&Ó:ˆDà×&Ñ& tÓ,Ó4Ø!Ÿ<™<×,Ô,�Cä—w‘w—~‘~¤b§g¡g§l¡l°3Ó&=×>Ó>ØŸ™¤D¨°F·O±OÀV×E^ÑE^Ó$_Ô`Úó	 -ò ;r!   c                ó<   • [         R                  " S[        5        U $ ©NzDo not access Files._files.)rh   ri   rj   r   s    r   Ú_filesÚFiles._filesª   s   € ä�ŠÐ3Ô5GÔHØˆr!   c                óˆ   • [         R                  " S[        5        U Vs0 s H  o"R                  U_M     snU l        g s  snf r²   )rh   ri   rj   rD   rE   )r   r%   rG   s      r   r³   r´   ¯   s1   € ä�ŠÐ3Ô5GÔHÙ05Ó6²¨1Ÿ)™) Qš,±Ñ6ˆ�ùÒ6s    ?r`   N)rF   úIterable[File]ÚreturnÚNone)r·   zIterator[File])r·   Úint)rV   Ústrr·   Úbool)r·   zdict[str, File])r·   zMapping[str, File])rV   rº   r·   zFile | None)r\   rª   r·   r¸   ©F)rw   r»   rs   ú Callable[[InclusionLevel], bool]r·   r¸   )rs   r½   r·   úSequence[File])r·   r¾   )r­   zjinja2.Environmentr¡   r   r·   r¸   )r·   r¶   )r%   r¶   )r8   r9   r:   r;   Ú__doc__rH   rM   rQ   rW   Úpropertyr]   ra   re   rk   rp   r   r'   rx   r{   r   r„   r‰   r�   r¯   r³   Úsetterr?   r   r!   r   rA   rA   >   só   † ÙFô7ô-ô#ô;ð ó6ó ð6ð óó ðô=ô,ôDð ð	&ð 7E×6PÑ6Pñ		&àð	&ð 4ð		&ð
 
ö	&ð @N×?YÑ?YñeØ<ðeà	õeô@ô?ô?ô8ôð0 óó ðð ‡]�]ó7ó ó7r!   rA   c                  ó¶  • \ rS rSr% SrS\S'    S\S'    S\S'    S\S	'    \R                  rS
\S'    Sr	S\S'    Sr
S\S'    \S1S j5       r\R                  S2S j5       r\S1S j5       r\R                  S2S j5       rSrS\S'   \\\R                  S.         S3S jj5       5       r\\\R                  S.         S4S jj5       5       r\SS\R                  S.           S5S jj5       rS\R                  S.             S6S jjrS r\R,                  S7S j5       rS1S jr\" \5      r S8S9S  jjr\" \5      r S8S9S! jjr\" \5      r \S7S" j5       r\S1S# j5       r S:S$ jr!\S;S% j5       r"\"R                  S<S& j5       r"\S1S' j5       r#\#R                  S2S( j5       r#S=S>S) 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*S0r+g)@rª   éµ   a  
A MkDocs File object.

It represents how the contents of one file should be populated in the destination site.

A file always has its `abs_dest_path` (obtained by joining `dest_dir` and `dest_path`),
where the `dest_dir` is understood to be the *site* directory.

`content_bytes`/`content_string` (new in MkDocs 1.6) can always be used to obtain the file's
content. But it may be backed by one of the two sources:

*   A physical source file at `abs_src_path` (by default obtained by joining `src_dir` and
    `src_uri`). `src_dir` is understood to be the *docs* directory.

    Then `content_bytes`/`content_string` will read the file at `abs_src_path`.

    `src_dir` *should* be populated for real files and should be `None` for generated files.

*   Since MkDocs 1.6 a file may alternatively be stored in memory - `content_string`/`content_bytes`.

    Then `src_dir` and `abs_src_path` will remain `None`. `content_bytes`/`content_string` need
    to be written to, or populated through the `content` argument in the constructor.

    But `src_uri` is still populated for such files as well! The virtual file pretends as if it
    originated from that path in the `docs` directory, and other values are derived.

For static files the file is just copied to the destination, and `dest_uri` equals `src_uri`.

For Markdown files (determined by the file extension in `src_uri`) the destination content
will be the rendered content, and `dest_uri` will have the `.html` extension and some
additional transformations to the path, based on `use_directory_urls`.
rº   rD   r»   r¬   ú
str | NoneÚsrc_dirÚdest_dirr   rs   NÚgenerated_byústr | bytes | NoneÚ_contentc                óT   • [         R                  R                  U R                  5      $ )z^Same as `src_uri` (and synchronized with it) but will use backslashes on Windows. Discouraged.)r§   rV   ÚnormpathrD   r   s    r   rZ   ÚFile.src_pathù   s   € ô �w‰w×Ñ §¡Ó-Ð-r!   c                ó@   • [        U5      R                  5       U l        g r#   )r   rT   rD   ©r   r%   s     r   rZ   rÌ   þ   s   € ä “×/Ñ/Ó1ˆ�r!   c                óT   • [         R                  R                  U R                  5      $ )z_Same as `dest_uri` (and synchronized with it) but will use backslashes on Windows. Discouraged.)r§   rV   rË   Údest_urir   s    r   Ú	dest_pathÚFile.dest_path  s   € ô �w‰w×Ñ §¡Ó.Ð.r!   c                ó@   • [        U5      R                  5       U l        g r#   )r   rT   rÐ   rÎ   s     r   rÑ   rÒ     s   € ä  ›×0Ñ0Ó2ˆ�r!   zPage | NoneÚpagerr   c               ó   • g)zp
Create a virtual file backed by in-memory content.

It will pretend to be a file in the docs dir at `src_uri`.
Nr   )Úclsr¡   rD   Úcontentrs   s        r   Ú	generatedÚFile.generated  ó   � r!   c               ó   • g)zŠ
Create a virtual file backed by a physical temporary file at `abs_src_path`.

It will pretend to be a file in the docs dir at `src_uri`.
Nr   )rÖ   r¡   rD   Úabs_src_pathrs   s        r   rØ   rÙ     rÚ   r!   )r×   rÜ   rs   c               óÌ   • USL USL :X  a  [        S5      eU " USUR                  UR                  US9nUR                  R                  =(       d    SUl        XFl        X6l        U$ )z™
Create a virtual file, backed either by in-memory `content` or by a file at `abs_src_path`.

It will pretend to be a file in the docs dir at `src_uri`.
Nz9File must have exactly one of 'content' or 'abs_src_path')rÅ   rÆ   r¬   rs   z	<unknown>)Ú	TypeErrorr«   r¬   ÚpluginsÚ_current_pluginrÇ   rÜ   rÉ   )rÖ   r¡   rD   r×   rÜ   rs   rG   s          r   rØ   rÙ   -  sk   € ð �tˆO °Ð!5Ó6ÜÐWÓXÐXÙØØØ—_‘_Ø%×8Ñ8Øñ
ˆð  Ÿ™×7Ñ7×F¸;ˆŒØ%ŒØŒ
Øˆr!   )rÐ   rs   c               óR   • Xl         X l        X0l        X@l        Ub  XPl        X`l        g r#   )rZ   rÅ   rÆ   r¬   rÐ   rs   )r   rV   rÅ   rÆ   r¬   rÐ   rs   s          r   rH   ÚFile.__init__J  s)   € ð ŒØŒØ ŒØ"4ÔØÑØ$ŒMØ"�r!   c                óØ   • [        U 5      R                   SU R                  < SU R                  < SU R                  < SU R
                  < SU R                  < SU R                   S3$ )NÚ(z
, src_dir=z, dest_dir=z, use_directory_urls=z, dest_uri=z, inclusion=Ú))Útyper8   rD   rÅ   rÆ   r¬   rÐ   rs   r   s    r   Ú__repr__ÚFile.__repr__\  sn   € ä�D‹z×"Ñ"Ð# 1 T§\¡\Ñ$4°J¸t¿|¹|Ñ>Nð OØŸ™Ñ(Ð(=¸d×>UÑ>UÑ=Xð YØŸ™Ñ(¨°T·^±^Ð4DÀAðGð	
r!   c                ó8   • U R                   c  U R                  $ S$ )z©
A path relative to the source repository to use for the "edit" button.

Defaults to `src_uri` and can be overwritten.
For generated files this should be set to `None`.
N)rÇ   rD   r   s    r   Úedit_uriÚFile.edit_uric  s   € ð  $×0Ñ0Ñ8ˆt�|‰|ÐB¸dÐBr!   c                ó†   • [         R                  " U R                  5      n[         R                  " U5      u  p#US:X  a  S$ U$ )úSoft-deprecated, do not use.ÚREADMEÚindex)Ú	posixpathÚbasenamerD   Úsplitext)r   ÚfilenameÚstemÚexts       r   Ú	_get_stemÚFile._get_stemm  s:   € ä×%Ò% d§l¡lÓ3ˆÜ×&Ò& xÓ0‰	ˆØ (Ó*ˆwÐ4°Ð4r!   c                ó\  • U R                  5       (       aŒ  [        R                  " U R                  5      u  p#Uc  U R                  nU(       a  U R
                  S:X  a#  [        R                  " X R
                  S-   5      $ [        R                  " X R
                  S5      $ U R                  $ )rí   rï   ú.htmlú
index.html)ru   rð   ÚsplitrD   r¬   rž   r©   )r   r¬   Úparentró   s       r   Ú_get_dest_pathÚFile._get_dest_pathv  s�   € à×%Ñ%×'Ñ'Ü(Ÿš¨t¯|©|Ó<ÑˆFØ!Ñ)Ø%)×%<Ñ%<Ð"Þ%¨¯©°gÓ)=ô !—~’~ f¯i©i¸'Ñ.AÓBÐBô !—~’~ f¯i©i¸ÓFÐFØ�|‰|Ðr!   c                ó´   • U R                   n[        R                  " U5      u  p4Uc  U R                  nU(       a  US:X  a  U=(       d    SS-   n[	        U5      $ )rí   rú   Ú.Ú/)rÐ   rð   rû   r¬   Úurlquote)r   r¬   ÚurlÚdirnameró   s        r   Ú_get_urlÚFile._get_urlˆ  sP   € à�m‰mˆÜ%ŸOšO¨CÓ0ÑˆØÑ%Ø!%×!8Ñ!8ÐÞ (¨lÓ":Ø—>˜c SÑ(ˆCÜ˜‹}Ðr!   c                óÀ   • U R                   c  g[        R                  R                  [        R                  R	                  U R                   U R
                  5      5      $ )z¨
The absolute concrete path of the source file. Will use backslashes on Windows.

Note: do not use this path to read the file, prefer `content_bytes`/`content_string`.
N)rÅ   r§   rV   rË   r©   rD   r   s    r   rÜ   ÚFile.abs_src_path•  s=   € ð �<‰<ÑØÜ�w‰w×Ñ¤§¡§¡¨T¯\©\¸4¿<¹<Ó HÓIÐIr!   c                ó¤   • [         R                  R                  [         R                  R                  U R                  U R
                  5      5      $ )zTThe absolute concrete path of the destination file. Will use backslashes on Windows.)r§   rV   rË   r©   rÆ   rÐ   r   s    r   Úabs_dest_pathÚFile.abs_dest_path   s0   € ô �w‰w×Ñ¤§¡§¡¨T¯]©]¸D¿M¹MÓ JÓKÐKr!   c                óŽ   • [         R                  " U R                  [        U[        5      (       a  UR                  5      $ U5      $ )z+Return url for file relative to other file.)r   Úget_relative_urlr  Ú
isinstancerª   )r   Úothers     r   Úurl_relative_toÚFile.url_relative_to¥  s2   € ä×%Ò% d§h¡h¼ZÈÌt×=TÑ=T°·	±	Ó`Ð`ÐZ_Ó`Ð`r!   c                ó  • U R                   nUc?  U R                  c   e[        U R                  S5       nUR                  5       sSSS5        $ [	        U[
        5      (       d  UR                  5       nU$ ! , (       d  f       N5= f)zÖ
Get the content of this file as a bytestring.

May raise if backed by a real file (`abs_src_path`) if it cannot be read.

If used as a setter, it defines the content of the file, and `abs_src_path` becomes unset.
NÚrb)rÉ   rÜ   ÚopenÚreadr  ÚbytesÚencode©r   r×   rG   s      r   Úcontent_bytesÚFile.content_bytes©  sn   € ð —-‘-ˆØ‰?Ø×$Ñ$Ñ0Ð0Ð0Ü�d×'Ñ'¨Ô.°!Ø—v‘v“x÷ /Ñ.ä˜'¤5×)Ñ)Ø—n‘nÓ&ˆGØˆ÷	 /Õ.ús   µA6Á6
Bc                óL   • [        U[        5      (       d   eXl        S U l        g r#   )r  r  rÉ   rÜ   rÎ   s     r   r  r  »  s"   € ä˜%¤×'Ñ'Ð'Ð'ØŒØ ˆÕr!   c                ó  • U R                   nUc>  U R                  c   e[        U R                  SSS9 nUR                  5       sSSS5        $ [	        U[
        5      (       d  UR                  SSS9nU$ ! , (       d  f       N5= f)zú
Get the content of this file as a string. Assumes UTF-8 encoding, may raise.

May also raise if backed by a real file (`abs_src_path`) if it cannot be read.

If used as a setter, it defines the content of the file, and `abs_src_path` becomes unset.
Nz	utf-8-sigÚstrict)ÚencodingÚerrors)r  )rÉ   rÜ   r  r  r  rº   Údecoder  s      r   Úcontent_stringÚFile.content_stringÁ  sy   € ð —-‘-ˆØ‰?Ø×$Ñ$Ñ0Ð0Ð0Ü�d×'Ñ'°+ÀhÒOÐSTØ—v‘v“x÷ PÑOä˜'¤3×'Ñ'Ø—n‘n [¸�nÐBˆGØˆ÷	 PÕOús   ´A5Á5
Bc                óL   • [        U[        5      (       d   eXl        S U l        g r#   )r  rº   rÉ   rÜ   rÎ   s     r   r!  r"  Ó  s"   € ä˜%¤×%Ñ%Ð%Ð%ØŒØ ˆÕr!   c                ó  • U(       a9  U R                  5       (       d$  [        R                  SU R                   S35        g[        R                  SU R                   S35        U R                  n[
        R                  " [
        R                  R                  U5      SS9  U R                  nUc2  U R                  c   e [        R                  " U R                  U5        g[        U[         5      (       a&  [#        USSS	9 nUR%                  U5        SSS5        g[#        US
5       nUR%                  U5        SSS5        g! [        R                   a     gf = f! , (       d  f       g= f! , (       d  f       g= f)zCCopy source file to destination, ensuring parent directories exist.zSkip copying unmodified file: 'Ú'NzCopying media file: 'T)Úexist_okÚwzutf-8)r  Úwb)Úis_modifiedÚlogÚdebugrD   r
  r§   ÚmakedirsrV   r  rÉ   rÜ   r   rv   ÚshutilÚSameFileErrorr  rº   r  Úwrite)r   rw   Úoutput_pathr×   Úoutput_files        r   rv   ÚFile.copy_fileÙ  s,  € æ˜×)Ñ)×+Ñ+Ü�I‰IÐ7¸¿¹°~ÀQÐGÔHØÜ�	‰	Ð)¨$¯,©,¨°qÐ9Ô:Ø×(Ñ(ˆÜ
�Š”B—G‘G—O‘O KÓ0¸4Ò@Ø—-‘-ˆØ‰?Ø×$Ñ$Ñ0Ð0Ð0ðÜ—’ × 1Ñ 1°;Õ?ô ˜¤×%Ñ%Ü�k 3°Ò9¸[Ø×!Ñ! 'Ô*÷ :Ð9ô �k 4Ô(¨KØ×!Ñ! 'Ô*÷ )Ð(øô ×'Ñ'ó Ùðú÷ :Õ9ú÷ )Õ(ús*   Ã!E ÄEÄ*E0ÅEÅEÅ
E-Å0
E>c                ó@  • U R                   b  gU R                  c   e[        R                  R	                  U R
                  5      (       aS  [        R                  R                  U R
                  5      [        R                  R                  U R                  5      :  $ gr   )rÉ   rÜ   r§   rV   r¨   r
  Úgetmtimer   s    r   r)  ÚFile.is_modifiedï  sr   € Ø�=‰=Ñ$ØØ× Ñ Ñ,Ð,Ð,Ü�7‰7�>‰>˜$×,Ñ,×-Ñ-Ü—7‘7×#Ñ# D×$6Ñ$6Ó7¼"¿'¹'×:JÑ:JÈ4×K\ÑK\Ó:]Ñ]Ð]Ør!   c                óB   • [         R                  " U R                  5      $ )z'Return True if file is a Markdown page.)r   Úis_markdown_filerD   r   s    r   ru   ÚFile.is_documentation_page÷  s   € ä×%Ò% d§l¡lÓ3Ð3r!   c                ó8   • U R                   R                  S5      $ )z7Return True if file is a static page (HTML, XML, JSON).)rù   z.htmz.xmlz.json©rD   Úendswithr   s    r   r~   ÚFile.is_static_pageû  s   € à�|‰|×$Ñ$Ð%GÓHÐHr!   c                óZ   • U R                  5       =(       d    U R                  5       (       + $ )z:Return True if file is not a documentation or static page.)ru   r~   r   s    r   rƒ   ÚFile.is_media_fileÿ  s"   € à×.Ñ.Ó0×I°D×4GÑ4GÓ4IÔJÐJr!   c                ó8   • U R                   R                  S5      $ )z)Return True if file is a JavaScript file.)z.jsz.javascriptz.mjsr:  r   s    r   rˆ   ÚFile.is_javascript  s   € à�|‰|×$Ñ$Ð%CÓDÐDr!   c                ó8   • U R                   R                  S5      $ )z"Return True if file is a CSS file.z.cssr:  r   s    r   rŒ   ÚFile.is_css  s   € à�|‰|×$Ñ$ VÓ,Ð,r!   )	rÉ   rÜ   rÆ   rÐ   rs   rÅ   rZ   rD   r¬   )r·   rº   )r%   rº   )
r¡   r   rD   rº   r×   zstr | bytesrs   r   r·   rª   )
r¡   r   rD   rº   rÜ   rº   rs   r   r·   rª   )r¡   r   rD   rº   r×   rÈ   rÜ   rÄ   rs   r   r·   rª   )rV   rº   rÅ   rÄ   rÆ   rº   r¬   r»   rÐ   rÄ   rs   r   r·   r¸   )r·   rÄ   r#   )r¬   zbool | Noner·   rº   )r  z
File | strr·   rº   )r·   r  )r%   r  r¼   )rw   r»   r·   r¸   )r·   r»   ),r8   r9   r:   r;   r¿   Ú__annotations__r   r=   rs   rÇ   rÉ   rÀ   rZ   rÁ   rÑ   rÔ   r   ÚclassmethodrØ   rH   rç   r   Úweak_propertyrê   rö   r   rž   rý   rÐ   r  r  rÜ   r
  r  r  r!  rv   r)  ru   r~   rƒ   rˆ   rŒ   r?   r   r!   r   rª   rª   µ   sB  ‡ ñðB ƒLØcàÓðð ÓðHð ƒMØjà .× 8Ñ 8€Iˆ~Ó8Ø@à#€L�*Ó#ðtð $(€HÐ Ó'ð!ð
 ó.ó ð.ð ‡_�_ó2ó ð2ð ó/ó ð/ð ×Ñó3ó ð3ð €Dˆ+ÓàØð %3×$<Ñ$<ñàðð ðð
 ðð "ðð 
ôó ó ðð Øð %3×$<Ñ$<ñàðð ðð
 ðð "ðð 
ôó ó ðð ð '+Ø#'Ø$2×$<Ñ$<ñàðð ðð
 $ðð !ðð "ðð 
ôó ððF  $Ø$2×$<Ñ$<ñ#àð#ð ð#ð ð	#ð
 !ð#ð ð#ð "ð#ð 
õ#ò$
ð ×ÑóCó ðCô5ñ ˜9Ó%€DØ<öñ ˜~Ó.€HØmöñ ˜(Ó
#€CØ\àóJó ðJð óLó ðLôað óó ðð" ×Ñó!ó ð!ð
 óó ðð" ×Ñó!ó ð!ö
+ô,ô4ôIôKôE÷-r!   rª   r‘   z/templates/c                óx  • UR                  S5      nU(       a	  [        U-   O[        nUR                  S5      nUR                  S5      nU  Hë  nUR                  [        R                  :X  d  M#  UR                  UR                  5      (       a  [        R                  Ul        MZ  U(       a7  UR                  UR                  5      (       a  [        R                  Ul        M˜  U(       a7  UR                  UR                  5      (       a  [        R                  Ul        MÖ  [        R                  Ul        Mí     g)zKRe-calculate which files are excluded, based on the patterns in the config.Úexclude_docsÚ
draft_docsÚ
not_in_navN)rd   Ú_default_excluders   r   r=   Ú
match_filerD   r<   r&   r2   r>   )rF   r¡   ÚexcludeÚdraftsÚnav_excluder\   s         r   Úset_exclusionsrO    sÏ   € à7=·z±zÀ.Ó7Q€GÞ,3Ô Ò(Ô9I€GØ6<·j±jÀÓ6N€FØ;A¿:¹:ÀlÓ;S€KãˆØ�>‰>œ^×5Ñ5Õ5Ø×!Ñ! $§,¡,×/Ñ/Ü!/×!8Ñ!8�–Þ˜F×-Ñ-¨d¯l©l×;Ñ;Ü!/×!5Ñ!5�–Þ ×!7Ñ!7¸¿¹×!EÑ!EÜ!/×!:Ñ!:�–ä!/×!8Ñ!8�–ò r!   c           	     óŽ  • / n/ n[         R                  " U S   SS9 HÏ  u  p4n[         R                  R                  X0S   5      nUR	                  5         UR	                  [
        S9  0 nU H|  n[        [         R                  R                  Xh5      U S   U S   U S   5      n	UR                  U	R                  U	5      n
X©La  UR                  X©45        UR                  U	5        U	n
M~     MÑ     [        X5        U H™  u  p¼UR                  R                  5       (       ac  UR                  R                  5       (       a0  [        R                  SUR                    SUR                    S	35         UR#                  U5        M‡   UR#                  U5        M›     ['        U5      $ ! [$         a     Mµ  f = f! [$         a     MÆ  f = f)
z2Walk the `docs_dir` and return a Files collection.Údocs_dirT)Úfollowlinks©Úkeyr«   r¬   zExcluding 'z+' from the site because it conflicts with 'z'.)r§   ÚwalkrV   ÚrelpathÚsortÚ_file_sort_keyrª   r©   Ú
setdefaultrÐ   rk   rO  rs   r'   r*  ÚwarningrD   rp   ro   rA   )r¡   rF   Úconflicting_filesÚ
source_dirÚdirnamesÚ	filenamesÚrelative_dirÚfiles_by_destró   r\   Ú	prev_fileÚaÚbs                r   Ú	get_filesrd  "  s™  € à€EØ13ÐÜ+-¯7ª7°6¸*Ñ3EÐSWÔ+XÑ'ˆ
˜iÜ—w‘w—‘ z¸*Ñ3EÓFˆØ�‰ŒØ�‰œ>ˆÑ*à)+ˆÛ!ˆHÜÜ—‘—‘˜\Ó4Ø�zÑ"Ø�zÑ"ØÐ+Ñ,ó	ˆDð &×0Ñ0°·±ÀÓEˆIØÒ$Ø!×(Ñ(¨)Ð):Ô;Ø�L‰L˜ÔØŠIó "ñ ,Yô( �5Ô!ã!‰ˆØ�;‰;×"Ñ"×$Ñ$Ø�{‰{×&Ñ&×(Ñ(Ü—‘Ø! !§)¡) Ð,WÐXY×XaÑXaÐWbÐbdÐeôðØ—‘˜Q–ðØ—‘˜Q–ñ "ô  �‹<Ðøô ó Úðûô
 ó Úðús$   Å1F%ÆF6Æ%
F3Æ2F3Æ6
GÇGc               ó€   • [        U R                  5      R                  nU(       d  gUSS U R                  S:g  US   4$ )z™
Replicates the sort order how `get_files` produces it - index first, directories last.

To sort a list of `File`, pass as the `key` argument to `sort`.
r   Nr   rï   )r   rD   Úpartsrž   )rG   rf  s     r   Úfile_sort_keyrg  O  s>   € ô ˜!Ÿ)™)Ó$×*Ñ*€EÞØØ�#�2ˆJ˜Ÿ™ 'Ñ)¨5°©9Ð5Ð5r!   c                óP   • [         R                  R                  U 5      S   S;  U 4$ )zaAlways sort `index` or `README` as first filename in list. This works only on basenames of files.r   )rï   rî   )r§   rV   rò   )rG   s    r   rX  rX  [  s'   € ä�G‰G×Ñ˜QÓ Ñ"Ð*=Ñ=¸qÐAÐAr!   c                ó   • [        U [        S9$ )rí   rS  )ÚsortedrX  )r^  s    r   Ú_sort_filesrk  `  s   € ä�)¤Ñ0Ð0r!   c                ó  • [         R                  " S[        5        U Hh  nUR                  S5      (       a	  U(       d  M"  UR	                  S5      (       a  UOU n[
        R
                  " XTR                  S5      5      (       d  Mh    g   g)NzD_filter_paths is not used since MkDocs 1.5 and will be removed soon.r  TF)rh   ri   rj   r;  Ú
startswithrœ   Ústrip)rñ   rV   Úis_dirrL  ÚitemÚmatchs         r   Ú_filter_pathsrr  e  sj   € Ü‡M‚MØNÔPbôó ˆà�=‰=˜×Ñ¦fÙð Ÿ™¨×,Ñ,‘°(ˆÜ�?Š?˜5§*¡*¨S£/×2Ó2Ùñ ð r!   )rF   r¶   r¡   r   r·   r¸   )r¡   r   r·   rA   )rG   rª   )rG   rº   )r^  úIterable[str]r·   z	list[str])
rñ   rº   rV   rº   ro  r»   rL  rs  r·   r»   )5Ú
__future__r   Úenumrœ   Úloggingr§   rð   r-  rh   Ú	functoolsr   Úpathlibr   r   Útypingr   r   r	   r
   r   r   r   Úurllib.parser   r  ÚpathspecÚpathspec.gitignoreÚpathspec.utilÚmkdocsr   Újinja2.environmentÚjinja2Úmkdocs.config.defaultsr   Úmkdocs.structure.pagesr   Ú	getLoggerr8   r*  ÚEnumr   rA   rª   Ú	gitignoreÚGitIgnoreSpecÚ
from_linesrJ  rO  rd  rg  rX  rk  rr  r   r!   r   Ú<module>rˆ     sÇ   ðÝ "ã Û Û Û 	Û Û Û Ý %ß +ß [× [Ñ [Ý *ã Û Û å æÛå3Ý+ð ×Ò˜Ó!€ô3�T—Y‘Yô 3÷>t7ñ t7÷nT-ñ T-ðn
 ×%Ñ%×3Ñ3×>Ñ>ÀÀmÐ?TÓUÐ ô9ô&*ôZ	6ôBô
1õ
r!   