def right(self): # paths... pk_path = self.__right.pk_path right_path = self.__right.set_path left_path = self.__left.set_path # join... for pk in self.__right.pk_values(): right = self.__right.retrieve(pk) left = self.__left.retrieve(pk) yield PathDict.union((pk_path, pk), (left_path, left), (right_path, right))
def full(self): # paths... pk_path = self.__left.pk_path right_path = self.__right.set_path left_path = self.__left.set_path # keys... right_pk_values = set(self.__right.pk_values()) left_pk_values = set(self.__left.pk_values()) pk_values = sorted(right_pk_values | left_pk_values) # join... for pk in pk_values: right = self.__right.retrieve(pk) left = self.__left.retrieve(pk) yield PathDict.union((pk_path, pk), (left_path, left), (right_path, right))