Mercurial > public > mercurial-scm > hg
comparison mercurial/encoding.py @ 51282:9d3721552b6c
pytype: import typing directly
First we no longer needs the pycompat layer, second having the types imported in
all case will allow to use them more directly in type annotation, something
important to upgrade the old "type comment" to proper type annotation.
A lot a stupid assert are needed to keep pyflakes happy. We should be able to
remove most of them once the type comment have been upgraded.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Wed, 20 Dec 2023 12:51:20 +0100 |
parents | 80c243eab724 |
children | f15cb5111a1e |
comparison
equal
deleted
inserted
replaced
51281:58d39c7865e5 | 51282:9d3721552b6c |
---|---|
7 | 7 |
8 | 8 |
9 import locale | 9 import locale |
10 import os | 10 import os |
11 import re | 11 import re |
12 import typing | |
12 import unicodedata | 13 import unicodedata |
14 | |
15 from typing import ( | |
16 Any, | |
17 Callable, | |
18 List, | |
19 Text, | |
20 Type, | |
21 TypeVar, | |
22 Union, | |
23 ) | |
13 | 24 |
14 from . import ( | 25 from . import ( |
15 error, | 26 error, |
16 policy, | 27 policy, |
17 pycompat, | 28 pycompat, |
18 ) | 29 ) |
19 | 30 |
20 from .pure import charencode as charencodepure | 31 from .pure import charencode as charencodepure |
21 | 32 |
22 if pycompat.TYPE_CHECKING: | 33 # keep pyflakes happy |
23 from typing import ( | 34 for t in (Any, Callable, List, Text, Type, Union): |
24 Any, | 35 assert t |
25 Callable, | 36 |
26 List, | 37 _Tlocalstr = TypeVar('_Tlocalstr', bound='localstr') |
27 Text, | |
28 Type, | |
29 TypeVar, | |
30 Union, | |
31 ) | |
32 | |
33 # keep pyflakes happy | |
34 for t in (Any, Callable, List, Text, Type, Union): | |
35 assert t | |
36 | |
37 _Tlocalstr = TypeVar('_Tlocalstr', bound='localstr') | |
38 | 38 |
39 charencode = policy.importmod('charencode') | 39 charencode = policy.importmod('charencode') |
40 | 40 |
41 isasciistr = charencode.isasciistr | 41 isasciistr = charencode.isasciistr |
42 asciilower = charencode.asciilower | 42 asciilower = charencode.asciilower |
129 def __new__(cls, u, l): | 129 def __new__(cls, u, l): |
130 s = bytes.__new__(cls, l) | 130 s = bytes.__new__(cls, l) |
131 s._utf8 = u | 131 s._utf8 = u |
132 return s | 132 return s |
133 | 133 |
134 if pycompat.TYPE_CHECKING: | 134 if typing.TYPE_CHECKING: |
135 # pseudo implementation to help pytype see localstr() constructor | 135 # pseudo implementation to help pytype see localstr() constructor |
136 def __init__(self, u, l): | 136 def __init__(self, u, l): |
137 # type: (bytes, bytes) -> None | 137 # type: (bytes, bytes) -> None |
138 super(localstr, self).__init__(l) | 138 super(localstr, self).__init__(l) |
139 self._utf8 = u | 139 self._utf8 = u |