We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
[Scratchpad] Buggy in sway
**Describe the bug**

Scratchpad behavior running in sway is buggy.

**Your py3status version**

py3status version 3.36 (python 3.9.2) on sway/Arch.

**To Reproduce**

Weird behavior depending on the formatting string used in config.

1.  There are 2 windows in the scratchpad...qutebrowser and firefox.  I found this command to list them:

```
swaymsg -t get_tree |   jq -r 'recurse(.nodes[]?) | select(.name == "__i3_scratch").floating_nodes[].app_id, select(.name == "__i3_scratch").floating_nodes[].window_properties.title' | grep -v null
```
Result:
```
org.qutebrowser.qutebrowser
firefox
```
2. Configure module like this '....'
```
scratchpad {
	color = '#A54242'
	format = '[\?not_zero ⌫ [\?color=scratchpad {scratchpad}]]'
	on_click 1 = 'scratchpad show'
}
```
No scratchpad indicator.

Changing the format line to the default:

```
scratchpad {
	color = '#A54242'
	#format = '[\?if=not_zero ⌫ [\?color=scratchpad {scratchpad}]]'
	on_click 1 = 'scratchpad show'
}
```
Scratchpad indicator present, color is correct; count is 0 (zero)

The ```on_click 1``` command works as expected.

**Additional context**

No special flags for starting py3status:

```
status_command py3status
```



