X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/1bee151fe3ccfd21df1d809392d6eb52ce7925cb..6a748204fffd43722788aacdd341ba8961a5a4fb:/nominatim/typing.py?ds=sidebyside diff --git a/nominatim/typing.py b/nominatim/typing.py index 7914d731..62ecd8c3 100644 --- a/nominatim/typing.py +++ b/nominatim/typing.py @@ -2,7 +2,7 @@ # # This file is part of Nominatim. (https://nominatim.org) # -# Copyright (C) 2022 by the Nominatim developer community. +# Copyright (C) 2023 by the Nominatim developer community. # For a full list of authors see the git log. """ Type definitions for typing annotations. @@ -50,3 +50,26 @@ else: Protocol = object Final = 'Final' TypedDict = dict + + +# SQLAlchemy introduced generic types in version 2.0 making typing +# incompatible with older versions. Add wrappers here so we don't have +# to litter the code with bare-string types. + +if TYPE_CHECKING: + import sqlalchemy as sa + from typing_extensions import (TypeAlias as TypeAlias) +else: + TypeAlias = str + +SaLambdaSelect: TypeAlias = 'Union[sa.Select[Any], sa.StatementLambdaElement]' +SaSelect: TypeAlias = 'sa.Select[Any]' +SaScalarSelect: TypeAlias = 'sa.ScalarSelect[Any]' +SaRow: TypeAlias = 'sa.Row[Any]' +SaColumn: TypeAlias = 'sa.ColumnElement[Any]' +SaExpression: TypeAlias = 'sa.ColumnElement[bool]' +SaLabel: TypeAlias = 'sa.Label[Any]' +SaFromClause: TypeAlias = 'sa.FromClause' +SaSelectable: TypeAlias = 'sa.Selectable' +SaBind: TypeAlias = 'sa.BindParameter[Any]' +SaDialect: TypeAlias = 'sa.Dialect'