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