Version: 9.16.0
gui.adapt Namespace Reference

Classes

class  AdaptationError
 
class  LiskovViolation
 

Functions

def registerAdapterFactory (objtype, protocol, factory)
 
def unregisterAdapterFactory (objtype, protocol)
 
def _adapt_by_registry (obj, protocol, alternate)
 
def adapt (obj, protocol, alternate=AdaptationError)
 

Variables

dictionary _adapter_factory_registry = {}
 

Function Documentation

◆ _adapt_by_registry()

def gui.adapt._adapt_by_registry (   obj,
  protocol,
  alternate 
)
private

Definition at line 33 of file adapt.py.

33def _adapt_by_registry(obj, protocol, alternate):
34 factory = _adapter_factory_registry.get((type(obj), protocol))
35 if factory is None:
36 adapter = alternate
37 else:
38 adapter = factory(obj, protocol, alternate)
39 if adapter is AdaptationError:
40 raise AdaptationError(obj)
41 else:
42 return adapter
43
44
def _adapt_by_registry(obj, protocol, alternate)
Definition: adapt.py:33

Referenced by gui.adapt.adapt().

◆ adapt()

def gui.adapt.adapt (   obj,
  protocol,
  alternate = AdaptationError 
)

Definition at line 45 of file adapt.py.

45def adapt(obj, protocol, alternate=AdaptationError):
46
47 t = type(obj)
48
49 # (a) first check to see if object has the exact protocol
50 if t is protocol:
51 return obj
52
53 try:
54 # (b) next check if t.__conform__ exists & likes protocol
55 conform = getattr(t, '__conform__', None)
56 if conform is not None:
57 result = conform(obj, protocol)
58 if result is not None:
59 return result
60
61 # (c) then check if protocol.__adapt__ exists & likes obj
62 adapt = getattr(type(protocol), '__adapt__', None)
63 if adapt is not None:
64 result = adapt(protocol, obj)
65 if result is not None:
66 return result
67 except LiskovViolation:
68 pass
69 else:
70 # (d) check if object is instance of protocol
71 try:
72 if isinstance(obj, protocol):
73 return obj
74 except:
75 pass
76
77 # (e) last chance: try the registry
78 return _adapt_by_registry(obj, protocol, alternate)
def adapt(obj, protocol, alternate=AdaptationError)
Definition: adapt.py:45

References gui.adapt._adapt_by_registry(), and gui.adapt.adapt().

Referenced by gui.adapt.adapt().

◆ registerAdapterFactory()

def gui.adapt.registerAdapterFactory (   objtype,
  protocol,
  factory 
)

Definition at line 27 of file adapt.py.

27def registerAdapterFactory(objtype, protocol, factory):
28 _adapter_factory_registry[objtype, protocol] = factory
29
def registerAdapterFactory(objtype, protocol, factory)
Definition: adapt.py:27

◆ unregisterAdapterFactory()

def gui.adapt.unregisterAdapterFactory (   objtype,
  protocol 
)

Definition at line 30 of file adapt.py.

30def unregisterAdapterFactory(objtype, protocol):
31 del _adapter_factory_registry[objtype, protocol]
32
def unregisterAdapterFactory(objtype, protocol)
Definition: adapt.py:30

Variable Documentation

◆ _adapter_factory_registry

dictionary gui.adapt._adapter_factory_registry = {}
private

Definition at line 25 of file adapt.py.