Improve sqlite Aggregration Protocols
#15188
Draft
+172
−22
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR resolves #12141 and improves the typing for
create_aggregateby:n_arg=1case that the protocol only accepts a single argument forstepandinverse, and a separate protocol accepting N arguments when given a positive integer value or -1. Properties withCallable[..., object]are used in order to allow the implementer to accept any number of named positional or key-word arguments._SingleParamWindowAggregateClassand_AnyParamWindowAggregateClass).This is primarily a re-open of #12192 addressing the issues called out in https://github.com/python/typeshed/pull/12192/changes#r1651411242. Looking back on this PR, the return-types were too strict as well, there's not necessarily a strict requirement that the return types match the input types so we avoid using generics for returns as well now.