parameters: (self, n)
return_statement: return data
docstring: Read exactly `n` bytes.
  
          Raise an IncompleteReadError if EOF is reached before `n` bytes can be
          read. The IncompleteReadError.partial attribute of the exception will
          contain the partial read bytes.
  
          if n is zero, return empty bytes object.
  
          Returned value is not limited with limit, configured at stream
          creation.
  
          If stream was paused, this function will automatically resume it if
          needed.
docstring_summary: Read exactly `n` bytes.
docstring_tokens: Read exactly n bytes .
function: async def readexactly(self, n):
          """Read exactly `n` bytes.
  
          Raise an IncompleteReadError if EOF is reached before `n` bytes can be
          read. The IncompleteReadError.partial attribute of the exception will
          contain the partial read bytes.
  
          if n is zero, return empty bytes object.
  
          Returned value is not limited with limit, configured at stream
          creation.
  
          If stream was paused, this function will automatically resume it if
          needed.
          """
          if n < 0:
              raise ValueError('readexactly size can not be less than zero')
  
          if self._exception is not None:
              raise self._exception
  
          if n == 0:
              return b''
  
          while len(self._buffer) < n:
              if self._eof:
                  incomplete = bytes(self._buffer)
                  self._buffer.clear()
                  raise IncompleteReadError(incomplete, n)
  
              await self._wait_for_data('readexactly')
  
          if len(self._buffer) == n:
              data = bytes(self._buffer)
              self._buffer.clear()
          else:
              data = bytes(self._buffer[:n])
              del self._buffer[:n]
          self._maybe_resume_transport()
          return data
function_tokens: async def readexactly ( self , n ) : if n < 0 : raise ValueError ( 'readexactly size can not be less than zero' ) if self . _exception is not None : raise self . _exception if n == 0 : return b'' while len ( self . _buffer ) < n : if self . _eof : incomplete = bytes ( self . _buffer ) self . _buffer . clear ( ) raise IncompleteReadError ( incomplete , n ) await self . _wait_for_data ( 'readexactly' ) if len ( self . _buffer ) == n : data = bytes ( self . _buffer ) self . _buffer . clear ( ) else : data = bytes ( self . _buffer [ : n ] ) del self . _buffer [ : n ] self . _maybe_resume_transport ( ) return data