class CollectionWriter(CollectionBase):
KEEP_BLOCK_SIZE = 2**26
- def __init__(self, api_client=None, num_retries=0, replication=0):
+ def __init__(self, api_client=None, num_retries=0, replication=None):
"""Instantiate a CollectionWriter.
CollectionWriter lets you build a new Arvados Collection from scratch.
after instantiation, but note those changes may not
propagate to related objects like the Keep client.
* replication: The number of copies of each block to store.
- If this argument is 0 or not supplied, replication is
+ If this argument is None or not supplied, replication is
the server-provided default if available, otherwise 2.
"""
self._api_client = api_client
self.num_retries = num_retries
- self.replication = (replication if replication>0 else 2)
+ self.replication = (2 if replication is None else replication)
self._keep_client = None
self._data_buffer = []
self._data_buffer_len = 0
self._current_file_name = None
def finish(self):
- # Store the manifest in Keep and return its locator. Beware,
- # this is only useful in special cases like storing manifest
- # fragments temporarily in Keep during a Crunch job. In most
- # cases you should make a collection instead, by sending
- # manifest_text() to the API server's "create collection"
- # endpoint.
+ """Store the manifest in Keep and return its locator.
+
+ This is useful for storing manifest fragments (task outputs)
+ temporarily in Keep during a Crunch job.
+
+ In other cases you should make a collection instead, by
+ sending manifest_text() to the API server's "create
+ collection" endpoint.
+ """
return self._my_keep().put(self.manifest_text(), copies=self.replication)
def portable_data_hash(self):