--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `py3status/modules/scratchpad.py`
Content:
```
1 """
2 Display number of scratchpad windows and urgency hints.
3 
4 Configuration parameters:
5     cache_timeout: refresh interval for i3-msg or swaymsg (default 5)
6     format: display format for this module
7         (default "\u232b [\\?color=scratchpad {scratchpad}]")
8     thresholds: specify color thresholds to use
9         (default [(0, "darkgray"), (1, "violet")])
10 
11 Format placeholders:
12     {scratchpad} number of scratchpads
13     {urgent} number of urgent scratchpads
14 
15 Color thresholds:
16     xxx: print a color based on the value of `xxx` placeholder
17 
18 Optional:
19     i3ipc: an improved python library to control i3wm and sway
20 
21 Examples:
22 ```
23 # hide zero scratchpad
24 scratchpad {
25     format = '[\\?not_zero \u232b [\\?color=scratchpad {scratchpad}]]'
26 }
27 
28 # hide non-urgent scratchpad
29 scratchpad {
30     format = '[\\?not_zero \u232b {urgent}]'
31 }
32 
33 # bring up scratchpads on clicks
34 scratchpad {
35     on_click 1 = 'scratchpad show'
36 }
37 
38 # add more colors
39 scratchpad {
40     thresholds = [
41        (0, "darkgray"), (1, "violet"), (2, "deepskyblue"), (3, "lime"),
42        (4, "yellow"), (5, "orange"), (6, "red"), (7, "tomato"),
43     ]
44 }
45 ```
46 
47 @author shadowprince (counter), cornerman (async)
48 @license Eclipse Public License (counter), BSD (async)
49 
50 SAMPLE OUTPUT
51 [{'full_text': '\u232b '}, {'full_text': u'0', 'color': '#a9a9a9'}]
52 
53 violet
54 [{'full_text': '\u232b '}, {'full_text': u'5', 'color': '#ee82ee'}]
55 
56 urgent
57 [{'full_text': '\u232b URGENT 1', 'urgent': True}]
58 """
59 
60 STRING_ERROR = "invalid ipc `{}`"
61 
62 
63 class Ipc:
64     """
65     """
66 
67     def __init__(self, parent):
68         self.parent = parent
69         self.setup(parent)
70 
71 
72 class I3ipc(Ipc):
73     """
74     i3ipc - an improved python library to control i3wm and sway
75     """
76 
77     def setup(self, parent):
78         from threading import Thread
79 
80         self.parent.cache_timeout = self.parent.py3.CACHE_FOREVER
81         self.scratchpad_data = {"scratchpad": 0, "urgent": 0}
82 
83         t = Thread(target=self.start)
84         t.daemon = True
85         t.start()
86 
87     def start(self):
88         from i3ipc import Connection
89 
90         i3 = Connection()
91         self.update(i3)
92         for event in ["window::move", "window::urgent"]:
93             i3.on(event, self.update)
94         i3.main()
95 
96     def update(self, i3, event=None):
97         leaves = i3.get_tree().scratchpad().leaves()
98         temporary = {
99             "ipc": self.parent.ipc,
100             "scratchpad": len(leaves),
101             "urgent": sum(window.urgent for window in leaves),
102         }
103         if self.scratchpad_data != temporary:
104             self.scratchpad_data = temporary
105             self.parent.py3.update()
106 
107     def get_scratchpad_data(self):
108         return self.scratchpad_data
109 
110 
111 class Msg(Ipc):
112     """
113     i3-msg - send messages to i3 window manager
114     swaymsg - send messages to sway window manager
115     """
116 
117     def setup(self, parent):
118         from json import loads
119 
120         self.json_loads = loads
121         wm_msg = {"i3msg": "i3-msg"}.get(parent.ipc, parent.ipc)
122         self.tree_command = [wm_msg, "-t", "get_tree"]
123 
124     def get_scratchpad_data(self):
125         tree = self.json_loads(self.parent.py3.command_output(self.tree_command))
126         leaves = self.find_scratchpad(tree).get("floating_nodes", [])
127         return {
128             "ipc": self.parent.ipc,
129             "scratchpad": len(leaves),
130             "urgent": sum(window["urgent"] for window in leaves),
131         }
132 
133     def find_scratchpad(self, tree):
134         if tree.get("name") == "__i3_scratch":
135             return tree
136         for x in tree.get("nodes", []):
137             result = self.find_scratchpad(x)
138             if result:
139                 return result
140         return {}
141 
142 
143 class Py3status:
144     """
145     """
146 
147     # available configuration parameters
148     cache_timeout = 5
149     format = "\u232b [\\?color=scratchpad {scratchpad}]"
150     thresholds = [(0, "darkgray"), (1, "violet")]
151 
152     def post_config_hook(self):
153         # ipc: specify i3ipc, i3-msg, or swaymsg, otherwise auto
154         self.ipc = getattr(self, "ipc", "")
155         if self.ipc in ["", "i3ipc"]:
156             try:
157                 from i3ipc import Connection  # noqa f401
158 
159                 self.ipc = "i3ipc"
160             except Exception:
161                 if self.ipc:
162                     raise  # module not found
163 
164         self.ipc = (self.ipc or self.py3.get_wm_msg()).replace("-", "")
165         if self.ipc in ["i3ipc"]:
166             self.backend = I3ipc(self)
167         elif self.ipc in ["i3msg", "swaymsg"]:
168             self.backend = Msg(self)
169         else:
170             raise Exception(STRING_ERROR.format(self.ipc))
171 
172         self.thresholds_init = self.py3.get_color_names_list(self.format)
173 
174     def scratchpad(self):
175         scratchpad_data = self.backend.get_scratchpad_data()
176 
177         for x in self.thresholds_init:
178             if x in scratchpad_data:
179                 self.py3.threshold_get_color(scratchpad_data[x], x)
180 
181         response = {
182             "cached_until": self.py3.time_in(self.cache_timeout),
183             "full_text": self.py3.safe_format(self.format, scratchpad_data),
184         }
185         if scratchpad_data["urgent"]:
186             response["urgent"] = True
187         return response
188 
189 
190 if __name__ == "__main__":
191     """
192     Run module in test mode.
193     """
194     from py3status.module_test import module_test
195 
196     config = {"format": r"\[{ipc}\] [\?color=scratchpad {scratchpad}]"}
197     module_test(Py3status, config=config)
198
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/py3status/modules/scratchpad.py b/py3status/modules/scratchpad.py
--- a/py3status/modules/scratchpad.py
+++ b/py3status/modules/scratchpad.py
@@ -94,7 +94,13 @@
         i3.main()
 
     def update(self, i3, event=None):
-        leaves = i3.get_tree().scratchpad().leaves()
+        scratchpad = i3.get_tree().scratchpad()
+        if not scratchpad:
+            return
+
+        # Workaround for I3ipc 2.2.1 not finding leaves() in sway. Fixing: #2038
+        leaves = getattr(scratchpad, "floating_nodes", [])
+
         temporary = {
             "ipc": self.parent.ipc,
             "scratchpad": len(leaves),

{"golden_diff": "diff --git a/py3status/modules/scratchpad.py b/py3status/modules/scratchpad.py\n--- a/py3status/modules/scratchpad.py\n+++ b/py3status/modules/scratchpad.py\n@@ -94,7 +94,13 @@\n         i3.main()\n \n     def update(self, i3, event=None):\n-        leaves = i3.get_tree().scratchpad().leaves()\n+        scratchpad = i3.get_tree().scratchpad()\n+        if not scratchpad:\n+            return\n+\n+        # Workaround for I3ipc 2.2.1 not finding leaves() in sway. Fixing: #2038\n+        leaves = getattr(scratchpad, \"floating_nodes\", [])\n+\n         temporary = {\n             \"ipc\": self.parent.ipc,\n             \"scratchpad\": len(leaves),\n", "issue": "[Scratchpad] Buggy in sway\n**Describe the bug**\r\n\r\nScratchpad behavior running in sway is buggy.\r\n\r\n**Your py3status version**\r\n\r\npy3status version 3.36 (python 3.9.2) on sway/Arch.\r\n\r\n**To Reproduce**\r\n\r\nWeird behavior depending on the formatting string used in config.\r\n\r\n1.  There are 2 windows in the scratchpad...qutebrowser and firefox.  I found this command to list them:\r\n\r\n```\r\nswaymsg -t get_tree |   jq -r 'recurse(.nodes[]?) | select(.name == \"__i3_scratch\").floating_nodes[].app_id, select(.name == \"__i3_scratch\").floating_nodes[].window_properties.title' | grep -v null\r\n```\r\nResult:\r\n```\r\norg.qutebrowser.qutebrowser\r\nfirefox\r\n```\r\n2. Configure module like this '....'\r\n```\r\nscratchpad {\r\n\tcolor = '#A54242'\r\n\tformat = '[\\?not_zero \u232b [\\?color=scratchpad {scratchpad}]]'\r\n\ton_click 1 = 'scratchpad show'\r\n}\r\n```\r\nNo scratchpad indicator.\r\n\r\nChanging the format line to the default:\r\n\r\n```\r\nscratchpad {\r\n\tcolor = '#A54242'\r\n\t#format = '[\\?if=not_zero \u232b [\\?color=scratchpad {scratchpad}]]'\r\n\ton_click 1 = 'scratchpad show'\r\n}\r\n```\r\nScratchpad indicator present, color is correct; count is 0 (zero)\r\n\r\nThe ```on_click 1``` command works as expected.\r\n\r\n**Additional context**\r\n\r\nNo special flags for starting py3status:\r\n\r\n```\r\nstatus_command py3status\r\n```\r\n\r\n\n", "before_files": [{"content": "\"\"\"\nDisplay number of scratchpad windows and urgency hints.\n\nConfiguration parameters:\n    cache_timeout: refresh interval for i3-msg or swaymsg (default 5)\n    format: display format for this module\n        (default \"\\u232b [\\\\?color=scratchpad {scratchpad}]\")\n    thresholds: specify color thresholds to use\n        (default [(0, \"darkgray\"), (1, \"violet\")])\n\nFormat placeholders:\n    {scratchpad} number of scratchpads\n    {urgent} number of urgent scratchpads\n\nColor thresholds:\n    xxx: print a color based on the value of `xxx` placeholder\n\nOptional:\n    i3ipc: an improved python library to control i3wm and sway\n\nExamples:\n```\n# hide zero scratchpad\nscratchpad {\n    format = '[\\\\?not_zero \\u232b [\\\\?color=scratchpad {scratchpad}]]'\n}\n\n# hide non-urgent scratchpad\nscratchpad {\n    format = '[\\\\?not_zero \\u232b {urgent}]'\n}\n\n# bring up scratchpads on clicks\nscratchpad {\n    on_click 1 = 'scratchpad show'\n}\n\n# add more colors\nscratchpad {\n    thresholds = [\n       (0, \"darkgray\"), (1, \"violet\"), (2, \"deepskyblue\"), (3, \"lime\"),\n       (4, \"yellow\"), (5, \"orange\"), (6, \"red\"), (7, \"tomato\"),\n    ]\n}\n```\n\n@author shadowprince (counter), cornerman (async)\n@license Eclipse Public License (counter), BSD (async)\n\nSAMPLE OUTPUT\n[{'full_text': '\\u232b '}, {'full_text': u'0', 'color': '#a9a9a9'}]\n\nviolet\n[{'full_text': '\\u232b '}, {'full_text': u'5', 'color': '#ee82ee'}]\n\nurgent\n[{'full_text': '\\u232b URGENT 1', 'urgent': True}]\n\"\"\"\n\nSTRING_ERROR = \"invalid ipc `{}`\"\n\n\nclass Ipc:\n    \"\"\"\n    \"\"\"\n\n    def __init__(self, parent):\n        self.parent = parent\n        self.setup(parent)\n\n\nclass I3ipc(Ipc):\n    \"\"\"\n    i3ipc - an improved python library to control i3wm and sway\n    \"\"\"\n\n    def setup(self, parent):\n        from threading import Thread\n\n        self.parent.cache_timeout = self.parent.py3.CACHE_FOREVER\n        self.scratchpad_data = {\"scratchpad\": 0, \"urgent\": 0}\n\n        t = Thread(target=self.start)\n        t.daemon = True\n        t.start()\n\n    def start(self):\n        from i3ipc import Connection\n\n        i3 = Connection()\n        self.update(i3)\n        for event in [\"window::move\", \"window::urgent\"]:\n            i3.on(event, self.update)\n        i3.main()\n\n    def update(self, i3, event=None):\n        leaves = i3.get_tree().scratchpad().leaves()\n        temporary = {\n            \"ipc\": self.parent.ipc,\n            \"scratchpad\": len(leaves),\n            \"urgent\": sum(window.urgent for window in leaves),\n        }\n        if self.scratchpad_data != temporary:\n            self.scratchpad_data = temporary\n            self.parent.py3.update()\n\n    def get_scratchpad_data(self):\n        return self.scratchpad_data\n\n\nclass Msg(Ipc):\n    \"\"\"\n    i3-msg - send messages to i3 window manager\n    swaymsg - send messages to sway window manager\n    \"\"\"\n\n    def setup(self, parent):\n        from json import loads\n\n        self.json_loads = loads\n        wm_msg = {\"i3msg\": \"i3-msg\"}.get(parent.ipc, parent.ipc)\n        self.tree_command = [wm_msg, \"-t\", \"get_tree\"]\n\n    def get_scratchpad_data(self):\n        tree = self.json_loads(self.parent.py3.command_output(self.tree_command))\n        leaves = self.find_scratchpad(tree).get(\"floating_nodes\", [])\n        return {\n            \"ipc\": self.parent.ipc,\n            \"scratchpad\": len(leaves),\n            \"urgent\": sum(window[\"urgent\"] for window in leaves),\n        }\n\n    def find_scratchpad(self, tree):\n        if tree.get(\"name\") == \"__i3_scratch\":\n            return tree\n        for x in tree.get(\"nodes\", []):\n            result = self.find_scratchpad(x)\n            if result:\n                return result\n        return {}\n\n\nclass Py3status:\n    \"\"\"\n    \"\"\"\n\n    # available configuration parameters\n    cache_timeout = 5\n    format = \"\\u232b [\\\\?color=scratchpad {scratchpad}]\"\n    thresholds = [(0, \"darkgray\"), (1, \"violet\")]\n\n    def post_config_hook(self):\n        # ipc: specify i3ipc, i3-msg, or swaymsg, otherwise auto\n        self.ipc = getattr(self, \"ipc\", \"\")\n        if self.ipc in [\"\", \"i3ipc\"]:\n            try:\n                from i3ipc import Connection  # noqa f401\n\n                self.ipc = \"i3ipc\"\n            except Exception:\n                if self.ipc:\n                    raise  # module not found\n\n        self.ipc = (self.ipc or self.py3.get_wm_msg()).replace(\"-\", \"\")\n        if self.ipc in [\"i3ipc\"]:\n            self.backend = I3ipc(self)\n        elif self.ipc in [\"i3msg\", \"swaymsg\"]:\n            self.backend = Msg(self)\n        else:\n            raise Exception(STRING_ERROR.format(self.ipc))\n\n        self.thresholds_init = self.py3.get_color_names_list(self.format)\n\n    def scratchpad(self):\n        scratchpad_data = self.backend.get_scratchpad_data()\n\n        for x in self.thresholds_init:\n            if x in scratchpad_data:\n                self.py3.threshold_get_color(scratchpad_data[x], x)\n\n        response = {\n            \"cached_until\": self.py3.time_in(self.cache_timeout),\n            \"full_text\": self.py3.safe_format(self.format, scratchpad_data),\n        }\n        if scratchpad_data[\"urgent\"]:\n            response[\"urgent\"] = True\n        return response\n\n\nif __name__ == \"__main__\":\n    \"\"\"\n    Run module in test mode.\n    \"\"\"\n    from py3status.module_test import module_test\n\n    config = {\"format\": r\"\\[{ipc}\\] [\\?color=scratchpad {scratchpad}]\"}\n    module_test(Py3status, config=config)\n", "path": "py3status/modules/scratchpad.py"}], "after_files": [{"content": "\"\"\"\nDisplay number of scratchpad windows and urgency hints.\n\nConfiguration parameters:\n    cache_timeout: refresh interval for i3-msg or swaymsg (default 5)\n    format: display format for this module\n        (default \"\\u232b [\\\\?color=scratchpad {scratchpad}]\")\n    thresholds: specify color thresholds to use\n        (default [(0, \"darkgray\"), (1, \"violet\")])\n\nFormat placeholders:\n    {scratchpad} number of scratchpads\n    {urgent} number of urgent scratchpads\n\nColor thresholds:\n    xxx: print a color based on the value of `xxx` placeholder\n\nOptional:\n    i3ipc: an improved python library to control i3wm and sway\n\nExamples:\n```\n# hide zero scratchpad\nscratchpad {\n    format = '[\\\\?not_zero \\u232b [\\\\?color=scratchpad {scratchpad}]]'\n}\n\n# hide non-urgent scratchpad\nscratchpad {\n    format = '[\\\\?not_zero \\u232b {urgent}]'\n}\n\n# bring up scratchpads on clicks\nscratchpad {\n    on_click 1 = 'scratchpad show'\n}\n\n# add more colors\nscratchpad {\n    thresholds = [\n       (0, \"darkgray\"), (1, \"violet\"), (2, \"deepskyblue\"), (3, \"lime\"),\n       (4, \"yellow\"), (5, \"orange\"), (6, \"red\"), (7, \"tomato\"),\n    ]\n}\n```\n\n@author shadowprince (counter), cornerman (async)\n@license Eclipse Public License (counter), BSD (async)\n\nSAMPLE OUTPUT\n[{'full_text': '\\u232b '}, {'full_text': u'0', 'color': '#a9a9a9'}]\n\nviolet\n[{'full_text': '\\u232b '}, {'full_text': u'5', 'color': '#ee82ee'}]\n\nurgent\n[{'full_text': '\\u232b URGENT 1', 'urgent': True}]\n\"\"\"\n\nSTRING_ERROR = \"invalid ipc `{}`\"\n\n\nclass Ipc:\n    \"\"\"\n    \"\"\"\n\n    def __init__(self, parent):\n        self.parent = parent\n        self.setup(parent)\n\n\nclass I3ipc(Ipc):\n    \"\"\"\n    i3ipc - an improved python library to control i3wm and sway\n    \"\"\"\n\n    def setup(self, parent):\n        from threading import Thread\n\n        self.parent.cache_timeout = self.parent.py3.CACHE_FOREVER\n        self.scratchpad_data = {\"scratchpad\": 0, \"urgent\": 0}\n\n        t = Thread(target=self.start)\n        t.daemon = True\n        t.start()\n\n    def start(self):\n        from i3ipc import Connection\n\n        i3 = Connection()\n        self.update(i3)\n        for event in [\"window::move\", \"window::urgent\"]:\n            i3.on(event, self.update)\n        i3.main()\n\n    def update(self, i3, event=None):\n        scratchpad = i3.get_tree().scratchpad()\n        if not scratchpad:\n            return\n\n        # Workaround for I3ipc 2.2.1 not finding leaves() in sway. Fixing: #2038\n        leaves = getattr(scratchpad, \"floating_nodes\", [])\n\n        temporary = {\n            \"ipc\": self.parent.ipc,\n            \"scratchpad\": len(leaves),\n            \"urgent\": sum(window.urgent for window in leaves),\n        }\n        if self.scratchpad_data != temporary:\n            self.scratchpad_data = temporary\n            self.parent.py3.update()\n\n    def get_scratchpad_data(self):\n        return self.scratchpad_data\n\n\nclass Msg(Ipc):\n    \"\"\"\n    i3-msg - send messages to i3 window manager\n    swaymsg - send messages to sway window manager\n    \"\"\"\n\n    def setup(self, parent):\n        from json import loads\n\n        self.json_loads = loads\n        wm_msg = {\"i3msg\": \"i3-msg\"}.get(parent.ipc, parent.ipc)\n        self.tree_command = [wm_msg, \"-t\", \"get_tree\"]\n\n    def get_scratchpad_data(self):\n        tree = self.json_loads(self.parent.py3.command_output(self.tree_command))\n        leaves = self.find_scratchpad(tree).get(\"floating_nodes\", [])\n        return {\n            \"ipc\": self.parent.ipc,\n            \"scratchpad\": len(leaves),\n            \"urgent\": sum(window[\"urgent\"] for window in leaves),\n        }\n\n    def find_scratchpad(self, tree):\n        if tree.get(\"name\") == \"__i3_scratch\":\n            return tree\n        for x in tree.get(\"nodes\", []):\n            result = self.find_scratchpad(x)\n            if result:\n                return result\n        return {}\n\n\nclass Py3status:\n    \"\"\"\n    \"\"\"\n\n    # available configuration parameters\n    cache_timeout = 5\n    format = \"\\u232b [\\\\?color=scratchpad {scratchpad}]\"\n    thresholds = [(0, \"darkgray\"), (1, \"violet\")]\n\n    def post_config_hook(self):\n        # ipc: specify i3ipc, i3-msg, or swaymsg, otherwise auto\n        self.ipc = getattr(self, \"ipc\", \"\")\n        if self.ipc in [\"\", \"i3ipc\"]:\n            try:\n                from i3ipc import Connection  # noqa f401\n\n                self.ipc = \"i3ipc\"\n            except Exception:\n                if self.ipc:\n                    raise  # module not found\n\n        self.ipc = (self.ipc or self.py3.get_wm_msg()).replace(\"-\", \"\")\n        if self.ipc in [\"i3ipc\"]:\n            self.backend = I3ipc(self)\n        elif self.ipc in [\"i3msg\", \"swaymsg\"]:\n            self.backend = Msg(self)\n        else:\n            raise Exception(STRING_ERROR.format(self.ipc))\n\n        self.thresholds_init = self.py3.get_color_names_list(self.format)\n\n    def scratchpad(self):\n        scratchpad_data = self.backend.get_scratchpad_data()\n\n        for x in self.thresholds_init:\n            if x in scratchpad_data:\n                self.py3.threshold_get_color(scratchpad_data[x], x)\n\n        response = {\n            \"cached_until\": self.py3.time_in(self.cache_timeout),\n            \"full_text\": self.py3.safe_format(self.format, scratchpad_data),\n        }\n        if scratchpad_data[\"urgent\"]:\n            response[\"urgent\"] = True\n        return response\n\n\nif __name__ == \"__main__\":\n    \"\"\"\n    Run module in test mode.\n    \"\"\"\n    from py3status.module_test import module_test\n\n    config = {\"format\": r\"\\[{ipc}\\] [\\?color=scratchpad {scratchpad}]\"}\n    module_test(Py3status, config=config)\n", "path": "py3status/modules/scratchpad.py"}]}