We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Small typo in coalib/output/printers/LogPrinter.py
Should read responsibility instead of reponsibility.


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `coalib/output/printers/LogPrinter.py`
Content:
```
1 import traceback
2 import logging
3 
4 from coalib.output.printers.LOG_LEVEL import LOG_LEVEL
5 from coalib.processes.communication.LogMessage import LogMessage
6 
7 
8 class LogPrinterMixin:
9     """
10     Provides access to the logging interfaces (e.g. err, warn, info) by routing
11     them to the log_message method, which should be implemented by descendants
12     of this class.
13     """
14 
15     def debug(self, *messages, delimiter=' ', timestamp=None, **kwargs):
16         self.log_message(LogMessage(LOG_LEVEL.DEBUG,
17                                     *messages,
18                                     delimiter=delimiter,
19                                     timestamp=timestamp),
20                          **kwargs)
21 
22     def info(self, *messages, delimiter=' ', timestamp=None, **kwargs):
23         self.log_message(LogMessage(LOG_LEVEL.INFO,
24                                     *messages,
25                                     delimiter=delimiter,
26                                     timestamp=timestamp),
27                          **kwargs)
28 
29     def warn(self, *messages, delimiter=' ', timestamp=None, **kwargs):
30         self.log_message(LogMessage(LOG_LEVEL.WARNING,
31                                     *messages,
32                                     delimiter=delimiter,
33                                     timestamp=timestamp),
34                          **kwargs)
35 
36     def err(self, *messages, delimiter=' ', timestamp=None, **kwargs):
37         self.log_message(LogMessage(LOG_LEVEL.ERROR,
38                                     *messages,
39                                     delimiter=delimiter,
40                                     timestamp=timestamp),
41                          **kwargs)
42 
43     def log(self, log_level, message, timestamp=None, **kwargs):
44         self.log_message(LogMessage(log_level,
45                                     message,
46                                     timestamp=timestamp),
47                          **kwargs)
48 
49     def log_exception(self,
50                       message,
51                       exception,
52                       log_level=LOG_LEVEL.ERROR,
53                       timestamp=None,
54                       **kwargs):
55         """
56         If the log_level of the printer is greater than DEBUG, it prints
57         only the message. If it is DEBUG or lower, it shows the message
58         along with the traceback of the exception.
59 
60         :param message:   The message to print.
61         :param exception: The exception to print.
62         :param log_level: The log_level of this message (not used when
63                           logging the traceback. Tracebacks always have
64                           a level of DEBUG).
65         :param timestamp: The time at which this log occurred. Defaults to
66                           the current time.
67         :param kwargs:    Keyword arguments to be passed when logging the
68                           message (not used when logging the traceback).
69         """
70         if not isinstance(exception, BaseException):
71             raise TypeError('log_exception can only log derivatives of '
72                             'BaseException.')
73 
74         traceback_str = '\n'.join(
75             traceback.format_exception(type(exception),
76                                        exception,
77                                        exception.__traceback__))
78 
79         self.log(log_level, message, timestamp=timestamp, **kwargs)
80         self.log_message(
81             LogMessage(LOG_LEVEL.INFO,
82                        'Exception was:' + '\n' + traceback_str,
83                        timestamp=timestamp),
84             **kwargs)
85 
86     def log_message(self, log_message, **kwargs):
87         """
88         It is your reponsibility to implement this method, if you're using this
89         mixin.
90         """
91         raise NotImplementedError
92 
93 
94 class LogPrinter(LogPrinterMixin):
95     """
96     This class is deprecated and will be soon removed. To get logger use
97     logging.getLogger(__name__). Make sure that you're getting it when the
98     logging configuration is loaded.
99 
100     The LogPrinter class allows to print log messages to an underlying Printer.
101 
102     This class is an adapter, means you can create a LogPrinter from every
103     existing Printer instance.
104     """
105 
106     def __init__(self,
107                  printer=None,
108                  log_level=LOG_LEVEL.DEBUG,
109                  timestamp_format='%X'):
110         """
111         Creates a new log printer from an existing Printer.
112 
113         :param printer:          The underlying Printer where log messages
114                                  shall be written to. If you inherit from
115                                  LogPrinter, set it to self.
116         :param log_level:        The minimum log level, everything below will
117                                  not be logged.
118         :param timestamp_format: The format string for the
119                                  datetime.today().strftime(format) method.
120         """
121         self.logger = logging.getLogger()
122 
123         self._printer = printer
124         self.log_level = log_level
125         self.timestamp_format = timestamp_format
126 
127     @property
128     def log_level(self):
129         """
130         Returns current log_level used in logger.
131         """
132         return self.logger.getEffectiveLevel()
133 
134     @log_level.setter
135     def log_level(self, log_level):
136         """
137         Sets log_level for logger.
138         """
139         self.logger.setLevel(log_level)
140 
141     @property
142     def printer(self):
143         """
144         Returns the underlying printer where logs are printed to.
145         """
146         return self._printer
147 
148     def log_message(self, log_message, **kwargs):
149         if not isinstance(log_message, LogMessage):
150             raise TypeError('log_message should be of type LogMessage.')
151         self.logger.log(log_message.log_level, log_message.message)
152 
153     def __getstate__(self):
154         # on Windows there are problems with serializing loggers, so omit it
155         oldict = self.__dict__.copy()
156         del oldict['logger']
157         return oldict
158 
159     def __setstate__(self, newdict):
160         self.__dict__.update(newdict)
161         # restore logger by name
162         self.logger = logging.getLogger()
163
```
--- 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/coalib/output/printers/LogPrinter.py b/coalib/output/printers/LogPrinter.py
--- a/coalib/output/printers/LogPrinter.py
+++ b/coalib/output/printers/LogPrinter.py
@@ -85,7 +85,7 @@
 
     def log_message(self, log_message, **kwargs):
         """
-        It is your reponsibility to implement this method, if you're using this
+        It is your responsibility to implement this method, if you're using this
         mixin.
         """
         raise NotImplementedError

