# HG changeset patch # User Gregory Szorc # Date 2017-08-10 06:35:20 # Node ID b47fe9733d7663222033297059c38c28b2ceb75e # Parent 4c706037adef44b3d8585b5ace1cf2f057e598d5 peer: remove non iterating batcher (API) The last use of this API was removed in b6e71f8af5b8 in 2016. While not formally deprecated, as of the last commit the code is no longer explicitly tested. I think the new API has existed long enough for people to transition to it. I also have plans to more formalize the peer API and removing batch() makes that work easier. I'm not convinced the current client-side API around batching is great. But it's the best we have at the moment. .. api:: remove peer.batch() Replace with peer.iterbatch(). Differential Revision: https://phab.mercurial-scm.org/D320 diff --git a/mercurial/peer.py b/mercurial/peer.py --- a/mercurial/peer.py +++ b/mercurial/peer.py @@ -49,15 +49,6 @@ class iterbatcher(batcher): def results(self): raise NotImplementedError() -class localbatch(batcher): - '''performs the queued calls directly''' - def __init__(self, local): - batcher.__init__(self) - self.local = local - def submit(self): - for name, args, opts, resref in self.calls: - resref.set(getattr(self.local, name)(*args, **opts)) - class localiterbatcher(iterbatcher): def __init__(self, local): super(iterbatcher, self).__init__() @@ -106,10 +97,6 @@ def batchable(f): return plain class peerrepository(object): - - def batch(self): - return localbatch(self) - def iterbatch(self): """Batch requests but allow iterating over the results. diff --git a/mercurial/wireproto.py b/mercurial/wireproto.py --- a/mercurial/wireproto.py +++ b/mercurial/wireproto.py @@ -8,7 +8,6 @@ from __future__ import absolute_import import hashlib -import itertools import os import tempfile @@ -80,38 +79,6 @@ class abstractserverproto(object): # """ # raise NotImplementedError() -class remotebatch(peer.batcher): - '''batches the queued calls; uses as few roundtrips as possible''' - def __init__(self, remote): - '''remote must support _submitbatch(encbatch) and - _submitone(op, encargs)''' - peer.batcher.__init__(self) - self.remote = remote - def submit(self): - req, rsp = [], [] - for name, args, opts, resref in self.calls: - mtd = getattr(self.remote, name) - batchablefn = getattr(mtd, 'batchable', None) - if batchablefn is not None: - batchable = batchablefn(mtd.im_self, *args, **opts) - encargsorres, encresref = next(batchable) - assert encresref - req.append((name, encargsorres,)) - rsp.append((batchable, encresref, resref,)) - else: - if req: - self._submitreq(req, rsp) - req, rsp = [], [] - resref.set(mtd(*args, **opts)) - if req: - self._submitreq(req, rsp) - def _submitreq(self, req, rsp): - encresults = self.remote._submitbatch(req) - for encres, r in zip(encresults, rsp): - batchable, encresref, resref = r - encresref.set(encres) - resref.set(next(batchable)) - class remoteiterbatcher(peer.iterbatcher): def __init__(self, remote): super(remoteiterbatcher, self).__init__() @@ -253,11 +220,6 @@ class wirepeer(peer.peerrepository): See also httppeer.py and sshpeer.py for protocol-specific implementations of this interface. """ - def batch(self): - if self.capable('batch'): - return remotebatch(self) - else: - return peer.localbatch(self) def _submitbatch(self, req): """run batch request on the server diff --git a/tests/test-wireproto.py b/tests/test-wireproto.py --- a/tests/test-wireproto.py +++ b/tests/test-wireproto.py @@ -55,7 +55,7 @@ srv = serverrepo() clt = clientpeer(srv) print(clt.greet("Foobar")) -b = clt.batch() -fs = [b.greet(s) for s in ["Fo, =;: