|  | @@ -1045,11 +1045,11 @@ class Location:
 | 
	
		
			
				|  |  |          """ + optional_archive_re, re.VERBOSE)              # archive name (optional, may be empty)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def __init__(self, text=''):
 | 
	
		
			
				|  |  | -        self.orig = text
 | 
	
		
			
				|  |  | -        if not self.parse(self.orig):
 | 
	
		
			
				|  |  | -            raise ValueError('Location: parse failed: %s' % self.orig)
 | 
	
		
			
				|  |  | +        if not self.parse(text):
 | 
	
		
			
				|  |  | +            raise ValueError('Invalid location format: "%s"' % self.orig)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def parse(self, text):
 | 
	
		
			
				|  |  | +        self.orig = text
 | 
	
		
			
				|  |  |          text = replace_placeholders(text)
 | 
	
		
			
				|  |  |          valid = self._parse(text)
 | 
	
		
			
				|  |  |          if valid:
 | 
	
	
		
			
				|  | @@ -1061,10 +1061,9 @@ class Location:
 | 
	
		
			
				|  |  |          if repo is None:
 | 
	
		
			
				|  |  |              return False
 | 
	
		
			
				|  |  |          valid = self._parse(repo)
 | 
	
		
			
				|  |  | -        if not valid:
 | 
	
		
			
				|  |  | -            return False
 | 
	
		
			
				|  |  |          self.archive = m.group('archive')
 | 
	
		
			
				|  |  | -        return True
 | 
	
		
			
				|  |  | +        self.orig = repo if not self.archive else '%s::%s' % (repo, self.archive)
 | 
	
		
			
				|  |  | +        return valid
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def _parse(self, text):
 | 
	
		
			
				|  |  |          def normpath_special(p):
 | 
	
	
		
			
				|  | @@ -1149,8 +1148,8 @@ def location_validator(archive=None, proto=None):
 | 
	
		
			
				|  |  |      def validator(text):
 | 
	
		
			
				|  |  |          try:
 | 
	
		
			
				|  |  |              loc = Location(text)
 | 
	
		
			
				|  |  | -        except ValueError:
 | 
	
		
			
				|  |  | -            raise argparse.ArgumentTypeError('Invalid location format: "%s"' % text) from None
 | 
	
		
			
				|  |  | +        except ValueError as err:
 | 
	
		
			
				|  |  | +            raise argparse.ArgumentTypeError(str(err)) from None
 | 
	
		
			
				|  |  |          if archive is True and not loc.archive:
 | 
	
		
			
				|  |  |              raise argparse.ArgumentTypeError('"%s": No archive specified' % text)
 | 
	
		
			
				|  |  |          elif archive is False and loc.archive:
 |