Conversation
|
| # the `dataclasses.field` overloads make use of a `_MISSING_TYPE` enum, for which we | ||
| # infer a @Todo type, and therefore pick the wrong overload. | ||
| reveal_type(field(default=1)) # revealed: Unknown | ||
| ``` |
There was a problem hiding this comment.
I thought this was because of a different issue in the overload evaluation code itself? Ref astral-sh/ty#267 (comment)
There was a problem hiding this comment.
Thanks, forgot about that. Not sure if it's really the same though? The overloads for dataclasses.field look different from the ones for attrs.field. Here's a simplified version of the dataclasses.field overloads:
If I change that to use a simple class as a sentinel value, instead of an enum (for which we infer a dynamic @Todo type), it works fine:
There was a problem hiding this comment.
Oh yes, these indeed look to be different issues. It seems I was conflating attrs.field and dataclasses.field. Thank you for the examples!
The issue I linked above will still come to bite us later on though, since ty should ideally also understand attrs.field.
|
I guess it doesn't hurt to have these tests in place, so we'll notice when something changes in type inference for the return type of |
…re_help * 'main' of https://github.com/astral-sh/ruff: (34 commits) [docs] add capital one to who's using ruff (astral-sh#19248) [`pyupgrade`] Keyword arguments in `super` should suppress the `UP008` fix (astral-sh#19131) [`flake8-use-pathlib`] Add autofixes for `PTH100`, `PTH106`, `PTH107`, `PTH108`, `PTH110`, `PTH111`, `PTH112`, `PTH113`, `PTH114`, `PTH115`, `PTH117`, `PTH119`, `PTH120` (astral-sh#19213) [ty] Do not run `mypy_primer.yaml` when all changed files are Markdown files (astral-sh#19244) [`flake8-bandit`] Make example error out-of-the-box (`S412`) (astral-sh#19241) [`pydoclint`] Make example error out-of-the-box (`DOC501`) (astral-sh#19218) [ty] Add "kind" to completion suggestions [ty] Add type information to `all_members` API [ty] Expand API of `all_members` to return a struct [ty] Ecosystem analyzer PR comment workflow (astral-sh#19237) [ty] Merge `ty_macros` into `ruff_macros` (astral-sh#19229) [ty] Fix `ClassLiteral.into_callable` for dataclasses (astral-sh#19192) [ty] `dataclasses.field` support (astral-sh#19140) [ty] Fix panic for attribute expressions with empty value (astral-sh#19069) [ty] Return `CallableType` from `BoundMethodType.into_callable_type` (astral-sh#19193) [`flake8-bugbear`] Support non-context-manager calls in `B017` (astral-sh#19063) [ty] Improved diagnostic for reassignments of `Final` symbols (astral-sh#19214) [ty] Use full range for assignment definitions (astral-sh#19211) [`pylint`] Update `missing-maxsplit-arg` docs and error to suggest proper usage (`PLC0207`) (astral-sh#18949) [ty] Add `set -eu` to mypy-primer script (astral-sh#19212) ... # Conflicts: # crates/ty_python_semantic/src/types/class.rs
Summary
Add an initial set of tests for
dataclasses.field.