D9367: helptext: byteify extensions examples

mharbison72 (Matt Harbison) phabricator at mercurial-scm.org
Sun Nov 22 20:08:38 UTC 2020


mharbison72 created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  Make it easier on the copy/paste crowd.  I haven't looked at the other help text
  to see if there are other instances; I was just looking to confirm `buglink` is
  meant to be bytes and this popped up along with the code.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D9367

AFFECTED FILES
  mercurial/helptext/internals/extensions.txt

CHANGE DETAILS

diff --git a/mercurial/helptext/internals/extensions.txt b/mercurial/helptext/internals/extensions.txt
--- a/mercurial/helptext/internals/extensions.txt
+++ b/mercurial/helptext/internals/extensions.txt
@@ -24,7 +24,8 @@
 
 To write your own extension, your python module can provide an optional dict
 named ``cmdtable`` with entries describing each command. A command should be
-registered to the ``cmdtable`` by ``@command`` decorator.
+registered to the ``cmdtable`` by ``@command`` decorator. All string-like
+values must be the ``bytes`` type, and are thus prefixed with ``b``.
 
 Example using ``@command`` decorator (requires Mercurial 1.9)::
 
@@ -39,10 +40,10 @@
         from mercurial import cmdutil
         command = cmdutil.command(cmdtable)
 
-    @command('print-parents',
-        [('s', 'short', None, _('print short form')),
-         ('l', 'long', None, _('print long form'))],
-        _('[options] node'))
+    @command(b'print-parents',
+        [(b's', b'short', None, _(b'print short form')),
+         (b'l', b'long', None, _(b'print long form'))],
+        _(b'[options] node'))
     def printparents(ui, repo, node, **opts):
         ...
 
@@ -84,7 +85,7 @@
 ``repo`` passed, then ``norepo=True`` should be passed to the ``@command``
 decorator::
 
-    @command('mycommand', [], norepo=True)
+    @command(b'mycommand', [], norepo=True)
     def mycommand(ui, **opts):
         ...
 
@@ -140,7 +141,7 @@
 ===========================
 
 Besides the ``ui`` methods, like ``ui.write(*msg)`` or
-``ui.prompt(msg, default="y")``, an extension can add help text for each
+``ui.prompt(msg, default=b"y")``, an extension can add help text for each
 of its commands and the extension itself.
 
 The module docstring will be used as help string when ``hg help extensionname``
@@ -248,7 +249,7 @@
         class echologui(ui.__class__):
             def log(self, service, *msg, **opts):
                 if msg:
-                    self.write('%s: %s\n' % (service, msg[0] % msg[1:]))
+                    self.write(b'%s: %s\n' % (service, msg[0] % msg[1:]))
                 super(echologui, self).log(service, *msg, **opts)
 
         ui.__class__ = echologui
@@ -259,7 +260,7 @@
 Some extensions must use hooks to do their work. These required hooks can
 be configured manually by the user by modifying the ``[hook]`` section of
 their hgrc, but they can also be configured automatically by calling the
-``ui.setconfig('hooks', ...)`` function in one of the setup functions
+``ui.setconfig(b'hooks', ...)`` function in one of the setup functions
 described above.
 
 The main difference between manually modifying the hooks section in the hgrc
@@ -273,21 +274,21 @@
 
     # Define hooks -- note that the actual function name it irrelevant.
     def preupdatehook(ui, repo, **kwargs):
-        ui.write("Pre-update hook triggered\n")
+        ui.write(b"Pre-update hook triggered\n")
 
     def updatehook(ui, repo, **kwargs):
-        ui.write("Update hook triggered\n")
+        ui.write(b"Update hook triggered\n")
 
     def uisetup(ui):
         # When pre-<cmd> and post-<cmd> hooks are configured by means of
         # the ui.setconfig() function, you must use the ui object passed
         # to uisetup or extsetup.
-        ui.setconfig("hooks", "pre-update.myextension", preupdatehook)
+        ui.setconfig(b"hooks", b"pre-update.myextension", preupdatehook)
 
     def reposetup(ui, repo):
         # Repository-specific hooks can be configured here. These include
         # the update hook.
-        ui.setconfig("hooks", "update.myextension", updatehook)
+        ui.setconfig(b"hooks", b"update.myextension", updatehook)
 
 Note how different hooks may need to be configured in different setup
 functions. In the example you can see that the ``update`` hook must be
@@ -301,7 +302,7 @@
 releases it's known to be compatible with. This helps us and users diagnose
 where problems are coming from::
 
-    testedwith = '2.0 2.0.1 2.1 2.1.1 2.1.2'
+    testedwith = b'2.0 2.0.1 2.1 2.1.1 2.1.2'
 
 Do not use the ``internal`` marker in third-party extensions; we will
 immediately drop all bug reports mentioning your extension if we catch you
@@ -311,12 +312,12 @@
 should report issues with the extension.  This link will be included in the
 error message if the extension produces errors::
 
-    buglink = 'https://bitbucket.org/USER/REPO/issues'
+    buglink = b'https://bitbucket.org/USER/REPO/issues'
 
 If an extension requires a minimum version of Mercurial, it can be declared
 with the ``minimumhgversion`` variable::
 
-    minimumhgversion = '4.6'
+    minimumhgversion = b'4.6'
 
 Older clients will print a warning that the extension requires a new version,
 instead of attempting to load it.
@@ -347,7 +348,7 @@
 extsetup
 --------
 
-* Changes depending on the status of other extensions. (``if extensions.find('mq')``)
+* Changes depending on the status of other extensions. (``if extensions.find(b'mq')``)
 * Add a global option to all commands
 * Extend revsets
 



To: mharbison72, #hg-reviewers
Cc: mercurial-patches, mercurial-devel


More information about the Mercurial-devel mailing list