From e49fb8bcecf95544dbe6016c3eff8e1364190e85 Mon Sep 17 00:00:00 2001 From: Josh Barnes Date: Fri, 28 Jul 2017 11:51:59 +0100 Subject: [PATCH 1/2] Ensure NbserverListApp produces valid json even for multiple/no servers --- notebook/notebookapp.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/notebook/notebookapp.py b/notebook/notebookapp.py index 132aa4ddf..09d48f54f 100755 --- a/notebook/notebookapp.py +++ b/notebook/notebookapp.py @@ -398,12 +398,12 @@ class NbserverListApp(JupyterApp): "details from the server info file.")) def start(self): - if not self.json: - print(_("Currently running servers:")) - for serverinfo in list_running_servers(self.runtime_dir): - if self.json: - print(json.dumps(serverinfo)) - else: + serverinfo_list = list(list_running_servers(self.runtime_dir)) + if self.json: + print(json.dumps(serverinfo_list)) + else: + print("Currently running servers:") + for serverinfo in serverinfo_list: url = serverinfo['url'] if serverinfo.get('token'): url = url + '?token=%s' % serverinfo['token'] From 79c5fb5ac9f450a225ced7355cd7b7be8ce16af3 Mon Sep 17 00:00:00 2001 From: Josh Barnes Date: Fri, 28 Jul 2017 14:57:23 +0100 Subject: [PATCH 2/2] add separate flag for NbserverListApp json list output --- notebook/notebookapp.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/notebook/notebookapp.py b/notebook/notebookapp.py index 09d48f54f..97599f276 100755 --- a/notebook/notebookapp.py +++ b/notebook/notebookapp.py @@ -389,18 +389,28 @@ class NbserverListApp(JupyterApp): description=_("List currently running notebook servers.") flags = dict( + jsonlist=({'NbserverListApp': {'jsonlist': True}}, + _("Produce machine-readable JSON list output.")), json=({'NbserverListApp': {'json': True}}, - _("Produce machine-readable JSON output.")), + _("Produce machine-readable JSON object on each line of output.")), ) + jsonlist = Bool(False, config=True, + help=_("If True, the output will be a JSON list of objects, one per " + "active notebook server, each with the details from the " + "relevant server info file.")) json = Bool(False, config=True, help=_("If True, each line of output will be a JSON object with the " - "details from the server info file.")) + "details from the server info file. For a JSON list output, " + "see the NbserverListApp.jsonlist configuration value")) def start(self): serverinfo_list = list(list_running_servers(self.runtime_dir)) - if self.json: - print(json.dumps(serverinfo_list)) + if self.jsonlist: + print(json.dumps(serverinfo_list, indent=2)) + elif self.json: + for serverinfo in serverinfo_list: + print(json.dumps(serverinfo)) else: print("Currently running servers:") for serverinfo in serverinfo_list: