Skip to content

[ty] error for attribute access on union where some elements lack the attribute#23042

Merged
oconnor663 merged 1 commit intomainfrom
jack/union_attribute_access
Feb 12, 2026
Merged

[ty] error for attribute access on union where some elements lack the attribute#23042
oconnor663 merged 1 commit intomainfrom
jack/union_attribute_access

Conversation

@oconnor663
Copy link
Contributor

@oconnor663 oconnor663 added ty Multi-file analysis & type inference ecosystem-analyzer labels Feb 2, 2026
@astral-sh-bot
Copy link

astral-sh-bot bot commented Feb 2, 2026

Typing conformance results improved 🎉

The percentage of diagnostics emitted that were expected errors increased from 83.49% to 83.51%. The percentage of expected errors that received a diagnostic increased from 74.24% to 74.33%.

Summary

Metric Old New Diff Outcome
True Positives 804 805 +1 ⏫ (✅)
False Positives 159 159 +0
False Negatives 279 278 -1 ⏬ (✅)
Total Diagnostics 963 964 +1
Precision 83.49% 83.51% +0.02% ⏫ (✅)
Recall 74.24% 74.33% +0.09% ⏫ (✅)

True positives added

Details
Location Name Message
specialtypes_promotions.py:13:5 unresolved-attribute Attribute numerator is not defined on float in union int | float

@astral-sh-bot
Copy link

astral-sh-bot bot commented Feb 2, 2026

ecosystem-analyzer results

Lint rule Added Removed Changed
unresolved-attribute 9,715 0 0
possibly-missing-attribute 0 9,653 0
unsupported-operator 84 1 50
not-subscriptable 96 1 0
unused-type-ignore-comment 0 25 0
invalid-argument-type 4 7 9
no-matching-overload 0 20 0
invalid-parameter-default 0 0 7
invalid-return-type 0 1 3
invalid-assignment 0 0 2
not-iterable 0 0 2
Total 9,899 9,708 73

Full report with detailed diff (timing results)

@astral-sh-bot
Copy link

astral-sh-bot bot commented Feb 2, 2026

mypy_primer results

