comparison hgext/lfs/pointer.py @ 43077:687b865b95ad

formatting: byteify all mercurial/ and hgext/ string literals Done with python3.7 contrib/byteify-strings.py -i $(hg files 'set:mercurial/**.py - mercurial/thirdparty/** + hgext/**.py - hgext/fsmonitor/pywatchman/** - mercurial/__init__.py') black -l 80 -t py33 -S $(hg files 'set:**.py - mercurial/thirdparty/** - "contrib/python-zstandard/**" - hgext/fsmonitor/pywatchman/**') # skip-blame mass-reformatting only Differential Revision: https://phab.mercurial-scm.org/D6972
author Augie Fackler <augie@google.com>
date Sun, 06 Oct 2019 09:48:39 -0400
parents 2372284d9457
children 649d3ac37a12
comparison
equal deleted inserted replaced
43076:2372284d9457 43077:687b865b95ad
21 class InvalidPointer(error.StorageError): 21 class InvalidPointer(error.StorageError):
22 pass 22 pass
23 23
24 24
25 class gitlfspointer(dict): 25 class gitlfspointer(dict):
26 VERSION = 'https://git-lfs.github.com/spec/v1' 26 VERSION = b'https://git-lfs.github.com/spec/v1'
27 27
28 def __init__(self, *args, **kwargs): 28 def __init__(self, *args, **kwargs):
29 self['version'] = self.VERSION 29 self[b'version'] = self.VERSION
30 super(gitlfspointer, self).__init__(*args) 30 super(gitlfspointer, self).__init__(*args)
31 self.update(pycompat.byteskwargs(kwargs)) 31 self.update(pycompat.byteskwargs(kwargs))
32 32
33 @classmethod 33 @classmethod
34 def deserialize(cls, text): 34 def deserialize(cls, text):
35 try: 35 try:
36 return cls(l.split(' ', 1) for l in text.splitlines()).validate() 36 return cls(l.split(b' ', 1) for l in text.splitlines()).validate()
37 except ValueError: # l.split returns 1 item instead of 2 37 except ValueError: # l.split returns 1 item instead of 2
38 raise InvalidPointer( 38 raise InvalidPointer(
39 _('cannot parse git-lfs text: %s') % stringutil.pprint(text) 39 _(b'cannot parse git-lfs text: %s') % stringutil.pprint(text)
40 ) 40 )
41 41
42 def serialize(self): 42 def serialize(self):
43 sortkeyfunc = lambda x: (x[0] != 'version', x) 43 sortkeyfunc = lambda x: (x[0] != b'version', x)
44 items = sorted(self.validate().iteritems(), key=sortkeyfunc) 44 items = sorted(self.validate().iteritems(), key=sortkeyfunc)
45 return ''.join('%s %s\n' % (k, v) for k, v in items) 45 return b''.join(b'%s %s\n' % (k, v) for k, v in items)
46 46
47 def oid(self): 47 def oid(self):
48 return self['oid'].split(':')[-1] 48 return self[b'oid'].split(b':')[-1]
49 49
50 def size(self): 50 def size(self):
51 return int(self['size']) 51 return int(self[b'size'])
52 52
53 # regular expressions used by _validate 53 # regular expressions used by _validate
54 # see https://github.com/git-lfs/git-lfs/blob/master/docs/spec.md 54 # see https://github.com/git-lfs/git-lfs/blob/master/docs/spec.md
55 _keyre = re.compile(br'\A[a-z0-9.-]+\Z') 55 _keyre = re.compile(br'\A[a-z0-9.-]+\Z')
56 _valuere = re.compile(br'\A[^\n]*\Z') 56 _valuere = re.compile(br'\A[^\n]*\Z')
57 _requiredre = { 57 _requiredre = {
58 'size': re.compile(br'\A[0-9]+\Z'), 58 b'size': re.compile(br'\A[0-9]+\Z'),
59 'oid': re.compile(br'\Asha256:[0-9a-f]{64}\Z'), 59 b'oid': re.compile(br'\Asha256:[0-9a-f]{64}\Z'),
60 'version': re.compile(br'\A%s\Z' % stringutil.reescape(VERSION)), 60 b'version': re.compile(br'\A%s\Z' % stringutil.reescape(VERSION)),
61 } 61 }
62 62
63 def validate(self): 63 def validate(self):
64 """raise InvalidPointer on error. return self if there is no error""" 64 """raise InvalidPointer on error. return self if there is no error"""
65 requiredcount = 0 65 requiredcount = 0
66 for k, v in self.iteritems(): 66 for k, v in self.iteritems():
67 if k in self._requiredre: 67 if k in self._requiredre:
68 if not self._requiredre[k].match(v): 68 if not self._requiredre[k].match(v):
69 raise InvalidPointer( 69 raise InvalidPointer(
70 _('unexpected lfs pointer value: %s=%s') 70 _(b'unexpected lfs pointer value: %s=%s')
71 % (k, stringutil.pprint(v)) 71 % (k, stringutil.pprint(v))
72 ) 72 )
73 requiredcount += 1 73 requiredcount += 1
74 elif not self._keyre.match(k): 74 elif not self._keyre.match(k):
75 raise InvalidPointer(_('unexpected lfs pointer key: %s') % k) 75 raise InvalidPointer(_(b'unexpected lfs pointer key: %s') % k)
76 if not self._valuere.match(v): 76 if not self._valuere.match(v):
77 raise InvalidPointer( 77 raise InvalidPointer(
78 _('unexpected lfs pointer value: %s=%s') 78 _(b'unexpected lfs pointer value: %s=%s')
79 % (k, stringutil.pprint(v)) 79 % (k, stringutil.pprint(v))
80 ) 80 )
81 if len(self._requiredre) != requiredcount: 81 if len(self._requiredre) != requiredcount:
82 miss = sorted(set(self._requiredre.keys()).difference(self.keys())) 82 miss = sorted(set(self._requiredre.keys()).difference(self.keys()))
83 raise InvalidPointer( 83 raise InvalidPointer(
84 _('missing lfs pointer keys: %s') % ', '.join(miss) 84 _(b'missing lfs pointer keys: %s') % b', '.join(miss)
85 ) 85 )
86 return self 86 return self
87 87
88 88
89 deserialize = gitlfspointer.deserialize 89 deserialize = gitlfspointer.deserialize