We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Pomodoro widget duplicates the prefix and suffix texts of the fmt key
```
widget.Pomodoro(
    fmt='prefix{}suffix',
),

widget.TextBox(
    fmt='prefix{}suffix',
    text='TEXTBOX'
),
```

### 1. Pomodoro widget


_expected to display:_


> **prefix**POMODORO**suffix**

_actual:_

> **prefixprefix**POMODORO**suffixsuffix**


### 2. TextBox widget (for example)

_expected to dispay = actual:_

>**prefix**TEXTBOX**suffix**


## Description:

- If there is prefix or suffix in **fmt** key at Pomodoro widget, It doubles the text of prefix or suffix

`qtile -v: 0.18.1`
`logs: nothing relevant`
- [x]  I have searched past issues to see if this bug has already been reported. *



--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `libqtile/widget/pomodoro.py`
Content:
```
1 # Copyright (c) 2017 Zordsdavini
2 #
3 # Permission is hereby granted, free of charge, to any person obtaining a copy
4 # of this software and associated documentation files (the "Software"), to deal
5 # in the Software without restriction, including without limitation the rights
6 # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 # copies of the Software, and to permit persons to whom the Software is
8 # furnished to do so, subject to the following conditions:
9 #
10 # The above copyright notice and this permission notice shall be included in
11 # all copies or substantial portions of the Software.
12 #
13 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19 # SOFTWARE.
20 
21 from datetime import datetime, timedelta
22 from time import time
23 
24 from libqtile.utils import send_notification
25 from libqtile.widget import base
26 
27 
28 class Pomodoro(base.ThreadPoolText):
29     """Pomodoro technique widget"""
30     orientations = base.ORIENTATION_HORIZONTAL
31     defaults = [
32         ("fmt", "{}", "fmt"),
33         ("num_pomodori", 4, "Number of pomodori to do in a cycle"),
34         ("length_pomodori", 25, "Length of one pomodori in minutes"),
35         ("length_short_break", 5, "Length of a short break in minutes"),
36         ("length_long_break", 15, "Length of a long break in minutes"),
37         ("color_inactive", "ff0000", "Colour then pomodoro is inactive"),
38         ("color_active", "00ff00", "Colour then pomodoro is running"),
39         ("color_break", "ffff00", "Colour then it is break time"),
40         ("notification_on", True, "Turn notifications on"),
41         ("prefix_inactive", "POMODORO", "Prefix when app is inactive"),
42         ("prefix_active", "", "Prefix then app is active"),
43         ("prefix_break", "B ", "Prefix during short break"),
44         ("prefix_long_break", "LB ", "Prefix during long break"),
45         ("prefix_paused", "PAUSE", "Prefix during pause"),
46         ("update_interval", 1, "Update interval in seconds, if none, the "
47             "widget updates whenever the event loop is idle."),
48     ]
49 
50     STATUS_START = "start"
51     STATUS_INACTIVE = "inactive"
52     STATUS_ACTIVE = "active"
53     STATUS_BREAK = "break"
54     STATUS_LONG_BREAK = "long_break"
55     STATUS_PAUSED = "paused"
56 
57     status = "inactive"
58     paused_status = None
59     end_time = datetime.now()
60     time_left = None
61     pomodoros = 1
62 
63     def __init__(self, **config):
64         base.ThreadPoolText.__init__(self, "", **config)
65         self.add_defaults(Pomodoro.defaults)
66         self.prefix = {
67             'inactive': self.prefix_inactive,
68             'active': self.prefix_active,
69             'break': self.prefix_break,
70             'long_break': self.prefix_long_break,
71             'paused': self.prefix_paused
72         }
73 
74         self.add_callbacks({
75             'Button1': self._toggle_break,
76             'Button3': self._toggle_active,
77         })
78 
79     def tick(self):
80         self.update(self.poll())
81         return self.update_interval - time() % self.update_interval
82 
83     def _update(self):
84         if self.status in [self.STATUS_INACTIVE, self.STATUS_PAUSED]:
85             return
86 
87         if self.end_time > datetime.now() and self.status != self.STATUS_START:
88             return
89 
90         if self.status == self.STATUS_ACTIVE and self.pomodoros == self.num_pomodori:
91             self.status = self.STATUS_LONG_BREAK
92             self.end_time = datetime.now() + timedelta(minutes=self.length_long_break)
93             self.pomodoros = 1
94             if self.notification_on:
95                 self._send_notification(
96                     "normal", "Please take a long break! End Time: " + self.end_time.strftime("%H:%M")
97                 )
98             return
99 
100         if self.status == self.STATUS_ACTIVE:
101             self.status = self.STATUS_BREAK
102             self.end_time = datetime.now() + timedelta(minutes=self.length_short_break)
103             self.pomodoros += 1
104             if self.notification_on:
105                 self._send_notification(
106                     "normal", "Please take a short break! End Time: " + self.end_time.strftime("%H:%M")
107                 )
108             return
109 
110         self.status = self.STATUS_ACTIVE
111         self.end_time = datetime.now() + timedelta(minutes=self.length_pomodori)
112         if self.notification_on:
113             self._send_notification(
114                 "critical", "Please start with the next Pomodori! End Time: " + self.end_time.strftime("%H:%M")
115             )
116 
117         return
118 
119     def _get_text(self):
120         self._update()
121 
122         if self.status in [self.STATUS_INACTIVE, self.STATUS_PAUSED]:
123             self.layout.colour = self.color_inactive
124             return self.prefix[self.status]
125 
126         time_left = self.end_time - datetime.now()
127 
128         if self.status == self.STATUS_ACTIVE:
129             self.layout.colour = self.color_active
130         else:
131             self.layout.colour = self.color_break
132 
133         time_string = "%i:%i:%s" % (time_left.seconds // 3600, time_left.seconds % 3600 // 60, time_left.seconds % 60)
134         return self.prefix[self.status] + time_string
135 
136     def _toggle_break(self):
137         if self.status == self.STATUS_INACTIVE:
138             self.status = self.STATUS_START
139             return
140 
141         if self.paused_status is None:
142             self.paused_status = self.status
143             self.time_left = self.end_time - datetime.now()
144             self.status = self.STATUS_PAUSED
145             if self.notification_on:
146                 self._send_notification('low', "Pomodoro has been paused")
147         else:
148             self.status = self.paused_status
149             self.paused_status = None
150             self.end_time = self.time_left + datetime.now()
151             if self.notification_on:
152                 if self.status == self.STATUS_ACTIVE:
153                     status = 'Pomodoro'
154                 else:
155                     status = 'break'
156 
157                 self._send_notification(
158                     "normal",
159                     "Please continue on %s! End Time: " % status + self.end_time.strftime("%H:%M")
160                 )
161 
162     def _toggle_active(self):
163         if self.status != self.STATUS_INACTIVE:
164             self.status = self.STATUS_INACTIVE
165             if self.notification_on:
166                 self._send_notification('critical', "Pomodoro has been suspended")
167         else:
168             self.status = self.STATUS_START
169 
170     def _send_notification(self, urgent, message):
171         send_notification("Pomodoro", message, urgent=urgent)
172 
173     def poll(self):
174         return self.fmt.format(self._get_text())
175
```
--- 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/libqtile/widget/pomodoro.py b/libqtile/widget/pomodoro.py
--- a/libqtile/widget/pomodoro.py
+++ b/libqtile/widget/pomodoro.py
@@ -29,7 +29,6 @@
     """Pomodoro technique widget"""
     orientations = base.ORIENTATION_HORIZONTAL
     defaults = [
-        ("fmt", "{}", "fmt"),
         ("num_pomodori", 4, "Number of pomodori to do in a cycle"),
         ("length_pomodori", 25, "Length of one pomodori in minutes"),
         ("length_short_break", 5, "Length of a short break in minutes"),
@@ -171,4 +170,4 @@
         send_notification("Pomodoro", message, urgent=urgent)
 
     def poll(self):
-        return self.fmt.format(self._get_text())
+        return self._get_text()

{"golden_diff": "diff --git a/libqtile/widget/pomodoro.py b/libqtile/widget/pomodoro.py\n--- a/libqtile/widget/pomodoro.py\n+++ b/libqtile/widget/pomodoro.py\n@@ -29,7 +29,6 @@\n     \"\"\"Pomodoro technique widget\"\"\"\n     orientations = base.ORIENTATION_HORIZONTAL\n     defaults = [\n-        (\"fmt\", \"{}\", \"fmt\"),\n         (\"num_pomodori\", 4, \"Number of pomodori to do in a cycle\"),\n         (\"length_pomodori\", 25, \"Length of one pomodori in minutes\"),\n         (\"length_short_break\", 5, \"Length of a short break in minutes\"),\n@@ -171,4 +170,4 @@\n         send_notification(\"Pomodoro\", message, urgent=urgent)\n \n     def poll(self):\n-        return self.fmt.format(self._get_text())\n+        return self._get_text()\n", "issue": "Pomodoro widget duplicates the prefix and suffix texts of the fmt key\n```\r\nwidget.Pomodoro(\r\n    fmt='prefix{}suffix',\r\n),\r\n\r\nwidget.TextBox(\r\n    fmt='prefix{}suffix',\r\n    text='TEXTBOX'\r\n),\r\n```\r\n\r\n### 1. Pomodoro widget\r\n\r\n\r\n_expected to display:_\r\n\r\n\r\n> **prefix**POMODORO**suffix**\r\n\r\n_actual:_\r\n\r\n> **prefixprefix**POMODORO**suffixsuffix**\r\n\r\n\r\n### 2. TextBox widget (for example)\r\n\r\n_expected to dispay = actual:_\r\n\r\n>**prefix**TEXTBOX**suffix**\r\n\r\n\r\n## Description:\r\n\r\n- If there is prefix or suffix in **fmt** key at Pomodoro widget, It doubles the text of prefix or suffix\r\n\r\n`qtile -v: 0.18.1`\r\n`logs: nothing relevant`\r\n- [x]  I have searched past issues to see if this bug has already been reported. *\r\n\r\n\n", "before_files": [{"content": "# Copyright (c) 2017 Zordsdavini\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n# SOFTWARE.\n\nfrom datetime import datetime, timedelta\nfrom time import time\n\nfrom libqtile.utils import send_notification\nfrom libqtile.widget import base\n\n\nclass Pomodoro(base.ThreadPoolText):\n    \"\"\"Pomodoro technique widget\"\"\"\n    orientations = base.ORIENTATION_HORIZONTAL\n    defaults = [\n        (\"fmt\", \"{}\", \"fmt\"),\n        (\"num_pomodori\", 4, \"Number of pomodori to do in a cycle\"),\n        (\"length_pomodori\", 25, \"Length of one pomodori in minutes\"),\n        (\"length_short_break\", 5, \"Length of a short break in minutes\"),\n        (\"length_long_break\", 15, \"Length of a long break in minutes\"),\n        (\"color_inactive\", \"ff0000\", \"Colour then pomodoro is inactive\"),\n        (\"color_active\", \"00ff00\", \"Colour then pomodoro is running\"),\n        (\"color_break\", \"ffff00\", \"Colour then it is break time\"),\n        (\"notification_on\", True, \"Turn notifications on\"),\n        (\"prefix_inactive\", \"POMODORO\", \"Prefix when app is inactive\"),\n        (\"prefix_active\", \"\", \"Prefix then app is active\"),\n        (\"prefix_break\", \"B \", \"Prefix during short break\"),\n        (\"prefix_long_break\", \"LB \", \"Prefix during long break\"),\n        (\"prefix_paused\", \"PAUSE\", \"Prefix during pause\"),\n        (\"update_interval\", 1, \"Update interval in seconds, if none, the \"\n            \"widget updates whenever the event loop is idle.\"),\n    ]\n\n    STATUS_START = \"start\"\n    STATUS_INACTIVE = \"inactive\"\n    STATUS_ACTIVE = \"active\"\n    STATUS_BREAK = \"break\"\n    STATUS_LONG_BREAK = \"long_break\"\n    STATUS_PAUSED = \"paused\"\n\n    status = \"inactive\"\n    paused_status = None\n    end_time = datetime.now()\n    time_left = None\n    pomodoros = 1\n\n    def __init__(self, **config):\n        base.ThreadPoolText.__init__(self, \"\", **config)\n        self.add_defaults(Pomodoro.defaults)\n        self.prefix = {\n            'inactive': self.prefix_inactive,\n            'active': self.prefix_active,\n            'break': self.prefix_break,\n            'long_break': self.prefix_long_break,\n            'paused': self.prefix_paused\n        }\n\n        self.add_callbacks({\n            'Button1': self._toggle_break,\n            'Button3': self._toggle_active,\n        })\n\n    def tick(self):\n        self.update(self.poll())\n        return self.update_interval - time() % self.update_interval\n\n    def _update(self):\n        if self.status in [self.STATUS_INACTIVE, self.STATUS_PAUSED]:\n            return\n\n        if self.end_time > datetime.now() and self.status != self.STATUS_START:\n            return\n\n        if self.status == self.STATUS_ACTIVE and self.pomodoros == self.num_pomodori:\n            self.status = self.STATUS_LONG_BREAK\n            self.end_time = datetime.now() + timedelta(minutes=self.length_long_break)\n            self.pomodoros = 1\n            if self.notification_on:\n                self._send_notification(\n                    \"normal\", \"Please take a long break! End Time: \" + self.end_time.strftime(\"%H:%M\")\n                )\n            return\n\n        if self.status == self.STATUS_ACTIVE:\n            self.status = self.STATUS_BREAK\n            self.end_time = datetime.now() + timedelta(minutes=self.length_short_break)\n            self.pomodoros += 1\n            if self.notification_on:\n                self._send_notification(\n                    \"normal\", \"Please take a short break! End Time: \" + self.end_time.strftime(\"%H:%M\")\n                )\n            return\n\n        self.status = self.STATUS_ACTIVE\n        self.end_time = datetime.now() + timedelta(minutes=self.length_pomodori)\n        if self.notification_on:\n            self._send_notification(\n                \"critical\", \"Please start with the next Pomodori! End Time: \" + self.end_time.strftime(\"%H:%M\")\n            )\n\n        return\n\n    def _get_text(self):\n        self._update()\n\n        if self.status in [self.STATUS_INACTIVE, self.STATUS_PAUSED]:\n            self.layout.colour = self.color_inactive\n            return self.prefix[self.status]\n\n        time_left = self.end_time - datetime.now()\n\n        if self.status == self.STATUS_ACTIVE:\n            self.layout.colour = self.color_active\n        else:\n            self.layout.colour = self.color_break\n\n        time_string = \"%i:%i:%s\" % (time_left.seconds // 3600, time_left.seconds % 3600 // 60, time_left.seconds % 60)\n        return self.prefix[self.status] + time_string\n\n    def _toggle_break(self):\n        if self.status == self.STATUS_INACTIVE:\n            self.status = self.STATUS_START\n            return\n\n        if self.paused_status is None:\n            self.paused_status = self.status\n            self.time_left = self.end_time - datetime.now()\n            self.status = self.STATUS_PAUSED\n            if self.notification_on:\n                self._send_notification('low', \"Pomodoro has been paused\")\n        else:\n            self.status = self.paused_status\n            self.paused_status = None\n            self.end_time = self.time_left + datetime.now()\n            if self.notification_on:\n                if self.status == self.STATUS_ACTIVE:\n                    status = 'Pomodoro'\n                else:\n                    status = 'break'\n\n                self._send_notification(\n                    \"normal\",\n                    \"Please continue on %s! End Time: \" % status + self.end_time.strftime(\"%H:%M\")\n                )\n\n    def _toggle_active(self):\n        if self.status != self.STATUS_INACTIVE:\n            self.status = self.STATUS_INACTIVE\n            if self.notification_on:\n                self._send_notification('critical', \"Pomodoro has been suspended\")\n        else:\n            self.status = self.STATUS_START\n\n    def _send_notification(self, urgent, message):\n        send_notification(\"Pomodoro\", message, urgent=urgent)\n\n    def poll(self):\n        return self.fmt.format(self._get_text())\n", "path": "libqtile/widget/pomodoro.py"}], "after_files": [{"content": "# Copyright (c) 2017 Zordsdavini\n#\n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n# SOFTWARE.\n\nfrom datetime import datetime, timedelta\nfrom time import time\n\nfrom libqtile.utils import send_notification\nfrom libqtile.widget import base\n\n\nclass Pomodoro(base.ThreadPoolText):\n    \"\"\"Pomodoro technique widget\"\"\"\n    orientations = base.ORIENTATION_HORIZONTAL\n    defaults = [\n        (\"num_pomodori\", 4, \"Number of pomodori to do in a cycle\"),\n        (\"length_pomodori\", 25, \"Length of one pomodori in minutes\"),\n        (\"length_short_break\", 5, \"Length of a short break in minutes\"),\n        (\"length_long_break\", 15, \"Length of a long break in minutes\"),\n        (\"color_inactive\", \"ff0000\", \"Colour then pomodoro is inactive\"),\n        (\"color_active\", \"00ff00\", \"Colour then pomodoro is running\"),\n        (\"color_break\", \"ffff00\", \"Colour then it is break time\"),\n        (\"notification_on\", True, \"Turn notifications on\"),\n        (\"prefix_inactive\", \"POMODORO\", \"Prefix when app is inactive\"),\n        (\"prefix_active\", \"\", \"Prefix then app is active\"),\n        (\"prefix_break\", \"B \", \"Prefix during short break\"),\n        (\"prefix_long_break\", \"LB \", \"Prefix during long break\"),\n        (\"prefix_paused\", \"PAUSE\", \"Prefix during pause\"),\n        (\"update_interval\", 1, \"Update interval in seconds, if none, the \"\n            \"widget updates whenever the event loop is idle.\"),\n    ]\n\n    STATUS_START = \"start\"\n    STATUS_INACTIVE = \"inactive\"\n    STATUS_ACTIVE = \"active\"\n    STATUS_BREAK = \"break\"\n    STATUS_LONG_BREAK = \"long_break\"\n    STATUS_PAUSED = \"paused\"\n\n    status = \"inactive\"\n    paused_status = None\n    end_time = datetime.now()\n    time_left = None\n    pomodoros = 1\n\n    def __init__(self, **config):\n        base.ThreadPoolText.__init__(self, \"\", **config)\n        self.add_defaults(Pomodoro.defaults)\n        self.prefix = {\n            'inactive': self.prefix_inactive,\n            'active': self.prefix_active,\n            'break': self.prefix_break,\n            'long_break': self.prefix_long_break,\n            'paused': self.prefix_paused\n        }\n\n        self.add_callbacks({\n            'Button1': self._toggle_break,\n            'Button3': self._toggle_active,\n        })\n\n    def tick(self):\n        self.update(self.poll())\n        return self.update_interval - time() % self.update_interval\n\n    def _update(self):\n        if self.status in [self.STATUS_INACTIVE, self.STATUS_PAUSED]:\n            return\n\n        if self.end_time > datetime.now() and self.status != self.STATUS_START:\n            return\n\n        if self.status == self.STATUS_ACTIVE and self.pomodoros == self.num_pomodori:\n            self.status = self.STATUS_LONG_BREAK\n            self.end_time = datetime.now() + timedelta(minutes=self.length_long_break)\n            self.pomodoros = 1\n            if self.notification_on:\n                self._send_notification(\n                    \"normal\", \"Please take a long break! End Time: \" + self.end_time.strftime(\"%H:%M\")\n                )\n            return\n\n        if self.status == self.STATUS_ACTIVE:\n            self.status = self.STATUS_BREAK\n            self.end_time = datetime.now() + timedelta(minutes=self.length_short_break)\n            self.pomodoros += 1\n            if self.notification_on:\n                self._send_notification(\n                    \"normal\", \"Please take a short break! End Time: \" + self.end_time.strftime(\"%H:%M\")\n                )\n            return\n\n        self.status = self.STATUS_ACTIVE\n        self.end_time = datetime.now() + timedelta(minutes=self.length_pomodori)\n        if self.notification_on:\n            self._send_notification(\n                \"critical\", \"Please start with the next Pomodori! End Time: \" + self.end_time.strftime(\"%H:%M\")\n            )\n\n        return\n\n    def _get_text(self):\n        self._update()\n\n        if self.status in [self.STATUS_INACTIVE, self.STATUS_PAUSED]:\n            self.layout.colour = self.color_inactive\n            return self.prefix[self.status]\n\n        time_left = self.end_time - datetime.now()\n\n        if self.status == self.STATUS_ACTIVE:\n            self.layout.colour = self.color_active\n        else:\n            self.layout.colour = self.color_break\n\n        time_string = \"%i:%i:%s\" % (time_left.seconds // 3600, time_left.seconds % 3600 // 60, time_left.seconds % 60)\n        return self.prefix[self.status] + time_string\n\n    def _toggle_break(self):\n        if self.status == self.STATUS_INACTIVE:\n            self.status = self.STATUS_START\n            return\n\n        if self.paused_status is None:\n            self.paused_status = self.status\n            self.time_left = self.end_time - datetime.now()\n            self.status = self.STATUS_PAUSED\n            if self.notification_on:\n                self._send_notification('low', \"Pomodoro has been paused\")\n        else:\n            self.status = self.paused_status\n            self.paused_status = None\n            self.end_time = self.time_left + datetime.now()\n            if self.notification_on:\n                if self.status == self.STATUS_ACTIVE:\n                    status = 'Pomodoro'\n                else:\n                    status = 'break'\n\n                self._send_notification(\n                    \"normal\",\n                    \"Please continue on %s! End Time: \" % status + self.end_time.strftime(\"%H:%M\")\n                )\n\n    def _toggle_active(self):\n        if self.status != self.STATUS_INACTIVE:\n            self.status = self.STATUS_INACTIVE\n            if self.notification_on:\n                self._send_notification('critical', \"Pomodoro has been suspended\")\n        else:\n            self.status = self.STATUS_START\n\n    def _send_notification(self, urgent, message):\n        send_notification(\"Pomodoro\", message, urgent=urgent)\n\n    def poll(self):\n        return self._get_text()\n", "path": "libqtile/widget/pomodoro.py"}]}