Skip to content

Commit ec51773

Browse files
authored
Improve sql.lambdas (#35)
1 parent eeed7af commit ec51773

File tree

1 file changed

+63
-45
lines changed

1 file changed

+63
-45
lines changed

sqlalchemy-stubs/sql/lambdas.pyi

Lines changed: 63 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,13 @@
11
from typing import Any
2+
from typing import Callable
3+
from typing import Iterator
24
from typing import Optional
5+
from typing import Type
36

4-
from . import coercions as coercions
5-
from . import elements as elements
6-
from . import roles as roles
7-
from . import schema as schema
8-
from . import traversals as traversals
9-
from . import type_api as type_api
10-
from . import visitors as visitors
11-
from .base import Options as Options
12-
from .operators import ColumnOperators as ColumnOperators
13-
from .. import exc as exc
14-
from .. import inspection as inspection
15-
from .. import util as util
16-
from ..util import collections_abc as collections_abc
7+
from . import elements
8+
from . import roles
9+
from .base import Options
10+
from .operators import ColumnOperators
1711

1812
class LambdaOptions(Options):
1913
enable_tracking: bool = ...
@@ -31,99 +25,123 @@ def lambda_stmt(
3125
global_track_bound_values: bool = ...,
3226
track_bound_values: bool = ...,
3327
lambda_cache: Optional[Any] = ...,
34-
): ...
28+
) -> StatementLambdaElement: ...
3529

3630
class LambdaElement(elements.ClauseElement):
3731
__visit_name__: str = ...
3832
parent_lambda: Any = ...
39-
fn: Any = ...
40-
role: Any = ...
33+
fn: Callable[..., elements.ClauseElement] = ...
34+
role: Type[Any] = ...
4135
tracker_key: Any = ...
4236
opts: Any = ...
4337
def __init__(
4438
self,
45-
fn: Any,
46-
role: Any,
39+
fn: Callable[..., elements.ClauseElement],
40+
role: Type[Any],
4741
opts: Any = ...,
4842
apply_propagate_attrs: Optional[Any] = ...,
4943
) -> None: ...
50-
def __getattr__(self, key: Any): ...
44+
def __getattr__(self, key: Any) -> Any: ...
5145

5246
class DeferredLambdaElement(LambdaElement):
5347
lambda_args: Any = ...
5448
def __init__(
55-
self, fn: Any, role: Any, opts: Any = ..., lambda_args: Any = ...
49+
self,
50+
fn: Callable[..., elements.ClauseElement],
51+
role: Type[Any],
52+
opts: Any = ...,
53+
lambda_args: Any = ...,
5654
) -> None: ...
5755

5856
class StatementLambdaElement(roles.AllowsLambdaRole, LambdaElement):
59-
def __add__(self, other: Any): ...
57+
def __add__(self, other: Any) -> LinkedLambdaElement: ...
6058
def add_criteria(
6159
self,
6260
other: Any,
6361
enable_tracking: bool = ...,
6462
track_on: Optional[Any] = ...,
6563
track_closure_variables: bool = ...,
6664
track_bound_values: bool = ...,
67-
): ...
68-
def spoil(self): ...
65+
) -> LinkedLambdaElement: ...
66+
def spoil(self) -> NullLambdaStatement: ...
6967

7068
class NullLambdaStatement(roles.AllowsLambdaRole, elements.ClauseElement):
7169
__visit_name__: str = ...
7270
def __init__(self, statement: Any) -> None: ...
73-
def __getattr__(self, key: Any): ...
74-
def __add__(self, other: Any): ...
75-
def add_criteria(self, other: Any, **kw: Any): ...
71+
def __getattr__(self, key: Any) -> Any: ...
72+
def __add__(self, other: Any) -> NullLambdaStatement: ...
73+
def add_criteria(self, other: Any, **kw: Any) -> NullLambdaStatement: ...
7674

