Submitter | Jun Wu |
---|---|
Date | Aug. 10, 2016, 3:33 p.m. |
Message ID | <0045afd02d847964b2b7.1470843181@x1c> |
Download | mbox | patch |
Permalink | /patch/16240/ |
State | Accepted |
Headers | show
Return-Path: <mercurial-devel-bounces@mercurial-scm.org> X-Original-To: patchwork@mercurial-scm.org Delivered-To: patchwork@mercurial-scm.org Received: from localhost (localhost [127.0.0.1]) by mercurial-scm.org (Postfix) with ESMTP id C4E102C476; Wed, 10 Aug 2016 11:33:36 -0400 (EDT) X-Virus-Scanned: Debian amavisd-new at mercurial-scm.org Received: from mercurial-scm.org ([127.0.0.1]) by localhost (mercurial-scm.org [127.0.0.1]) (amavisd-new, port 10024) with LMTP id R90vvKE0J2gO; Wed, 10 Aug 2016 11:33:36 -0400 (EDT) Received: from mercurial-scm.org (localhost [IPv6:::1]) by mercurial-scm.org (Postfix) with ESMTP id 6CA682C46F; Wed, 10 Aug 2016 11:33:36 -0400 (EDT) X-Original-To: mercurial-devel@mercurial-scm.org Delivered-To: mercurial-devel@mercurial-scm.org Received: from localhost (localhost [127.0.0.1]) by mercurial-scm.org (Postfix) with ESMTP id 80AE82C46F for <mercurial-devel@mercurial-scm.org>; Wed, 10 Aug 2016 11:33:35 -0400 (EDT) X-Virus-Scanned: Debian amavisd-new at mercurial-scm.org Received: from mercurial-scm.org ([127.0.0.1]) by localhost (mercurial-scm.org [127.0.0.1]) (amavisd-new, port 10024) with LMTP id fVTt2POKUbxP for <mercurial-devel@mercurial-scm.org>; Wed, 10 Aug 2016 11:33:35 -0400 (EDT) Received: from mx0a-00082601.pphosted.com (mx0b-00082601.pphosted.com [67.231.153.30]) by mercurial-scm.org (Postfix) with ESMTPS id 0C8802C462 for <mercurial-devel@mercurial-scm.org>; Wed, 10 Aug 2016 11:33:34 -0400 (EDT) Received: from pps.filterd (m0089730.ppops.net [127.0.0.1]) by m0089730.ppops.net (8.16.0.11/8.16.0.11) with SMTP id u7AFUq41002421 for <mercurial-devel@mercurial-scm.org>; Wed, 10 Aug 2016 08:33:34 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=fb.com; h=content-type : mime-version : content-transfer-encoding : subject : message-id : in-reply-to : references : date : from : to; s=facebook; bh=TNAITF0FW1j+NR4paGKlxk4vOPl/lPoxXmJSPtTeKWc=; b=QMGqka/8eyLHylqCXM8/k8LcMN7SyM6f4uFm6HHocn6qsJlI2QQreLqzAyJTDBEdQRi9 xl5qMlDRDlaIs8NoMPmUK8GW43WND9I0gdJJw6N+0whonePHirzUqGZLDOJkEFnwnOjw bNh/H2F79vwLHdJy1l138nxso3B3VRuSlWY= Received: from mail.thefacebook.com ([199.201.64.23]) by m0089730.ppops.net with ESMTP id 24r3es10a9-4 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT) for <mercurial-devel@mercurial-scm.org>; Wed, 10 Aug 2016 08:33:34 -0700 Received: from NAM01-BY2-obe.outbound.protection.outlook.com (192.168.54.28) by o365-in.thefacebook.com (192.168.16.19) with Microsoft SMTP Server (TLS) id 14.3.294.0; Wed, 10 Aug 2016 08:33:11 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.onmicrosoft.com; s=selector1-fb-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=OdEfevz1G4bPTc3E6RI0uVX0x62jeR+YDfXUQ4dF548=; b=Zo6YsK7HJl4xZwMDYZLiclK6nbvwXEooUN2mwqNSFGzdiSmus0vDOpf1j8XJgVLT26uvbYaIfFRD7SBCHeLyeN89KCLgWBmS6l8LloxrOn8b53YUe81QijJ/gZnGYQTDHH0mnXa+8D/8lE9Lpd4o7sFoUQrQwm8ZAJYDeAhxteA= Received: from [10.0.2.15] (199.201.66.3) by SN2PR15MB0989.namprd15.prod.outlook.com (10.169.191.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.549.15; Wed, 10 Aug 2016 15:33:09 +0000 MIME-Version: 1.0 Subject: [PATCH 2 of 3 V2] extensions: add getwrapperchain to get a list of wrappers X-Mercurial-Node: 0045afd02d847964b2b75d6a62ad13ebff82ef6d X-Mercurial-Series-Index: 2 X-Mercurial-Series-Total: 3 Message-ID: <0045afd02d847964b2b7.1470843181@x1c> X-Mercurial-Series-Id: <d5740aef5d7b45f977d7.1470843180@x1c> In-Reply-To: <d5740aef5d7b45f977d7.1470843180@x1c> References: <d5740aef5d7b45f977d7.1470843180@x1c> User-Agent: Mercurial-patchbomb/3.8.3+274-8bf84295e59b Date: Wed, 10 Aug 2016 16:33:01 +0100 From: Jun Wu <quark@fb.com> To: <mercurial-devel@mercurial-scm.org> X-Originating-IP: [199.201.66.3] X-ClientProxiedBy: CY1PR01CA0031.prod.exchangelabs.com (10.163.94.41) To SN2PR15MB0989.namprd15.prod.outlook.com (10.169.191.155) X-MS-Office365-Filtering-Correlation-Id: cbbc8aeb-c526-4156-49d1-08d3c133a24f X-Microsoft-Exchange-Diagnostics: 1; SN2PR15MB0989; 2:HgmZvHDUas8yrUvDQ2cNJ/DxiMhAJCoqKOyhxCoy9Hv5e+zQkXFM3+0S7gyJFxgvgzmBZfoGwyyCo6hkNMKBvecn9v4TcPDiri3sWIvVP5f8xSriK7WBQMQCU3L/Ye+QTxyEc5UL3/yo5ZUSliTzkRYNb0fgkrW/Bb1UkvCtdER7g4VKF+HxeDqdvcEAzBx8; 3:4IVnB/WOh+gLT5S1SVsq12G/W/Oy3dnhI57YOk9+0le0M90np6hwVcnE+TVjcfRHhYp/D6rWclXszLrCh/8WoMW4omYbhSET6soPbcWyeC8urbQZgcuK9VsO530t00R+; 25:P8SgOYJR9BmIBaq5G5Twv51bhuf2lF41b2Nn2eGq35x5HMAqzia4FNZa+bjUr+HA5vY7i7Wp2ngXfXe/Yzy6wjw43itNVgRqT14yBPrNDB+SNgnf6lk4+NXWfSRALAq96C6ArRQcRO6+tPSn9Rt4r7KnCv6RsDYBgKXfiQ2QGAnH+mpUYg4GPrpEZZj8X68aLB6Cbfcwb50POwnV6NYgSxeiF1qTKlgc3H+gwlMcoGlVFKsvLyTCys0U0NFtjXdZYhIayAh+Wf6q0PI3bzhCkVnBdSIiZqJJlAXp61gW7A/KOeMKQh16HBiJCxOFJkeBo9SugMagljOXVIJwK/Vo7Yg5vbJjuVuIRpkdvZZg8bFU74JutwUcFlXEk8poLYiuXmeDlnbi3oXiHIsSET721yMajSRLFvnpASEzaW3UWL4= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SN2PR15MB0989; X-Microsoft-Exchange-Diagnostics: 1; SN2PR15MB0989; 31:oOUtByxXz/XNoweCmFLr2mhQfCbLkfbPF6UbhVWxEYRHJzHNVWo3S4bqC/5NGRhG6o7PWezayLMQIwk8gqYaCjSRrZZ6X977V+e/WsPBCbx79CzhvmCMwkEKnPBDaR4791ZdE9vVvCqquNYS86xJc54+qY0D4UOb7y3n01RPQugOW4Lvlj2f2Zw2TAolQlFyTfy9RWGd9GidAck49ldCYe08Po/RuXky4PfI5C5CW60=; 20:p0BmG5p/VmfMwfDcf9RHPgA9FYDZPsi3mcbk6WhRatd1yN4vEO5hurFjwEAETULBAWHzeF1GDD8VogXujk+9lsEA8xJbpZ+04ruvKPr5ndBxwfNMnxT4/keG5iIAucKTqM7BbUPXDFX33+Bs0CLWbVN3WBvM438WbXpCyPoZZt8=; 4:MixCXNJbY3hzyHL+gdlhndo/wCw5lSQq+Ukt+ElXEuH0KVGzG07UvgGxwrnMFaO4bHrwUptTXv7Cw2ziwdYgf9g9QDLKbXt9lmQiCHlPNQ9s0jR4Ho3XWdQVEom2vUpbnxHS6N+lr1FZVWTQE8JqcNF9uj8QFwn1oAFGSUkfjXA8ibP01utZpNFh2SAo3SZ0q5w56pEi0nzX1huMHTJ8Z+zbwau8dATO6oiRwopwTb/rLdkJGGmnpgGVO++16kmNvw7gKItp6J8hW6YqrAaCCWJF5ib2arpntVQRAzZfbCEmX5+8uS2PNig/9Fc6tKLR5Z0XbjXEUF6N4eHlDH8INWZc/2kM+M7eXD9GEPtt1H+ojO8RKi1qRB2kTa5d2OaA+rJjwXcUrp+rwdRRcuKMMo0BuIo2xFGxFGRVLAZ+ZH3YDHO8xDVlsXQlc33DxAmgs3uz+Ov32+LMXtrUzIWF7Q== X-Microsoft-Antispam-PRVS: <SN2PR15MB098920867EDF6BC6CCB6BBA0CD1D0@SN2PR15MB0989.namprd15.prod.outlook.com> X-Exchange-Antispam-Report-Test: UriScan:(67672495146484)(63843785518722); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040166)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046); SRVR:SN2PR15MB0989; BCL:0; PCL:0; RULEID:; SRVR:SN2PR15MB0989; X-Forefront-PRVS: 0030839EEE X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(979002)(6049001)(6009001)(7916002)(199003)(189002)(189998001)(4001350100001)(23726003)(3846002)(107886002)(47776003)(6116002)(110136002)(46406003)(97736004)(33716001)(586003)(230700001)(450100001)(50466002)(66066001)(9686002)(106356001)(2351001)(229853001)(2906002)(305945005)(97756001)(101416001)(7736002)(2950100001)(33646002)(7846002)(68736007)(15975445007)(77096005)(50986999)(19580405001)(92566002)(105586002)(19580395003)(83506001)(81156014)(81166006)(54356999)(42186005)(8676002)(86362001)(76176999)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1102; SCL:1; SRVR:SN2PR15MB0989; H:[10.0.2.15]; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: fb.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN2PR15MB0989; 23:THT6dKV3/qRUMJRrf5JYRZgIO1AeaHtNf+0Nzl1dM?= =?us-ascii?Q?GlqgoN2OgYam9X0IzlNJ9BRvP4Zx5m0LY9Ne9wnNYdkDDHr0Z1yRj4n9tv+S?= =?us-ascii?Q?n3ZUR+BgA9ALC3+qL3A2M+AhH64d7DxoQgpDBnPdpWdYFrDi+GBFLrSYJBKe?= =?us-ascii?Q?m83XiHipjHms7HXFAao+Y3C4ni0B5FLzwQYYdYJ348WFKHtTVmZ+pgYAx4aL?= =?us-ascii?Q?wQl4barZbgsMmtFY24ImGoAEVtSGAflvqgQA6kDJUmgoECB9/K73FKi8JQNU?= =?us-ascii?Q?EYeUg7357WlWWVyPaMj0yF/fvYqXnEtPKmZ/ltRrSm7UAXMN+5rHE+AohWyt?= =?us-ascii?Q?D25TL78hy5y9u3dQhD4Ou4Vs3NfwdWhhcndtZK6xkGWu/5xJ1eDm3Frah+Zs?= =?us-ascii?Q?B0h+v7/Yl9q0s+EU1FKHvioyTYxsLDkrB6hQRuQdv7DDV/pAmoyoXq1tI9Gt?= =?us-ascii?Q?kkqzX+QOXp4Kyy8l78fexsMC3Vsk/6DUaYlVrD+Ni1Tnt1TmNdyZNBo/4tCp?= =?us-ascii?Q?XJhOlU2Uc06LRE4NW8MxBUdhmhZBQdJzyiKVu+GVTBD/H//TCcIFkBPAjPh2?= =?us-ascii?Q?8BjfMb4Ymh3cuja5rbeunxfSmFloqY1u2LM1Vtl0FAVUIJdErw8C7TCeUPsZ?= =?us-ascii?Q?JJcVA/GjwVEyA1BXUpOrwcw0K8Oyhld/eViN28a7oaU+lnSRQTznNM4RaDFE?= =?us-ascii?Q?qLyFP12AsCsp6Qovz8BhOw1ZJ1elNfii6/agkSeB6WKj94lEAanqrv+MlTuM?= =?us-ascii?Q?/XdMvWFk2Sxj/ItN8SocuuC1EM/s8wOPli+sJPYaK1n2X21mejIn0od8oMdF?= =?us-ascii?Q?15ozRdETJwqdj1XymIWLi7ZwC9tWxFJOigd8VI5DtTUQ7M/LRGaA4HSwTwyE?= =?us-ascii?Q?idYbCMMcI7S3qgAFHdlqsKeX8mNHyap69C8CM7jRKmSbR9M79HnYrPDzW6YR?= =?us-ascii?Q?PvMMBE739pNj9GY1ipBo+wxwgBxIBqxyFpik+iCLk1ws0PLW25lFtM092o/o?= =?us-ascii?Q?wE12iOVciXGyn7xoQkiRoYETCBkQRdPxhFjIizWXHhuciZat5WAx9MrrPZQ4?= =?us-ascii?Q?vYhS9udTcHBGY1PWC1frmeO6lvx21iA5yJeyI7sXryO7kuswG+UbElT1f1Wu?= =?us-ascii?Q?CMJGbUxmd8yXQPXMCOkhUH6Ol86NwkbtRTxE2fkKKZw/PO3Lbvs88nWyJzKr?= =?us-ascii?Q?CpnS96luatyMJTYTHE67EMdrbySmvXv40yX2iIZ7rLTVfNdNxR8Kt6USdZIR?= =?us-ascii?Q?0Eak6xlW9za2Ovf20SyPWqEDLF/z/VGJ7KCtTZORD2qpiLCghPA62dLl8LA6?= =?us-ascii?Q?P5lIbpTZ8bN4482G2Wy0J/mn1PMPKOdh4CW9yrbprFz?= X-Microsoft-Exchange-Diagnostics: 1; SN2PR15MB0989; 6:RU2oFdTi86QWibBp9JgqZMds8Hb1vCT4RBEDYdXcBkHSfmX/mMpl7uQf1jIIgRx4EEhVIrnnEZ45KGcZiwol8N4yS+nId3LnXmTeagfWQ4v29+qmu6yVBucUmVev2tX9170iVepWvuC5MQ0ZZ66RwlRU1fnmBtdWlcR+jkCevdBnzZOj2Fqt/GAh2MS8eZYzXAmdXxQau1NQfCiRxIUpGtRnYSWdqVR9phpZ5Jk9REHndvCImL6aQfuh7dpq05H6KRAujaTx1OfYFncbqnZKIP8nVjlyNd59DWaCIwXf7qg=; 5:0CfJ+rbu1s47nNVsyJQA3eC/zgPw9IO69iIjTOiNDqONzCz2n3tx/SCpKhCnKwZDtmbKNoUtjKnomqQGhsrB4FFtr7xeNrWCKmJSCAviprS589BB2rPUOcPyJ6TkrlDU2eP5XbGEyqvH8THDHTM/1g==; 24:ngU78ABtkKtap1S2TOjvHMX7AtUT+iVsopCxGybGnEs9VH31U+vnXq46CnbjfR16scilqiAZvDtsnnmOxOBu+g7eY6RL2FvB5JACEwcG8Bs=; 7:WnUJNldy+XYA576Gh1DSU5JEgtUhFkscnz/p0l+OE2hNogctlgTW1dZd0C96muFbtlufTMPsqu69PLqVusf9epXyDUhzZP8MeBNwj1eSw9rmB5F6zwSNGKsrAzIDTiIJESTcAzDGSZrgvLBVCrKReZeEnT9vv1b16jlG0jrimGeuqylDrJnfrbdUZBAqcI2NCDbmFTf51vBYxnXQFovoUAdt491vNk4afO6HAyTcovuOY+sHoB8YqREJk8b6PERM SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN2PR15MB0989; 20:9Zz4bfWydnVSQtuOe+c85pZ0ty84Z8MH6y2Nv+HgR4327933ChdHrDKOeiRK4/u87zM8wyQp8qwiB0GVxM0RZ4GC3BcXYacyDvrocE5aF1zDY0fknaM2Gv91ttOkGcX8IUUih5R+sLoZy8IeQlCEj5nI9Kyy5hdsqsT+FHf8FJo= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Aug 2016 15:33:09.4125 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN2PR15MB0989 X-OriginatorOrg: fb.com X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2016-08-10_12:, , signatures=0 X-BeenThere: mercurial-devel@mercurial-scm.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <mercurial-devel.mercurial-scm.org> List-Unsubscribe: <https://www.mercurial-scm.org/mailman/options/mercurial-devel>, <mailto:mercurial-devel-request@mercurial-scm.org?subject=unsubscribe> List-Archive: <http://www.mercurial-scm.org/pipermail/mercurial-devel/> List-Post: <mailto:mercurial-devel@mercurial-scm.org> List-Help: <mailto:mercurial-devel-request@mercurial-scm.org?subject=help> List-Subscribe: <https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel>, <mailto:mercurial-devel-request@mercurial-scm.org?subject=subscribe> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: mercurial-devel-bounces@mercurial-scm.org Sender: "Mercurial-devel" <mercurial-devel-bounces@mercurial-scm.org> |
Comments
Jun Wu - Aug. 10, 2016, 3:33 p.m.
Patch
diff --git a/mercurial/extensions.py b/mercurial/extensions.py --- a/mercurial/extensions.py +++ b/mercurial/extensions.py @@ -309,6 +309,22 @@ def wrapfunction(container, funcname, wr setattr(container, funcname, wrap) return origfn +def getwrapperchain(container, funcname): + '''get a chain of wrappers of a function + + Return a list of functions: [newest wrapper, ..., oldest wrapper, origfunc] + + The wrapper functions are the ones passed to wrapfunction, whose first + argument is origfunc. + ''' + result = [] + fn = getattr(container, funcname) + while fn: + assert callable(fn) + result.append(getattr(fn, '_unboundwrapper', fn)) + fn = getattr(fn, '_origfunc', None) + return result + def _disabledpaths(strip_init=False): '''find paths of disabled extensions. returns a dict of {name: path} removes /__init__.py from packages if strip_init is True'''