docs: def receive(self, data_only = True, **options):
          '''Reads and (optionally) parses the response from a q service.
          
          Retrieves query result along with meta-information:
          
              >>> q.query(qconnection.MessageType.SYNC,'{x}', 10)
              >>> print(q.receive(data_only = False, raw = False))
              QMessage: message type: 2, data size: 13, is_compressed: False, data: 10
  
          Retrieves parsed query result:
  
              >>> q.query(qconnection.MessageType.SYNC,'{x}', 10)
              >>> print(q.receive(data_only = True, raw = False))
              10
  
          Retrieves not-parsed (raw) query result:
          
              >>> from binascii import hexlify
              >>> q.query(qconnection.MessageType.SYNC,'{x}', 10)
              >>> print(hexlify(q.receive(data_only = True, raw = True)))
              fa0a000000
                  
          :Parameters:
           - `data_only` (`boolean`) - if ``True`` returns only data part of the 
             message, otherwise returns data and message meta-information 
             encapsulated in :class:`.QMessage` instance 
          :Options:
           - `raw` (`boolean`) - if ``True`` returns raw data chunk instead of 
             parsed data, **Default**: ``False``
           - `numpy_temporals` (`boolean`) - if ``False`` temporal vectors are
             backed by raw q representation (:class:`.QTemporalList`, 
             :class:`.QTemporal`) instances, otherwise are represented as 
             `numpy datetime64`/`timedelta64` arrays and atoms,
             **Default**: ``False``
          
          :returns: depending on parameter flags: :class:`.QMessage` instance, 
                    parsed message, raw data 
          :raises: :class:`.QReaderException`
          '''
          result = self._reader.read(**self._options.union_dict(**options))
          return result.data if data_only else result