def _path(from_object, to_object):
 if (from_object._root != to_object._root):
  raise ValueError(((('No connecting path found between ' + str(from_object)) + ' and ') + str(to_object)))
 other_path = []
 obj = to_object
 while (obj._parent is not None):
  other_path.append(obj)
  obj = obj._parent
 other_path.append(obj)
 object_set = set(other_path)
 from_path = []
 obj = from_object
 while (obj not in object_set):
  from_path.append(obj)
  obj = obj._parent
 index = len(from_path)
 i = other_path.index(obj)
 while (i >= 0):
  from_path.append(other_path[i])
  i -= 1
 return (index, from_path)

def _path ( from_object , to_object ) : if ( from_object . _root != to_object . _root ) : raise ValueError ( ( ( ( 'No connecting path found between ' + str ( from_object ) ) + ' and ' ) + str ( to_object ) ) ) other_path = [ ] obj = to_object while ( obj . _parent is not None ) : other_path . append ( obj ) obj = obj . _parent other_path . append ( obj ) object_set = set ( other_path ) from_path = [ ] obj = from_object while ( obj not in object_set ) : from_path . append ( obj ) obj = obj . _parent index = len ( from_path ) i = other_path . index ( obj ) while ( i >= 0 ) : from_path . append ( other_path [ i ] ) i -= 1 return ( index , from_path )
calculates the path of objects starting from from_object to to_object .