MCPcopy Create free account
hub / github.com/ronreiter/interactive-tutorials / Factory

Class Factory

suds/client.py:221–272  ·  view source on GitHub ↗

A factory for instantiating types defined in the wsdl @ivar resolver: A schema type resolver. @type resolver: L{PathResolver} @ivar builder: A schema object builder. @type builder: L{Builder}

Source from the content-addressed store, hash-verified

219
220
221class Factory:
222 """
223 A factory for instantiating types defined in the wsdl
224 @ivar resolver: A schema type resolver.
225 @type resolver: L{PathResolver}
226 @ivar builder: A schema object builder.
227 @type builder: L{Builder}
228 """
229
230 def __init__(self, wsdl):
231 """
232 @param wsdl: A schema object.
233 @type wsdl: L{wsdl.Definitions}
234 """
235 self.wsdl = wsdl
236 self.resolver = PathResolver(wsdl)
237 self.builder = Builder(self.resolver)
238
239 def create(self, name):
240 """
241 create a WSDL type by name
242 @param name: The name of a type defined in the WSDL.
243 @type name: str
244 @return: The requested object.
245 @rtype: L{Object}
246 """
247 timer = metrics.Timer()
248 timer.start()
249 type = self.resolver.find(name)
250 if type is None:
251 raise TypeNotFound(name)
252 if type.enum():
253 result = InstFactory.object(name)
254 for e, a in type.children():
255 setattr(result, e.name, e.name)
256 else:
257 try:
258 result = self.builder.build(type)
259 except Exception as e:
260 log.error("create '%s' failed", name, exc_info=True)
261 raise BuildError(name, e)
262 timer.stop()
263 metrics.log.debug('%s created: %s', name, timer)
264 return result
265
266 def separator(self, ps):
267 """
268 Set the path separator.
269 @param ps: The new path separator.
270 @type ps: char
271 """
272 self.resolver = PathResolver(self.wsdl, ps)
273
274
275class ServiceSelector:

Callers 1

__init__Method · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected