2752: Improve arv-put initialization from cache.
[arvados.git] / sdk / python / arvados / commands / put.py
index e113bbd0179bdd90e63f160c5d890f7d9a1653c5..39263698b30a136522219d09a6e7eedd5e28e41e 100644 (file)
@@ -108,7 +108,7 @@ def parse_arguments(arguments):
     total data size).
     """)
 
-    group = arg_parser.add_mutually_exclusive_group()
+    group = parser.add_mutually_exclusive_group()
     group.add_argument('--resume', action='store_true', default=True,
                        help="""
     Continue interrupted uploads from cached state (default).
@@ -224,27 +224,26 @@ class ResumeCache(object):
 
 
 class ArvPutCollectionWriter(arvados.ResumableCollectionWriter):
-    def __init__(self, cache=None, reporter=None, bytes_expected=None):
-        self.__init_locals__(cache, reporter, bytes_expected)
-        super(ArvPutCollectionWriter, self).__init__()
+    STATE_PROPS = (arvados.ResumableCollectionWriter.STATE_PROPS +
+                   ['bytes_written'])
 
-    def __init_locals__(self, cache, reporter, bytes_expected):
+    def __init__(self, cache=None, reporter=None, bytes_expected=None):
+        self.bytes_written = 0
         self.cache = cache
         self.report_func = reporter
-        self.bytes_written = 0
         self.bytes_expected = bytes_expected
+        super(ArvPutCollectionWriter, self).__init__()
 
     @classmethod
     def from_cache(cls, cache, reporter=None, bytes_expected=None):
         try:
             state = cache.load()
             state['_data_buffer'] = [base64.decodestring(state['_data_buffer'])]
-            writer = cls.from_state(state)
+            writer = cls.from_state(state, cache, reporter, bytes_expected)
         except (TypeError, ValueError,
                 arvados.errors.StaleWriterStateError) as error:
             return cls(cache, reporter, bytes_expected)
         else:
-            writer.__init_locals__(cache, reporter, bytes_expected)
             return writer
 
     def checkpoint_state(self):