contrib/tcsh_completion
author Matt Harbison <matt_harbison@yahoo.com>
Thu, 24 Oct 2024 22:47:31 -0400
changeset 52127 fd200f5bcaea
parent 13515 2616325766e3
permissions -rw-r--r--
wireprototypes: make `baseprotocolhandler` methods abstract The documentation says it's an abstract base class, so let's enforce it. The `typing.Protocol` class is already an ABC, but it only prevents instantiation if there are abstract attrs that are missing. For example, from `hg debugshell`: >>> from mercurial import wireprototypes >>> x = wireprototypes.baseprotocolhandler() Traceback (most recent call last): File "<console>", line 1, in <module> TypeError: Can't instantiate abstract class baseprotocolhandler with abstract method name >>> class fake(wireprototypes.baseprotocolhandler): ... pass ... >>> x = fake() Traceback (most recent call last): File "<console>", line 1, in <module> TypeError: Can't instantiate abstract class fake with abstract method name That's great, but it doesn't protect against calling non-abstract methods at runtime, rather it depends on the protocol type hint being added to method signatures or class attrs, and then running a type checker to notice when an instance is assigned that doesn't conform to the protocol. We don't widely use type hints yet, and do have a lot of class hierarchy in the repository area, which could lead to surprises like this: >>> class fake(wireprototypes.baseprotocolhandler): ... @property ... def name(self) -> bytes: ... return b'name' ... >>> z = fake() >>> z.client() >>> print(z.client()) None Oops. That was supposed to return `bytes`. So not only is a bad/unexpected value returned, but it's one that violates the type hints (since the base client() method will be annotated to return bytes). With this change, we get: >>> from mercurial import wireprototypes >>> class fake(wireprototypes.baseprotocolhandler): ... @property ... def name(self) -> bytes: ... return b'name' ... >>> x = fake() Traceback (most recent call last): File "<console>", line 1, in <module> TypeError: Can't instantiate abstract class fake with abstract methods addcapabilities, checkperm, client, getargs, getpayload, getprotocaps, mayberedirectstdio So this looks like a reasonable safety harness to me, and lets us catch problems by running the standard tests while the type hints are being added, and pytype is improved. We should probably do this for all Protocol class methods that don't supply a method implementation.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1156
1d5996d39c9d Add tcsh_completion to contrib
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
     1
#
1d5996d39c9d Add tcsh_completion to contrib
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
     2
# tcsh completion for Mercurial
1d5996d39c9d Add tcsh_completion to contrib
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
     3
#
1d5996d39c9d Add tcsh_completion to contrib
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
     4
# This file has been auto-generated by tcsh_completion_build.sh for
13515
2616325766e3 contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents: 11445
diff changeset
     5
# Mercurial Distributed SCM (version 1.7.5+157-8a220ae0b2ba)
1156
1d5996d39c9d Add tcsh_completion to contrib
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
     6
#
1d5996d39c9d Add tcsh_completion to contrib
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
     7
# Copyright (C) 2005 TK Soh.
1d5996d39c9d Add tcsh_completion to contrib
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
     8
#
1d5996d39c9d Add tcsh_completion to contrib
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
     9
# This is free software; you can redistribute it and/or modify it under
1d5996d39c9d Add tcsh_completion to contrib
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    10
# the terms of the GNU General Public License as published by the Free
1d5996d39c9d Add tcsh_completion to contrib
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    11
# Software Foundation; either version 2 of the License, or (at your
1308
2073e5a71008 Cleanup of tabs and trailing spaces.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1264
diff changeset
    12
# option) any later version.
1156
1d5996d39c9d Add tcsh_completion to contrib
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    13
#
1d5996d39c9d Add tcsh_completion to contrib
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    14
1d5996d39c9d Add tcsh_completion to contrib
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    15
complete hg \
1d5996d39c9d Add tcsh_completion to contrib
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    16
  'n/--cwd/d/' 'n/-R/d/' 'n/--repository/d/' \
1158
4650ec7ef690 Regenerate tcsh_completion after bugfix in generator script
TK Soh <tksoh@freescale.com>
parents: 1156
diff changeset
    17
  'C/-/( -R --repository \
4650ec7ef690 Regenerate tcsh_completion after bugfix in generator script
TK Soh <tksoh@freescale.com>
parents: 1156
diff changeset
    18
    --cwd \
4650ec7ef690 Regenerate tcsh_completion after bugfix in generator script
TK Soh <tksoh@freescale.com>
parents: 1156
diff changeset
    19
    -y --noninteractive \
