Package tdi :: Module factory_memoize
[frames] | no frames]

Source Code for Module tdi.factory_memoize

  1  # -*- coding: ascii -*- 
  2  # 
  3  # Copyright 2006, 2007, 2008, 2009, 2010, 2011 
  4  # Andr\xe9 Malo or his licensors, as applicable 
  5  # 
  6  # Licensed under the Apache License, Version 2.0 (the "License"); 
  7  # you may not use this file except in compliance with the License. 
  8  # You may obtain a copy of the License at 
  9  # 
 10  #     http://www.apache.org/licenses/LICENSE-2.0 
 11  # 
 12  # Unless required by applicable law or agreed to in writing, software 
 13  # distributed under the License is distributed on an "AS IS" BASIS, 
 14  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
 15  # See the License for the specific language governing permissions and 
 16  # limitations under the License. 
 17  """ 
 18  ================= 
 19   Factory Caching 
 20  ================= 
 21   
 22  Factory Caching. 
 23  """ 
 24  __author__ = u"Andr\xe9 Malo" 
 25  __docformat__ = "restructuredtext en" 
 26   
 27   
28 -def _copy_doc(func):
29 """ 30 Copy docstring 31 32 :Parameters: 33 `func` : ``callable`` 34 The method's function 35 """ 36 from tdi import factory as _factory 37 method = getattr(_factory.Factory, func.__name__, None) 38 if method is not None: 39 func.__doc__ = method.__doc__
40 41
42 -class MemoizedFactory(object):
43 """ 44 Wrapper for providing template factory memoization keys 45 46 :IVariables: 47 `_factory` : `tdi.factory.Factory` 48 Factory 49 """ 50
51 - def __init__(self, factory):
52 """ 53 Initialization 54 55 :Parameters: 56 `factory` : `tdi.factory.Factory` 57 Factory 58 """ 59 self._factory = factory
60
61 - def replace(self, autoupdate=None, eventfilters=None, streamfilters=None, 62 default_eventfilters=None, default_streamfilters=None, 63 overlay_eventfilters=None, overlay_streamfilters=None, 64 overlay_default_eventfilters=None, 65 overlay_default_streamfilters=None, default_encoding=None, 66 memoizer=None):
67 """ Create factory with replaced parameters """ 68 # pylint: disable = R0913 69 # (too many arguments) 70 71 return self.__class__(self._factory.replace( 72 autoupdate=autoupdate, 73 eventfilters=eventfilters, 74 streamfilters=streamfilters, 75 default_eventfilters=default_eventfilters, 76 default_streamfilters=default_streamfilters, 77 overlay_eventfilters=overlay_eventfilters, 78 overlay_streamfilters=overlay_streamfilters, 79 overlay_default_eventfilters=overlay_default_eventfilters, 80 overlay_default_streamfilters=overlay_default_streamfilters, 81 default_encoding=default_encoding, 82 memoizer=memoizer, 83 ))
84 _copy_doc(replace) 85
86 - def from_file(self, filename, encoding=None, key=None):
87 """ Build template from file """ 88 if key is None: 89 key = filename 90 return self._factory.from_file(filename, encoding=encoding, 91 key=key 92 )
93 _copy_doc(from_file) 94
95 - def from_stream(self, stream, encoding=None, filename=None, mtime=None, 96 opener=None, key=None):
97 """ Build template from stream """ 98 if key is None: 99 key = filename 100 return self._factory.from_stream(stream, encoding=encoding, 101 filename=filename, mtime=mtime, opener=opener, 102 key=key 103 )
104 _copy_doc(from_stream) 105
106 - def from_opener(self, opener, filename, encoding=None, key=None):
107 """ Build template from stream opener """ 108 if key is None: 109 key = filename 110 return self._factory.from_opener(opener, filename, encoding=encoding, 111 key=key 112 )
113 _copy_doc(from_opener) 114
115 - def from_string(self, data, encoding=None, filename=None, mtime=None, 116 key=None):
117 """ Build template from string """ 118 if key is None: 119 key = filename 120 return self._factory.from_string(data, encoding=encoding, 121 filename=filename, mtime=mtime, 122 key=key 123 )
124 _copy_doc(from_string) 125
126 - def from_files(self, names, encoding=None, basedir=None, key=None):
127 """ Load templates from files and overlay them """ 128 if key is None: 129 key = (basedir,) + tuple(names) 130 return self._factory.from_files(names, encoding=encoding, 131 basedir=basedir, 132 key=key 133 )
134 _copy_doc(from_files) 135
136 - def from_streams(self, streams, encoding=None, streamopen=None, 137 key=None):
138 """ Load templates from streams and overlay them """ 139 if key is None: 140 key = tuple(streams) 141 try: 142 hash(key) 143 except TypeError: 144 key = None 145 return self._factory.from_streams(streams, encoding=encoding, 146 streamopen=streamopen, 147 key=key 148 )
149 _copy_doc(from_streams)
150