Changes were detected when running on open source projects
attrs (https://github.com/python-attrs/attrs)
- src/attr/_make.py:475:35: warning[possibly-missing-attribute] Attribute `init` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:475:35: error[unresolved-attribute] Attribute `init` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:475:59: warning[possibly-missing-attribute] Attribute `kw_only` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:475:59: error[unresolved-attribute] Attribute `kw_only` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:480:37: warning[possibly-missing-attribute] Attribute `default` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:480:37: error[unresolved-attribute] Attribute `default` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:487:16: warning[possibly-missing-attribute] Attribute `alias` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:487:16: error[unresolved-attribute] Attribute `alias` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:489:70: warning[possibly-missing-attribute] Attribute `name` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:489:70: error[unresolved-attribute] Attribute `name` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:493:19: warning[possibly-missing-attribute] Attribute `name` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:493:19: error[unresolved-attribute] Attribute `name` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:1607:29: warning[possibly-missing-attribute] Attribute `hash` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:1607:29: error[unresolved-attribute] Attribute `hash` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:1607:48: warning[possibly-missing-attribute] Attribute `hash` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:1607:48: error[unresolved-attribute] Attribute `hash` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:1607:67: warning[possibly-missing-attribute] Attribute `eq` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:1607:67: error[unresolved-attribute] Attribute `eq` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:1645:16: warning[possibly-missing-attribute] Attribute `eq_key` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:1645:16: error[unresolved-attribute] Attribute `eq_key` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:1646:32: warning[possibly-missing-attribute] Attribute `name` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:1646:32: error[unresolved-attribute] Attribute `name` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:1647:35: warning[possibly-missing-attribute] Attribute `eq_key` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:1647:35: error[unresolved-attribute] Attribute `eq_key` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:1649:57: warning[possibly-missing-attribute] Attribute `name` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:1649:57: error[unresolved-attribute] Attribute `name` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:1652:62: warning[possibly-missing-attribute] Attribute `name` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:1652:62: error[unresolved-attribute] Attribute `name` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:2187:12: warning[possibly-missing-attribute] Attribute `validator` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:2187:12: error[unresolved-attribute] Attribute `validator` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:2190:21: warning[possibly-missing-attribute] Attribute `name` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:2190:21: error[unresolved-attribute] Attribute `name` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:2191:26: warning[possibly-missing-attribute] Attribute `on_setattr` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:2191:26: error[unresolved-attribute] Attribute `on_setattr` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:2192:13: warning[possibly-missing-attribute] Attribute `on_setattr` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:2192:13: error[unresolved-attribute] Attribute `on_setattr` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:2196:20: warning[possibly-missing-attribute] Attribute `alias` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:2196:20: error[unresolved-attribute] Attribute `alias` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:2198:34: warning[possibly-missing-attribute] Attribute `default` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:2198:34: error[unresolved-attribute] Attribute `default` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:2199:48: warning[possibly-missing-attribute] Attribute `default` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:2199:48: error[unresolved-attribute] Attribute `default` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:2201:12: warning[possibly-missing-attribute] Attribute `converter` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:2201:12: error[unresolved-attribute] Attribute `converter` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:2201:55: warning[possibly-missing-attribute] Attribute `converter` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:2201:55: error[unresolved-attribute] Attribute `converter` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:2202:35: warning[possibly-missing-attribute] Attribute `converter` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:2202:35: error[unresolved-attribute] Attribute `converter` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:2204:25: warning[possibly-missing-attribute] Attribute `converter` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:2204:25: error[unresolved-attribute] Attribute `converter` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:2206:12: warning[possibly-missing-attribute] Attribute `init` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:2206:12: error[unresolved-attribute] Attribute `init` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:2208:58: warning[possibly-missing-attribute] Attribute `name` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:2208:58: error[unresolved-attribute] Attribute `name` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:2218:66: warning[possibly-missing-attribute] Attribute `name` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:2218:66: error[unresolved-attribute] Attribute `name` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:2229:56: warning[possibly-missing-attribute] Attribute `default` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:2229:56: error[unresolved-attribute] Attribute `default` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:2239:62: warning[possibly-missing-attribute] Attribute `name` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:2239:62: error[unresolved-attribute] Attribute `name` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:2250:14: warning[possibly-missing-attribute] Attribute `default` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:2250:14: error[unresolved-attribute] Attribute `default` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:2252:16: warning[possibly-missing-attribute] Attribute `kw_only` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:2252:16: error[unresolved-attribute] Attribute `kw_only` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:2264:62: warning[possibly-missing-attribute] Attribute `name` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:2264:62: error[unresolved-attribute] Attribute `name` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:2272:16: warning[possibly-missing-attribute] Attribute `kw_only` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:2272:16: error[unresolved-attribute] Attribute `kw_only` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:2279:54: warning[possibly-missing-attribute] Attribute `name` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:2279:54: error[unresolved-attribute] Attribute `name` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:2297:62: warning[possibly-missing-attribute] Attribute `name` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:2297:62: error[unresolved-attribute] Attribute `name` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:2313:52: warning[possibly-missing-attribute] Attribute `default` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:2313:52: error[unresolved-attribute] Attribute `default` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:2315:16: warning[possibly-missing-attribute] Attribute `kw_only` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:2315:16: error[unresolved-attribute] Attribute `kw_only` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:2327:62: warning[possibly-missing-attribute] Attribute `name` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:2327:62: error[unresolved-attribute] Attribute `name` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:2333:12: warning[possibly-missing-attribute] Attribute `init` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:2333:12: error[unresolved-attribute] Attribute `init` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:2334:16: warning[possibly-missing-attribute] Attribute `type` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:2334:16: error[unresolved-attribute] Attribute `type` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:2335:41: warning[possibly-missing-attribute] Attribute `type` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:2335:41: error[unresolved-attribute] Attribute `type` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:2371:33: warning[possibly-missing-attribute] Attribute `name` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:2371:33: error[unresolved-attribute] Attribute `name` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:2371:60: warning[possibly-missing-attribute] Attribute `init` may be missing on object of type `Attribute | Unknown`
+ src/attr/_make.py:2371:60: error[unresolved-attribute] Attribute `init` is not defined on `Attribute` in union `Attribute | Unknown`
- src/attr/_make.py:2642:33: warning[possibly-missing-attribute] Attribute `name` may be missing on object of type `Unknown | Attribute`
+ src/attr/_make.py:2642:33: error[unresolved-attribute] Attribute `name` is not defined on `Attribute` in union `Unknown | Attribute`
- src/attr/_make.py:2644:29: warning[possibly-missing-attribute] Attribute `hash` may be missing on object of type `Unknown | Attribute`
+ src/attr/_make.py:2644:29: error[unresolved-attribute] Attribute `hash` is not defined on `Attribute` in union `Unknown | Attribute`
- src/attr/_make.py:2644:40: warning[possibly-missing-attribute] Attribute `name` may be missing on object of type `Unknown | Attribute`
+ src/attr/_make.py:2644:40: error[unresolved-attribute] Attribute `name` is not defined on `Attribute` in union `Unknown | Attribute`
- tests/test_cmp.py:321:16: warning[possibly-missing-attribute] Attribute `strip` may be missing on object of type `Unknown | str | None`
+ tests/test_cmp.py:321:16: error[unresolved-attribute] Attribute `strip` is not defined on `None` in union `Unknown | str | None`
- tests/test_cmp.py:329:16: warning[possibly-missing-attribute] Attribute `strip` may be missing on object of type `Unknown | str | None`
+ tests/test_cmp.py:329:16: error[unresolved-attribute] Attribute `strip` is not defined on `None` in union `Unknown | str | None`
- tests/test_cmp.py:389:16: warning[possibly-missing-attribute] Attribute `strip` may be missing on object of type `Unknown | str | None`
+ tests/test_cmp.py:389:16: error[unresolved-attribute] Attribute `strip` is not defined on `None` in union `Unknown | str | None`
- tests/test_cmp.py:397:16: warning[possibly-missing-attribute] Attribute `strip` may be missing on object of type `Unknown | str | None`
+ tests/test_cmp.py:397:16: error[unresolved-attribute] Attribute `strip` is not defined on `None` in union `Unknown | str | None`
- tests/test_cmp.py:407:18: warning[possibly-missing-attribute] Attribute `__lt__` may be missing on object of type `Unknown | type`
+ tests/test_cmp.py:407:18: error[unresolved-attribute] Attribute `__lt__` is not defined on `type` in union `Unknown | type`
- tests/test_cmp.py:415:18: warning[possibly-missing-attribute] Attribute `__le__` may be missing on object of type `Unknown | type`
+ tests/test_cmp.py:415:18: error[unresolved-attribute] Attribute `__le__` is not defined on `type` in union `Unknown | type`
- tests/test_cmp.py:425:18: warning[possibly-missing-attribute] Attribute `__gt__` may be missing on object of type `Unknown | type`
+ tests/test_cmp.py:425:18: error[unresolved-attribute] Attribute `__gt__` is not defined on `type` in union `Unknown | type`
- tests/test_cmp.py:435:18: warning[possibly-missing-attribute] Attribute `__ge__` may be missing on object of type `Unknown | type`
+ tests/test_cmp.py:435:18: error[unresolved-attribute] Attribute `__ge__` is not defined on `type` in union `Unknown | type`
- tests/test_cmp.py:461:16: warning[possibly-missing-attribute] Attribute `strip` may be missing on object of type `Unknown | str | None`
+ tests/test_cmp.py:461:16: error[unresolved-attribute] Attribute `strip` is not defined on `None` in union `Unknown | str | None`
- tests/test_cmp.py:469:16: warning[possibly-missing-attribute] Attribute `strip` may be missing on object of type `Unknown | str | None`
+ tests/test_cmp.py:469:16: error[unresolved-attribute] Attribute `strip` is not defined on `None` in union `Unknown | str | None`
- tests/test_cmp.py:479:18: warning[possibly-missing-attribute] Attribute `__lt__` may be missing on object of type `Unknown | type`
+ tests/test_cmp.py:479:18: error[unresolved-attribute] Attribute `__lt__` is not defined on `type` in union `Unknown | type`
- tests/test_cmp.py:487:18: warning[possibly-missing-attribute] Attribute `__le__` may be missing on object of type `Unknown | type`
+ tests/test_cmp.py:487:18: error[unresolved-attribute] Attribute `__le__` is not defined on `type` in union `Unknown | type`
- tests/test_cmp.py:495:18: warning[possibly-missing-attribute] Attribute `__gt__` may be missing on object of type `Unknown | type`
+ tests/test_cmp.py:495:18: error[unresolved-attribute] Attribute `__gt__` is not defined on `type` in union `Unknown | type`
- tests/test_cmp.py:503:18: warning[possibly-missing-attribute] Attribute `__ge__` may be missing on object of type `Unknown | type`
+ tests/test_cmp.py:503:18: error[unresolved-attribute] Attribute `__ge__` is not defined on `type` in union `Unknown | type`
- tests/test_make.py:2170:24: warning[possibly-missing-attribute] Attribute `__qualname__` may be missing on object of type `Unknown | ((...) -> Unknown)`
+ tests/test_make.py:2170:24: error[unresolved-attribute] Attribute `__qualname__` is not defined on `(...) -> Unknown` in union `Unknown | ((...) -> Unknown)`

aioredis (https://github.com/aio-libs/aioredis)
- aioredis/client.py:3898:38: warning[possibly-missing-attribute] Attribute `split` may be missing on object of type `Unknown | bytes | memoryview[int] | ... omitted 3 union elements`
+ aioredis/client.py:3898:38: error[unresolved-attribute] Attribute `split` is not defined on `memoryview[int]`, `int`, `float` in union `Unknown | bytes | memoryview[int] | ... omitted 3 union elements`
- aioredis/connection.py:934:26: warning[possibly-missing-attribute] Attribute `split` may be missing on object of type `bytes | memoryview[int] | int`
+ aioredis/connection.py:934:26: error[unresolved-attribute] Attribute `split` is not defined on `memoryview[int]`, `int` in union `bytes | memoryview[int] | int`

anyio (https://github.com/agronholm/anyio)
- src/anyio/_backends/_asyncio.py:253:17: warning[possibly-missing-attribute] Attribute `call_soon_threadsafe` may be missing on object of type `AbstractEventLoop | None`
+ src/anyio/_backends/_asyncio.py:253:17: error[unresolved-attribute] Attribute `call_soon_threadsafe` is not defined on `None` in union `AbstractEventLoop | None`
- src/anyio/_backends/_trio.py:900:9: warning[possibly-missing-attribute] Attribute `send_nowait` may be missing on object of type `MemoryObjectSendStream[Unknown] | None`
+ src/anyio/_backends/_trio.py:900:9: error[unresolved-attribute] Attribute `send_nowait` is not defined on `None` in union `MemoryObjectSendStream[Unknown] | None`
- src/anyio/_core/_eventloop.py:234:9: warning[possibly-missing-attribute] Attribute `current_async_library_cvar` may be missing on object of type `Unknown | None`
+ src/anyio/_core/_eventloop.py:234:9: error[unresolved-attribute] Attribute `current_async_library_cvar` is not defined on `None` in union `Unknown | None`
- src/anyio/from_thread.py:250:21: warning[possibly-missing-attribute] Attribute `cancel` may be missing on object of type `CancelScope | None`
+ src/anyio/from_thread.py:250:21: error[unresolved-attribute] Attribute `cancel` is not defined on `None` in union `CancelScope | None`
- src/anyio/from_thread.py:252:31: warning[possibly-missing-attribute] Attribute `cancel` may be missing on object of type `CancelScope | None`
+ src/anyio/from_thread.py:252:31: error[unresolved-attribute] Attribute `cancel` is not defined on `None` in union `CancelScope | None`

parso (https://github.com/davidhalter/parso)
- parso/python/errors.py:415:18: warning[possibly-missing-attribute] Attribute `add_block` may be missing on object of type `Unknown | _Context | None`
+ parso/python/errors.py:415:18: error[unresolved-attribute] Attribute `add_block` is not defined on `None` in union `Unknown | _Context | None`
- parso/python/errors.py:416:24: warning[possibly-missing-attribute] Attribute `blocks` may be missing on object of type `Unknown | _Context | None`
+ parso/python/errors.py:416:24: error[unresolved-attribute] Attribute `blocks` is not defined on `None` in union `Unknown | _Context | None`
- parso/python/errors.py:431:28: warning[possibly-missing-attribute] Attribute `parent_context` may be missing on object of type `Unknown | _Context | None`
+ parso/python/errors.py:431:28: error[unresolved-attribute] Attribute `parent_context` is not defined on `None` in union `Unknown | _Context | None`
- parso/python/errors.py:432:13: warning[possibly-missing-attribute] Attribute `close_child_context` may be missing on object of type `Unknown | None`
+ parso/python/errors.py:432:13: error[unresolved-attribute] Attribute `close_child_context` is not defined on `None` in union `Unknown | None`
- parso/python/errors.py:470:32: warning[possibly-missing-attribute] Attribute `add_context` may be missing on object of type `Unknown | _Context | None`
+ parso/python/errors.py:470:32: error[unresolved-attribute] Attribute `add_context` is not defined on `None` in union `Unknown | _Context | None`
- parso/python/errors.py:489:9: warning[possibly-missing-attribute] Attribute `finalize` may be missing on object of type `Unknown | _Context | None`
+ parso/python/errors.py:489:9: error[unresolved-attribute] Attribute `finalize` is not defined on `None` in union `Unknown | _Context | None`
- parso/python/parser.py:120:50: warning[possibly-missing-attribute] Attribute `value` may be missing on object of type `Unknown | None`
+ parso/python/parser.py:120:50: error[unresolved-attribute] Attribute `value` is not defined on `None` in union `Unknown | None`
- parso/python/parser.py:121:26: warning[possibly-missing-attribute] Attribute `value` may be missing on object of type `Unknown | None`
+ parso/python/parser.py:121:26: error[unresolved-attribute] Attribute `value` is not defined on `None` in union `Unknown | None`
- parso/python/pep8.py:258:16: warning[possibly-missing-attribute] Attribute `type` may be missing on object of type `Unknown | IndentationNode | None`
+ parso/python/pep8.py:258:16: error[unresolved-attribute] Attribute `type` is not defined on `None` in union `Unknown | IndentationNode | None`
- parso/python/pep8.py:259:41: warning[possibly-missing-attribute] Attribute `parent` may be missing on object of type `Unknown | IndentationNode | None`
- parso/python/pep8.py:263:17: warning[possibly-missing-attribute] Attribute `indentation` may be missing on object of type `Unknown | IndentationNode | None`
+ parso/python/pep8.py:259:41: error[unresolved-attribute] Attribute `parent` is not defined on `None` in union `Unknown | IndentationNode | None`
+ parso/python/pep8.py:263:17: error[unresolved-attribute] Attribute `indentation` is not defined on `None` in union `Unknown | IndentationNode | None`
- parso/python/pep8.py:270:20: warning[possibly-missing-attribute] Attribute `type` may be missing on object of type `Unknown | IndentationNode | None`
+ parso/python/pep8.py:270:20: error[unresolved-attribute] Attribute `type` is not defined on `None` in union `Unknown | IndentationNode | None`
- parso/python/pep8.py:271:37: warning[possibly-missing-attribute] Attribute `parent` may be missing on object of type `Unknown | IndentationNode | None`
+ parso/python/pep8.py:271:37: error[unresolved-attribute] Attribute `parent` is not defined on `None` in union `Unknown | IndentationNode | None`
- parso/python/pep8.py:276:16: warning[possibly-missing-attribute] Attribute `type` may be missing on object of type `Unknown | IndentationNode | None`
+ parso/python/pep8.py:276:16: error[unresolved-attribute] Attribute `type` is not defined on `None` in union `Unknown | IndentationNode | None`
- parso/python/pep8.py:277:41: warning[possibly-missing-attribute] Attribute `parent` may be missing on object of type `Unknown | IndentationNode | None`
- parso/python/pep8.py:290:22: warning[possibly-missing-attribute] Attribute `get_latest_suite_node` may be missing on object of type `Unknown | IndentationNode | None`
+ parso/python/pep8.py:277:41: error[unresolved-attribute] Attribute `parent` is not defined on `None` in union `Unknown | IndentationNode | None`
+ parso/python/pep8.py:290:22: error[unresolved-attribute] Attribute `get_latest_suite_node` is not defined on `None` in union `Unknown | IndentationNode | None`
- parso/python/pep8.py:362:17: warning[possibly-missing-attribute] Attribute `type` may be missing on object of type `Unknown | IndentationNode | None`
+ parso/python/pep8.py:362:17: error[unresolved-attribute] Attribute `type` is not defined on `None` in union `Unknown | IndentationNode | None`
- parso/python/pep8.py:363:37: warning[possibly-missing-attribute] Attribute `parent` may be missing on object of type `Unknown | IndentationNode | None`
+ parso/python/pep8.py:363:37: error[unresolved-attribute] Attribute `parent` is not defined on `None` in union `Unknown | IndentationNode | None`
- parso/python/pep8.py:385:37: warning[possibly-missing-attribute] Attribute `parent` may be missing on object of type `Unknown | IndentationNode | None`
+ parso/python/pep8.py:385:37: error[unresolved-attribute] Attribute `parent` is not defined on `None` in union `Unknown | IndentationNode | None`
- parso/python/pep8.py:414:16: warning[possibly-missing-attribute] Attribute `type` may be missing on object of type `Unknown | IndentationNode | None`
+ parso/python/pep8.py:414:16: error[unresolved-attribute] Attribute `type` is not defined on `None` in union `Unknown | IndentationNode | None`
- parso/python/pep8.py:415:20: warning[possibly-missing-attribute] Attribute `type` may be missing on object of type `Unknown | IndentationNode | None`
+ parso/python/pep8.py:415:20: error[unresolved-attribute] Attribute `type` is not defined on `None` in union `Unknown | IndentationNode | None`
- parso/python/pep8.py:418:35: warning[possibly-missing-attribute] Attribute `indentation` may be missing on object of type `Unknown | IndentationNode | None`
+ parso/python/pep8.py:418:35: error[unresolved-attribute] Attribute `indentation` is not defined on `None` in union `Unknown | IndentationNode | None`
- parso/python/pep8.py:419:54: warning[possibly-missing-attribute] Attribute `type` may be missing on object of type `Unknown | IndentationNode | None`
+ parso/python/pep8.py:419:54: error[unresolved-attribute] Attribute `type` is not defined on `None` in union `Unknown | IndentationNode | None`
- parso/python/pep8.py:431:16: warning[possibly-missing-attribute] Attribute `type` may be missing on object of type `Unknown | IndentationNode | None`
+ parso/python/pep8.py:431:16: error[unresolved-attribute] Attribute `type` is not defined on `None` in union `Unknown | IndentationNode | None`
- parso/python/pep8.py:432:25: warning[possibly-missing-attribute] Attribute `type` may be missing on object of type `Unknown | None`
+ parso/python/pep8.py:432:25: error[unresolved-attribute] Attribute `type` is not defined on `None` in union `Unknown | None`
- parso/python/pep8.py:433:41: warning[possibly-missing-attribute] Attribute `parent` may be missing on object of type `Unknown | IndentationNode | None`
- parso/python/pep8.py:436:41: warning[possibly-missing-attribute] Attribute `indentation` may be missing on object of type `Unknown | IndentationNode | None`
- parso/python/pep8.py:441:51: warning[possibly-missing-attribute] Attribute `indentation` may be missing on object of type `Unknown | IndentationNode | None`
- parso/python/pep8.py:444:49: warning[possibly-missing-attribute] Attribute `indentation` may be missing on object of type `Unknown | IndentationNode | None`
- parso/python/pep8.py:449:29: warning[possibly-missing-attribute] Attribute `parent` may be missing on object of type `Unknown | IndentationNode | None`
- parso/python/pep8.py:460:49: warning[possibly-missing-attribute] Attribute `bracket_indentation` may be missing on object of type `Unknown | IndentationNode | None`
- parso/python/pep8.py:462:49: warning[possibly-missing-attribute] Attribute `indentation` may be missing on object of type `Unknown | IndentationNode | None`
- parso/python/pep8.py:464:29: warning[possibly-missing-attribute] Attribute `get_latest_suite_node` may be missing on object of type `Unknown | IndentationNode | None`
+ parso/python/pep8.py:433:41: error[unresolved-attribute] Attribute `parent` is not defined on `None` in union `Unknown | IndentationNode | None`
+ parso/python/pep8.py:436:41: error[unresolved-attribute] Attribute `indentation` is not defined on `None` in union `Unknown | IndentationNode | None`
+ parso/python/pep8.py:441:51: error[unresolved-attribute] Attribute `indentation` is not defined on `None` in union `Unknown | IndentationNode | None`
+ parso/python/pep8.py:444:49: error[unresolved-attribute] Attribute `indentation` is not defined on `None` in union `Unknown | IndentationNode | None`
+ parso/python/pep8.py:449:29: error[unresolved-attribute] Attribute `parent` is not defined on `None` in union `Unknown | IndentationNode | None`
+ parso/python/pep8.py:460:49: error[unresolved-attribute] Attribute `bracket_indentation` is not defined on `None` in union `Unknown | IndentationNode | None`
+ parso/python/pep8.py:462:49: error[unresolved-attribute] Attribute `indentation` is not defined on `None` in union `Unknown | IndentationNode | None`
+ parso/python/pep8.py:464:29: error[unresolved-attribute] Attribute `get_latest_suite_node` is not defined on `None` in union `Unknown | IndentationNode | None`
- parso/python/pep8.py:471:36: warning[possibly-missing-attribute] Attribute `type` may be missing on object of type `Unknown | IndentationNode | None`
+ parso/python/pep8.py:471:36: error[unresolved-attribute] Attribute `type` is not defined on `None` in union `Unknown | IndentationNode | None`
- parso/python/pep8.py:486:40: warning[possibly-missing-attribute] Attribute `type` may be missing on object of type `Unknown | IndentationNode | None`
+ parso/python/pep8.py:486:40: error[unresolved-attribute] Attribute `type` is not defined on `None` in union `Unknown | IndentationNode | None`
- parso/python/pep8.py:492:42: warning[possibly-missing-attribute] Attribute `type` may be missing on object of type `Unknown | IndentationNode | None`
+ parso/python/pep8.py:492:42: error[unresolved-attribute] Attribute `type` is not defined on `None` in union `Unknown | IndentationNode | None`
- parso/python/pep8.py:498:42: warning[possibly-missing-attribute] Attribute `type` may be missing on object of type `Unknown | IndentationNode | None`
+ parso/python/pep8.py:498:42: error[unresolved-attribute] Attribute `type` is not defined on `None` in union `Unknown | IndentationNode | None`
- parso/python/pep8.py:507:40: warning[possibly-missing-attribute] Attribute `type` may be missing on object of type `Unknown | IndentationNode | None`
+ parso/python/pep8.py:507:40: error[unresolved-attribute] Attribute `type` is not defined on `None` in union `Unknown | IndentationNode | None`
- parso/python/pep8.py:513:42: warning[possibly-missing-attribute] Attribute `type` may be missing on object of type `Unknown | IndentationNode | None`
+ parso/python/pep8.py:513:42: error[unresolved-attribute] Attribute `type` is not defined on `None` in union `Unknown | IndentationNode | None`
- parso/python/pep8.py:537:24: warning[possibly-missing-attribute] Attribute `type` may be missing on object of type `Unknown | IndentationNode | None`
+ parso/python/pep8.py:537:24: error[unresolved-attribute] Attribute `type` is not defined on `None` in union `Unknown | IndentationNode | None`
- parso/python/pep8.py:538:41: warning[possibly-missing-attribute] Attribute `parent` may be missing on object of type `Unknown | IndentationNode | None`
- parso/python/pep8.py:541:27: warning[possibly-missing-attribute] Attribute `indentation` may be missing on object of type `Unknown | IndentationNode | None`
+ parso/python/pep8.py:538:41: error[unresolved-attribute] Attribute `parent` is not defined on `None` in union `Unknown | IndentationNode | None`
+ parso/python/pep8.py:541:27: error[unresolved-attribute] Attribute `indentation` is not defined on `None` in union `Unknown | IndentationNode | None`
- parso/python/pep8.py:631:33: warning[possibly-missing-attribute] Attribute `parent` may be missing on object of type `None | Unknown`
+ parso/python/pep8.py:631:33: error[unresolved-attribute] Attribute `parent` is not defined on `None` in union `None | Unknown`
- parso/python/pep8.py:651:40: warning[possibly-missing-attribute] Attribute `type` may be missing on object of type `None | Unknown`
+ parso/python/pep8.py:651:40: error[unresolved-attribute] Attribute `type` is not defined on `None` in union `None | Unknown`
- parso/python/pep8.py:656:41: warning[possibly-missing-attribute] Attribute `prefix` may be missing on object of type `Unknown | None`
+ parso/python/pep8.py:656:41: error[unresolved-attribute] Attribute `prefix` is not defined on `None` in union `Unknown | None`
- parso/python/pep8.py:657:41: warning[possibly-missing-attribute] Attribute `prefix` may be missing on object of type `Unknown | None`
+ parso/python/pep8.py:657:41: error[unresolved-attribute] Attribute `prefix` is not defined on `None` in union `Unknown | None`
- parso/python/pep8.py:719:31: warning[possibly-missing-attribute] Attribute `group` may be missing on object of type `Match[str] | None`
+ parso/python/pep8.py:719:31: error[unresolved-attribute] Attribute `group` is not defined on `None` in union `Match[str] | None`
- parso/python/tree.py:219:17: warning[possibly-missing-attribute] Attribute `type` may be missing on object of type `BaseNode | None`
+ parso/python/tree.py:219:17: error[unresolved-attribute] Attribute `type` is not defined on `None` in union `BaseNode | None`
- parso/python/tree.py:228:24: warning[possibly-missing-attribute] Attribute `parent` may be missing on object of type `BaseNode | None`
+ parso/python/tree.py:228:24: error[unresolved-attribute] Attribute `parent` is not defined on `None` in union `BaseNode | None`
- parso/python/tree.py:259:16: warning[possibly-missing-attribute] Attribute `group` may be missing on object of type `Match[str] | None`
+ parso/python/tree.py:259:16: error[unresolved-attribute] Attribute `group` is not defined on `None` in union `Match[str] | None`
- parso/python/tree.py:267:16: warning[possibly-missing-attribute] Attribute `group` may be missing on object of type `Match[str] | None`
+ parso/python/tree.py:267:16: error[unresolved-attribute] Attribute `group` is not defined on `None` in union `Match[str] | None`
- parso/python/tree.py:267:37: warning[possibly-missing-attribute] Attribute `group` may be missing on object of type `Match[str] | None`
+ parso/python/tree.py:267:37: error[unresolved-attribute] Attribute `group` is not defined on `None` in union `Match[str] | None`
- parso/python/tree.py:453:12: warning[possibly-missing-attribute] Attribute `type` may be missing on object of type `BaseNode | None`
+ parso/python/tree.py:453:12: error[unresolved-attribute] Attribute `type` is not defined on `None` in union `BaseNode | None`
- parso/python/tree.py:454:25: warning[possibly-missing-attribute] Attribute `parent` may be missing on object of type `BaseNode | None`
+ parso/python/tree.py:454:25: error[unresolved-attribute] Attribute `parent` is not defined on `None` in union `BaseNode | None`
- parso/python/tree.py:456:12: warning[possibly-missing-attribute] Attribute `type` may be missing on object of type `BaseNode | None`
+ parso/python/tree.py:456:12: error[unresolved-attribute] Attribute `type` is not defined on `None` in union `BaseNode | None`
- parso/python/tree.py:457:16: warning[possibly-missing-attribute] Attribute `children` may be missing on object of type `BaseNode | None`
+ parso/python/tree.py:457:16: error[unresolved-attribute] Attribute `children` is not defined on `None` in union `BaseNode | None`
- parso/python/tree.py:458:24: warning[possibly-missing-attribute] Attribute `children` may be missing on object of type `BaseNode | None`
+ parso/python/tree.py:458:24: error[unresolved-attribute] Attribute `children` is not defined on `None` in union `BaseNode | None`
- parso/python/tree.py:458:24: warning[possibly-missing-attribute] Attribute `children` may be missing on object of type `Unknown | NodeOrLeaf`
+ parso/python/tree.py:458:24: error[unresolved-attribute] Attribute `children` is not defined on `NodeOrLeaf` in union `Unknown | NodeOrLeaf`
- parso/python/tree.py:460:24: warning[possibly-missing-attribute] Attribute `children` may be missing on object of type `BaseNode | None`
+ parso/python/tree.py:460:24: error[unresolved-attribute] Attribute `children` is not defined on `None` in union `BaseNode | None`
- parso/python/tree.py:554:31: warning[possibly-missing-attribute] Attribute `children` may be missing on object of type `Unknown | NodeOrLeaf`
+ parso/python/tree.py:554:31: error[unresolved-attribute] Attribute `children` is not defined on `NodeOrLeaf` in union `Unknown | NodeOrLeaf`
- parso/python/tree.py:558:13: warning[possibly-missing-attribute] Attribute `children` may be missing on object of type `Unknown | NodeOrLeaf`
+ parso/python/tree.py:558:13: error[unresolved-attribute] Attribute `children` is not defined on `NodeOrLeaf` in union `Unknown | NodeOrLeaf`
- parso/python/tree.py:561:16: warning[possibly-missing-attribute] Attribute `children` may be missing on object of type `Unknown | NodeOrLeaf`
+ parso/python/tree.py:561:16: error[unresolved-attribute] Attribute `children` is not defined on `NodeOrLeaf` in union `Unknown | NodeOrLeaf`
- parso/python/tree.py:767:23: warning[possibly-missing-attribute] Attribute `children` may be missing on object of type `Unknown | NodeOrLeaf`
+ parso/python/tree.py:767:23: error[unresolved-attribute] Attribute `children` is not defined on `NodeOrLeaf` in union `Unknown | NodeOrLeaf`
- parso/python/tree.py:785:41: warning[possibly-missing-attribute] Attribute `children` may be missing on object of type `Unknown | NodeOrLeaf`
+ parso/python/tree.py:785:41: error[unresolved-attribute] Attribute `children` is not defined on `NodeOrLeaf` in union `Unknown | NodeOrLeaf`
- parso/python/tree.py:844:20: warning[possibly-missing-attribute] Attribute `children` may be missing on object of type `Unknown | NodeOrLeaf`
+ parso/python/tree.py:844:20: error[unresolved-attribute] Attribute `children` is not defined on `NodeOrLeaf` in union `Unknown | NodeOrLeaf`
- parso/python/tree.py:856:30: warning[possibly-missing-attribute] Attribute `value` may be missing on object of type `Unknown | NodeOrLeaf`
+ parso/python/tree.py:856:30: error[unresolved-attribute] Attribute `value` is not defined on `NodeOrLeaf` in union `Unknown | NodeOrLeaf`
- parso/python/tree.py:869:24: warning[possibly-missing-attribute] Attribute `children` may be missing on object of type `Unknown | NodeOrLeaf`
+ parso/python/tree.py:869:24: error[unresolved-attribute] Attribute `children` is not defined on `NodeOrLeaf` in union `Unknown | NodeOrLeaf`
- parso/python/tree.py:876:23: warning[possibly-missing-attribute] Attribute `children` may be missing on object of type `Unknown | NodeOrLeaf`
+ parso/python/tree.py:876:23: error[unresolved-attribute] Attribute `children` is not defined on `NodeOrLeaf` in union `Unknown | NodeOrLeaf`
- parso/python/tree.py:917:24: warning[possibly-missing-attribute] Attribute `children` may be missing on object of type `Unknown | NodeOrLeaf`
+ parso/python/tree.py:917:24: error[unresolved-attribute] Attribute `children` is not defined on `NodeOrLeaf` in union `Unknown | NodeOrLeaf`
- parso/python/tree.py:923:25: warning[possibly-missing-attribute] Attribute `children` may be missing on object of type `Unknown | NodeOrLeaf`
+ parso/python/tree.py:923:25: error[unresolved-attribute] Attribute `children` is not defined on `NodeOrLeaf` in union `Unknown | NodeOrLeaf`
- parso/python/tree.py:924:27: warning[possibly-missing-attribute] Attribute `children` may be missing on object of type `Unknown | NodeOrLeaf`
+ parso/python/tree.py:924:27: error[unresolved-attribute] Attribute `children` is not defined on `NodeOrLeaf` in union `Unknown | NodeOrLeaf`
- parso/python/tree.py:931:23: warning[possibly-missing-attribute] Attribute `children` may be missing on object of type `Unknown | NodeOrLeaf`
+ parso/python/tree.py:931:23: error[unresolved-attribute] Attribute `children` is not defined on `NodeOrLeaf` in union `Unknown | NodeOrLeaf`
- parso/python/tree.py:971:16: warning[possibly-missing-attribute] Attribute `value` may be missing on object of type `Unknown | NodeOrLeaf`
+ parso/python/tree.py:971:16: error[unresolved-attribute] Attribute `value` is not defined on `NodeOrLeaf` in union `Unknown | NodeOrLeaf`
- parso/python/tree.py:1049:23: warning[possibly-missing-attribute] Attribute `value` may be missing on object of type `Unknown | NodeOrLeaf`
+ parso/python/tree.py:1049:23: error[unresolved-attribute] Attribute `value` is not defined on `NodeOrLeaf` in union `Unknown | NodeOrLeaf`
- parso/python/tree.py:1057:20: warning[possibly-missing-attribute] Attribute `children` may be missing on object of type `Unknown | NodeOrLeaf`
+ parso/python/tree.py:1057:20: error[unresolved-attribute] Attribute `children` is not defined on `NodeOrLeaf` in union `Unknown | NodeOrLeaf`
- parso/python/tree.py:1058:24: warning[possibly-missing-attribute] Attribute `children` may be missing on object of type `Unknown | NodeOrLeaf`
+ parso/python/tree.py:1058:24: error[unresolved-attribute] Attribute `children` is not defined on `NodeOrLeaf` in union `Unknown | NodeOrLeaf`
- parso/python/tree.py:1060:24: warning[possibly-missing-attribute] Attribute `children` may be missing on object of type `Unknown | NodeOrLeaf`
+ parso/python/tree.py:1060:24: error[unresolved-attribute] Attribute `children` is not defined on `NodeOrLeaf` in union `Unknown | NodeOrLeaf`
- parso/python/tree.py:1069:20: warning[possibly-missing-attribute] Attribute `children` may be missing on object of type `Unknown | NodeOrLeaf`
+ parso/python/tree.py:1069:20: error[unresolved-attribute] Attribute `children` is not defined on `NodeOrLeaf` in union `Unknown | NodeOrLeaf`
- parso/python/tree.py:1072:21: warning[possibly-missing-attribute] Attribute `children` may be missing on object of type `Unknown | NodeOrLeaf`
+ parso/python/tree.py:1072:21: error[unresolved-attribute] Attribute `children` is not defined on `NodeOrLeaf` in union `Unknown | NodeOrLeaf`
- parso/python/tree.py:1105:24: warning[possibly-missing-attribute] Attribute `value` may be missing on object of type `Unknown | NodeOrLeaf`
+ parso/python/tree.py:1105:24: error[unresolved-attribute] Attribute `value` is not defined on `NodeOrLeaf` in union `Unknown | NodeOrLeaf`
- parso/python/tree.py:1161:17: warning[possibly-missing-attribute] Attribute `children` may be missing on object of type `BaseNode | None`
+ parso/python/tree.py:1161:17: error[unresolved-attribute] Attribute `children` is not defined on `None` in union `BaseNode | None`
- parso/python/tree.py:1163:34: warning[possibly-missing-attribute] Attribute `children` may be missing on object of type `BaseNode | None`
+ parso/python/tree.py:1163:34: error[unresolved-attribute] Attribute `children` is not defined on `None` in union `BaseNode | None`
- parso/python/tree.py:1170:34: warning[possibly-missing-attribute] Attribute `children` may be missing on object of type `BaseNode | None`
+ parso/python/tree.py:1170:34: error[unresolved-attribute] Attribute `children` is not defined on `None` in union `BaseNode | None`
- parso/tree.py:94:17: warning[possibly-missing-attribute] Attribute `children` may be missing on object of type `BaseNode | None`
+ parso/tree.py:94:17: error[unresolved-attribute] Attribute `children` is not defined on `None` in union `BaseNode | None`
- parso/tree.py:98:20: warning[possibly-missing-attribute] Attribute `parent` may be missing on object of type `BaseNode | None`
+ parso/tree.py:98:20: error[unresolved-attribute] Attribute `parent` is not defined on `None` in union `BaseNode | None`
- parso/tree.py:106:24: warning[possibly-missing-attribute] Attribute `children` may be missing on object of type `Unknown | NodeOrLeaf`
+ parso/tree.py:106:24: error[unresolved-attribute] Attribute `children` is not defined on `NodeOrLeaf` in union `Unknown | NodeOrLeaf`
- parso/tree.py:120:17: warning[possibly-missing-attribute] Attribute `children` may be missing on object of type `BaseNode | None`
+ parso/tree.py:120:17: error[unresolved-attribute] Attribute `children` is not defined on `None` in union `BaseNode | None`
- parso/tree.py:124:20: warning[possibly-missing-attribute] Attribute `parent` may be missing on object of type `BaseNode | None`
+ parso/tree.py:124:20: error[unresolved-attribute] Attribute `parent` is not defined on `None` in union `BaseNode | None`
- parso/tree.py:132:24: warning[possibly-missing-attribute] Attribute `children` may be missing on object of type `Unknown | NodeOrLeaf`
+ parso/tree.py:132:24: error[unresolved-attribute] Attribute `children` is not defined on `NodeOrLeaf` in union `Unknown | NodeOrLeaf`

pyinstrument (https://github.com/joerick/pyinstrument)
- pyinstrument/vendor/decorator.py:165:31: warning[possibly-missing-attribute] Attribute `split` may be missing on object of type `Unknown | None`
+ pyinstrument/vendor/decorator.py:165:31: error[unresolved-attribute] Attribute `split` is not defined on `None` in union `Unknown | None`

asynq (https://github.com/quora/asynq)
- asynq/async_task.py:217:24: warning[possibly-missing-attribute] Attribute `send` may be missing on object of type `Unknown | None`
+ asynq/async_task.py:217:24: error[unresolved-attribute] Attribute `send` is not defined on `None` in union `Unknown | None`
- asynq/async_task.py:221:28: warning[possibly-missing-attribute] Attribute `throw` may be missing on object of type `Unknown | None`
+ asynq/async_task.py:221:28: error[unresolved-attribute] Attribute `throw` is not defined on `None` in union `Unknown | None`
- asynq/async_task.py:223:28: warning[possibly-missing-attribute] Attribute `throw` may be missing on object of type `Unknown | None`
+ asynq/async_task.py:223:28: error[unresolved-attribute] Attribute `throw` is not defined on `None` in union `Unknown | None`
- asynq/async_task.py:241:23: warning[possibly-missing-attribute] Attribute `tb_next` may be missing on object of type `TracebackType | None`
+ asynq/async_task.py:241:23: error[unresolved-attribute] Attribute `tb_next` is not defined on `None` in union `TracebackType | None`
- asynq/async_task.py:242:26: warning[possibly-missing-attribute] Attribute `tb_next` may be missing on object of type `TracebackType | None`
+ asynq/async_task.py:242:26: error[unresolved-attribute] Attribute `tb_next` is not defined on `None` in union `TracebackType | None`
- asynq/async_task.py:243:31: warning[possibly-missing-attribute] Attribute `tb_frame` may be missing on object of type `TracebackType | None`
+ asynq/async_task.py:243:31: error[unresolved-attribute] Attribute `tb_frame` is not defined on `None` in union `TracebackType | None`
- asynq/async_task.py:318:18: warning[possibly-missing-attribute] Attribute `traceback` may be missing on object of type `(Unknown & ~None) | FutureBase[Unknown]`
+ asynq/async_task.py:318:18: error[unresolved-attribute] Attribute `traceback` is not defined on `FutureBase[Unknown]` in union `(Unknown & ~None) | FutureBase[Unknown]`

spack (https://github.com/spack/spack)
- lib/spack/spack/cmd/edit.py:171:22: warning[possibly-missing-attribute] Attribute `build_systems_path` may be missing on object of type `Repo | None`
+ lib/spack/spack/cmd/edit.py:171:22: error[unresolved-attribute] Attribute `build_systems_path` is not defined on `None` in union `Repo | None`
- lib/spack/spack/cmd/edit.py:175:69: warning[possibly-missing-attribute] Attribute `packages_path` may be missing on object of type `Repo | None`
+ lib/spack/spack/cmd/edit.py:175:69: error[unresolved-attribute] Attribute `packages_path` is not defined on `None` in union `Repo | None`
- lib/spack/spack/cmd/env.py:1052:16: warning[possibly-missing-attribute] Attribute `user_specs` may be missing on object of type `Environment | None`
+ lib/spack/spack/cmd/env.py:1052:16: error[unresolved-attribute] Attribute `user_specs` is not defined on `None` in union `Environment | None`
- lib/spack/spack/cmd/location.py:108:20: warning[possibly-missing-attribute] Attribute `path` may be missing on object of type `Environment | None`
+ lib/spack/spack/cmd/location.py:108:20: error[unresolved-attribute] Attribute `path` is not defined on `None` in union `Environment | None`
- lib/spack/spack/cmd/location.py:119:19: warning[possibly-missing-attribute] Attribute `root` may be missing on object of type `Repo | None`
+ lib/spack/spack/cmd/location.py:119:19: error[unresolved-attribute] Attribute `root` is not defined on `None` in union `Repo | None`
- lib/spack/spack/cmd/repo.py:388:22: warning[possibly-missing-attribute] Attribute `package_api` may be missing on object of type `Repo | None`
+ lib/spack/spack/cmd/repo.py:388:22: error[unresolved-attribute] Attribute `package_api` is not defined on `None` in union `Repo | None`
- lib/spack/spack/cmd/repo.py:391:24: warning[possibly-missing-attribute] Attribute `package_api` may be missing on object of type `Repo | None`
+ lib/spack/spack/cmd/repo.py:391:24: error[unresolved-attribute] Attribute `package_api` is not defined on `None` in union `Repo | None`
- lib/spack/spack/cmd/repo.py:395:39: warning[possibly-missing-attribute] Attribute `packages_path` may be missing on object of type `Repo | None`
+ lib/spack/spack/cmd/repo.py:395:39: error[unresolved-attribute] Attribute `packages_path` is not defined on `None` in union `Repo | None`
- lib/spack/spack/cmd/repo.py:395:59: warning[possibly-missing-attribute] Attribute `root` may be missing on object of type `Repo | None`
+ lib/spack/spack/cmd/repo.py:395:59: error[unresolved-attribute] Attribute `root` is not defined on `None` in union `Repo | None`
- lib/spack/spack/cmd/repo.py:408:45: warning[possibly-missing-attribute] Attribute `namespace` may be missing on object 

... (truncated 19329 lines) ...

No memory usage changes detected ✅

@carljm
Copy link
Contributor

carljm commented Feb 2, 2026

Hmm -- my assumption of how we'd fix this issue had been that we would map over the union earlier in attribute access, therefore avoiding the PossiblyUndefined error in the first place, rather than backfilling a correction after we've gotten PossiblyUndefined. But maybe there are reasons that approach doesn't work, and maybe this approach is just fine in practice.

Base automatically changed from jack/as_union_like to main February 2, 2026 20:16
@AlexWaygood AlexWaygood closed this Feb 3, 2026
@AlexWaygood AlexWaygood reopened this Feb 3, 2026
Copy link
Contributor

@carljm carljm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This clearly has a positive conformance and ecosystem impact, so I think we should go ahead with it for now. I still wonder if we may run into cases in the future that motivate us to map over unions earlier in attribute access, but landing this doesn't prevent us from doing that in future, when it's well-motivated.

@carljm
Copy link
Contributor

carljm commented Feb 3, 2026

Currently this PR has the as_union_like commit in it too -- needs to be rebased to remove that.

@oconnor663 oconnor663 force-pushed the jack/union_attribute_access branch from 07fe7bf to c32c923 Compare February 6, 2026 03:49
@oconnor663 oconnor663 force-pushed the jack/union_attribute_access branch from c32c923 to 5b344d6 Compare February 12, 2026 06:15
@oconnor663
Copy link
Contributor Author

I can't figure out another way to do this that doesn't involve more duplication than what's here, so I'm going to land this as-is.

@oconnor663 oconnor663 enabled auto-merge (rebase) February 12, 2026 06:18
@astral-sh-bot
Copy link

astral-sh-bot bot commented Feb 12, 2026

Memory usage report

Memory usage unchanged ✅

@oconnor663 oconnor663 merged commit f535f1d into main Feb 12, 2026
49 checks passed
@oconnor663 oconnor663 deleted the jack/union_attribute_access branch February 12, 2026 06:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ecosystem-analyzer ty Multi-file analysis & type inference

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bad attribute access on a union type should be an error, not a warning

3 participants