# ------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. See License.txt in the project root for # license information. # -------------------------------------------------------------------------- from typing import Union, Iterable, IO class DataLakeFileQueryReader(object): """A streaming object to read query results. :ivar str name: The name of the blob being quered. :ivar str container: The name of the container where the blob is. :ivar dict response_headers: The response_headers of the quick query request. :ivar bytes record_delimiter: The delimiter used to separate lines, or records with the data. The `records` method will return these lines via a generator. """ def __init__( self, blob_query_reader ): self.name = blob_query_reader.name self.file_system = blob_query_reader.container self.response_headers = blob_query_reader.response_headers self.record_delimiter = blob_query_reader.record_delimiter self._bytes_processed = 0 self._blob_query_reader = blob_query_reader def __len__(self): return len(self._blob_query_reader) def readall(self): # type: () -> Union[bytes, str] """Return all query results. This operation is blocking until all data is downloaded. If encoding has been configured - this will be used to decode individual records are they are received. :returns: All query results. :rtype: Union[bytes, str] """ return self._blob_query_reader.readall() def readinto(self, stream): # type: (IO) -> None """Download the query result to a stream. :param IO stream: The stream to download to. This can be an open file-handle, or any writable stream. :returns: None """ self._blob_query_reader(stream) def records(self): # type: () -> Iterable[Union[bytes, str]] """Returns a record generator for the query result. Records will be returned line by line. If encoding has been configured - this will be used to decode individual records are they are received. :returns: A record generator for the query result. :rtype: Iterable[Union[bytes, str]] """ return self._blob_query_reader.records()