Version: 9.15.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.

33 def _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.

45 def 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().

Referenced by YACS::ENGINE::RuntimeSALOME.adapt().

◆ registerAdapterFactory()

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

Definition at line 27 of file adapt.py.

27 def 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.

30 def 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.