Mercurial > public > mercurial-scm > hg-stable
diff hgext/lfs/wireprotolfsserver.py @ 43076:2372284d9457
formatting: blacken the codebase
This is using my patch to black
(https://github.com/psf/black/pull/826) so we don't un-wrap collection
literals.
Done with:
hg files 'set:**.py - mercurial/thirdparty/** - "contrib/python-zstandard/**"' | xargs black -S
# skip-blame mass-reformatting only
# no-check-commit reformats foo_bar functions
Differential Revision: https://phab.mercurial-scm.org/D6971
author | Augie Fackler <augie@google.com> |
---|---|
date | Sun, 06 Oct 2019 09:45:02 -0400 |
parents | 6d7f18cd81d9 |
children | 687b865b95ad |
line wrap: on
line diff
--- a/hgext/lfs/wireprotolfsserver.py Sat Oct 05 10:29:34 2019 -0400 +++ b/hgext/lfs/wireprotolfsserver.py Sun Oct 06 09:45:02 2019 -0400 @@ -12,9 +12,7 @@ import json import traceback -from mercurial.hgweb import ( - common as hgwebcommon, -) +from mercurial.hgweb import common as hgwebcommon from mercurial import ( exthelper, @@ -35,6 +33,7 @@ eh = exthelper.exthelper() + @eh.wrapfunction(wireprotoserver, 'handlewsgirequest') def handlewsgirequest(orig, rctx, req, res, checkperm): """Wrap wireprotoserver.handlewsgirequest() to possibly process an LFS @@ -59,9 +58,9 @@ # TODO: reserve and use a path in the proposed http wireprotocol /api/ # namespace? elif req.dispatchpath.startswith(b'.hg/lfs/objects'): - return _processbasictransfer(rctx.repo, req, res, - lambda perm: - checkperm(rctx, req, perm)) + return _processbasictransfer( + rctx.repo, req, res, lambda perm: checkperm(rctx, req, perm) + ) return False except hgwebcommon.ErrorResponse as e: # XXX: copied from the handler surrounding wireprotoserver._callhttp() @@ -73,11 +72,13 @@ res.setbodybytes(b'0\n%s\n' % pycompat.bytestr(e)) return True + def _sethttperror(res, code, message=None): res.status = hgwebcommon.statusmessage(code, message=message) res.headers[b'Content-Type'] = b'text/plain; charset=utf-8' res.setbodybytes(b'') + def _logexception(req): """Write information about the current exception to wsgi.errors.""" tb = pycompat.sysbytes(traceback.format_exc()) @@ -88,8 +89,10 @@ uri += req.apppath uri += b'/' + req.dispatchpath - errorlog.write(b"Exception happened while processing request '%s':\n%s" % - (uri, tb)) + errorlog.write( + b"Exception happened while processing request '%s':\n%s" % (uri, tb) + ) + def _processbatchrequest(repo, req, res): """Handle a request for the Batch API, which is the gateway to granting file @@ -134,22 +137,32 @@ # If no transfer handlers are explicitly requested, 'basic' is assumed. if r'basic' not in lfsreq.get(r'transfers', [r'basic']): - _sethttperror(res, HTTP_BAD_REQUEST, - b'Only the basic LFS transfer handler is supported') + _sethttperror( + res, + HTTP_BAD_REQUEST, + b'Only the basic LFS transfer handler is supported', + ) return True operation = lfsreq.get(r'operation') operation = pycompat.bytestr(operation) if operation not in (b'upload', b'download'): - _sethttperror(res, HTTP_BAD_REQUEST, - b'Unsupported LFS transfer operation: %s' % operation) + _sethttperror( + res, + HTTP_BAD_REQUEST, + b'Unsupported LFS transfer operation: %s' % operation, + ) return True localstore = repo.svfs.lfslocalblobstore - objects = [p for p in _batchresponseobjects(req, lfsreq.get(r'objects', []), - operation, localstore)] + objects = [ + p + for p in _batchresponseobjects( + req, lfsreq.get(r'objects', []), operation, localstore + ) + ] rsp = { r'transfer': r'basic', @@ -162,6 +175,7 @@ return True + def _batchresponseobjects(req, objects, action, store): """Yield one dictionary of attributes for the Batch API response for each object in the list. @@ -197,7 +211,7 @@ rsp = { r'oid': soid, r'size': obj.get(r'size'), # XXX: should this check the local size? - #r'authenticated': True, + # r'authenticated': True, } exists = True @@ -222,7 +236,7 @@ rsp[r'error'] = { r'code': 500, - r'message': inst.strerror or r'Internal Server Server' + r'message': inst.strerror or r'Internal Server Server', } yield rsp continue @@ -235,15 +249,15 @@ if not exists: rsp[r'error'] = { r'code': 404, - r'message': r"The object does not exist" + r'message': r"The object does not exist", } yield rsp continue elif not verifies: rsp[r'error'] = { - r'code': 422, # XXX: is this the right code? - r'message': r"The object is corrupt" + r'code': 422, # XXX: is this the right code? + r'message': r"The object is corrupt", } yield rsp continue @@ -258,9 +272,7 @@ # The spec doesn't mention the Accept header here, but avoid # a gratuitous deviation from lfs-test-server in the test # output. - hdr = { - r'Accept': r'application/vnd.git-lfs' - } + hdr = {r'Accept': r'application/vnd.git-lfs'} auth = req.headers.get(b'Authorization', b'') if auth.startswith(b'Basic '): @@ -269,9 +281,11 @@ return hdr rsp[r'actions'] = { - r'%s' % pycompat.strurl(action): { - r'href': pycompat.strurl(b'%s%s/.hg/lfs/objects/%s' - % (req.baseurl, req.apppath, oid)), + r'%s' + % pycompat.strurl(action): { + r'href': pycompat.strurl( + b'%s%s/.hg/lfs/objects/%s' % (req.baseurl, req.apppath, oid) + ), # datetime.isoformat() doesn't include the 'Z' suffix r"expires_at": expiresat.strftime(r'%Y-%m-%dT%H:%M:%SZ'), r'header': _buildheader(), @@ -280,6 +294,7 @@ yield rsp + def _processbasictransfer(repo, req, res, checkperm): """Handle a single file upload (PUT) or download (GET) action for the Basic Transfer Adapter. @@ -347,6 +362,9 @@ return True else: - _sethttperror(res, HTTP_METHOD_NOT_ALLOWED, - message=b'Unsupported LFS transfer method: %s' % method) + _sethttperror( + res, + HTTP_METHOD_NOT_ALLOWED, + message=b'Unsupported LFS transfer method: %s' % method, + ) return True