parameters: (self, data)
return_statement: return length - len(d)
docstring: \
          Output the given byte string over the serial port. Can block if the
          connection is blocked. May raise SerialException if the connection is
          closed.
docstring_summary: \
          Output the given byte string over the serial port. Can block if the
          connection is blocked. May raise SerialException if the connection is
          closed.
docstring_tokens: \ Output the given byte string over the serial port . Can block if the connection is blocked . May raise SerialException if the connection is closed .
function: def write(self, data):
          """\
          Output the given byte string over the serial port. Can block if the
          connection is blocked. May raise SerialException if the connection is
          closed.
          """
          if not self.is_open:
              raise portNotOpenError
  
          d = to_bytes(data)
          tx_len = length = len(d)
          timeout = Timeout(self._write_timeout)
          while tx_len > 0:
              try:
                  n = self._socket.send(d)
                  if timeout.is_non_blocking:
                      # Zero timeout indicates non-blocking - simply return the
                      # number of bytes of data actually written
                      return n
                  elif not timeout.is_infinite:
                      # when timeout is set, use select to wait for being ready
                      # with the time left as timeout
                      if timeout.expired():
                          raise writeTimeoutError
                      _, ready, _ = select.select([], [self._socket], [], timeout.time_left())
                      if not ready:
                          raise writeTimeoutError
                  else:
                      assert timeout.time_left() is None
                      # wait for write operation
                      _, ready, _ = select.select([], [self._socket], [], None)
                      if not ready:
                          raise SerialException('write failed (select)')
                  d = d[n:]
                  tx_len -= n
              except SerialException:
                  raise
              except OSError as e:
                  # this is for Python 3.x where select.error is a subclass of
                  # OSError ignore BlockingIOErrors and EINTR. other errors are shown
                  # https://www.python.org/dev/peps/pep-0475.
                  if e.errno not in (errno.EAGAIN, errno.EALREADY, errno.EWOULDBLOCK, errno.EINPROGRESS, errno.EINTR):
                      raise SerialException('write failed: {}'.format(e))
              except select.error as e:
                  # this is for Python 2.x
                  # ignore BlockingIOErrors and EINTR. all errors are shown
                  # see also http://www.python.org/dev/peps/pep-3151/#select
                  if e[0] not in (errno.EAGAIN, errno.EALREADY, errno.EWOULDBLOCK, errno.EINPROGRESS, errno.EINTR):
                      raise SerialException('write failed: {}'.format(e))
              if not timeout.is_non_blocking and timeout.expired():
                  raise writeTimeoutError
          return length - len(d)
function_tokens: def write ( self , data ) : if not self . is_open : raise portNotOpenError d = to_bytes ( data ) tx_len = length = len ( d ) timeout = Timeout ( self . _write_timeout ) while tx_len > 0 : try : n = self . _socket . send ( d ) if timeout . is_non_blocking : # Zero timeout indicates non-blocking - simply return the # number of bytes of data actually written return n elif not timeout . is_infinite : # when timeout is set, use select to wait for being ready # with the time left as timeout if timeout . expired ( ) : raise writeTimeoutError _ , ready , _ = select . select ( [ ] , [ self . _socket ] , [ ] , timeout . time_left ( ) ) if not ready : raise writeTimeoutError else : assert timeout . time_left ( ) is None # wait for write operation _ , ready , _ = select . select ( [ ] , [ self . _socket ] , [ ] , None ) if not ready : raise SerialException ( 'write failed (select)' ) d = d [ n : ] tx_len -= n except SerialException : raise except OSError as e : # this is for Python 3.x where select.error is a subclass of # OSError ignore BlockingIOErrors and EINTR. other errors are shown # https://www.python.org/dev/peps/pep-0475. if e . errno not in ( errno . EAGAIN , errno . EALREADY , errno . EWOULDBLOCK , errno . EINPROGRESS , errno . EINTR ) : raise SerialException ( 'write failed: {}' . format ( e ) ) except select . error as e : # this is for Python 2.x # ignore BlockingIOErrors and EINTR. all errors are shown # see also http://www.python.org/dev/peps/pep-3151/#select if e [ 0 ] not in ( errno . EAGAIN , errno . EALREADY , errno . EWOULDBLOCK , errno . EINPROGRESS , errno . EINTR ) : raise SerialException ( 'write failed: {}' . format ( e ) ) if not timeout . is_non_blocking and timeout . expired ( ) : raise writeTimeoutError return length - len ( d )