code: def __patch_pipe_read_method(tango_device_klass, pipe):
      
      read_method = getattr(pipe, "fget", None)
      if read_method:
          method_name = "__read_{0}__".format(pipe.pipe_name)
          pipe.read_method_name = method_name
      else:
          method_name = pipe.read_method_name
          read_method = getattr(tango_device_klass, method_name)
  
      read_pipe = _get_wrapped_pipe_read_method(pipe, read_method)
      method_name = "__read_{0}_wrapper__".format(pipe.pipe_name)
      pipe.read_method_name = method_name
  
      setattr(tango_device_klass, method_name, read_pipe)
docs: Checks if method given by it's name for the given DeviceImpl
      class has the correct signature. If a read/write method doesn't
      have a parameter (the traditional Pipe), then the method is
      wrapped into another method which has correct parameter definition
      to make it work.
  
      :param tango_device_klass: a DeviceImpl class
      :type tango_device_klass: class
      :param pipe: the pipe data information
      :type pipe: PipeData