
    E^eu                         d Z ddlZddl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  G d de
          Z G d	 d
e
          Z G d de
          Z G d de
          Z G d de
          ZdS )zJinja2 extensions.    Nchoice)nodes)	Extension)slugifyc                   "     e Zd ZdZ fdZ xZS )JsonifyExtensionz4Jinja2 extension to convert a Python object to JSON.c                 d    t                                          |           d }||j        d<   dS )z4Initialize the extension with the given environment.c                 0    t          j        | dd          S )NT   )	sort_keysindent)jsondumps)objs    7lib/python3.11/site-packages/cookiecutter/extensions.pyjsonifyz*JsonifyExtension.__init__.<locals>.jsonify   s    :cT!<<<<    r   Nsuper__init__filters)selfenvironmentr   	__class__s      r   r   zJsonifyExtension.__init__   s?    %%%	= 	= 	= *1I&&&r   __name__
__module____qualname____doc__r   __classcell__r   s   @r   r	   r	      s>        >>1 1 1 1 1 1 1 1 1r   r	   c                   "     e Zd ZdZ fdZ xZS )RandomStringExtensionz+Jinja2 extension to create a random string.c                     t                                          |           dd}|j                            |           dS )zJinja2 Extension Constructor.Fc                     |r,d                     t          j        t          j        f          nt          j        d                     fdt	          |           D                       S )N c              3   6   K   | ]}t                    V  d S Nr   ).0_corpuss     r   	<genexpr>zNRandomStringExtension.__init__.<locals>.random_ascii_string.<locals>.<genexpr>&   s)      AAa6&>>AAAAAAr   )joinstringascii_letterspunctuationrange)lengthr1   r,   s     @r   random_ascii_stringz;RandomStringExtension.__init__.<locals>.random_ascii_string!   s^     .&"68J!KLL-77AAAA5==AAAAAAr   )r4   N)Fr   r   globalsupdate)r   r   r4   r   s      r   r   zRandomStringExtension.__init__   sV    %%%	B 	B 	B 	B 	""7J"KKKKKr   r   r"   s   @r   r$   r$      sG        55L L L L L L L L Lr   r$   c                   "     e Zd ZdZ fdZ xZS )SlugifyExtensionz#Jinja2 Extension to slugify string.c                 d    t                                          |           d }||j        d<   dS )Jinja2 Extension constructor.c                     t          | fi |S )zSlugifies the value.)	pyslugify)valuekwargss     r   r   z*SlugifyExtension.__init__.<locals>.slugify2   s    U--f---r   r   Nr   )r   r   r   r   s      r   r   zSlugifyExtension.__init__.   s?    %%%	. 	. 	. *1I&&&r   r   r"   s   @r   r9   r9   +   s>        --1 1 1 1 1 1 1 1 1r   r9   c                   "     e Zd ZdZ fdZ xZS )UUIDExtensionz*Jinja2 Extension to generate uuid4 string.c                     t                                          |           d }|j                            |           dS )r;   c                  B    t          t          j                              S )zGenerate UUID4.)struuiduuid4 r   r   rF   z%UUIDExtension.__init__.<locals>.uuid4@   s    tz||$$$r   )rF   Nr5   )r   r   rF   r   s      r   r   zUUIDExtension.__init__<   sL    %%%	% 	% 	% 	"""/////r   r   r"   s   @r   rA   rA   9   s>        440 0 0 0 0 0 0 0 0r   rA   c                   :     e Zd ZdZdhZ fdZd Zd Zd Z xZ	S )TimeExtensionz%Jinja2 Extension for dates and times.nowc                 v    t                                          |           |                    d           dS )r;   z%Y-%m-%d)datetime_formatN)r   r   extend)r   r   r   s     r   r   zTimeExtension.__init__L   s8    %%%:66666r   c                 `   t          j        |          }i }|                    d          D ]S}|                    d          \  }}	t          ||	                                z             ||                                <   T |j        di |}|| j        j        }|                    |          S )N,=rG   )	arrowrJ   splitfloatstripshiftr   rL   strftime)
r   timezoneoperatoroffsetrL   dshift_paramsparamintervalr>   s
             r   	_datetimezTimeExtension._datetimeR   s    Ih \\#&& 	M 	ME#kk#..OHe-28ekkmm3K-L-LL))**AG##l##"".>Ozz/***r   c                 l    || j         j        }t          j        |                              |          S r)   )r   rL   rQ   rJ   rV   )r   rW   rL   s      r   _nowzTimeExtension._now`   s1    "".>Oy""++O<<<r   c                    t          |j                  j        }|                                }|j                            d          r|                                }nt          j        d          }t          |t
          j                  r9| 	                    d|j
        t          j        d          |j        |g|          }nmt          |t
          j                  r9| 	                    d|j
        t          j        d          |j        |g|          }n| 	                    d||g|          }t          j        |g|          S )z/Parse datetime template and add datetime value.commaNr^   +)lineno-r`   )nextstreamrd   parse_expressionskip_ifr   Const
isinstanceAddcall_methodleftrightSubOutput)r   parserrd   noderL   rm   s         r   parsezTimeExtension.parsee   sD   fm$$+&&((=  )) 	0$5577OO#k$//OdEI&& 	**EK,,dj/J +  KK
 ei(( 	**EK,,dj/J +  KK **' +  K
 |[M&9999r   )
r   r   r   r    tagsr   r^   r`   rt   r!   r"   s   @r   rI   rI   G   sr        //7D7 7 7 7 7+ + += = =
: : : : : : :r   rI   )r    rQ   r   r/   rE   secretsr   jinja2r   
jinja2.extr   r   r=   r	   r$   r9   rA   rI   rG   r   r   <module>ry      s[                                 ( ( ( ( ( (
1 
1 
1 
1 
1y 
1 
1 
1L L L L LI L L L"1 1 1 1 1y 1 1 10 0 0 0 0I 0 0 0;: ;: ;: ;: ;:I ;: ;: ;: ;: ;:r   