prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  Keithley2600 driver broken after commit 460c93c71506213102e56d3ea0c518723666d56a
  
  ### Steps to reproduce
  1. Connect Keithley 2600
  2. ask it for output status or mode
  3. doh
  
  ### Expected behaviour
  tell me what i asked for
  
  ### Actual behaviour
  error because parsing fails
  issue introduced in  commit 460c93c71506213102e56d3ea0c518723666d56a (@alexcjohnson)
  
  
  ### System
  **operating system**
  W10
  **qcodes branch**
  master
  **qcodes commit**
  177f8201b3778c0071c60d4e4c658449284e1a6c 
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `qcodes/instrument_drivers/tektronix/Keithley_2600.py`
  Content:
  ```
  1 from qcodes import VisaInstrument
  2 
  3 
  4 class Keithley_2600(VisaInstrument):
  5     """
  6     channel: use channel 'a' or 'b'
  7 
  8     This is the qcodes driver for the Keithley_2600 Source-Meter series,
  9     tested with Keithley_2614B
  10 
  11     Status: beta-version.
  12         TODO:
  13         - Add all parameters that are in the manual
  14         - range and limit should be set according to mode
  15         - add ramping and such stuff
  16 
  17     """
  18     def __init__(self, name, address, channel, **kwargs):
  19         super().__init__(name, address, terminator='\n', **kwargs)
  20         self._channel = channel
  21 
  22         self.add_parameter('volt', get_cmd='measure.v()',
  23                            get_parser=float, set_cmd='source.levelv={:.12f}',
  24                            label='Voltage',
  25                            unit='V')
  26         self.add_parameter('curr', get_cmd='measure.i()',
  27                            get_parser=float, set_cmd='source.leveli={:.12f}',
  28                            label='Current',
  29                            unit='A')
  30         self.add_parameter('mode',
  31                            get_cmd='source.func',
  32                            set_cmd='source.func={:d}',
  33                            val_mapping={'current': 0, 'voltage': 1})
  34         self.add_parameter('output',
  35                            get_cmd='source.output',
  36                            set_cmd='source.output={:d}',
  37                            val_mapping={'on':  1, 'off': 0})
  38         # Source range
  39         # needs get after set
  40         self.add_parameter('rangev',
  41                            get_cmd='source.rangev',
  42                            get_parser=float,
  43                            set_cmd='source.rangev={:.4f}',
  44                            unit='V')
  45         # Measure range
  46         # needs get after set
  47         self.add_parameter('rangei',
  48                            get_cmd='source.rangei',
  49                            get_parser=float,
  50                            set_cmd='source.rangei={:.4f}',
  51                            unit='A')
  52         # Compliance limit
  53         self.add_parameter('limitv',
  54                            get_cmd='source.limitv',
  55                            get_parser=float,
  56                            set_cmd='source.limitv={:.4f}',
  57                            unit='V')
  58         # Compliance limit
  59         self.add_parameter('limiti',
  60                            get_cmd='source.limiti',
  61                            get_parser=float,
  62                            set_cmd='source.limiti={:.4f}',
  63                            unit='A')
  64 
  65         self.connect_message()
  66 
  67     def get_idn(self):
  68         IDN = self.ask_raw('*IDN?')
  69         vendor, model, serial, firmware = map(str.strip, IDN.split(','))
  70         model = model[6:]
  71 
  72         IDN = {'vendor': vendor, 'model': model,
  73                'serial': serial, 'firmware': firmware}
  74         return IDN
  75 
  76     def reset(self):
  77         self.write('reset()')
  78 
  79     def ask(self, cmd):
  80         return super().ask('print(smu{:s}.{:s})'.format(self._channel, cmd))
  81 
  82     def write(self, cmd):
  83         super().write('smu{:s}.{:s}'.format(self._channel, cmd))
  84
  ```
  --- 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()
  
  ```
  
golden_diff: diff --git a/qcodes/instrument_drivers/tektronix/Keithley_2600.py b/qcodes/instrument_drivers/tektronix/Keithley_2600.py
  --- a/qcodes/instrument_drivers/tektronix/Keithley_2600.py
  +++ b/qcodes/instrument_drivers/tektronix/Keithley_2600.py
  @@ -19,20 +19,26 @@
           super().__init__(name, address, terminator='\n', **kwargs)
           self._channel = channel
   
  -        self.add_parameter('volt', get_cmd='measure.v()',
  -                           get_parser=float, set_cmd='source.levelv={:.12f}',
  +        self.add_parameter('volt',
  +                           get_cmd='measure.v()',
  +                           get_parser=float,
  +                           set_cmd='source.levelv={:.12f}',
                              label='Voltage',
                              unit='V')
  -        self.add_parameter('curr', get_cmd='measure.i()',
  -                           get_parser=float, set_cmd='source.leveli={:.12f}',
  +        self.add_parameter('curr',
  +                           get_cmd='measure.i()',
  +                           get_parser=float,
  +                           set_cmd='source.leveli={:.12f}',
                              label='Current',
                              unit='A')
           self.add_parameter('mode',
                              get_cmd='source.func',
  +                           get_parser=float,
                              set_cmd='source.func={:d}',
                              val_mapping={'current': 0, 'voltage': 1})
           self.add_parameter('output',
                              get_cmd='source.output',
  +                           get_parser=float,
                              set_cmd='source.output={:d}',
                              val_mapping={'on':  1, 'off': 0})
           # Source range
  
verification_info: {"golden_diff": "diff --git a/qcodes/instrument_drivers/tektronix/Keithley_2600.py b/qcodes/instrument_drivers/tektronix/Keithley_2600.py\n--- a/qcodes/instrument_drivers/tektronix/Keithley_2600.py\n+++ b/qcodes/instrument_drivers/tektronix/Keithley_2600.py\n@@ -19,20 +19,26 @@\n         super().__init__(name, address, terminator='\\n', **kwargs)\n         self._channel = channel\n \n-        self.add_parameter('volt', get_cmd='measure.v()',\n-                           get_parser=float, set_cmd='source.levelv={:.12f}',\n+        self.add_parameter('volt',\n+                           get_cmd='measure.v()',\n+                           get_parser=float,\n+                           set_cmd='source.levelv={:.12f}',\n                            label='Voltage',\n                            unit='V')\n-        self.add_parameter('curr', get_cmd='measure.i()',\n-                           get_parser=float, set_cmd='source.leveli={:.12f}',\n+        self.add_parameter('curr',\n+                           get_cmd='measure.i()',\n+                           get_parser=float,\n+                           set_cmd='source.leveli={:.12f}',\n                            label='Current',\n                            unit='A')\n         self.add_parameter('mode',\n                            get_cmd='source.func',\n+                           get_parser=float,\n                            set_cmd='source.func={:d}',\n                            val_mapping={'current': 0, 'voltage': 1})\n         self.add_parameter('output',\n                            get_cmd='source.output',\n+                           get_parser=float,\n                            set_cmd='source.output={:d}',\n                            val_mapping={'on':  1, 'off': 0})\n         # Source range\n", "issue": "Keithley2600 driver broken after commit 460c93c71506213102e56d3ea0c518723666d56a\n\r\n### Steps to reproduce\r\n1. Connect Keithley 2600\r\n2. ask it for output status or mode\r\n3. doh\r\n\r\n### Expected behaviour\r\ntell me what i asked for\r\n\r\n### Actual behaviour\r\nerror because parsing fails\r\nissue introduced in  commit 460c93c71506213102e56d3ea0c518723666d56a (@alexcjohnson)\r\n\r\n\r\n### System\r\n**operating system**\r\nW10\r\n**qcodes branch**\r\nmaster\r\n**qcodes commit**\r\n177f8201b3778c0071c60d4e4c658449284e1a6c \n", "before_files": [{"content": "from qcodes import VisaInstrument\n\n\nclass Keithley_2600(VisaInstrument):\n    \"\"\"\n    channel: use channel 'a' or 'b'\n\n    This is the qcodes driver for the Keithley_2600 Source-Meter series,\n    tested with Keithley_2614B\n\n    Status: beta-version.\n        TODO:\n        - Add all parameters that are in the manual\n        - range and limit should be set according to mode\n        - add ramping and such stuff\n\n    \"\"\"\n    def __init__(self, name, address, channel, **kwargs):\n        super().__init__(name, address, terminator='\\n', **kwargs)\n        self._channel = channel\n\n        self.add_parameter('volt', get_cmd='measure.v()',\n                           get_parser=float, set_cmd='source.levelv={:.12f}',\n                           label='Voltage',\n                           unit='V')\n        self.add_parameter('curr', get_cmd='measure.i()',\n                           get_parser=float, set_cmd='source.leveli={:.12f}',\n                           label='Current',\n                           unit='A')\n        self.add_parameter('mode',\n                           get_cmd='source.func',\n                           set_cmd='source.func={:d}',\n                           val_mapping={'current': 0, 'voltage': 1})\n        self.add_parameter('output',\n                           get_cmd='source.output',\n                           set_cmd='source.output={:d}',\n                           val_mapping={'on':  1, 'off': 0})\n        # Source range\n        # needs get after set\n        self.add_parameter('rangev',\n                           get_cmd='source.rangev',\n                           get_parser=float,\n                           set_cmd='source.rangev={:.4f}',\n                           unit='V')\n        # Measure range\n        # needs get after set\n        self.add_parameter('rangei',\n                           get_cmd='source.rangei',\n                           get_parser=float,\n                           set_cmd='source.rangei={:.4f}',\n                           unit='A')\n        # Compliance limit\n        self.add_parameter('limitv',\n                           get_cmd='source.limitv',\n                           get_parser=float,\n                           set_cmd='source.limitv={:.4f}',\n                           unit='V')\n        # Compliance limit\n        self.add_parameter('limiti',\n                           get_cmd='source.limiti',\n                           get_parser=float,\n                           set_cmd='source.limiti={:.4f}',\n                           unit='A')\n\n        self.connect_message()\n\n    def get_idn(self):\n        IDN = self.ask_raw('*IDN?')\n        vendor, model, serial, firmware = map(str.strip, IDN.split(','))\n        model = model[6:]\n\n        IDN = {'vendor': vendor, 'model': model,\n               'serial': serial, 'firmware': firmware}\n        return IDN\n\n    def reset(self):\n        self.write('reset()')\n\n    def ask(self, cmd):\n        return super().ask('print(smu{:s}.{:s})'.format(self._channel, cmd))\n\n    def write(self, cmd):\n        super().write('smu{:s}.{:s}'.format(self._channel, cmd))\n", "path": "qcodes/instrument_drivers/tektronix/Keithley_2600.py"}], "after_files": [{"content": "from qcodes import VisaInstrument\n\n\nclass Keithley_2600(VisaInstrument):\n    \"\"\"\n    channel: use channel 'a' or 'b'\n\n    This is the qcodes driver for the Keithley_2600 Source-Meter series,\n    tested with Keithley_2614B\n\n    Status: beta-version.\n        TODO:\n        - Add all parameters that are in the manual\n        - range and limit should be set according to mode\n        - add ramping and such stuff\n\n    \"\"\"\n    def __init__(self, name, address, channel, **kwargs):\n        super().__init__(name, address, terminator='\\n', **kwargs)\n        self._channel = channel\n\n        self.add_parameter('volt',\n                           get_cmd='measure.v()',\n                           get_parser=float,\n                           set_cmd='source.levelv={:.12f}',\n                           label='Voltage',\n                           unit='V')\n        self.add_parameter('curr',\n                           get_cmd='measure.i()',\n                           get_parser=float,\n                           set_cmd='source.leveli={:.12f}',\n                           label='Current',\n                           unit='A')\n        self.add_parameter('mode',\n                           get_cmd='source.func',\n                           get_parser=float,\n                           set_cmd='source.func={:d}',\n                           val_mapping={'current': 0, 'voltage': 1})\n        self.add_parameter('output',\n                           get_cmd='source.output',\n                           get_parser=float,\n                           set_cmd='source.output={:d}',\n                           val_mapping={'on':  1, 'off': 0})\n        # Source range\n        # needs get after set\n        self.add_parameter('rangev',\n                           get_cmd='source.rangev',\n                           get_parser=float,\n                           set_cmd='source.rangev={:.4f}',\n                           unit='V')\n        # Measure range\n        # needs get after set\n        self.add_parameter('rangei',\n                           get_cmd='source.rangei',\n                           get_parser=float,\n                           set_cmd='source.rangei={:.4f}',\n                           unit='A')\n        # Compliance limit\n        self.add_parameter('limitv',\n                           get_cmd='source.limitv',\n                           get_parser=float,\n                           set_cmd='source.limitv={:.4f}',\n                           unit='V')\n        # Compliance limit\n        self.add_parameter('limiti',\n                           get_cmd='source.limiti',\n                           get_parser=float,\n                           set_cmd='source.limiti={:.4f}',\n                           unit='A')\n\n        self.connect_message()\n\n    def get_idn(self):\n        IDN = self.ask_raw('*IDN?')\n        vendor, model, serial, firmware = map(str.strip, IDN.split(','))\n        model = model[6:]\n\n        IDN = {'vendor': vendor, 'model': model,\n               'serial': serial, 'firmware': firmware}\n        return IDN\n\n    def reset(self):\n        self.write('reset()')\n\n    def ask(self, cmd):\n        return super().ask('print(smu{:s}.{:s})'.format(self._channel, cmd))\n\n    def write(self, cmd):\n        super().write('smu{:s}.{:s}'.format(self._channel, cmd))\n", "path": "qcodes/instrument_drivers/tektronix/Keithley_2600.py"}]}