author | Arseniy Alekseyev <aalekseyev@janestreet.com> |
Mon, 26 Jun 2023 11:21:43 +0100 | |
branch | stable |
changeset 50720 | bfbd84c57bda |
parent 49888 | 8147abc05794 |
child 51775 | f3b34386d3e0 |
permissions | -rw-r--r-- |
49888
8147abc05794
pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
1 |
# typelib.py - type hint aliases and support |
8147abc05794
pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
2 |
# |
8147abc05794
pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
3 |
# Copyright 2022 Matt Harbison <matt_harbison@yahoo.com> |
8147abc05794
pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
4 |
# |
8147abc05794
pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
5 |
# This software may be used and distributed according to the terms of the |
8147abc05794
pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
6 |
# GNU General Public License version 2 or any later version. |
8147abc05794
pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
7 |
|
8147abc05794
pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
8 |
import typing |
8147abc05794
pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
9 |
|
8147abc05794
pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
10 |
# Note: this is slightly different from pycompat.TYPE_CHECKING, as using |
8147abc05794
pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
11 |
# pycompat causes the BinaryIO_Proxy type to be resolved to ``object`` when |
8147abc05794
pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
12 |
# used as the base class during a pytype run. |
8147abc05794
pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
13 |
TYPE_CHECKING = typing.TYPE_CHECKING |
8147abc05794
pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
14 |
|
8147abc05794
pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
15 |
|
8147abc05794
pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
16 |
# The BinaryIO class provides empty methods, which at runtime means that |
8147abc05794
pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
17 |
# ``__getattr__`` on the proxy classes won't get called for the methods that |
8147abc05794
pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
18 |
# should delegate to the internal object. So to avoid runtime changes because |
8147abc05794
pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
19 |
# of the required typing inheritance, just use BinaryIO when typechecking, and |
8147abc05794
pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
20 |
# ``object`` otherwise. |
8147abc05794
pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
21 |
if TYPE_CHECKING: |
8147abc05794
pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
22 |
from typing import ( |
8147abc05794
pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
23 |
BinaryIO, |
8147abc05794
pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
24 |
) |
8147abc05794
pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
25 |
|
8147abc05794
pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
26 |
BinaryIO_Proxy = BinaryIO |
8147abc05794
pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
27 |
else: |
8147abc05794
pytype: stop excluding mercurial/ui.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
28 |
BinaryIO_Proxy = object |