ó žňœMc@sŹddlZddlZddlZddlZddlmZmZddlmZyddl Z Wnddl Z nXde fd„ƒYZ de fd„ƒYZ dS(i˙˙˙˙N(t exceptionstutil(tTemplatetTemplateCollectioncBs5eZdZd„Zdd„Zd„Zd„ZRS(sARepresent a collection of :class:`.Template` objects, identifiable via uri. A :class:`.TemplateCollection` is linked to the usage of all template tags that address other templates, such as ``<%include>``, ``<%namespace>``, and ``<%inherit>``. The ``file`` attribute of each of those tags refers to a string URI that is passed to that :class:`.Template` object's :class:`.TemplateCollection` for resolution. :class:`.TemplateCollection` is an abstract class, with the usual default implementation being :class:`.TemplateLookup`. cCs1y|j|ƒtSWntjk r,tSXdS(sŇReturn ``True`` if this :class:`.TemplateLookup` is capable of returning a :class:`.Template` object for the given URL. :param uri: String uri of the template to be resolved. N(t get_templatetTrueRtTemplateLookupExceptiontFalse(tselfturi((s1/usr/lib/python2.7/vendor-packages/mako/lookup.pyt has_template s  cCs tƒ‚dS(sÄReturn a :class:`.Template` object corresponding to the given URL. The default implementation raises :class:`.NotImplementedError`. Implementations should raise :class:`.TemplateLookupException` if the given uri cannot be resolved. :param uri: String uri of the template to be resolved. :param relativeto: if present, the given URI is assumed to be relative to this uri. N(tNotImplementedError(RR t relativeto((s1/usr/lib/python2.7/vendor-packages/mako/lookup.pyR.scCs|S(sTConvert the given filename to a uri relative to this TemplateCollection.((RR tfilename((s1/usr/lib/python2.7/vendor-packages/mako/lookup.pytfilename_to_uri>scCs|S(sźAdjust the given uri based on the calling filename. When this method is called from the runtime, the 'filename' parameter is taken directly to the 'filename' attribute of the calling template. Therefore a custom TemplateCollection subclass can place any string identifier desired in the "filename" parameter of the Template objects it constructs and have them come back here. ((RR R ((s1/usr/lib/python2.7/vendor-packages/mako/lookup.pyt adjust_uriDs N(t__name__t __module__t__doc__R tNoneRRR(((s1/usr/lib/python2.7/vendor-packages/mako/lookup.pyRs    tTemplateLookupcBsžeZdZd d eded eed dd d d ed d d ed d d d„Zd„Zd„Zd„Z d„Z d„Z d „Z d „Z d „ZRS(sľ Represent a collection of templates that locates template source files from the local filesystem. The primary argument is the ``directories`` argument, the list of directories to search:: lookup = TemplateLookup(["/path/to/templates"]) some_template = lookup.get_template("/index.html") The :class:`.TemplateLookup` can also be given :class:`.Template` objects programatically using :meth:`.put_string` or :meth:`.put_template`:: lookup = TemplateLookup() lookup.put_string("base.html", ''' ${self.next()} ''') lookup.put_string("hello.html", ''' <%include file='base.html'/> Hello, world ! ''') :param directories: A list of directory names which will be searched for a particular template URI. The URI is appended to each directory and the filesystem checked. :param collection_size: Approximate size of the collection used to store templates. If left at its default of -1, the size is unbounded, and a plain Python dictionary is used to relate URI strings to :class:`.Template` instances. Otherwise, a least-recently-used cache object is used which will maintain the size of the collection approximately to the number given. :param filesystem_checks: When at its default value of ``True``, each call to :meth:`TemplateLookup.get_template()` will compare the filesystem last modified time to the time in which an existing :class:`.Template` object was created. This allows the :class:`.TemplateLookup` to regenerate a new :class:`.Template` whenever the original source has been updated. Set this to ``False`` for a very minor performance increase. :param modulename_callable: A callable which, when present, is passed the path of the source file as well as the requested URI, and then returns the full path of the generated Python module file. This is used to inject alternate schemes for Pyhton module location. If left at its default of ``None``, the built in system of generation based on ``module_directory`` plus ``uri`` is used. All other keyword parameters available for :class:`.Template` are mirrored here. When new :class:`.Template` objects are created, the keywords established with this :class:`.TemplateLookup` are passed on to each new :class:`.Template`. i˙˙˙˙tstrictcCs3gtj|dƒD]}tj|ƒ^q|_||_||_||_||_i|d6|d6|d6|d6| d6| d6|d6|d6| d 6| p |d 6| d 6|d 6|d 6|d6|d6|d6|d6|_ |dkrüi|_ i|_ n$tj |ƒ|_ tj |ƒ|_ t jƒ|_dS(Ntformat_exceptionst error_handlertdisable_unicodetbytestring_passthroughtoutput_encodingtencoding_errorstinput_encodingtmodule_directoryt cache_typet cache_dirt cache_urlt cache_enabledtdefault_filterstbuffer_filterststrict_undefinedtimportst preprocessori˙˙˙˙((Rtto_listt posixpathtnormpatht directoriesRtmodulename_callabletfilesystem_checkstcollection_sizet template_argst _collectiont _uri_cachetLRUCachet threadingtLockt_mutex(RR*RR,R-RRRRRRRRR R!R+R"R#R$R%RR&td((s1/usr/lib/python2.7/vendor-packages/mako/lookup.pyt__init__s<.         cCsŔy/|jr#|j||j|ƒS|j|SWnŠtk rťtjdd|ƒ}xe|jD]C}tjtj ||ƒƒ}t j j |ƒr^|j ||ƒSq^Wtjd|ƒ‚nXdS(s¤Return a :class:`.Template` object corresponding to the given URL. Note the "relativeto" argument is not supported here at the moment. s^\/+tsCant locate template for uri %rN(R,t_checkR/tKeyErrortretsubR*R(R)tjointostpathtisfilet_loadRtTopLevelLookupException(RR tutdirtsrcfile((s1/usr/lib/python2.7/vendor-packages/mako/lookup.pyRČs  cCs˜||f}||jkr&|j|S|ddkrƒ|dk rktjtj|ƒ|ƒ}|j|s0B