| 
														
															@@ -241,6 +241,24 @@ class RemoteRepository: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 del self.cache[args] 
														 | 
														
														 | 
														
															                 del self.cache[args] 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             return msgid 
														 | 
														
														 | 
														
															             return msgid 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        def handle_error(error, res): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            if error == b'DoesNotExist': 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                raise Repository.DoesNotExist(self.location.orig) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            elif error == b'AlreadyExists': 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                raise Repository.AlreadyExists(self.location.orig) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            elif error == b'CheckNeeded': 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                raise Repository.CheckNeeded(self.location.orig) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            elif error == b'IntegrityError': 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                raise IntegrityError(res) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            elif error == b'PathNotAllowed': 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                raise PathNotAllowed(*res) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            elif error == b'ObjectNotFound': 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                raise Repository.ObjectNotFound(res[0], self.location.orig) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            elif error == b'InvalidRPCMethod': 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                raise InvalidRPCMethod(*res) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            else: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                raise self.RPCError(res.decode('utf-8')) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         calls = list(calls) 
														 | 
														
														 | 
														
															         calls = list(calls) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         waiting_for = [] 
														 | 
														
														 | 
														
															         waiting_for = [] 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         w_fds = [self.stdin_fd] 
														 | 
														
														 | 
														
															         w_fds = [self.stdin_fd] 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -250,22 +268,7 @@ class RemoteRepository: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     error, res = self.responses.pop(waiting_for[0]) 
														 | 
														
														 | 
														
															                     error, res = self.responses.pop(waiting_for[0]) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     waiting_for.pop(0) 
														 | 
														
														 | 
														
															                     waiting_for.pop(0) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     if error: 
														 | 
														
														 | 
														
															                     if error: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                        if error == b'DoesNotExist': 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                            raise Repository.DoesNotExist(self.location.orig) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                        elif error == b'AlreadyExists': 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                            raise Repository.AlreadyExists(self.location.orig) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                        elif error == b'CheckNeeded': 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                            raise Repository.CheckNeeded(self.location.orig) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                        elif error == b'IntegrityError': 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                            raise IntegrityError(res) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                        elif error == b'PathNotAllowed': 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                            raise PathNotAllowed(*res) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                        elif error == b'ObjectNotFound': 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                            raise Repository.ObjectNotFound(res[0], self.location.orig) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                        elif error == b'InvalidRPCMethod': 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                            raise InvalidRPCMethod(*res) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                        else: 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                            raise self.RPCError(res.decode('utf-8')) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                        handle_error(error, res) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     else: 
														 | 
														
														 | 
														
															                     else: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                         yield res 
														 | 
														
														 | 
														
															                         yield res 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                         if not waiting_for and not calls: 
														 | 
														
														 | 
														
															                         if not waiting_for and not calls: 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -287,6 +290,8 @@ class RemoteRepository: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                         type, msgid, error, res = unpacked 
														 | 
														
														 | 
														
															                         type, msgid, error, res = unpacked 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                         if msgid in self.ignore_responses: 
														 | 
														
														 | 
														
															                         if msgid in self.ignore_responses: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                             self.ignore_responses.remove(msgid) 
														 | 
														
														 | 
														
															                             self.ignore_responses.remove(msgid) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                            if error: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                handle_error(error, res) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                         else: 
														 | 
														
														 | 
														
															                         else: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                             self.responses[msgid] = error, res 
														 | 
														
														 | 
														
															                             self.responses[msgid] = error, res 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 elif fd is self.stderr_fd: 
														 | 
														
														 | 
														
															                 elif fd is self.stderr_fd: 
														 |