1
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
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
47 """
48 Wrapper for providing template factory memoization keys
49
50 :IVariables:
51 `_factory` : `tdi.factory.Factory`
52 Factory
53 """
54
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
73
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):
97 _copy_doc(from_file)
98
99 - def from_stream(self, stream, encoding=None, filename=None, mtime=None,
100 opener=None, key=None):
108 _copy_doc(from_stream)
109
110 - def from_opener(self, opener, filename, encoding=None, key=None):
117 _copy_doc(from_opener)
118
119 - def from_string(self, data, encoding=None, filename=None, mtime=None,
120 key=None):
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