"""
Support for downloading objects from the object service, following best
practices for that service.
Downloaded data is written to a "writer" provided by a "writer factory". A
writer has a `write` method which writes the entire passed buffer to storage.
A writer factory is a callable which returns a fresh writer, ready to write the
first byte of the object. When downloads are retried, the writer factory may
be called more than once.
This module provides several pre-defined writers and writer factories for
common cases. """
import functools
from .aio import download as aio_download from .aio.asyncutils import ensureCoro, runAsync
def downloadToBuf(**kwargs): """
Convenience method to download data to an in-memory buffer andreturn the
downloaded data. Arguments are the same as `download`, except that
`writerFactory` should not be supplied. Returns a tuple (buffer, contentType). """ return runAsync(aio_download.downloadToBuf(**kwargs))
def downloadToFile(file, **kwargs): """
Convenience method to download data to a file object. The file must be
writeable, in binary mode, seekable (`f.seek`), and truncatable
(`f.truncate`) to support retries. Arguments are the same as `download`, except that `writerFactory` should not be supplied. Returns the content-type. """ return runAsync(aio_download.downloadToFile(file=file, **kwargs))
def download(*, writerFactory, **kwargs): """
Download the named object from the object service, using a writer returned from `writerFactory` to write the data. The `maxRetries` parameter has
the same meaning asfor service clients. The `objectService` parameter is
an instance of the Object class, configured with credentials for the
upload. Returns the content-type. """
wrappedWriterFactory = _wrapSyncWriterFactory(writerFactory) return runAsync(aio_download.download(writerFactory=wrappedWriterFactory, **kwargs))
def downloadArtifactToBuf(**kwargs): """
Convenience method to download an artifact to an in-memory buffer andreturn the
downloaded data. Arguments are the same as `downloadArtifact`, except that
`writerFactory` should not be supplied. Returns a tuple (buffer, contentType). """ return runAsync(aio_download.downloadArtifactToBuf(**kwargs))
def downloadArtifactToFile(file, **kwargs): """
Convenience method to download an artifact to a file object. The file must be
writeable, in binary mode, seekable (`f.seek`), and truncatable
(`f.truncate`) to support retries. Arguments are the same as `downloadArtifac`, except that `writerFactory` should not be supplied. Returns the content-type. """ return runAsync(aio_download.downloadArtifactToFile(file=file, **kwargs))
def downloadArtifact(*, writerFactory, **kwargs): """
Download the named artifact with the appropriate storageType, using a writer returned from `writerFactory` to write the data. The `maxRetries` parameter has
the same meaning asfor service clients. The `queueService` parameter is
an instance of the Queue class, configured with credentials for the
download. Returns the content-type. """
wrappedWriterFactory = _wrapSyncWriterFactory(writerFactory) return runAsync(
aio_download.downloadArtifact(writerFactory=wrappedWriterFactory, **kwargs)
)
def _wrapSyncWriterFactory(writerFactory): """Modify the reader returned by readerFactory to have an async read."""
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.