From be318e638fb0b72f9a9da4b41cbf885ca2eb257f Mon Sep 17 00:00:00 2001 From: Thorsten Beier Date: Mon, 23 Feb 2026 15:30:19 +0100 Subject: [PATCH 1/5] hotfix to unbreak syntax highlighting --- src/xinterpreter.cpp | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/src/xinterpreter.cpp b/src/xinterpreter.cpp index 100e480b..0f722fbe 100644 --- a/src/xinterpreter.cpp +++ b/src/xinterpreter.cpp @@ -301,28 +301,29 @@ namespace xpyt }); bool has_debugger = (PY_MAJOR_VERSION != 3) || (PY_MAJOR_VERSION != 13); - nl::json rep = xeus::create_info_reply( - "5.5", // protocol_version - overwrited in xeus core - "xeus-python", // implementation - XPYT_VERSION, // implementation_version - "python", // language_name - PY_VERSION, // language_version - "text/x-python", // language_mimetype - ".py", // language_file_extension - "ipython" + std::to_string(PY_MAJOR_VERSION), // pygments_lexer - R"({"name": "ipython", "version": )" + std::to_string(PY_MAJOR_VERSION) + "}", // language_codemirror_mode - "python", // language_nbconvert_exporter - banner, // banner - has_debugger, // debugger - help_links // help_links - ); + + nl::json kernel_res; + kernel_res["status"] = "ok"; + kernel_res["protocol_version"] = "5.3"; + kernel_res["implementation"] = "xeus-python"; + kernel_res["implementation_version"] = XPYT_VERSION; + kernel_res["language_info"]["name"] = "python"; + kernel_res["language_info"]["version"] = PY_VERSION; + kernel_res["language_info"]["mimetype"] = "text/x-python"; + kernel_res["language_info"]["file_extension"] = ".py"; + kernel_res["language_info"]["pygments_lexer"] = "ipython" + std::to_string(PY_MAJOR_VERSION); + // this breaks syntax highlighting + //kernel_res["language_info"]["codemirror_mode"] = R"({"name": "ipython", "version": )" + std::to_string(PY_MAJOR_VERSION) + "}"; + kernel_res["language_info"]["nbconvert_exporter"] = "python"; + kernel_res["banner"] = banner; + kernel_res["debugger"] = has_debugger; + kernel_res["help_links"] = help_links; if (has_debugger) { - rep["supported_features"] = nl::json::array({"debugger"}); + kernel_res["supported_features"] = nl::json::array({"debugger"}); } - - return rep; + return kernel_res; } void interpreter::shutdown_request_impl() From 6554f2d012993c2a8acd8eb0a34ec1d1814526a3 Mon Sep 17 00:00:00 2001 From: DerThorsten Date: Mon, 23 Feb 2026 16:03:35 +0100 Subject: [PATCH 2/5] codemirror as dict --- src/xinterpreter.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/xinterpreter.cpp b/src/xinterpreter.cpp index 0f722fbe..985194ca 100644 --- a/src/xinterpreter.cpp +++ b/src/xinterpreter.cpp @@ -312,8 +312,7 @@ namespace xpyt kernel_res["language_info"]["mimetype"] = "text/x-python"; kernel_res["language_info"]["file_extension"] = ".py"; kernel_res["language_info"]["pygments_lexer"] = "ipython" + std::to_string(PY_MAJOR_VERSION); - // this breaks syntax highlighting - //kernel_res["language_info"]["codemirror_mode"] = R"({"name": "ipython", "version": )" + std::to_string(PY_MAJOR_VERSION) + "}"; + kernel_res["language_info"]["codemirror_mode"] = nl::json::object({{"name", "ipython"}, {"version", PY_MAJOR_VERSION}}); kernel_res["language_info"]["nbconvert_exporter"] = "python"; kernel_res["banner"] = banner; kernel_res["debugger"] = has_debugger; From bc23a457aaf6f24f956d555e3adebf417e41fcac Mon Sep 17 00:00:00 2001 From: DerThorsten Date: Mon, 23 Feb 2026 16:03:59 +0100 Subject: [PATCH 3/5] codemirror as dict, 5.5 --- src/xinterpreter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/xinterpreter.cpp b/src/xinterpreter.cpp index 985194ca..9db78492 100644 --- a/src/xinterpreter.cpp +++ b/src/xinterpreter.cpp @@ -304,7 +304,7 @@ namespace xpyt nl::json kernel_res; kernel_res["status"] = "ok"; - kernel_res["protocol_version"] = "5.3"; + kernel_res["protocol_version"] = "5.5"; kernel_res["implementation"] = "xeus-python"; kernel_res["implementation_version"] = XPYT_VERSION; kernel_res["language_info"]["name"] = "python"; From 76a89fd9b7a1c2386534471db8c3ebc29306a80f Mon Sep 17 00:00:00 2001 From: DerThorsten Date: Mon, 23 Feb 2026 16:10:26 +0100 Subject: [PATCH 4/5] use helpers --- src/xinterpreter.cpp | 36 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/src/xinterpreter.cpp b/src/xinterpreter.cpp index 9db78492..afca22f8 100644 --- a/src/xinterpreter.cpp +++ b/src/xinterpreter.cpp @@ -301,28 +301,26 @@ namespace xpyt }); bool has_debugger = (PY_MAJOR_VERSION != 3) || (PY_MAJOR_VERSION != 13); - - nl::json kernel_res; - kernel_res["status"] = "ok"; - kernel_res["protocol_version"] = "5.5"; - kernel_res["implementation"] = "xeus-python"; - kernel_res["implementation_version"] = XPYT_VERSION; - kernel_res["language_info"]["name"] = "python"; - kernel_res["language_info"]["version"] = PY_VERSION; - kernel_res["language_info"]["mimetype"] = "text/x-python"; - kernel_res["language_info"]["file_extension"] = ".py"; - kernel_res["language_info"]["pygments_lexer"] = "ipython" + std::to_string(PY_MAJOR_VERSION); - kernel_res["language_info"]["codemirror_mode"] = nl::json::object({{"name", "ipython"}, {"version", PY_MAJOR_VERSION}}); - kernel_res["language_info"]["nbconvert_exporter"] = "python"; - kernel_res["banner"] = banner; - kernel_res["debugger"] = has_debugger; - kernel_res["help_links"] = help_links; - + nl::json rep = xeus::create_info_reply( + "5.5", // protocol_version - overwrited in xeus core + "xeus-python", // implementation + XPYT_VERSION, // implementation_version + "python", // language_name + PY_VERSION, // language_version + "text/x-python", // language_mimetype + ".py", // language_file_extension + "ipython" + std::to_string(PY_MAJOR_VERSION), // pygments_lexer + nl::json::object({{"name", "ipython"}, {"version", PY_MAJOR_VERSION}}), // language_codemirror_mode + "python", // language_nbconvert_exporter + banner, // banner + has_debugger, // debugger + help_links // help_links + ); if (has_debugger) { - kernel_res["supported_features"] = nl::json::array({"debugger"}); + rep["supported_features"] = nl::json::array({"debugger"}); } - return kernel_res; + return rep; } void interpreter::shutdown_request_impl() From 5a30262dde46081b2b614b9189b3effd77eeb623 Mon Sep 17 00:00:00 2001 From: DerThorsten Date: Mon, 23 Feb 2026 16:29:14 +0100 Subject: [PATCH 5/5] overwrite --- src/xinterpreter.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/xinterpreter.cpp b/src/xinterpreter.cpp index afca22f8..58921ce9 100644 --- a/src/xinterpreter.cpp +++ b/src/xinterpreter.cpp @@ -310,12 +310,17 @@ namespace xpyt "text/x-python", // language_mimetype ".py", // language_file_extension "ipython" + std::to_string(PY_MAJOR_VERSION), // pygments_lexer - nl::json::object({{"name", "ipython"}, {"version", PY_MAJOR_VERSION}}), // language_codemirror_mode + R"({"name": "ipython", "version": )" + std::to_string(PY_MAJOR_VERSION) + "}", "python", // language_nbconvert_exporter banner, // banner has_debugger, // debugger help_links // help_links ); + // use a dict, string seems to be not supported by the frontend + rep["language_info"]["codemirror_mode"] = nl::json::object({ + {"name", "ipython"}, + {"version", PY_MAJOR_VERSION} + }); if (has_debugger) { rep["supported_features"] = nl::json::array({"debugger"});