Anons79 Mini Shell

Directory : /lib/python2.7/site-packages/ansible/template/
Upload File :
Current File : //lib/python2.7/site-packages/ansible/template/__init__.pyo

�
�Udac@`s�ddlmZmZmZeZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
mZddlmZyddlmZWn!ek
r�ddlmZnXddlmZmZddlmZdd	lmZmZdd
lmZddl m!Z!m"Z"m#Z#m$Z$ddl%m&Z&m'Z'm(Z(dd
l)m*Z*m+Z+m,Z,ddl-m.Z.m/Z/m0Z0ddl1m2Z2ddl3m4Z4ddl5m6Z6m7Z7m8Z8ddl9m:Z:ddl;m<Z<ddl=m>Z>ddl?m@Z@ddlAmBZBddlCmDZDeB�ZEddgZFeGefZHdZIddlJmKZLeMZNejOr�y*ddlPmQZRddlSmTZUeVZNWqek
r�ddlJmRZRddlWmXZUeEjYd eL�qXn ddlJmRZRddlWmXZUeZd7�Z[eZd8�Z\dd)�Z^d*�Z_d+�Z`d,�Zad-�Zbd.efd/��YZcd0efd1��YZdd2e0fd3��YZed4eRfd5��YZfdd9d6��YZgdS(:i(tabsolute_importtdivisiontprint_functionN(tLooseVersion(tNumber(tsha1(tsha(tTemplateSyntaxErrortUndefinedError(tFileSystemLoader(tContexttStrictUndefined(t	constants(tAnsibleErrortAnsibleFilterErrortAnsibleUndefinedVariabletAnsibleAssertionError(t	iteritemststring_typest	text_type(t	to_nativetto_texttto_bytes(tSequencetMappingtMutableMapping(tis_sequence(t
import_module(t
filter_loadert
lookup_loaderttest_loader(t	safe_eval(tAnsibleJ2Template(t
AnsibleJ2Vars(tAnsibleCollectionRef(tDisplay(twrap_vartTemplartgenerate_ansible_template_varss#jinja2:(t__version__(tNativeEnvironment(tansible_native_concat(tEnvironment(tconcats[jinja2_native requires Jinja 2.10 and above. Version detected: %s. Falling back to default.tvariable_begintblock_begint
comment_begint	raw_begintvariable_endt	block_endtcomment_endtraw_endcC`sTt|�}y"tjtj|�j�j}Wn)ttfk
rYtj|�j}nXit	tj
�d�d6|d6tjjtj
j|��d6t	|�d6tj
j|�d6tjj�d6|r�t|�ndd6}tj}|jd	|dd
|dd|d�}t	tjt|�tjtj
j|����|d<|S(
Nit
template_hostt
template_pathttemplate_mtimettemplate_uidttemplate_fullpathttemplate_run_datettemplate_destpaththosttuidtfiletansible_managed(Rtpwdtgetpwuidtoststattst_uidtpw_nametKeyErrort	TypeErrorRtunametdatetimet
fromtimestamptpathtgetmtimetabspathtnowRtNonetCtDEFAULT_MANAGED_STRtformatttimetstrftimet	localtime(RJt	dest_pathtb_pathR7t	temp_varstmanaged_defaulttmanaged_str((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyR&^s("
		


7cC`s�d|kr�d|kr�g}|j|�}t}x�|j|�D]�}|ddkrst}|j|d�qC|ddkr�t}|j|d�qC|r�|ddkr�|j|djdd��qC|j|d�qCWd	j|�}n|S(
s�Double backslashes within jinja2 expressions

    A user may enter something like this in a playbook::

      debug:
        msg: "Test Case 1\3; {{ test1_name | regex_replace('^(.*)_name$', '\1')}}"

    The string inside of the {{ gets interpreted multiple times First by yaml.
    Then by python.  And finally by jinja2 as part of it's variable.  Because
    it is processed by both python and jinja2, the backslash escaped
    characters get unescaped twice.  This means that we'd normally have to use
    four backslashes to escape that.  This is painful for playbook authors as
    they have to remember different rules for inside vs outside of a jinja2
    expression (The backslashes outside of the "{{ }}" only get processed by
    yaml and python.  So they only need to be escaped once).  The following
    code fixes this by automatically performing the extra quoting of
    backslashes inside of a jinja2 expression.

    s\s{{iR,iR0tstrings\\t(t
preprocesstFalsetlextTruetappendtreplacetjoin(tdatat	jinja_envtnew_datatd2tin_varttoken((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyt_escape_backslasheszs  cC`s�d}t}t}|j|�}y�x�|j|�D]�}|dtkr�|ri|ddkrit}nt}|djd�d}q4|dtkr4|djd�d|kr�tS|r�q4ntSq4WWntk
r�tSXtS(s�This function attempts to quickly detect whether a value is a jinja2
    template. To do so, we look for the first 2 matching jinja2 tokens for
    start and end delimiters.
    iR.t_iN(	RNR_R]R\R^tJINJA2_BEGIN_TOKENStsplittJINJA2_END_TOKENSR(RcRdtfoundtstarttcommentRfRh((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pytis_template�s(	
cC`s`yGt|�}|d}x||dkr9|d8}qW|d|SWntk
r[|SXdS(s�
    Counts the number of newlines at the end of a string. This is used during
    the jinja2 templating to ensure the count matches the input, since some newlines
    may be thrown away during the templating.
    is
N(tlent
IndexError(tin_strtitj((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyt_count_newlines_from_end�s

cC`s�ddlm}t|t�rAxs|D]}t||�q&WnTt|t�rnxB|D]}t|�qWWn't||�r�tdj|���ndS(Ni(t	Undefineds{0} is undefined(tjinja2.runtimeRxt
isinstanceRtrecursive_check_definedtlistRRQ(titemRxtkeyRu((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyR{�s

tAnsibleUndefinedcB`s2eZdZd�Zd�Zd�Zd�ZRS(s}
    A custom Undefined class, which returns further Undefined objects on access,
    rather than throwing an exception.
    cC`s|dkrt|��n|S(Nt
__UNSAFE__(tAttributeError(tselftname((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyt__getattr__�scC`s|S(N((R�R~((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyt__getitem__�scC`sdS(NR((R�((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyt__repr__�scC`s|S(N((R�R}((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyt__contains__�s(t__name__t
__module__t__doc__R�R�R�R�(((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyR�s
			tAnsibleContextcB`sDeZdZd�Zd�Zd�Zd�Zd�Zd�ZRS(s
    A custom context, which intercepts resolve() calls and sets a flag
    internally if any variable lookup returns an AnsibleUnsafe value. This
    flag is checked post-templating, and (when set) will result in the
    final templated result being wrapped in AnsibleUnsafe.
    cO`s&tt|�j||�t|_dS(N(tsuperR�t__init__R]tunsafe(R�targstkwargs((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyR�scC`s�t|t�r@x�|j�D]}|j||�rtSqWnRt|t�rvx@|D]}|j|�rVtSqVWnt|dt�tkr�tStS(s
        Our helper function, which will also recursively check dict and
        list entries due to the fact that they may be repr'd and contain
        a key or value which contains jinja2 syntax and would otherwise
        lose the AnsibleUnsafe value.
        R�(Rztdicttkeyst
_is_unsafeR_R|tgetattrR](R�tvalR~R}((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyR�
s
cC`s5|dk	r1|jr1|j|�r1t|_ndS(N(RNR�R�R_(R�R�((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyt_update_unsafes%cC`s)tt|�j|�}|j|�|S(s�
        The intercepted resolve(), which uses the helper above to set the
        internal flag whenever an unsafe variable value is returned.
        (R�R�tresolveR�(R�R~R�((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyR�!s
cC`s)tt|�j|�}|j|�|S(N(R�R�tresolve_or_missingR�(R�R~R�((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyR�*s
cC`swtt�td�kr;|js(|jS|js;|jSnt|jt�r`|jj|j�St|j|j�SdS(s�Return the complete context as a dict including the exported
        variables. For optimizations reasons this might not return an
        actual copy so be careful with using it.

        This is to prevent from running ``AnsibleJ2Vars`` through dict():

            ``dict(self.parent, **self.vars)``

        In Ansible this means that ALL variables would be templated in the
        process of re-creating the parent because ``AnsibleJ2Vars`` templates
        each variable in its ``__getitem__`` method. Instead we re-create the
        parent via ``AnsibleJ2Vars.add_locals`` that creates a new
        ``AnsibleJ2Vars`` copy without templating each variable.

        This will prevent unnecessarily templating unused variables in cases
        like setting a local variable and passing it to {% include %}
        in a template.

        Also see ``AnsibleJ2Template``and
        https://github.com/pallets/jinja/commit/d67f0fd4cc2a4af08f51f4466150d49da7798729
        s2.9N(Rt
j2_versiontvarstparentRzR!t
add_localsR�(R�((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pytget_all/s		
(	R�R�R�R�R�R�R�R�R�(((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyR��s						tJinjaPluginInterceptcB`s>eZd�Zd�Zd�Zd�Zd�Zd�ZRS(cO`s�tt|�j||�||_||_|jjdkrRd|_d|_n'|jjdkryd|_d|_ni|_dS(NtFilterModuletfilterstfiltert
TestModuletteststtest(	R�R�R�t
_delegateet
_pluginloadert
class_namet_method_map_namet_dirnamet_collection_jinja_func_cache(R�t	delegateetpluginloaderR�R�((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyR�Ss				cC`s�t|t�std��nt|�}d|krF|jj|�S|jj|�}|rb|Stj	||j
�}|s�tdj|���nyt
|j�}Wntk
r�t��nX|j}|jr�dj||j�}nx�tj|jd|d�D]�\}}}|r'qny|jj|�}	Wn(tk
rg}
tt|
�d��nXt|	|j�}xAt|��D]0}dj||df�}
|d|j|
<q�WqW|j|}|S(Nskey must be a stringt.sinvalid plugin name: {0}s{0}.{1}tprefixii(RzRt
ValueErrorRR�R�R�tgetR"ttry_parse_fqcrR�RERQRtn_python_package_nametImportErrort
collectiontsubdirstpkgutiltiter_modulest__path__R�t	ExceptionRR�R�RRb(R�R~tfunctacrtpkgt
parent_prefixtdummytmodule_nametispkgtplugin_impltet
method_maptftfq_namet
function_impl((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyR�cs>

		,
cC`s|jj||�S(N(R�t__setitem__(R�R~tvalue((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyR��scC`s
t��dS(N(tNotImplementedError(R�R~((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyt__delitem__�scC`s
t|j�S(N(titerR�(R�((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyt__iter__�scC`s
t|j�S(N(RrR�(R�((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyt__len__�s(R�R�R�R�R�R�R�R�(((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyR�Rs		0			tAnsibleEnvironmentcB`s#eZdZeZeZd�ZRS(s�
    Our custom environment, which simply allows us to override the class-level
    values for the Template and Context classes used by jinja2 internally.
    cO`sGtt|�j||�t|jt�|_t|jt�|_dS(N(R�R�R�R�R�RR�R(R�R�R�((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyR��s(R�R�R�R�t
context_classR ttemplate_classR�(((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyR��sc
B`s�eZdZddd�Zd�Zd�Zd�Zed��Z	e	j
d��Z	d�Zee
e
dde
de
ed�	Zd	�ZeZd
�Zd�Zd�Zd
�Zedd�Zd�Zd�Ze
e
dded�ZeZRS(sQ
    The main class for templating, with the main entry-point of template().
    cC`s�|dkrin|}||_d|_d|_||_i|_|r]|j�|_n	d|_|r�t|d�|_	t|d�|_
t|d�|_nt|_	t
|_
t|_t|_t|_tj|_tdtdtd|j�d|jd	t|j��|_d|_tjd
|jj|jjf�|_ tjd|jj|jj!|jj"|jjf�|_#tjdd
j$tj%�|jjf�|_&dS(Ns./RRRttrim_blockst	undefinedt
extensionstfinalizetloaders^%s\s*(\w*)\s*%s$s(?:%s|%s|%s|%s)s,.*?\|\s*(?:%s)(?:\([^\|]*\))?\s*\)?\s*(?:%s)t|('RNt_loadert_filterst_testst_available_variablest_cached_resulttget_basedirt_basedirR�t_filter_loadert_test_loadert_lookup_loaderRRRR_t_fail_on_lookup_errorst_fail_on_filter_errorsROtDEFAULT_UNDEFINED_VAR_BEHAVIORt_fail_on_undefined_errorsR�Rt_get_extensionst	_finalizeR	tenvironmenttcur_contexttretcompiletvariable_start_stringtvariable_end_stringt
SINGLE_VARtblock_start_stringtblock_end_stringt_clean_regexRbtSTRING_TYPE_FILTERSt_no_type_regex(R�R�tshared_loader_objt	variables((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyR��sD													(					cC`se|jdk	r|jj�St�|_x-|jj�D]}|jj|j��q8W|jj�S(sS
        Returns filter plugins, after loading and caching them if need be
        N(R�RNtcopyR�R�talltupdateR�(R�tfp((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyt_get_filters�s
cC`se|jdk	r|jj�St�|_x-|jj�D]}|jj|j��q8W|jj�S(sR
        Returns tests plugins, after loading and caching them if need be
        N(R�RNR�R�R�R�R�R�(R�R�((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyt
_get_tests�s
cC`s4g}tjr0tjjdd�jd�}n|S(s�
        Return jinja2 extensions to load.

        If some extensions are set via jinja_extensions in ansible.cfg, we try
        to load them with the jinja environment.
        t R[t,(ROtDEFAULT_JINJA2_EXTENSIONSRaRl(R�t
jinja_exts((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyR�s	!cC`s|jS(N(R�(R�((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pytavailable_variablesscC`s>t|t�s(tdt|���n||_i|_dS(s

        Sets the list of template variables this Templar instance will use
        to template things, so we don't have to pass them around between
        internal methods. We also clear the template cache here, as the variables
        are being changed.
        s5the type of 'variables' should be a dict but was a %sN(RzR�RttypeR�R�(R�R�((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyR�s		cC`s tjddd�||_dS(NsWset_available_variables is being deprecated. Use "@available_variables.setter" instead.tversions2.13(tdisplayt
deprecatedR�(R�R�((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pytset_available_variables(sc
C`s�|dkrdgn|}t|d�r.|S|dkrF|j}ny|ra|j|�}nt|t�r�|}|j|�r�|jj|�}|r�|j	d�}
|
|j
kr�|j
|
}t|t�r�|S|dkr�tj
Sq�nd}|	rmtt|�jd��}tt|�t|�t|�t|�jd��}|j�|j�}n|	r�||jkr�|j|}q�|j|d|d|d|d|d	|
�}tszt|d�}|rz|jj|�rz|jd
�r|j|jj�s-|jd�s-|dkrwt|dt�}|ddkrt|d}|rqt|�}qqqtqwqzn|	r�|r�||j|<q�n|St|�r�g|D]-}|j|d|d|d|d	|
�^q�St|t�r]i}x`|j�D]R}||krG|j||d|d|d|d	|
�||<q||||<qW|S|SWn$t k
r�|j!r��q�|SnXdS(s�
        Templates (possibly recursively) any given data as input. If convert_bare is
        set to True, the given data will be wrapped as a jinja2 variable ('{{foo}}')
        before being sent through the template engine.
        R[R�isutf-8tpreserve_trailing_newlinestescape_backslashestfail_on_undefinedt	overridestdisable_lookupst{t[R_R]tinclude_exceptionsiN(sTruesFalse("RNthasattrR�t_convert_bare_variableRzRtis_possibly_templateR�tmatchtgroupR�tNON_TEMPLATED_TYPESROtDEFAULT_NULL_REPRESENTATIONRRtencodet	hexdigestR�tdo_templatetUSE_JINJA2_NATIVER�t
startswithR�R�RR_R$RttemplateRR�RR�(R�tvariabletconvert_bareRRRRtconvert_datatstatic_varstcacheR	tresulttonly_onetvar_nametresolved_valt	sha1_hasht
variable_hashtoptions_hashR�teval_resultstvtdtk((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyR/s�


	%
	5

	cC`s�t|t�rt||j�St|ttf�r[xm|D]}|j|�r;tSq;WnIt|t�r�x7|D],}|j|�s�|j||�rqtSqqWntS(s#lets us know if data has a template(	RzRRqR�R|ttupleR_R�R](R�RcR'R)((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyRq�s

"cC`sR|j}t|t�rNx3|j|j|jfD]}||kr1tSq1WntS(sDetermines if a string looks like a template, by seeing if it
        contains a jinja2 start delimiter. Does not guarantee that the string
        is actually a template.

        This is different than ``is_template`` which is more strict.
        This method may return ``True`` on a string that is not templatable.

        Useful when guarding passing a string for templating, but when
        you want to allow the templating engine to make the final
        assessment which may result in ``TemplateSyntaxError``.
        (R�RzRR�R�tcomment_start_stringR_R](R�Rctenvtmarker((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyR�s	cC`s�t|t�r�d|k}|jd�djd�djd�d}|s]||jkr�|jj|kr�d|jj||jjfSn|S(s�
        Wraps a bare string, which may have an attribute portion (ie. foo.bar)
        in jinja2 variable braces so that it is evaluated properly.
        R�iR�Rs%s%s%s(RzRRlR�R�R�R�(R�Rtcontains_filterst
first_part((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyR�s-' cC`str
|S|dk	r|SdS(s
        A custom finalize method for jinja2, which prevents None from being returned. This
        avoids a string of ``"None"`` as ``None`` has no importance in YAML.

        If using ANSIBLE_JINJA2_NATIVE we bypass this and return the actual value always
        R[N(RRN(R�tthing((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyR��scO`std|��dS(NsHThe lookup `%s` was found, however lookups were disabled from templating(R
(R�R�R�R�((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyt_fail_lookup�scC`s>|rtjj�}ntjj�}|r:|j|�S|S(sUjinja2 global function to return current datetime, potentially formatted via strftime(RHtutcnowRMRS(R�tutctfmtRM((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyt
_now_datetime�s
cO`st|d<|j|||�S(s( wrapper for lookup, force wantlist truetwantlist(R_t_lookup(R�R�R�R�((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyt
_query_lookup�s
c
O`sa|jj|j�d|jd|�}|dk	rM|jdt�}|jdtj�}|jdd�}ddl	m
}|d	|d|d|jd
tdt�}	y|j|	d|j
|�}
Wn�ttfk
r�}t|��n�tk
r�}|jrvd
|t|�t|�f}|dkr?tj|�qv|dkratj|dt�qvtt|���n|r�gnd}
nX|
rI|rI|r�t|
�}
n�ytdj|
��}
Wndtk
r-t|
t�s�td|��nt|
�dkrt|
d�}
q.t|
�}
nX|jrIt|j_qIn|
Std|��dS(NR�ttemplarR6tallow_unsafeterrorststricti(tlistify_lookup_plugin_termsttermsRRR�ujAn unhandled exception occurred while running the lookup plugin '%s'. Error was a %s, original message: %stwarntignoretlog_onlyR�s-The lookup plugin '%s' did not return a list.islookup plugin (%s) not found( R�R�tlowerR�RNtpopR]ROtDEFAULT_ALLOW_UNSAFE_LOOKUPStansible.utils.listifyR=R_trunR�RRR�R�RRRtwarningR
RR$RbRFRzRRrR�R�(
R�R�R�R�tinstanceR6R:R;R=t
loop_termstranR�tmsg((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyR7�sJ'*	


	cC`s;trt|t�r|St|�}|dkr>|j}ny�|dkr_|jj�}n|jj|�}t|d�r|j	t
�r|jd�}	|tt
�|	!}
||	d}xZ|
j
d�D]F}|j
d�\}}
|j�}t||tj|
j���q�Wn|jj|j��|jj|j��|r`t||�}ny|j|�}Wnvtk
r�}tdt|�t|�f��nBtk
r�}dt|�kr�tdt|���q�|SnXt|jd	<|r(|j|jd
<|jd<|jd<n+|j |jd<|j!|jd
<|jd<|j"|jd
<|j#|jd<t$||j�}|j%|dt&�|_'}|j(|�}y7t)|�}t*|dt+�}|r�t,|�}nWn�t-k
rz}dt|�kr>dt|�}|dt|�7}t.|��q{t/j0dt1|��tdt|�t|�f��nXtr�t|t�r�|S|r�t|�}||kr�||jj2||7}|r�t,|�}q�q�n|SWnIt3t.fk
r6}|rt.|��q7t/j0dt1|��|SnXdS(NRs
iR�t:s6template error while templating string: %s. String: %st	recursions.recursive loop detected in template string: %sR�tquerytqtlookupRMR�tsharedR�RsIUnable to look up a name or access an attribute in template string (%s).
sMMake sure your variable name does not contain invalid characters like '-': %ss5failing because of a type error, template data is: %ss5Unexpected templating type error occurred on (%s): %ssIgnoring undefined failure: %s(4RRzRRwRNR�R�toverlayR
RtJINJA2_OVERRIDEtfindRrRltstriptsetattrtasttliteral_evalR�R�R�R�R�Ritfrom_stringRR
RR�R�tglobalsR1R7R8R5R�R!tnew_contextR_R�troot_render_funct	j2_concatR�R]R$RFRRtdebugRtnewline_sequenceR(R�RcRRRRR	t
data_newlinestmyenvteoltlinetpairR~R�ttR�tjvarsR[trftresR�tteterrmsgtres_newlines((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyR,s�&%
)&
N(R�R�R�RNR�R�R�R�tpropertyR�tsetterRR]R_RRqttemplatableRRR�R1R5R8R7Rt_do_template(((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyR%�s*3				u							5l(svariable_beginR-s
comment_beginR/(svariable_endR1R2R3((ht
__future__RRRRt
__metaclass__RWRHRAR�R?R�RRtdistutils.versionRtnumbersRthashlibRR�Rtjinja2.exceptionsRRtjinja2.loadersR	RyR
RtansibleRROtansible.errorsR
RRRtansible.module_utils.sixRRRtansible.module_utils._textRRRt/ansible.module_utils.common._collections_compatRRRt'ansible.module_utils.common.collectionsRt%ansible.module_utils.compat.importlibRtansible.plugins.loaderRRRtansible.template.safe_evalRtansible.template.templateR tansible.template.varsR!tansible.utils.collection_loaderR"tansible.utils.displayR#tansible.utils.unsafe_proxyR$Rt__all__tboolRRStjinja2R'R�R]RtDEFAULT_JINJA2_NATIVEtjinja2.nativetypesR(R*tansible.template.native_helpersR)R]R_tjinja2.utilsR+RGt	frozensetRkRmRNR&RiRqRwR{RR�R�R�R%(((s=/usr/lib/python2.7/site-packages/ansible/template/__init__.pyt<module>s|
"		

	+	!		SP

Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]