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

Source Code for Module tdi.factory_memoize

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