def update_path(self, path):

        oldpath = self.path
        self.path = []
        for p in path:
            if p[0] != '$':
                break

            # this will create a Router if we give it a router
            # LongName that doesn't yet exist
            router = self.router_container.router_from_id(p)

            self.path.append(router)
            if len(self.path) > len(oldpath):
                [x.circuit_extend(self, router) for x in self.listeners]
                oldpath = self.path
There are EXTENDED messages which don't include any routers at
dataset/ETHPy150Open meejah/txtorcon/txtorcon/circuit.py/Circuit.update_path