Mercurial > hg
annotate mercurial/exthelper.py @ 49803:55d45d0de4e7
typing: add type hints to pycompat.bytestr
The problem with leaving pytype to its own devices here was that for functions
that returned a bytestr, pytype inferred `Union[bytes, int]`. It now accepts
that it can be treated as plain bytes.
I wasn't able to figure out the arg type for `__getitem__`- `SupportsIndex`
(which PyCharm indicated is how the superclass function is typed) got flagged:
File "/mnt/c/Users/Matt/hg/mercurial/pycompat.py", line 236, in __getitem__:
unsupported operand type(s) for item retrieval: bytestr and SupportsIndex [unsupported-operands]
Function __getitem__ on bytestr expects int
But some caller got flagged when I marked it as `int`.
There's some minor spillover problems elsewhere- pytype doesn't seem to
recognize that `bytes.startswith()` can optionally take a 3rd and 4th arg, so
those few places have the warning disabled. It also flags where the tar API is
being abused, but that would be a tricky refactor (and would require typing
extensions until py3.7 is dropped), so disable those too.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Wed, 14 Dec 2022 01:51:33 -0500 |
parents | 642e31cb55f0 |
children | d9e22b39041a |
rev | line source |
---|---|
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
1 # Copyright 2012 Logilab SA <contact@logilab.fr> |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
2 # Pierre-Yves David <pierre-yves.david@ens-lyon.org> |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
3 # Octobus <contact@octobus.net> |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
4 # |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
5 # This software may be used and distributed according to the terms of the |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
6 # GNU General Public License version 2 or any later version. |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
7 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
8 ##################################################################### |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
9 ### Extension helper ### |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
10 ##################################################################### |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
11 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
12 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
13 from . import ( |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
14 commands, |
41060
7250cbaabde0
exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents:
41057
diff
changeset
|
15 error, |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
16 extensions, |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
17 registrar, |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
18 ) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
19 |
42316
c07dcf7a0247
exthelper: add some semi-useful trace logs
Augie Fackler <augie@google.com>
parents:
41279
diff
changeset
|
20 from hgdemandimport import tracing |
c07dcf7a0247
exthelper: add some semi-useful trace logs
Augie Fackler <augie@google.com>
parents:
41279
diff
changeset
|
21 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42316
diff
changeset
|
22 |
48946
642e31cb55f0
py3: use class X: instead of class X(object):
Gregory Szorc <gregory.szorc@gmail.com>
parents:
48913
diff
changeset
|
23 class exthelper: |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
24 """Helper for modular extension setup |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
25 |
41071
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
26 A single helper should be instantiated for each module of an |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
27 extension, where a command or function needs to be wrapped, or a |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
28 command, extension hook, fileset, revset or template needs to be |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
29 registered. Helper methods are then used as decorators for |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
30 these various purposes. If an extension spans multiple modules, |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
31 all helper instances should be merged in the main module. |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
32 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
33 All decorators return the original function and may be chained. |
41071
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
34 |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
35 Aside from the helper functions with examples below, several |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
36 registrar method aliases are available for adding commands, |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
37 configitems, filesets, revsets, and templates. Simply decorate |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
38 the appropriate methods, and assign the corresponding exthelper |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
39 variable to a module level variable of the extension. The |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
40 extension loading mechanism will handle the rest. |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
41 |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
42 example:: |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
43 |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
44 # ext.py |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
45 eh = exthelper.exthelper() |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
46 |
46871
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
47 # As needed (failure to do this will mean your registration will not |
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
48 # happen): |
41071
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
49 cmdtable = eh.cmdtable |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
50 configtable = eh.configtable |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
51 filesetpredicate = eh.filesetpredicate |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
52 revsetpredicate = eh.revsetpredicate |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
53 templatekeyword = eh.templatekeyword |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
54 |
46871
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
55 # As needed (failure to do this will mean your eh.wrap*-decorated |
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
56 # functions will not wrap, and/or your eh.*setup-decorated functions |
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
57 # will not execute): |
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
58 uisetup = eh.finaluisetup |
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
59 extsetup = eh.finalextsetup |
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
60 reposetup = eh.finalreposetup |
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
61 uipopulate = eh.finaluipopulate |
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
62 |
45932
bd22900e26ac
exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents:
43238
diff
changeset
|
63 @eh.command(b'mynewcommand', |
bd22900e26ac
exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents:
43238
diff
changeset
|
64 [(b'r', b'rev', [], _(b'operate on these revisions'))], |
bd22900e26ac
exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents:
43238
diff
changeset
|
65 _(b'-r REV...'), |
41071
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
66 helpcategory=command.CATEGORY_XXX) |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
67 def newcommand(ui, repo, *revs, **opts): |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
68 # implementation goes here |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
69 |
45932
bd22900e26ac
exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents:
43238
diff
changeset
|
70 eh.configitem(b'experimental', b'foo', |
41071
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
71 default=False, |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
72 ) |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
73 |
45932
bd22900e26ac
exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents:
43238
diff
changeset
|
74 @eh.filesetpredicate(b'lfs()') |
41071
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
75 def filesetbabar(mctx, x): |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
76 return mctx.predicate(...) |
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
77 |
45932
bd22900e26ac
exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents:
43238
diff
changeset
|
78 @eh.revsetpredicate(b'hidden') |
41071
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
79 def revsetbabar(repo, subset, x): |
45932
bd22900e26ac
exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents:
43238
diff
changeset
|
80 args = revset.getargs(x, 0, 0, b'babar accept no argument') |
bd22900e26ac
exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents:
43238
diff
changeset
|
81 return [r for r in subset if b'babar' in repo[r].description()] |
41071
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
82 |
45932
bd22900e26ac
exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents:
43238
diff
changeset
|
83 @eh.templatekeyword(b'babar') |
41071
c81bb97b0cac
exthelper: add some examples for using registrar aliases
Matt Harbison <matt_harbison@yahoo.com>
parents:
41070
diff
changeset
|
84 def kwbabar(ctx): |
45932
bd22900e26ac
exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents:
43238
diff
changeset
|
85 return b'babar' |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
86 """ |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
87 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
88 def __init__(self): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
89 self._uipopulatecallables = [] |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
90 self._uicallables = [] |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
91 self._extcallables = [] |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
92 self._repocallables = [] |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
93 self._commandwrappers = [] |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
94 self._extcommandwrappers = [] |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
95 self._functionwrappers = [] |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
96 self.cmdtable = {} |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
97 self.command = registrar.command(self.cmdtable) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
98 self.configtable = {} |
41045
c1476d095d57
exthelper: simplify configitem registration
Matt Harbison <matt_harbison@yahoo.com>
parents:
41044
diff
changeset
|
99 self.configitem = registrar.configitem(self.configtable) |
41070
8f40e21ca842
exthelper: reintroduce the ability to register filesets
Matt Harbison <matt_harbison@yahoo.com>
parents:
41069
diff
changeset
|
100 self.filesetpredicate = registrar.filesetpredicate() |
41066
0358cca1dccf
exthelper: reintroduce the ability to register revsets
Matt Harbison <matt_harbison@yahoo.com>
parents:
41060
diff
changeset
|
101 self.revsetpredicate = registrar.revsetpredicate() |
41069
70ca0e846d25
exthelper: reintroduce the ability to register templates
Matt Harbison <matt_harbison@yahoo.com>
parents:
41066
diff
changeset
|
102 self.templatekeyword = registrar.templatekeyword() |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
103 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
104 def merge(self, other): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
105 self._uicallables.extend(other._uicallables) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
106 self._uipopulatecallables.extend(other._uipopulatecallables) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
107 self._extcallables.extend(other._extcallables) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
108 self._repocallables.extend(other._repocallables) |
41082
4d40f6bb4cef
exthelper: switch to using the registrar merging method
Matt Harbison <matt_harbison@yahoo.com>
parents:
41071
diff
changeset
|
109 self.filesetpredicate._merge(other.filesetpredicate) |
4d40f6bb4cef
exthelper: switch to using the registrar merging method
Matt Harbison <matt_harbison@yahoo.com>
parents:
41071
diff
changeset
|
110 self.revsetpredicate._merge(other.revsetpredicate) |
4d40f6bb4cef
exthelper: switch to using the registrar merging method
Matt Harbison <matt_harbison@yahoo.com>
parents:
41071
diff
changeset
|
111 self.templatekeyword._merge(other.templatekeyword) |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
112 self._commandwrappers.extend(other._commandwrappers) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
113 self._extcommandwrappers.extend(other._extcommandwrappers) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
114 self._functionwrappers.extend(other._functionwrappers) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
115 self.cmdtable.update(other.cmdtable) |
48913
f254fc73d956
global: bulk replace simple pycompat.iteritems(x) with x.items()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
48875
diff
changeset
|
116 for section, items in other.configtable.items(): |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
117 if section in self.configtable: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
118 self.configtable[section].update(items) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
119 else: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
120 self.configtable[section] = items |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
121 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
122 def finaluisetup(self, ui): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
123 """Method to be used as the extension uisetup |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
124 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
125 The following operations belong here: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
126 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
127 - Changes to ui.__class__ . The ui object that will be used to run the |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
128 command has not yet been created. Changes made here will affect ui |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
129 objects created after this, and in particular the ui that will be |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
130 passed to runcommand |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
131 - Command wraps (extensions.wrapcommand) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
132 - Changes that need to be visible to other extensions: because |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
133 initialization occurs in phases (all extensions run uisetup, then all |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
134 run extsetup), a change made here will be visible to other extensions |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
135 during extsetup |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
136 - Monkeypatch or wrap function (extensions.wrapfunction) of dispatch |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
137 module members |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
138 - Setup of pre-* and post-* hooks |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
139 - pushkey setup |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
140 """ |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
141 for command, wrapper, opts in self._commandwrappers: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
142 entry = extensions.wrapcommand(commands.table, command, wrapper) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
143 if opts: |
41060
7250cbaabde0
exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents:
41057
diff
changeset
|
144 for opt in opts: |
7250cbaabde0
exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents:
41057
diff
changeset
|
145 entry[1].append(opt) |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
146 for cont, funcname, wrapper in self._functionwrappers: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
147 extensions.wrapfunction(cont, funcname, wrapper) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
148 for c in self._uicallables: |
43238
101ae8bbfa02
cleanup: hgdemandimport.tracing accepts strings, not bytes
Augie Fackler <augie@google.com>
parents:
43106
diff
changeset
|
149 with tracing.log('finaluisetup: %s', repr(c)): |
42316
c07dcf7a0247
exthelper: add some semi-useful trace logs
Augie Fackler <augie@google.com>
parents:
41279
diff
changeset
|
150 c(ui) |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
151 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
152 def finaluipopulate(self, ui): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
153 """Method to be used as the extension uipopulate |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
154 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
155 This is called once per ui instance to: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
156 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
157 - Set up additional ui members |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
158 - Update configuration by ``ui.setconfig()`` |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
159 - Extend the class dynamically |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
160 """ |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
161 for c in self._uipopulatecallables: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
162 c(ui) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
163 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
164 def finalextsetup(self, ui): |
46871
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
165 """Method to be used as the extension extsetup |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
166 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
167 The following operations belong here: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
168 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
169 - Changes depending on the status of other extensions. (if |
45932
bd22900e26ac
exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents:
43238
diff
changeset
|
170 extensions.find(b'mq')) |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
171 - Add a global option to all commands |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
172 """ |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
173 knownexts = {} |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
174 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
175 for ext, command, wrapper, opts in self._extcommandwrappers: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
176 if ext not in knownexts: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
177 try: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
178 e = extensions.find(ext) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
179 except KeyError: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
180 # Extension isn't enabled, so don't bother trying to wrap |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
181 # it. |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
182 continue |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
183 knownexts[ext] = e.cmdtable |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
184 entry = extensions.wrapcommand(knownexts[ext], command, wrapper) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
185 if opts: |
41060
7250cbaabde0
exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents:
41057
diff
changeset
|
186 for opt in opts: |
7250cbaabde0
exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents:
41057
diff
changeset
|
187 entry[1].append(opt) |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
188 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
189 for c in self._extcallables: |
43238
101ae8bbfa02
cleanup: hgdemandimport.tracing accepts strings, not bytes
Augie Fackler <augie@google.com>
parents:
43106
diff
changeset
|
190 with tracing.log('finalextsetup: %s', repr(c)): |
42316
c07dcf7a0247
exthelper: add some semi-useful trace logs
Augie Fackler <augie@google.com>
parents:
41279
diff
changeset
|
191 c(ui) |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
192 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
193 def finalreposetup(self, ui, repo): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
194 """Method to be used as the extension reposetup |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
195 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
196 The following operations belong here: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
197 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
198 - All hooks but pre-* and post-* |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
199 - Modify configuration variables |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
200 - Changes to repo.__class__, repo.dirstate.__class__ |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
201 """ |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
202 for c in self._repocallables: |
43238
101ae8bbfa02
cleanup: hgdemandimport.tracing accepts strings, not bytes
Augie Fackler <augie@google.com>
parents:
43106
diff
changeset
|
203 with tracing.log('finalreposetup: %s', repr(c)): |
42316
c07dcf7a0247
exthelper: add some semi-useful trace logs
Augie Fackler <augie@google.com>
parents:
41279
diff
changeset
|
204 c(ui, repo) |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
205 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
206 def uisetup(self, call): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
207 """Decorated function will be executed during uisetup |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
208 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
209 example:: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
210 |
46871
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
211 # Required, otherwise your uisetup function(s) will not execute. |
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
212 uisetup = eh.finaluisetup |
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
213 |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
214 @eh.uisetup |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
215 def setupbabar(ui): |
45932
bd22900e26ac
exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents:
43238
diff
changeset
|
216 print('this is uisetup!') |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
217 """ |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
218 self._uicallables.append(call) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
219 return call |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
220 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
221 def uipopulate(self, call): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
222 """Decorated function will be executed during uipopulate |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
223 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
224 example:: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
225 |
46871
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
226 # Required, otherwise your uipopulate function(s) will not execute. |
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
227 uipopulate = eh.finaluipopulate |
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
228 |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
229 @eh.uipopulate |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
230 def setupfoo(ui): |
45932
bd22900e26ac
exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents:
43238
diff
changeset
|
231 print('this is uipopulate!') |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
232 """ |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
233 self._uipopulatecallables.append(call) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
234 return call |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
235 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
236 def extsetup(self, call): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
237 """Decorated function will be executed during extsetup |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
238 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
239 example:: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
240 |
46871
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
241 # Required, otherwise your extsetup function(s) will not execute. |
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
242 extsetup = eh.finalextsetup |
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
243 |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
244 @eh.extsetup |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
245 def setupcelestine(ui): |
45932
bd22900e26ac
exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents:
43238
diff
changeset
|
246 print('this is extsetup!') |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
247 """ |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
248 self._extcallables.append(call) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
249 return call |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
250 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
251 def reposetup(self, call): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
252 """Decorated function will be executed during reposetup |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
253 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
254 example:: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
255 |
46871
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
256 # Required, otherwise your reposetup function(s) will not execute. |
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
257 reposetup = eh.finalreposetup |
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
258 |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
259 @eh.reposetup |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
260 def setupzephir(ui, repo): |
45932
bd22900e26ac
exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents:
43238
diff
changeset
|
261 print('this is reposetup!') |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
262 """ |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
263 self._repocallables.append(call) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
264 return call |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
265 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
266 def wrapcommand(self, command, extension=None, opts=None): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
267 """Decorated function is a command wrapper |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
268 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
269 The name of the command must be given as the decorator argument. |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
270 The wrapping is installed during `uisetup`. |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
271 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
272 If the second option `extension` argument is provided, the wrapping |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
273 will be applied in the extension commandtable. This argument must be a |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
274 string that will be searched using `extension.find` if not found and |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
275 Abort error is raised. If the wrapping applies to an extension, it is |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
276 installed during `extsetup`. |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
277 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
278 example:: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
279 |
46871
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
280 # Required if `extension` is not provided |
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
281 uisetup = eh.finaluisetup |
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
282 # Required if `extension` is provided |
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
283 extsetup = eh.finalextsetup |
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
284 |
45932
bd22900e26ac
exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents:
43238
diff
changeset
|
285 @eh.wrapcommand(b'summary') |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
286 def wrapsummary(orig, ui, repo, *args, **kwargs): |
45932
bd22900e26ac
exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents:
43238
diff
changeset
|
287 ui.note(b'Barry!') |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
288 return orig(ui, repo, *args, **kwargs) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
289 |
41060
7250cbaabde0
exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents:
41057
diff
changeset
|
290 The `opts` argument allows specifying a list of tuples for additional |
7250cbaabde0
exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents:
41057
diff
changeset
|
291 arguments for the command. See ``mercurial.fancyopts.fancyopts()`` for |
7250cbaabde0
exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents:
41057
diff
changeset
|
292 the format of the tuple. |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
293 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
294 """ |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
295 if opts is None: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
296 opts = [] |
41060
7250cbaabde0
exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents:
41057
diff
changeset
|
297 else: |
7250cbaabde0
exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents:
41057
diff
changeset
|
298 for opt in opts: |
7250cbaabde0
exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents:
41057
diff
changeset
|
299 if not isinstance(opt, tuple): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
300 raise error.ProgrammingError(b'opts must be list of tuples') |
41060
7250cbaabde0
exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents:
41057
diff
changeset
|
301 if len(opt) not in (4, 5): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
302 msg = b'each opt tuple must contain 4 or 5 values' |
41060
7250cbaabde0
exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents:
41057
diff
changeset
|
303 raise error.ProgrammingError(msg) |
7250cbaabde0
exthelper: support the option argument when registering a command
Matt Harbison <matt_harbison@yahoo.com>
parents:
41057
diff
changeset
|
304 |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
305 def dec(wrapper): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
306 if extension is None: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
307 self._commandwrappers.append((command, wrapper, opts)) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
308 else: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42316
diff
changeset
|
309 self._extcommandwrappers.append( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42316
diff
changeset
|
310 (extension, command, wrapper, opts) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42316
diff
changeset
|
311 ) |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
312 return wrapper |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42316
diff
changeset
|
313 |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
314 return dec |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
315 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
316 def wrapfunction(self, container, funcname): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
317 """Decorated function is a function wrapper |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
318 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
319 This function takes two arguments, the container and the name of the |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
320 function to wrap. The wrapping is performed during `uisetup`. |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
321 (there is no extension support) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
322 |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
323 example:: |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
324 |
46871
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
325 # Required, otherwise the function will not be wrapped |
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
326 uisetup = eh.finaluisetup |
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
327 |
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
328 @eh.wrapfunction(discovery, b'checkheads') |
887f89b100ac
exthelper: improve docs to indicate what module vars are needed
Kyle Lippincott <spectral@google.com>
parents:
45932
diff
changeset
|
329 def wrapcheckheads(orig, *args, **kwargs): |
45932
bd22900e26ac
exthelper: update the examples to be python3 complaint
Matt Harbison <matt_harbison@yahoo.com>
parents:
43238
diff
changeset
|
330 ui.note(b'His head smashed in and his heart cut out') |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
331 return orig(*args, **kwargs) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
332 """ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42316
diff
changeset
|
333 |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
334 def dec(wrapper): |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
335 self._functionwrappers.append((container, funcname, wrapper)) |
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
336 return wrapper |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42316
diff
changeset
|
337 |
41044
fe606f2dcae9
extensions: import the exthelper class from evolve 980565468003 (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
338 return dec |