
    ~+hS*                         d dl mZ d dlZd dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
mZ d dlmZ dZ G d	 d
e      ZeZ G d de
      Zy)    )absolute_importN)	Extension)nodes)Bundle)
GlobLoaderLoaderError)ImminentDeprecationWarning)assetsJinja2Loaderc                   V     e Zd ZdZ edg      ZeZ fdZd Z	e
d        ZddZ xZS )AssetsExtensiona  
    As opposed to the Django tag, this tag is slightly more capable due
    to the expressive powers inherited from Jinja. For example:

        {% assets "src1.js", "src2.js", get_src3(),
                  filter=("jsmin", "gzip"), output=get_output() %}
        {% endassets %}
    r
   c                 P    t         t        |   |       |j                  d        y )N)assets_environment)superr   __init__extend)selfenvironment	__class__s     G/var/www/html/venv/lib/python3.12/site-packages/webassets/ext/jinja2.pyr   zAssetsExtension.__init__   s*    ot-k: 	# 	 	
    c           
         t        |j                        j                  }g }t        j                  d       }t        j                  d       }t        j                  d       }t        j                  d       }d}|j                  j
                  j                  dk7  r|s|j                  j                  d       d}|j                  j
                  j                  d      r|j                  j                         j                  d      rt        |j                        j                  }	|j                  j                          |j                         }
|	dk(  r|
}n|	dk(  r |
}t        j                  d	|z  t               n|	d
k(  r|
}n|	dk(  r|
}n|	dk(  r|
}n|j!                  d|	z         nk|j                         }t#        |t        j$                  t        j&                  f      r |j)                  |j+                                n|j-                  |       |j                  j
                  j                  dk7  r|j/                  dgd      }t        j0                  dd      t        j0                  dd      t        j0                  dd      g}| j3                  d||||t        j$                  |      g      }t        j4                  ||g |      }|j7                  |       |S )NT	block_endcommaFnameassignfiltersfilterzwThe "filter" option of the {%% assets %%} template tag has been renamed to "filters" for consistency reasons (line %s).outputdebugdependszInvalid keyword argument: %szname:endassets)drop_needle	ASSET_URLparam	ASSET_SRIEXTRA_render_assets)args)nextstreamlinenor   Constcurrenttypeexpecttestlookvalueskipparse_expressionwarningswarnr	   fail
isinstanceListTupler   iter_child_nodesappendparse_statementsNamecall_method	CallBlock
set_lineno)r   parserr+   filesr   r   dbgr!   firstr   r2   
expressionbodyr(   call
call_blocks                   r   parsezAssetsExtension.parse%   sv   fmm$++T"++d#kk$++d# mm##((K7$$W-E }}$$))&1fmm6H6H6J6O6OPX6YFMM*00""$//19$#GX%#GMM #/ 28#8 %?	@
 X%"FW_CY&#GKK > EF $446
j5::u{{*CDLL!<!<!>?LL,E mm##((K7J &&(8'9t&Lv 

;0

;0

7G,. GVS'5::eCT#U   W __T4T:
f%r   c                     g }|D ]  }	 |j                  ||           |S # t        $ r |j                  |       Y 8w xY w)zResolve bundle names.)r<   KeyError)clscontentsenvresultfs        r   resolve_contentsz AssetsExtension.resolve_contents   sQ      	!A!c!f%	!
   !a !s   !>>c           	         | j                   j                  }|t        d      ||||d} | j                  | j	                  ||      i |}	|	j                  |      5  |	j                  d      }
d d d        d}
D ]T  }t        |t              r+| ||d   |j                  dd       |	j                        z  }>| ||d |	j                        z  }V |S # 1 sw Y   fxY w)Nz6No assets environment configured in Jinja2 environment)r   r   r    r!   T)calculate_sri urisri)r   r   RuntimeErrorBundleClassrR   bindurlsr8   dictgetextra)r   r   r   rD   r!   rC   callerrO   bundle_kwargsbundler[   rP   entrys                r   r'   zAssetsExtension._render_assets   s   11;  4 5 5
 	
 "!!""5#.A2?A [[ 	3;;T;2D	3
  	<E%&&uuyy/Ev||TT&fll;;		<
 	3 	3s   CCN)__name__
__module____qualname____doc__settagsr   rY   r   rJ   classmethodrR   r'   __classcell__)r   s   @r   r   r      s?     z?DK
wr  r   r   c                   $    e Zd ZdZddZd Zd Zy)r   zParse all the Jinja2 templates in the given directory, try to
    find bundles in active use.

    Try all the given environments to parse the template, until we
    succeed.
    c                 J    || _         || _        || _        || _        || _        y rc   )	asset_envdirectoriesjinja2_envscharset	jinja_ext)r   
assets_envro   rp   rq   rr   s         r   r   zJinja2Loader.__init__   s'    #&&"r   c                     g }| j                   D ]S  }| j                  || j                  f      D ]1  }|j                  | j	                  || j
                        xs g        3 U |S rc   )ro   
glob_filesrr   r   	with_file_parse)r   bundlestemplate_dirfilenames       r   load_bundleszJinja2Loader.load_bundles   sh     ,, 	LL OO\4>>,JK Lt~~hDJKL	L r   c                    	 t         j                        D ]Y  \  }}	 |j                  |j                   j                              }g 		 fd|j                         D ]
  } |        	c S  t        d|t         j                        fz        # t        j                  j                  $ r
}Y d }~d }~ww xY w)Nc           	      N   | j                         D ]  }t        |t        j                  j                        rt        |j
                  t        j                  j                        sW|j
                  j                  t        j                  k(  s|j                  \  }}}}}t        t        j                  |j                         
j                        i |j                         |j                         |j                         d}	j                  |       	 |        y )N)r   r!   r   )r;   r8   jinja2r   CallnodeExtensionAttribute
identifierr   r(   r   rR   as_constrn   r<   )node_to_searchr   r   r   rD   r!   rC   ra   _recurse_noderP   r   s           r   r   z*Jinja2Loader._parse.<locals>._recurse_node   s     . ? ? A 0%dFLL,=,=>)$))V\\5T5TU#'99#7#7?;U;U#UFJii CWe)/%4%E%EennFVX\XfXf%g*G 39//2C3:3C3C3E39??3D'F*G !'f 5)$/0r   z0Jinja parser failed on %s, tried %d environments)	enumeraterp   rJ   decoderq   r;   r~   
exceptionsTemplateSyntaxErrorr   len)
r   rz   rN   irO   tr   er   rP   s
   `       @@r   rw   zJinja2Loader._parse   s     0 01 	2FAsIIhoodll;<
 0 ..0 (D!$'(3	26 P#d../T1 1 2 21 $$88 s   *BB?:B?N)utf8z*.html)rd   re   rf   rg   r   r{   rw    r   r   r   r      s    #r   r   )
__future__r   r5   r~   
jinja2.extr   r   	webassetsr   webassets.loadersr   r   webassets.exceptionsr	   __all__r   r
   r   r   r   r   <module>r      sF    &       5 ; &vi vr 
4: 4r   