
    2yi                        d dl mZ d dlZd dlZd dlZd dlmZmZmZ d dl	Z	d dl
Z
	 d dl
mZ d dlmZmZ d dlmZ d dlmZ  ej*                  e      Z G d	 d
eeef         Zy# e$ r	 d dl
mZ Y Dw xY w)    )annotationsN)Any
CollectionMutableMapping)CSafeLoader)
SafeLoader)localizationutils)ValidationError)	templatesc                      e Zd ZU dZ	 ddddd	 	 	 	 	 	 	 	 	 ddZded<   edd	       Zedd
       Zedd       Z	ded<   ded<   ddZ
ddZddZddZd dZd Zd Zd!dZd"dZy)#ThemeaD  
    A Theme object.

    Args:
        name: The name of the theme as defined by its entrypoint.
        custom_dir: User defined directory for custom templates.
        static_templates: A list of templates to render as static pages.

    All other keywords are passed as-is and made available as a key/value mapping.
    N )
custom_dirstatic_templateslocalename
str | Noner   c               x   || _         || _        |dd}|| _        t        j                  j                  t        j                  j                  t                    }t        j                  j                  |d      }t        t        j                  |            | _        g | _        || j                  j                  |       |r| j                  |       | j                  j                  |       | j                  j                  |       |j                  |       ||d   }t!        j"                  |      |d<   y )Nen)r   r   r   r   )r   _custom_dir_Theme__varsospathabspathdirname__file__joinsetlistdirr   dirsappend_load_theme_configupdater	   parse_locale)	selfr   r   r   r   user_config_varspackage_dirmkdocs_templatess	            N/var/www/html/content_weaver/venv/lib/python3.12/site-packages/mkdocs/theme.py__init__zTheme.__init__#   s     	%)- > ggoobggooh&?@77<<[A #BJJ/?$@ A 	!IIZ(##D) 			)* 	$$%56[! >8_F&33F;h    c                    | d   S )Nr   r   r&   s    r+   r   zTheme.localeM   s    H~r-   c                    | j                   S N)r   r/   s    r+   r   zTheme.custom_dirQ   s    r-   c                N    t        j                  dt               | j                  S )NzEDo not access Theme._vars, instead access the keys of Theme directly.)warningswarnDeprecationWarningr   r/   s    r+   r(   zTheme._varsU   s     S	
 {{r-   z	list[str]r!   zset[str]c                    dj                  | j                  j                  | j                  | j                  | j
                  dj                  d | j                         D                    S )Nz3{}(name={!r}, dirs={!r}, static_templates={!r}, {}), c              3  0   K   | ]  \  }}| d |  yw)=Nr   ).0kvs      r+   	<genexpr>z!Theme.__repr__.<locals>.<genexpr>g   s     <tq!1QEl<s   )format	__class____name__r   r!   r   r   itemsr/   s    r+   __repr__zTheme.__repr__a   sQ    DKKNN##IIII!!II<tzz|<<
 	
r-   c                     | j                   |   S r1   r   r&   keys     r+   __getitem__zTheme.__getitem__j   s    {{3r-   c                "    || j                   |<   y r1   rD   )r&   rF   values      r+   __setitem__zTheme.__setitem__m   s     Cr-   c                    | j                   |= y r1   rD   rE   s     r+   __delitem__zTheme.__delitem__p   s    KKr-   c                    || j                   v S r1   rD   )r&   items     r+   __contains__zTheme.__contains__s   s    t{{""r-   c                ,    t        | j                        S r1   )lenr   r/   s    r+   __len__zTheme.__len__v   s    4;;r-   c                ,    t        | j                        S r1   )iterr   r/   s    r+   __iter__zTheme.__iter__y   s    DKK  r-   c           
     R   t        j                  |      }t         j                  j                          | j                  j                  |       	 t        j                  j                  |d      }t        |d      5 }t        j                  |t              }ddd       i }t        j                  d| d| d|        |j#                  d	d      x}rLt        j$                         }||vr#t!        d| d
| ddj                  |             | j'                  |       | j(                  j+                  |j#                  dg              | j,                  j+                  |       y# 1 sw Y   xY w# t        $ r)}t        j                  |       t!        d| d      d}~ww xY w)z-Recursively load theme and any parent themes.zmkdocs_theme.ymlrbNzThe theme 'za' does not appear to have a configuration file. Please upgrade to a current version of the theme.z Loaded theme configuration for 'z' from 'z': extendsz' inherits from 'zN', which does not appear to be installed. The available installed themes are: r7   r   )r
   get_theme_dir
get_themescache_clearr!   r"   r   r   r   openyamlloadr   OSErrorlogdebugr   popget_theme_namesr#   r   r$   r   )	r&   r   	theme_dir	file_pathftheme_configeparent_themethemess	            r+   r#   zTheme._load_theme_config|   s   ''-	$$&		#		Y0BCIi& 8!#yyJ78 L		4TF(9+SQ]P^_`'++It<<<<**,F6)%!$'8 G;;?99V;L:MO  ##L1$$\%5%56H"%MN<(18 8 	IIaL!dV $D E 	s0   ,E4 <E(E4 (E1-E4 4	F&=$F!!F&c                <   t        j                  | j                        }t        j                  |d      }t        j
                  |j                  d<   t        j                  |j                  d<   t        j                  || j                  | j                         |S )z)Return a Jinja environment for the theme.F)loaderauto_reloadurl
script_tag)jinja2FileSystemLoaderr!   Environmentr   
url_filterfiltersscript_tag_filterr	   install_translationsr   )r&   rl   envs      r+   get_envzTheme.get_env   so    ((3  EB&11E$-$?$?L!))#t{{DIIF
r-   r1   )
r   r   r   r   r   zCollection[str]r   r   returnNone)ry   zlocalization.Locale)ry   r   )ry   zdict[str, Any])ry   str)rF   r{   ry   r   )rF   r{   )rN   objectry   bool)r   r{   ry   rz   )ry   zjinja2.Environment)r@   
__module____qualname____doc__r,   __annotations__propertyr   r   r(   rB   rG   rJ   rL   rO   rR   rU   r#   rx   r   r-   r+   r   r      s    	  &< "&,.!&<&< 	&<
 *&< &< 
&<P         O
 !# ! )Dr-   r   )
__future__r   loggingr   r3   typingr   r   r   rp   r]   r   r   ImportErrormkdocsr	   r
   mkdocs.config.baser   mkdocs.utilsr   	getLoggerr@   r`   r{   r   r   r-   r+   <module>r      sm    "  	  2 2   . ' . "g!ON38$ O    s   A# #A10A1