]> git.openstreetmap.org Git - nominatim.git/blob - src/nominatim_db/typing.py
Merge pull request #3582 from lonvia/switch-to-flake
[nominatim.git] / src / nominatim_db / typing.py
1 # SPDX-License-Identifier: GPL-3.0-or-later
2 #
3 # This file is part of Nominatim. (https://nominatim.org)
4 #
5 # Copyright (C) 2024 by the Nominatim developer community.
6 # For a full list of authors see the git log.
7 """
8 Type definitions for typing annotations.
9
10 Complex type definitions are moved here, to keep the source files readable.
11 """
12 from typing import Any, Union, Mapping, TypeVar, Sequence, TYPE_CHECKING
13
14
15 if TYPE_CHECKING:
16     import os
17
18 StrPath = Union[str, 'os.PathLike[str]']
19
20 SysEnv = Mapping[str, str]
21
22 # psycopg-related types
23
24 T_ResultKey = TypeVar('T_ResultKey', int, str)
25
26
27 class DictCursorResult(Mapping[str, Any]):
28     def __getitem__(self, x: Union[int, str]) -> Any: ...
29
30
31 DictCursorResults = Sequence[DictCursorResult]
32
33 # The following typing features require typing_extensions to work
34 # on all supported Python versions.
35 # Only require this for type checking but not for normal operations.
36
37 if TYPE_CHECKING:
38     from typing_extensions import (Protocol as Protocol,
39                                    Final as Final,
40                                    TypedDict as TypedDict)
41 else:
42     Protocol = object
43     Final = 'Final'
44     TypedDict = dict