7775
class LinkedLambdaElement(StatementLambdaElement):
7876
role: Any = ...
7977
opts: Any = ...
8078
fn: Any = ...
8179
parent_lambda: Any = ...
8280
tracker_key: Any = ...
83-
def __init__(self, fn: Any, parent_lambda: Any, opts: Any) -> None: ...
81+
def __init__(
82+
self,
83+
fn: Callable[..., elements.ClauseElement],
84+
parent_lambda: StatementLambdaElement,
85+
opts: Any,
86+
) -> None: ...
8487

8588
class AnalyzedCode:
8689
@classmethod
87-
def get(cls, fn: Any, lambda_element: Any, lambda_kw: Any, **kw: Any): ...
90+
def get(
91+
cls,
92+
fn: Callable[..., elements.ClauseElement],
93+
lambda_element: LambdaElement,
94+
lambda_kw: Any,
95+
**kw: Any,
96+
) -> Any: ...
8897
track_bound_values: Any = ...
8998
track_closure_variables: Any = ...
9099
bindparam_trackers: Any = ...
91100
closure_trackers: Any = ...
92101
build_py_wrappers: Any = ...
93-
def __init__(self, fn: Any, lambda_element: Any, opts: Any) -> None: ...
102+
def __init__(
103+
self,
104+
fn: Callable[..., elements.ClauseElement],
105+
lambda_element: LambdaElement,
106+
opts: Any,
107+
) -> None: ...
94108

95109
class AnalyzedFunction:
96110
analyzed_code: Any = ...
97-
fn: Any = ...
111+
fn: Callable[..., elements.ClauseElement] = ...
98112
bindparam_trackers: Any = ...
99113
def __init__(
100114
self,
101115
analyzed_code: Any,
102-
lambda_element: Any,
116+
lambda_element: LambdaElement,
103117
apply_propagate_attrs: Any,
104-
fn: Any,
118+
fn: Callable[..., elements.ClauseElement],
105119
) -> None: ...
106120

107121
class PyWrapper(ColumnOperators):
108-
fn: Any = ...
122+
fn: Callable[..., elements.ClauseElement] = ...
109123
track_bound_values: Any = ...
110124
def __init__(
111125
self,
112-
fn: Any,
113-
name: Any,
126+
fn: Callable[..., elements.ClauseElement],
127+
name: str,
114128
to_evaluate: Any,
115129
closure_index: Optional[Any] = ...,
116130
getter: Optional[Any] = ...,
117131
track_bound_values: bool = ...,
118132
) -> None: ...
119-
def __call__(self, *arg: Any, **kw: Any): ...
120-
def operate(self, op: Any, *other: Any, **kwargs: Any): ...
121-
def reverse_operate(self, op: Any, other: Any, **kwargs: Any): ...
122-
def __clause_element__(self): ...
123-
def __bool__(self): ...
124-
def __nonzero__(self): ...
125-
def __getattribute__(self, key: Any): ...
126-
def __iter__(self) -> Any: ...
127-
def __getitem__(self, key: Any): ...
133+
def __call__(self, *arg: Any, **kw: Any) -> Any: ...
134+
def operate(
135+
self, op: Any, *other: Any, **kwargs: Any
136+
) -> elements.ClauseElement: ...
137+
def reverse_operate(
138+
self, op: Any, other: Any, **kwargs: Any
139+
) -> elements.ClauseElement: ...
140+
def __clause_element__(self) -> elements.ClauseElement: ...
141+
def __bool__(self) -> bool: ...
142+
def __nonzero__(self) -> bool: ...
143+
def __getattribute__(self, key: Any) -> Any: ...
144+
def __iter__(self) -> Iterator[Any]: ...
145+
def __getitem__(self, key: Any) -> Any: ...
128146

129-
def insp(lmb: Any): ...
147+
def insp(lmb: Any) -> Any: ...

0 commit comments

Comments
 (0)