Merge branch 'master' into 4232-slow-pipes-n-jobs
[arvados.git] / sdk / python / arvados / collection.py
index 45ed093e2f82144bfc457850648aa11f0d4c3b92..7bfdf782f8d06b03d6ac482fa64872d1eb8ff9be 100644 (file)
@@ -304,7 +304,7 @@ class _WriterFile(ArvadosFileBase):
 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.
@@ -321,12 +321,12 @@ class CollectionWriter(CollectionBase):
           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
@@ -558,12 +558,15 @@ class CollectionWriter(CollectionBase):
         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):