Source code for PyOpenWorm.relationshipProxy
from lazy_object_proxy import Proxy
class RelationshipProxy(Proxy):
def __repr__(self):
return repr(self.__wrapped__)
def in_context(self, context):
rel = self.__factory__
rel.p.context = context
return self
def unwrapped(self):
return self.__wrapped__
[docs]class Rel(tuple):
""" A container for a relationship-assignment """
_map = dict(s=0, p=1, o=2)
def __new__(cls, s, p, o):
return super(Rel, cls).__new__(cls, (s, p, o))
def __getattr__(self, n):
return self[Rel._map[n]]
def __call__(self):
return self.rel()
def rel(self):
from PyOpenWorm.relationship import Relationship
R = self.p.context(Relationship)
return R(
s=(self.s if self.s.defined else None),
p=self.p.rdf_object,
o=(self.o if self.o.defined else None))