4650ec7ef690 Regenerate tcsh_completion after bugfix in generator script
TK Soh <tksoh@freescale.com>
parents: 1156
diff changeset
    20
    -q --quiet \
4650ec7ef690 Regenerate tcsh_completion after bugfix in generator script
TK Soh <tksoh@freescale.com>
parents: 1156
diff changeset
    21
    -v --verbose \
7766
2b2548342265 Update tcsh completion scripts with new commands and for new help output.
Gilles Moris <gilles.moris@free.fr>
parents: 1308
diff changeset
    22
    --config \
1158
4650ec7ef690 Regenerate tcsh_completion after bugfix in generator script
TK Soh <tksoh@freescale.com>
parents: 1156
diff changeset
    23
    --debug \
1264
be4a14bfaa9c Generated new tcsh_completion with tcsh_completion_build.sh
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1158
diff changeset
    24
    --debugger \
7766
2b2548342265 Update tcsh completion scripts with new commands and for new help output.
Gilles Moris <gilles.moris@free.fr>
parents: 1308
diff changeset
    25
    --encoding \
2b2548342265 Update tcsh completion scripts with new commands and for new help output.
Gilles Moris <gilles.moris@free.fr>
parents: 1308
diff changeset
    26
    --encodingmode \
1158
4650ec7ef690 Regenerate tcsh_completion after bugfix in generator script
TK Soh <tksoh@freescale.com>
parents: 1156
diff changeset
    27
    --traceback \
4650ec7ef690 Regenerate tcsh_completion after bugfix in generator script
TK Soh <tksoh@freescale.com>
parents: 1156
diff changeset
    28
    --time \
4650ec7ef690 Regenerate tcsh_completion after bugfix in generator script
TK Soh <tksoh@freescale.com>
parents: 1156
diff changeset
    29
    --profile \
4650ec7ef690 Regenerate tcsh_completion after bugfix in generator script
TK Soh <tksoh@freescale.com>
parents: 1156
diff changeset
    30
    --version \
4650ec7ef690 Regenerate tcsh_completion after bugfix in generator script
TK Soh <tksoh@freescale.com>
parents: 1156
diff changeset
    31
    -h --help)/' \
7766
2b2548342265 Update tcsh completion scripts with new commands and for new help output.
Gilles Moris <gilles.moris@free.fr>
parents: 1308
diff changeset
    32
  'p/1/(add addremove annotate blame archive \
13515
2616325766e3 contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents: 11445
diff changeset
    33
    backout bisect bookmarks branch branches \
2616325766e3 contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents: 11445
diff changeset
    34
    bundle cat clone commit ci \
2616325766e3 contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents: 11445
diff changeset
    35
    copy cp debugancestor debugbuilddag debugcheckstate \
2616325766e3 contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents: 11445
diff changeset
    36
    debugcommands debugcomplete debugdag debugdata debugdate \
2616325766e3 contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents: 11445
diff changeset
    37
    debugfsinfo debugignore debugindex debugindexdot debuginstall \
2616325766e3 contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents: 11445
diff changeset
    38
    debugpushkey debugrebuildstate debugrename debugrevspec debugsetparents \
2616325766e3 contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents: 11445
diff changeset
    39
    debugstate debugsub debugwalk diff export \
2616325766e3 contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents: 11445
diff changeset
    40
    forget grep heads help identify \
2616325766e3 contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents: 11445
diff changeset
    41
    id import patch incoming in \
2616325766e3 contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents: 11445
diff changeset
    42
    init locate log history manifest \
2616325766e3 contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents: 11445
diff changeset
    43
    merge outgoing out parents paths \
2616325766e3 contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents: 11445
diff changeset
    44
    pull push recover remove rm \
2616325766e3 contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents: 11445
diff changeset
    45
    rename move mv resolve revert \
2616325766e3 contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents: 11445
diff changeset
    46
    rollback root serve showconfig debugconfig \
2616325766e3 contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents: 11445
diff changeset
    47
    status st summary sum tag \
2616325766e3 contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents: 11445
diff changeset
    48
    tags tip unbundle update up \
2616325766e3 contrib: update tcsh_completion for Mercurial 1.8
Gilles Moris <gilles.moris@free.fr>
parents: 11445
diff changeset
    49
    checkout co verify version)/'
1156
1d5996d39c9d Add tcsh_completion to contrib
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    50