|  | @@ -8,9 +8,9 @@ import stat
 | 
	
		
			
				|  |  |  import sys
 | 
	
		
			
				|  |  |  import time
 | 
	
		
			
				|  |  |  from io import BytesIO
 | 
	
		
			
				|  |  | -from . import xattr
 | 
	
		
			
				|  |  | -from .chunker import chunkify
 | 
	
		
			
				|  |  | -from .helpers import uid2user, user2uid, gid2group, group2gid, \
 | 
	
		
			
				|  |  | +from attic import xattr
 | 
	
		
			
				|  |  | +from attic.chunker import chunkify
 | 
	
		
			
				|  |  | +from attic.helpers import uid2user, user2uid, gid2group, group2gid, \
 | 
	
		
			
				|  |  |      Statistics, decode_dict, st_mtime_ns, make_path_safe
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  ITEMS_BUFFER = 1024 * 1024
 | 
	
	
		
			
				|  | @@ -30,10 +30,7 @@ class ItemIter(object):
 | 
	
		
			
				|  |  |          self.filter = filter
 | 
	
		
			
				|  |  |          self.stack = []
 | 
	
		
			
				|  |  |          self.peeks = 0
 | 
	
		
			
				|  |  | -        self._peek = None
 | 
	
		
			
				|  |  |          self._peek_iter = None
 | 
	
		
			
				|  |  | -        global foo
 | 
	
		
			
				|  |  | -        foo = self
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def __iter__(self):
 | 
	
		
			
				|  |  |          return self
 | 
	
	
		
			
				|  | @@ -42,7 +39,7 @@ class ItemIter(object):
 | 
	
		
			
				|  |  |          if self.stack:
 | 
	
		
			
				|  |  |              item = self.stack.pop(0)
 | 
	
		
			
				|  |  |          else:
 | 
	
		
			
				|  |  | -            self._peek = None
 | 
	
		
			
				|  |  | +            self._peek_iter = None
 | 
	
		
			
				|  |  |              item = self.get_next()
 | 
	
		
			
				|  |  |          self.peeks = max(0, self.peeks - len(item.get(b'chunks', [])))
 | 
	
		
			
				|  |  |          return item
 | 
	
	
		
			
				|  | @@ -56,13 +53,13 @@ class ItemIter(object):
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def peek(self):
 | 
	
		
			
				|  |  |          while True:
 | 
	
		
			
				|  |  | -            while not self._peek or not self._peek_iter:
 | 
	
		
			
				|  |  | +            while not self._peek_iter:
 | 
	
		
			
				|  |  |                  if self.peeks > 100:
 | 
	
		
			
				|  |  |                      raise StopIteration
 | 
	
		
			
				|  |  | -                self._peek = self.get_next()
 | 
	
		
			
				|  |  | -                self.stack.append(self._peek)
 | 
	
		
			
				|  |  | -                if b'chunks' in self._peek:
 | 
	
		
			
				|  |  | -                    self._peek_iter = iter(self._peek[b'chunks'])
 | 
	
		
			
				|  |  | +                _peek = self.get_next()
 | 
	
		
			
				|  |  | +                self.stack.append(_peek)
 | 
	
		
			
				|  |  | +                if b'chunks' in _peek:
 | 
	
		
			
				|  |  | +                    self._peek_iter = iter(_peek[b'chunks'])
 | 
	
		
			
				|  |  |                  else:
 | 
	
		
			
				|  |  |                      self._peek_iter = None
 | 
	
		
			
				|  |  |              try:
 | 
	
	
		
			
				|  | @@ -70,7 +67,7 @@ class ItemIter(object):
 | 
	
		
			
				|  |  |                  self.peeks += 1
 | 
	
		
			
				|  |  |                  return item
 | 
	
		
			
				|  |  |              except StopIteration:
 | 
	
		
			
				|  |  | -                self._peek = None
 | 
	
		
			
				|  |  | +                self._peek_iter = None
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  class Archive(object):
 |