lru_cache preserves signature of wrapped function#6221
lru_cache preserves signature of wrapped function#6221srittau merged 4 commits intopython:masterfrom
Conversation
|
So it seems |
|
You can |
5d5cce1 to
850b2b7
Compare
850b2b7 to
130c84b
Compare
This comment has been minimized.
This comment has been minimized.
srittau
left a comment
There was a problem hiding this comment.
Thanks!
For future reference: Please don't force push, we squash on merge, but force pushing makes reviewing harder.
|
I'm not sure why pytype complains. Maybe @rchen152 has some insight. |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
The new primer warnings are probably due to the missing |
|
@Tomaz-Vieira You could try merging master, where we just updated the pytype version used. Maybe that will help. |
|
Oh, I think pytype only recognizes paramspecs in Callables right now. So the |
This comment has been minimized.
This comment has been minimized.
This is to unblock python/typeshed#6221. Also see #786. PiperOrigin-RevId: 407168815
|
I just released a pytype version (2021.11.2) that should fix the pytype_test failure. |
|
@Tomaz-Vieira could you update the pytype version in the requirements file? |
|
Diff from mypy_primer, showing the effect of this PR on open source code: isort (https://github.com/pycqa/isort.git)
+ isort/place.py:17: error: Returning Any from function declared to return "str"
pydantic (https://github.com/samuelcolvin/pydantic.git)
+ pydantic/tools.py:34: error: unused "type: ignore" comment
pandas (https://github.com/pandas-dev/pandas.git)
+ pandas/core/dtypes/cast.py:498: error: unused "type: ignore" comment
aiohttp (https://github.com/aio-libs/aiohttp.git)
+ aiohttp/multipart.py:516: error: Returning Any from function declared to return "str" [no-any-return]
+ aiohttp/multipart.py:690: error: Returning Any from function declared to return "str" [no-any-return]
+ aiohttp/connector.py:918: error: Returning Any from function declared to return "Optional[SSLContext]" [no-any-return]
+ aiohttp/connector.py:924: error: Returning Any from function declared to return "Optional[SSLContext]" [no-any-return]
+ aiohttp/connector.py:925: error: Returning Any from function declared to return "Optional[SSLContext]" [no-any-return]
+ aiohttp/client_reqrep.py:1010: error: Returning Any from function declared to return "str" [no-any-return]
pytest (https://github.com/pytest-dev/pytest.git)
- src/_pytest/config/__init__.py:1683: error: Argument 1 to "filterwarnings" has incompatible type "*Tuple[str, str, Type[Warning], str, int]"; expected "Union[Literal['default'], Literal['error'], Literal['ignore'], Literal['always'], Literal['module'], Literal['once']]" [arg-type]
- src/_pytest/config/__init__.py:1686: error: Argument 1 to "filterwarnings" has incompatible type "*Tuple[str, str, Type[Warning], str, int]"; expected "Union[Literal['default'], Literal['error'], Literal['ignore'], Literal['always'], Literal['module'], Literal['once']]" [arg-type]
+ src/_pytest/python.py:946: error: Unexpected keyword argument "indices" for "CallSpec2" [call-arg]
edgedb (https://github.com/edgedb/edgedb.git)
+ edb/schema/objects.py:997: error: unused "type: ignore" comment
+ edb/schema/objects.py:1992:9: error: Returning Any from function declared to return "QualName"
+ edb/schema/objects.py:2223: error: unused "type: ignore" comment
+ edb/schema/objects.py:2637:9: error: Returning Any from function declared to return "Name"
+ edb/schema/schema.py:1146:9: error: Returning Any from function declared to return "FrozenSet[Cast]"
+ edb/schema/schema.py:1156:9: error: Returning Any from function declared to return "FrozenSet[Cast]"
+ edb/schema/schema.py:1166:9: error: Returning Any from function declared to return "FrozenSet[so.Object_T]"
+ edb/schema/schema.py:1412:9: error: Returning Any from function declared to return "Optional[Migration]"
+ edb/schema/scalars.py:132:9: error: Returning Any from function declared to return "bool"
+ edb/schema/scalars.py:163:9: error: Returning Any from function declared to return "bool"
+ edb/schema/scalars.py:176:9: error: Returning Any from function declared to return "int"
+ edb/schema/casts.py:91:5: error: Returning Any from function declared to return "bool"
+ edb/schema/casts.py:119:21: error: Returning Any from function declared to return "Optional[Type]"
|
This reverts commit 8bda66a. The change causes issues with ParamSpec implementations in type checkers, at least pyright and my work-in-progress support for ParamSpec in mypy. It's not yet clear how to fix the issues, so I think that it's best to revert this, at least temporarily until we've found a good solution. See python#6347 for context.
…6356) This reverts commit 8bda66a. The change causes issues with ParamSpec implementations in type checkers, at least pyright and my work-in-progress support for ParamSpec in mypy. It's not yet clear how to fix the issues, so I think that it's best to revert this, at least temporarily until we've found a good solution. See #6347 for context.
This PR uses
ParamSpecto makelru_cachepreserve the signature of the wrapped function.Unfortunately this removes the constraint that
*argsand**kwargsmust beHashableat least until the meaning of theboundparameter inParamSpecis decided, but I feel that preserving the function signature is a worthy trade-off.