def start_kernel( cls, kernelspec_name=None, connection_info=None, connection_name=None, ): """Start kernel and return a `Kernel` instance.""" kernel_id = uuid.uuid4() if kernelspec_name: kernel_manager = KernelManager(kernel_name=kernelspec_name) kernel_manager.start_kernel() elif connection_info: kernel_manager = KernelManager() kernel_manager.load_connection_info(connection_info) # `KernelManager.kernel_name` is not automatically set from connection info. kernel_manager.kernel_name = connection_info.get("kernel_name", "") else: raise Exception( "You must specify any of {`kernelspec_name`, `connection_info`}." ) kernel = KernelConnection(kernel_id, kernel_manager, cls, connection_name=connection_name, logger=cls.logger) cls.kernels[kernel_id] = kernel return kernel