{"golden_diff": "diff --git a/coalib/output/printers/LogPrinter.py b/coalib/output/printers/LogPrinter.py\n--- a/coalib/output/printers/LogPrinter.py\n+++ b/coalib/output/printers/LogPrinter.py\n@@ -85,7 +85,7 @@\n \n     def log_message(self, log_message, **kwargs):\n         \"\"\"\n-        It is your reponsibility to implement this method, if you're using this\n+        It is your responsibility to implement this method, if you're using this\n         mixin.\n         \"\"\"\n         raise NotImplementedError\n", "issue": "Small typo in coalib/output/printers/LogPrinter.py\nShould read responsibility instead of reponsibility.\r\n\n", "before_files": [{"content": "import traceback\nimport logging\n\nfrom coalib.output.printers.LOG_LEVEL import LOG_LEVEL\nfrom coalib.processes.communication.LogMessage import LogMessage\n\n\nclass LogPrinterMixin:\n    \"\"\"\n    Provides access to the logging interfaces (e.g. err, warn, info) by routing\n    them to the log_message method, which should be implemented by descendants\n    of this class.\n    \"\"\"\n\n    def debug(self, *messages, delimiter=' ', timestamp=None, **kwargs):\n        self.log_message(LogMessage(LOG_LEVEL.DEBUG,\n                                    *messages,\n                                    delimiter=delimiter,\n                                    timestamp=timestamp),\n                         **kwargs)\n\n    def info(self, *messages, delimiter=' ', timestamp=None, **kwargs):\n        self.log_message(LogMessage(LOG_LEVEL.INFO,\n                                    *messages,\n                                    delimiter=delimiter,\n                                    timestamp=timestamp),\n                         **kwargs)\n\n    def warn(self, *messages, delimiter=' ', timestamp=None, **kwargs):\n        self.log_message(LogMessage(LOG_LEVEL.WARNING,\n                                    *messages,\n                                    delimiter=delimiter,\n                                    timestamp=timestamp),\n                         **kwargs)\n\n    def err(self, *messages, delimiter=' ', timestamp=None, **kwargs):\n        self.log_message(LogMessage(LOG_LEVEL.ERROR,\n                                    *messages,\n                                    delimiter=delimiter,\n                                    timestamp=timestamp),\n                         **kwargs)\n\n    def log(self, log_level, message, timestamp=None, **kwargs):\n        self.log_message(LogMessage(log_level,\n                                    message,\n                                    timestamp=timestamp),\n                         **kwargs)\n\n    def log_exception(self,\n                      message,\n                      exception,\n                      log_level=LOG_LEVEL.ERROR,\n                      timestamp=None,\n                      **kwargs):\n        \"\"\"\n        If the log_level of the printer is greater than DEBUG, it prints\n        only the message. If it is DEBUG or lower, it shows the message\n        along with the traceback of the exception.\n\n        :param message:   The message to print.\n        :param exception: The exception to print.\n        :param log_level: The log_level of this message (not used when\n                          logging the traceback. Tracebacks always have\n                          a level of DEBUG).\n        :param timestamp: The time at which this log occurred. Defaults to\n                          the current time.\n        :param kwargs:    Keyword arguments to be passed when logging the\n                          message (not used when logging the traceback).\n        \"\"\"\n        if not isinstance(exception, BaseException):\n            raise TypeError('log_exception can only log derivatives of '\n                            'BaseException.')\n\n        traceback_str = '\\n'.join(\n            traceback.format_exception(type(exception),\n                                       exception,\n                                       exception.__traceback__))\n\n        self.log(log_level, message, timestamp=timestamp, **kwargs)\n        self.log_message(\n            LogMessage(LOG_LEVEL.INFO,\n                       'Exception was:' + '\\n' + traceback_str,\n                       timestamp=timestamp),\n            **kwargs)\n\n    def log_message(self, log_message, **kwargs):\n        \"\"\"\n        It is your reponsibility to implement this method, if you're using this\n        mixin.\n        \"\"\"\n        raise NotImplementedError\n\n\nclass LogPrinter(LogPrinterMixin):\n    \"\"\"\n    This class is deprecated and will be soon removed. To get logger use\n    logging.getLogger(__name__). Make sure that you're getting it when the\n    logging configuration is loaded.\n\n    The LogPrinter class allows to print log messages to an underlying Printer.\n\n    This class is an adapter, means you can create a LogPrinter from every\n    existing Printer instance.\n    \"\"\"\n\n    def __init__(self,\n                 printer=None,\n                 log_level=LOG_LEVEL.DEBUG,\n                 timestamp_format='%X'):\n        \"\"\"\n        Creates a new log printer from an existing Printer.\n\n        :param printer:          The underlying Printer where log messages\n                                 shall be written to. If you inherit from\n                                 LogPrinter, set it to self.\n        :param log_level:        The minimum log level, everything below will\n                                 not be logged.\n        :param timestamp_format: The format string for the\n                                 datetime.today().strftime(format) method.\n        \"\"\"\n        self.logger = logging.getLogger()\n\n        self._printer = printer\n        self.log_level = log_level\n        self.timestamp_format = timestamp_format\n\n    @property\n    def log_level(self):\n        \"\"\"\n        Returns current log_level used in logger.\n        \"\"\"\n        return self.logger.getEffectiveLevel()\n\n    @log_level.setter\n    def log_level(self, log_level):\n        \"\"\"\n        Sets log_level for logger.\n        \"\"\"\n        self.logger.setLevel(log_level)\n\n    @property\n    def printer(self):\n        \"\"\"\n        Returns the underlying printer where logs are printed to.\n        \"\"\"\n        return self._printer\n\n    def log_message(self, log_message, **kwargs):\n        if not isinstance(log_message, LogMessage):\n            raise TypeError('log_message should be of type LogMessage.')\n        self.logger.log(log_message.log_level, log_message.message)\n\n    def __getstate__(self):\n        # on Windows there are problems with serializing loggers, so omit it\n        oldict = self.__dict__.copy()\n        del oldict['logger']\n        return oldict\n\n    def __setstate__(self, newdict):\n        self.__dict__.update(newdict)\n        # restore logger by name\n        self.logger = logging.getLogger()\n", "path": "coalib/output/printers/LogPrinter.py"}], "after_files": [{"content": "import traceback\nimport logging\n\nfrom coalib.output.printers.LOG_LEVEL import LOG_LEVEL\nfrom coalib.processes.communication.LogMessage import LogMessage\n\n\nclass LogPrinterMixin:\n    \"\"\"\n    Provides access to the logging interfaces (e.g. err, warn, info) by routing\n    them to the log_message method, which should be implemented by descendants\n    of this class.\n    \"\"\"\n\n    def debug(self, *messages, delimiter=' ', timestamp=None, **kwargs):\n        self.log_message(LogMessage(LOG_LEVEL.DEBUG,\n                                    *messages,\n                                    delimiter=delimiter,\n                                    timestamp=timestamp),\n                         **kwargs)\n\n    def info(self, *messages, delimiter=' ', timestamp=None, **kwargs):\n        self.log_message(LogMessage(LOG_LEVEL.INFO,\n                                    *messages,\n                                    delimiter=delimiter,\n                                    timestamp=timestamp),\n                         **kwargs)\n\n    def warn(self, *messages, delimiter=' ', timestamp=None, **kwargs):\n        self.log_message(LogMessage(LOG_LEVEL.WARNING,\n                                    *messages,\n                                    delimiter=delimiter,\n                                    timestamp=timestamp),\n                         **kwargs)\n\n    def err(self, *messages, delimiter=' ', timestamp=None, **kwargs):\n        self.log_message(LogMessage(LOG_LEVEL.ERROR,\n                                    *messages,\n                                    delimiter=delimiter,\n                                    timestamp=timestamp),\n                         **kwargs)\n\n    def log(self, log_level, message, timestamp=None, **kwargs):\n        self.log_message(LogMessage(log_level,\n                                    message,\n                                    timestamp=timestamp),\n                         **kwargs)\n\n    def log_exception(self,\n                      message,\n                      exception,\n                      log_level=LOG_LEVEL.ERROR,\n                      timestamp=None,\n                      **kwargs):\n        \"\"\"\n        If the log_level of the printer is greater than DEBUG, it prints\n        only the message. If it is DEBUG or lower, it shows the message\n        along with the traceback of the exception.\n\n        :param message:   The message to print.\n        :param exception: The exception to print.\n        :param log_level: The log_level of this message (not used when\n                          logging the traceback. Tracebacks always have\n                          a level of DEBUG).\n        :param timestamp: The time at which this log occurred. Defaults to\n                          the current time.\n        :param kwargs:    Keyword arguments to be passed when logging the\n                          message (not used when logging the traceback).\n        \"\"\"\n        if not isinstance(exception, BaseException):\n            raise TypeError('log_exception can only log derivatives of '\n                            'BaseException.')\n\n        traceback_str = '\\n'.join(\n            traceback.format_exception(type(exception),\n                                       exception,\n                                       exception.__traceback__))\n\n        self.log(log_level, message, timestamp=timestamp, **kwargs)\n        self.log_message(\n            LogMessage(LOG_LEVEL.INFO,\n                       'Exception was:' + '\\n' + traceback_str,\n                       timestamp=timestamp),\n            **kwargs)\n\n    def log_message(self, log_message, **kwargs):\n        \"\"\"\n        It is your responsibility to implement this method, if you're using this\n        mixin.\n        \"\"\"\n        raise NotImplementedError\n\n\nclass LogPrinter(LogPrinterMixin):\n    \"\"\"\n    This class is deprecated and will be soon removed. To get logger use\n    logging.getLogger(__name__). Make sure that you're getting it when the\n    logging configuration is loaded.\n\n    The LogPrinter class allows to print log messages to an underlying Printer.\n\n    This class is an adapter, means you can create a LogPrinter from every\n    existing Printer instance.\n    \"\"\"\n\n    def __init__(self,\n                 printer=None,\n                 log_level=LOG_LEVEL.DEBUG,\n                 timestamp_format='%X'):\n        \"\"\"\n        Creates a new log printer from an existing Printer.\n\n        :param printer:          The underlying Printer where log messages\n                                 shall be written to. If you inherit from\n                                 LogPrinter, set it to self.\n        :param log_level:        The minimum log level, everything below will\n                                 not be logged.\n        :param timestamp_format: The format string for the\n                                 datetime.today().strftime(format) method.\n        \"\"\"\n        self.logger = logging.getLogger()\n\n        self._printer = printer\n        self.log_level = log_level\n        self.timestamp_format = timestamp_format\n\n    @property\n    def log_level(self):\n        \"\"\"\n        Returns current log_level used in logger.\n        \"\"\"\n        return self.logger.getEffectiveLevel()\n\n    @log_level.setter\n    def log_level(self, log_level):\n        \"\"\"\n        Sets log_level for logger.\n        \"\"\"\n        self.logger.setLevel(log_level)\n\n    @property\n    def printer(self):\n        \"\"\"\n        Returns the underlying printer where logs are printed to.\n        \"\"\"\n        return self._printer\n\n    def log_message(self, log_message, **kwargs):\n        if not isinstance(log_message, LogMessage):\n            raise TypeError('log_message should be of type LogMessage.')\n        self.logger.log(log_message.log_level, log_message.message)\n\n    def __getstate__(self):\n        # on Windows there are problems with serializing loggers, so omit it\n        oldict = self.__dict__.copy()\n        del oldict['logger']\n        return oldict\n\n    def __setstate__(self, newdict):\n        self.__dict__.update(newdict)\n        # restore logger by name\n        self.logger = logging.getLogger()\n", "path": "coalib/output/printers/LogPrinter.py"}]}