
    $g/5                    `   d dl mZ d dlZd dlZd dlZd dlZd dlmZmZ d dl	m
Z
mZ d dlZd dlmZ d dlZd dlmZ d dlmZmZ d dlmZmZmZmZmZ d d	lmZmZ d d
lmZ d dlm Z  d dlm!Z! erd dl"m#Z#  ej$        e%          Z&	 	 d6d7dZ'd8d Z(d9d%Z)d:d&Z*d;d<d+Z+	 	 d=d>d/Z,dd'd0d?d3Z-d@d5Z.dS )A    )annotationsN)TYPE_CHECKINGSequence)urljoinurlsplit)TemplateNotFound)utils)Abort
BuildError)FileFilesInclusionLevel	get_filesset_exclusions)
Navigationget_navigation)Page)DuplicateFilter)	templates)MkDocsConfig navr   filesSequence[File] | Filesconfigr   pagePage | Nonebase_urlstrreturntemplates.TemplateContextc                P   t          j        dj                  fd|j        D             }fd|j        D             }t          |t                    r|                                }t          j	        | |||t          j        t          j                    |	  	        S )z9Return the template context for a given page or template.N.c                V    g | ]%}t          j        t          |                    &S  )r	   normalize_urlr   ).0scriptr   r   s     U/var/www/html/netbox-4.1.3/venv/lib/python3.11/site-packages/mkdocs/commands/build.py
<listcomp>zget_context.<locals>.<listcomp>(   s;       =CCKKx88      c                <    g | ]}t          j        |          S r%   )r	   r&   )r'   pathr   r   s     r)   r*   zget_context.<locals>.<listcomp>+   s(    XXXt$T4::XXXr+   )	r   pagesr   	extra_cssextra_javascriptmkdocs_versionbuild_date_utcr   r   )r	   get_relative_urlurlr0   r/   
isinstancer   documentation_pagesr   TemplateContextmkdocs__version__get_build_datetime)r   r   r   r   r   r0   r/   s      ``  r)   get_contextr;      s     )#tx88    GMG^   YXXXXvGWXXXI% ,))++$))/11
 
 
 
r+   nametemplatejinja2.Templater   c                   |j                             || |          }t          j        |           rt	          |j        pd          j        }nt          j        d|           }t          ||||          }|j         	                    || |          }|
                    |          }|j                             || |          }|S )z6Return rendered output for given template as a string.)template_namer   /r#   )r   )pluginson_pre_templater	   is_error_templater   site_urlr-   r3   r;   on_template_contextrenderon_post_template)r<   r=   r   r   r   r   contextoutputs           r)   _build_templaterK   =   s    
 ~--hdSY-ZZHt$$ 5 FO2s338)#t44#ufx@@@G n00U[0\\G__W%%F ^,,V4PV,WWFMr+   r@   envjinja2.EnvironmentNonec                   t                               d|             	 |                    |           }n/# t          $ r" t                               d|  d           Y dS w xY wt          | ||||          }|                                r+t          j        	                    |j
        |           }t          j        |                    d          |           | dk    rt                               d|             | d}t          |d	          5 }	t          j        d
 |                                D                       }
t#          j        |	|d	|
          5 }|                    |                    d                     ddd           n# 1 swxY w Y   ddd           dS # 1 swxY w Y   dS dS t                               d|  d           dS )z-Build a template using the theme environment.zBuilding theme template: Template skipped: 'z!' not found in theme directories.Nutf-8zsitemap.xmlzGzipping template: z.gzwbc                *    g | ]}|j         	|j         S )N)r   )r'   fs     r)   r*   z)_build_theme_template.<locals>.<listcomp>r   s!    ]]]a!&J\16J\J\J\r+   )r.   )fileobjfilenamemodemtime' generated empty output.)logdebugget_templater   warningrK   striposr-   joinsite_dirr	   
write_fileencodeopenget_build_timestampr6   gzipGzipFilewriteinfo)r@   rL   r   r   r   r=   rJ   output_pathgz_filenamerT   	timestampgz_bufs               r)   _build_theme_templatern   [   sq    II9-99:::##M22   Z-ZZZ[[[ ]HeVSIIF||~~ Qgll6?MBBw//===M))II;M;;<<<(---Kk4(( 9A!5]]5+D+D+F+F]]]  	 ]$i   9LLw!7!78889 9 9 9 9 9 9 9 9 9 9 9 9 9 9	9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 *) 	O}OOOPPPPPsF   5 (A! A!A
F()FF(F	F(F	F((F,/F,c                <   t                               d|             |                    |           }| t                               d|  d           dS 	 t	          j        |j                  }n8# t          $ r+}t                               d|  d|            Y d}~dS d}~ww xY wt          | ||||          }|	                                r/t          j        |                    d          |j                   dS t                               d|  d           dS )	z5Build user templates which are not part of the theme.zBuilding extra template: NrP   z' not found in docs_dir.zError reading template 'z': rQ   rY   )rZ   r[   get_file_from_pathr]   jinja2Templatecontent_string	ExceptionrK   r^   r	   rb   rc   abs_dest_pathri   )r@   r   r   r   filer=   erJ   s           r)   _build_extra_templaterx   |   s4   II9-99:::##M22D|Q-QQQRRR?4#677   D}DDDDEEE ]HeVSIIF||~~ Qw//1CDDDDDO}OOOPPPPPs   A0 0
B%: B  B%Fr   dirtyboolc                   | |_         	 |r#| j                                        s
	 d|_         dS |j                            | ||          } |                     |           | j        J |j                            | j        | ||          | _        |                     ||           | j	        J |j        
                    | j	        | ||          | _	        nZ# t          $ rM}d| j        j         d}t          |t                    s|d| z  }t                              |            d}~ww xY w	 d|_         dS # d|_         w xY w)z4Read page content from docs_dir and render Markdown.Nr   r   )r   r   r   zError reading page '': )_current_pagerv   is_modifiedrB   on_pre_pageread_sourcemarkdownon_page_markdownrG   contenton_page_contentrt   src_urir5   r   rZ   error)r   r   r   ry   rw   messages         r)   _populate_pager      s   F $  	..00 	8  $3 ~))$vU)KK   }((( 77MV5 8 
 
 	FE"""|''' ~55LtF% 6 
 
    >):>>>!Z(( 	w1wwG		' 	  $t####s0   C B*C D= 
D0#AD++D00D= =	E	doc_filesSequence[File]excludedc                   | |_         	 |r*| j                                        s	 d| _        d|_         dS t                              d| j        j                    d| _        t          ||||           }|                    | j	        
                    dd                    }|j                            || ||          }|rd| j        pd	z   | _        |                    |          }	|j                            |	| |
          }	|	                                r5t#          j        |	                    dd          | j        j                   n(t                              d| j        j         d           nZ# t,          $ rM}
d| j        j         d}t/          |
t0                    s|d|
 z  }t                              |            d}
~
ww xY wd| _        d|_         dS # d| _        d|_         w xY w)z;Pass a Page to theme template and write output to site_dir.FNzBuilding page Tr=   z	main.html)r   r   r   zh<div class="mkdocs-draft-marker" title="This page will not be included into the built site.">DRAFT</div>r   )r   r   rQ   xmlcharrefreplace)errorszPage skipped: 'z'. Generated empty output.zError building page 'r}   r~   )r   rv   r   activerZ   r[   r   r;   r\   metagetrB   on_page_contextr   rG   on_post_pager^   r	   rb   rc   ru   ri   rt   r5   r   r   )r   r   r   r   rL   ry   r   rI   r=   rJ   rw   r   s               r)   _build_pager      s2     F2$  	..00 	Z #Y 			649#466777 c9fd;; ##DIMM*k$J$JKK .00tFX[0\\ 	 L.B0 L )) ,,V$v,NN <<>> 	Vg.ABBDID[    HHTty'8TTTUUU   ?$)*;???!Z(( 	w1wwG		' # #####s0   E8 EE8 7G" 8
GAG

GG" "G2)	serve_urlry   r   
str | Nonec               R   t          j        d          }t          j                    }|                    t           j                   | j        r't          j        d                              |           |rt          j	        nt          j
        }	 t          j                    }| j                            |           } | j                            |            |s4t                               d           t          j        | j                   nt                               d           |sRt                               d| j                    |r.t+          | j                  rt                               d           t-          |           }| j                                        }|                    ||            | j                            ||           }t7          ||            t9          ||           }	| j                            |	| |          }	t                               d           g }
|                    |	          D ]}t                               d
|j                     |j!        m|j"        #                                rT|rA|j"        $                                r(|
%                    tM          ||j'                             tQ          d||            |j!        J tS          |j!        | ||           |
r0t                               dd*                    |
          z              | j        +                    || |          }t                               d           |,                    ||           | j        j-        D ]}t]          |||| |	           | j/        D ]}ta          ||| |	           t                               d           |                    |	          }|D ]=}|j!        J tc          |j!        | ||	|||j"        $                                           >| j2        j3        j4        }|D ]'}|j!        J |j!        5                    ||           (| j        6                    |            |7                                x}r2d*                    d |D                       }tq          d| d          t                               dt          j                    |z
  dd           ny# tr          $ rl}| j        :                    |           tw          |tx                    r6t           =                    t}          |                     tq          d           d}~ww xY w	 |?                    |           dS # |?                    |           w xY w)zPerform a full site build.r8   )r   zCleaning site directoryzA 'dirty' build is being performed, this will likely lead to inaccurate navigation and other links within your site. This option is designed for site development purposes only.z%Building documentation to directory: z?The directory contains stale files. Use --clean to remove them.r|   zReading markdown pages.)	inclusionz	Reading: NzThe following pages are being built only for the preview but will be excluded from `mkdocs build` per `draft_docs` config:
  - z
  - zCopying static assets.)ry   r   zBuilding markdown pages.)r   )r   	log_levelz, c              3  P   K   | ]!\  }}| d |                                  dV  "dS )r~   sN)lower)r'   kvs      r)   	<genexpr>zbuild.<locals>.<genexpr>^  s?      CCDAqq//17799///CCCCCCr+   zAborted with z in strict mode!zDocumentation built in z.2fz seconds)r   zAborted with a BuildError!)@logging	getLoggerr	   CountHandlersetLevelWARNINGstrict
addHandlerr   is_in_serveis_includedtime	monotonicrB   	on_configon_pre_buildrZ   ri   clean_directoryra   r]   #site_directory_contains_stale_filesr   themeget_envadd_files_from_themeon_filesr   r   on_navr[   r6   r   r   r   is_not_in_navis_excludedappendr   r4   r   r   r`   on_envcopy_static_filesstatic_templatesrn   extra_templatesrx   r   
validationlinksanchorsvalidate_anchor_linkson_post_build
get_countsr
   rt   on_build_errorr5   r   r   r   removeHandler)r   r   ry   loggerwarning_counterr   startr   rL   r   r   rv   r=   r   r   countsmsgrw   s                     r)   buildr      s   x((F (**OW_---} @(##..???.7W**^=WIg.   ))&11 	##6#222 	HH.///!&/2222 KKg  
  	\HHNV_NNOOO \<V_MM \Z[[[ &!!l""$$""3/// ''f'==uf%%%UF++ n##Ce#DD		+,,,--	-BB 	< 	<DII0$,00111y T^%A%A%C%C  B!;!;!=!= BOOGItx$@$@AAAT4(((9(((49feU;;;; 	HHZ--))*   n##Ce#DD
 			*+++eyAAA5 	E 	EH!(CDDDD. 	@ 	@H!(E63????		,-----	-BB	 	 	D9(((	69c3HbHbHdHd     %+3	 	N 	ND9(((I++%9+MMMM 	$$F$333$//1116 	?))CCFCCCCCC====>>>Q4>+;+;e+CQQQQRRRR   %%A%...a$$ 	6IIc!ff4555 	S 	_-----_----s,   Q-S> =V >
U4A'U//U44V V&site_directoryc                    t          t          j                            |           ot          j        |                     S )zGCheck if the site directory contains stale files from a previous build.)rz   r_   r-   existslistdir)r   s    r)   r   r   o  s-    ~..M2:n3M3MNNNr+   )Nr   )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   rL   rM   r   r   r   r   r   r   r    rN   )r@   r   r   r   r   r   r   r   )F)
r   r   r   r   r   r   ry   rz   r    rN   )FF)r   r   r   r   r   r   r   r   rL   rM   ry   rz   r   rz   r    rN   )r   r   r   r   ry   rz   r    rN   )r   r   r    rz   )/
__future__r   rf   r   r_   r   typingr   r   urllib.parser   r   rq   jinja2.exceptionsr   r8   r	   mkdocs.exceptionsr
   r   mkdocs.structure.filesr   r   r   r   r   mkdocs.structure.navr   r   mkdocs.structure.pagesr   mkdocs.utilsr   r   mkdocs.config.defaultsr   r   __name__rZ   r;   rK   rn   rx   r   r   r   r   r%   r+   r)   <module>r      sS   " " " " " "   				  * * * * * * * * * * * * * * * *  . . . . . .        / / / / / / / / Y Y Y Y Y Y Y Y Y Y Y Y Y Y ; ; ; ; ; ; ; ; ' ' ' ' ' ' ( ( ( ( ( ( " " " " " " 4333333 g!!     @   <Q Q Q QBQ Q Q Q.#$ #$ #$ #$ #$X =$ =$ =$ =$ =$@ <@u s. s. s. s. s. s.lO O O O O Or+   