def signal_severance(self, socket=None):
        """Act on severance of incomming connection."""
        ## if socket is not None, store reference to it and
        ## exit immediatelly

        if socket is not None:
            self.severed_sockets.append(socket)
            return

        ## otherwise..
        else:

            ## copy the list of severed sockets and clear
            ## the original one

            sockets = self.severed_sockets.copy()
            self.severed_sockets.clear()

            ## if the proxy socket isn't present among the
            ## severed ones, exit the method

            for socket in sockets:

                if socket is self.proxy_socket:
                    break

            else:
                return

        ## delete source name and type codename

        del self.data["source_name"]
        del self.data["source_type_codename"]

        ## update label surface
        self.update_label_surface()

        ## check header width
        self.check_header_width()

        ## reposition node elements since the label changed and
        ## the header width probably changed as well
        self.reposition_elements()

        ###

        try:
            widget = self.widget

        except AttributeError:
            type_codename = None

        else:

            expected_type = widget.get_expected_type()

            type_codename = type_to_codename(expected_type)

        output_socket = self.output_socket

        output_socket.update_type_codename(type_codename)

        self.propagate_output(self.title, type_codename)
Act on severance of incomming connection.
nodezator/graphman/proxynode/segment.py