Skip to content

Expand when unimplemented abstract methods are collected - #4396

Open
rchen152 wants to merge 6 commits into
facebook:mainfrom
rchen152:export-D114166584
Open

Expand when unimplemented abstract methods are collected#4396
rchen152 wants to merge 6 commits into
facebook:mainfrom
rchen152:export-D114166584

Conversation

@rchen152

@rchen152 rchen152 commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Summary:
Fixes #2797.

Previously, we only treated a class's abstractmethod methods as unimplemented abstract methods when the class extended ABC or was a protocol. This missed some abstract methods because we can't track ABC inheritance properly in stub files. This diff adds a rule that if a class has a base with unimplemented abstract methods, the class can also collect unimplemented abstract methods. This fixes the linked issue while ensuring we don't accidentally mark concrete classes as abstract.

Differential Revision: D114166584

Summary:
When a class has multiple possible metaclasses through a `metaclass=...` declaration and/or inherited metaclasses, pyrefly grabbed the first metaclass using MRO precedence and then checked if it was legal. What the runtime actually does is look at all the possible metaclasses and choose a legal one, if one exists. This diff adjusts pyrefly's logic to match the runtime.

The error message for metaclass conflicts has also been tweaked. The new selection process doesn't always select the direct metaclass in case of a conflict, so the "is not a subclass" language sometimes misleadingly implied that a base's metaclass needed to be modified.

Finally, I modified `Metaclass::Inherited` to also store the direct `metaclass=...` declaration, so that `implicit-abstract-class` detection continues to work.

Differential Revision: D114434102
Summary:
It's pointless but perfectly legal to write `metaclass=type`.

The conformance change is because pyrefly previously accidentally passed a test due to emitting a FP on a line on which an entirely different error is expected. I believe pyrefly's behavior as of this diff is correct and the test is overly strict: I've opened python/typing#2327 to adjust the test.

Differential Revision: D114434451
Summary: Small readability improvement.

Differential Revision: D114454605
Summary:
In `calculate_abstract_members`, we had an incorrect filter that prevented us from transitively collecting unimplemented abstract methods. E.g., we recognized that `Sequence` was uninstantiable, but not that a subclass of `Sequence` was also uninstantiable. This diff removes the filter.

Removing the filter causes us to incorrectly propagate unimplemented Mapping methods to TypedDicts, because of a fake `TypedDictFallback` base that doesn't exist at runtime. We detect and ignore these methods.

There's still a bug where we only pick up one of `Sequence`'s two unimplemented abstract methods. The rest of the stack will fix this.

Differential Revision: D114462164
Summary: The only user-facing effect of this change is that the order in which methods are listed in some error messages is shuffled around. I split this out of the next diff so that its impact can be evaluated without the noise of the changing error messages.

Differential Revision: D114455661
Summary:
Fixes facebook#2797.

Previously, we only treated a class's `abstractmethod` methods as unimplemented abstract methods when the class extended ABC or was a protocol. This missed some abstract methods because we can't track ABC inheritance properly in stub files. This diff adds a rule that if a class has a base with unimplemented abstract methods, the class can also collect unimplemented abstract methods. This fixes the linked issue while ensuring we don't accidentally mark concrete classes as abstract.

Differential Revision: D114166584
@meta-codesync

meta-codesync Bot commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

@rchen152 has exported this pull request. If you are a Meta employee, you can view the originating Diff in D114166584.

@github-actions

github-actions Bot commented Aug 1, 2026

Copy link
Copy Markdown

Diff from mypy_primer, showing the effect of this PR on open source code:

black (https://github.com/psf/black)
- ERROR src/black/trans.py:1072:7-25: Class `BaseStringSplitter` has unimplemented abstract members: `do_splitter_match`, `do_transform` [implicit-abstract-class]
+ ERROR src/black/trans.py:1072:7-25: Class `BaseStringSplitter` has unimplemented abstract members: `do_transform`, `do_splitter_match` [implicit-abstract-class]

mitmproxy (https://github.com/mitmproxy/mitmproxy)
+ ERROR mitmproxy/types.py:39:7-14: Class `CutSpec` has unimplemented abstract members: `__len__`, `__getitem__` [implicit-abstract-class]
+ ERROR mitmproxy/types.py:43:7-11: Class `Data` has unimplemented abstract members: `__len__`, `__getitem__` [implicit-abstract-class]

steam.py (https://github.com/Gobot1234/steam.py)
+ ERROR steam/abc.py:437:25-119: Cannot instantiate `Inventory` because the following members are abstract: `__getitem__` [bad-instantiation]
+ ERROR steam/abc.py:544:26-56: Cannot instantiate `UserBadges` because the following members are abstract: `__getitem__` [bad-instantiation]
+ ERROR steam/app.py:471:7-19: Class `AppShopItems` has unimplemented abstract members: `__len__`, `__getitem__` [implicit-abstract-class]
+ ERROR steam/app.py:1158:28-1164:10: Cannot instantiate `AppShopItems` because the following members are abstract: `__len__`, `__getitem__` [bad-instantiation]
+ ERROR steam/badge.py:213:7-17: Class `UserBadges` has unimplemented abstract members: `__getitem__` [implicit-abstract-class]
- ERROR steam/event.py:39:7-16: Class `BaseEvent` has metaclass `ABCMeta` which is not a subclass of metaclass `_ProtocolMeta` from base class `Commentable` [invalid-inheritance]
+ ERROR steam/ext/commands/converters.py:490:7-13: Final class `Greedy` cannot have unimplemented abstract members: `__len__`, `__getitem__` [bad-class-definition]
+ ERROR steam/ext/csgo/backpack.py:458:7-15: Class `Backpack` has unimplemented abstract members: `__getitem__` [implicit-abstract-class]
+ ERROR steam/ext/tf2/backpack.py:350:7-15: Class `Backpack` has unimplemented abstract members: `__getitem__` [implicit-abstract-class]
+ ERROR steam/trade.py:202:7-16: Class `Inventory` has unimplemented abstract members: `__getitem__` [implicit-abstract-class]
+ ERROR steam/user.py:371:29-81: Cannot instantiate `Inventory` because the following members are abstract: `__getitem__` [bad-instantiation]
- ERROR steam/utils.py:457:7-15: Metaclass of `StructIO` has type `type[Any]` that is not a simple class type [invalid-inheritance]

rotki (https://github.com/rotki/rotki)
- ERROR rotkehlchen/chain/evm/decoding/aave/common.py:46:7-28: Class `Commonv2v3LikeDecoder` has unimplemented abstract members: `decode_liquidation`, `counterparties` [implicit-abstract-class]
+ ERROR rotkehlchen/chain/evm/decoding/aave/common.py:46:7-28: Class `Commonv2v3LikeDecoder` has unimplemented abstract members: `counterparties`, `decode_liquidation` [implicit-abstract-class]
- ERROR rotkehlchen/chain/manager.py:26:7-35: Class `ChainManagerWithTransactions` has unimplemented abstract members: `query_transactions`, `query_balances` [implicit-abstract-class]
+ ERROR rotkehlchen/chain/manager.py:26:7-35: Class `ChainManagerWithTransactions` has unimplemented abstract members: `query_balances`, `query_transactions` [implicit-abstract-class]
- ERROR rotkehlchen/history/events/structures/onchain_event.py:40:7-19: Class `OnchainEvent` has unimplemented abstract members: `_calculate_group_identifier`, `_serialize_tx_ref_for_db`, `_deserialize_tx_ref`, `deserialize_address`, `entry_type` [implicit-abstract-class]
+ ERROR rotkehlchen/history/events/structures/onchain_event.py:40:7-19: Class `OnchainEvent` has unimplemented abstract members: `entry_type`, `_calculate_group_identifier`, `_serialize_tx_ref_for_db`, `_deserialize_tx_ref`, `deserialize_address` [implicit-abstract-class]
- ERROR rotkehlchen/tasks/historical_balances.py:707:47-720:14: Cannot instantiate `OnchainEvent` because the following members are abstract: `_calculate_group_identifier`, `_serialize_tx_ref_for_db`, `_deserialize_tx_ref`, `deserialize_address`, `entry_type` [bad-instantiation]
+ ERROR rotkehlchen/tasks/historical_balances.py:707:47-720:14: Cannot instantiate `OnchainEvent` because the following members are abstract: `entry_type`, `_calculate_group_identifier`, `_serialize_tx_ref_for_db`, `_deserialize_tx_ref`, `deserialize_address` [bad-instantiation]
- ERROR rotkehlchen/utils/mixins/enums.py:52:7-18: Class `DBEnumMixIn` has unimplemented abstract members: `serialize_for_db`, `deserialize_from_db`, `__str__`, `serialize`, `deserialize` [implicit-abstract-class]
+ ERROR rotkehlchen/utils/mixins/enums.py:52:7-18: Class `DBEnumMixIn` has unimplemented abstract members: `__str__`, `serialize`, `deserialize`, `serialize_for_db`, `deserialize_from_db` [implicit-abstract-class]

cryptography (https://github.com/pyca/cryptography)
- ERROR src/cryptography/hazmat/primitives/_cipheralgorithm.py:38:7-27: Class `BlockCipherAlgorithm` has unimplemented abstract members: `block_size`, `name`, `key_sizes`, `key_size` [implicit-abstract-class]
+ ERROR src/cryptography/hazmat/primitives/_cipheralgorithm.py:38:7-27: Class `BlockCipherAlgorithm` has unimplemented abstract members: `name`, `key_sizes`, `key_size`, `block_size` [implicit-abstract-class]

scikit-learn (https://github.com/scikit-learn/scikit-learn)
- ERROR sklearn/ensemble/_voting.py:48:7-18: Class `_BaseVoting` has unimplemented abstract members: `fit`, `__init__` [implicit-abstract-class]
+ ERROR sklearn/ensemble/_voting.py:48:7-18: Class `_BaseVoting` has unimplemented abstract members: `__init__`, `fit` [implicit-abstract-class]
- ERROR sklearn/naive_bayes.py:552:7-22: Class `_BaseDiscreteNB` has unimplemented abstract members: `_count`, `_update_feature_log_prob`, `_joint_log_likelihood` [implicit-abstract-class]
+ ERROR sklearn/naive_bayes.py:552:7-22: Class `_BaseDiscreteNB` has unimplemented abstract members: `_joint_log_likelihood`, `_count`, `_update_feature_log_prob` [implicit-abstract-class]
- ERROR sklearn/utils/_param_validation.py:236:7-17: Class `RealNotInt` has unimplemented abstract members: `__float__`, `__trunc__`, `__floor__`, `__ceil__`, `__round__`, `__floordiv__`, `__rfloordiv__`, `__mod__`, `__rmod__`, `__lt__`, `__le__`, `__pos__`, `__neg__`, `__add__`, `__radd__`, `__mul__`, `__rmul__`, `__truediv__`, `__rtruediv__`, `__pow__`, `__rpow__`, `__abs__`, `__eq__` [implicit-abstract-class]
+ ERROR sklearn/utils/_param_validation.py:236:7-17: Class `RealNotInt` has unimplemented abstract members: `__add__`, `__radd__`, `__neg__`, `__pos__`, `__mul__`, `__rmul__`, `__truediv__`, `__rtruediv__`, `__pow__`, `__rpow__`, `__abs__`, `__eq__`, `__float__`, `__trunc__`, `__floor__`, `__ceil__`, `__round__`, `__floordiv__`, `__rfloordiv__`, `__mod__`, `__rmod__`, `__lt__`, `__le__` [implicit-abstract-class]

freqtrade (https://github.com/freqtrade/freqtrade)
- ERROR freqtrade/freqai/base_models/BasePyTorchClassifier.py:20:7-28: Class `BasePyTorchClassifier` has unimplemented abstract members: `data_convertor`, `fit` [implicit-abstract-class]
+ ERROR freqtrade/freqai/base_models/BasePyTorchClassifier.py:20:7-28: Class `BasePyTorchClassifier` has unimplemented abstract members: `fit`, `data_convertor` [implicit-abstract-class]
- ERROR freqtrade/freqai/base_models/BasePyTorchRegressor.py:16:7-27: Class `BasePyTorchRegressor` has unimplemented abstract members: `data_convertor`, `fit` [implicit-abstract-class]
+ ERROR freqtrade/freqai/base_models/BasePyTorchRegressor.py:16:7-27: Class `BasePyTorchRegressor` has unimplemented abstract members: `fit`, `data_convertor` [implicit-abstract-class]

bidict (https://github.com/jab/bidict)
+ ERROR bidict/_abc.py:28:7-27: Class `BidirectionalMapping` has unimplemented abstract members: `__iter__`, `__len__`, `__getitem__`, `inverse` [implicit-abstract-class]
+ ERROR bidict/_abc.py:72:7-34: Class `MutableBidirectionalMapping` has unimplemented abstract members: `__iter__`, `__len__`, `__getitem__`, `inverse`, `__setitem__`, `__delitem__` [implicit-abstract-class]

mongo-python-driver (https://github.com/mongodb/mongo-python-driver)
- ERROR pymongo/asynchronous/cursor_base.py:72:7-23: Class `_AsyncCursorBase` has unimplemented abstract members: `_next_batch`, `_unpack_response`, `_get_namespace` [implicit-abstract-class]
+ ERROR pymongo/asynchronous/cursor_base.py:72:7-23: Class `_AsyncCursorBase` has unimplemented abstract members: `_get_namespace`, `_next_batch`, `_unpack_response` [implicit-abstract-class]
- ERROR pymongo/synchronous/cursor_base.py:72:7-18: Class `_CursorBase` has unimplemented abstract members: `_next_batch`, `_unpack_response`, `_get_namespace` [implicit-abstract-class]
+ ERROR pymongo/synchronous/cursor_base.py:72:7-18: Class `_CursorBase` has unimplemented abstract members: `_get_namespace`, `_next_batch`, `_unpack_response` [implicit-abstract-class]

schemathesis (https://github.com/schemathesis/schemathesis)
+ ERROR src/schemathesis/specs/openapi/types/v3.py:49:7-16: Class `Responses` has unimplemented abstract members: `__iter__`, `__len__`, `__getitem__` [implicit-abstract-class]
+ ERROR src/schemathesis/specs/openapi/types/v3.py:56:7-14: Class `Headers` has unimplemented abstract members: `__iter__`, `__len__`, `__getitem__` [implicit-abstract-class]

beartype (https://github.com/beartype/beartype)
- ERROR beartype/typing/_typingpep544.py:467:7-15: Class `Protocol` has metaclass `_CachingProtocolMeta` which is not a subclass of metaclass `_ProtocolMeta` from base class `Protocol` [invalid-inheritance]
+ ERROR beartype/typing/_typingpep544.py:467:7-15: Class `Protocol` has metaclass `_CachingProtocolMeta` which is not compatible with metaclass `_ProtocolMeta` from base class `Protocol` [invalid-inheritance]

ibis (https://github.com/ibis-project/ibis)
- ERROR ibis/backends/__init__.py:738:7-23: Class `CanCreateCatalog` has unimplemented abstract members: `create_catalog`, `drop_catalog`, `list_catalogs` [implicit-abstract-class]
+ ERROR ibis/backends/__init__.py:738:7-23: Class `CanCreateCatalog` has unimplemented abstract members: `list_catalogs`, `create_catalog`, `drop_catalog` [implicit-abstract-class]
- ERROR ibis/backends/__init__.py:830:7-24: Class `CanCreateDatabase` has unimplemented abstract members: `create_database`, `drop_database`, `list_databases` [implicit-abstract-class]
+ ERROR ibis/backends/__init__.py:830:7-24: Class `CanCreateDatabase` has unimplemented abstract members: `list_databases`, `create_database`, `drop_database` [implicit-abstract-class]
- ERROR ibis/backends/sql/__init__.py:29:7-17: Class `SQLBackend` has unimplemented abstract members: `_get_schema_using_query`, `list_tables`, `version`, `_register_in_memory_table`, `create_table` [implicit-abstract-class]
+ ERROR ibis/backends/sql/__init__.py:29:7-17: Class `SQLBackend` has unimplemented abstract members: `list_tables`, `version`, `_register_in_memory_table`, `create_table`, `_get_schema_using_query` [implicit-abstract-class]
- ERROR ibis/backends/tests/base.py:336:7-25: Class `ServiceBackendTest` has unimplemented abstract members: `test_files`, `deps`, `connect` [implicit-abstract-class]
+ ERROR ibis/backends/tests/base.py:336:7-25: Class `ServiceBackendTest` has unimplemented abstract members: `deps`, `connect`, `test_files` [implicit-abstract-class]

aiohttp (https://github.com/aio-libs/aiohttp)
- ERROR aiohttp/abc.py:154:7-24: Class `AbstractCookieJar` has unimplemented abstract members: `unsafe`, `quote_cookie`, `cookies`, `host_only_cookies`, `clear`, `clear_domain`, `update_cookies`, `filter_cookies`, `__len__`, `__iter__` [implicit-abstract-class]
+ ERROR aiohttp/abc.py:154:7-24: Class `AbstractCookieJar` has unimplemented abstract members: `__len__`, `__iter__`, `unsafe`, `quote_cookie`, `cookies`, `host_only_cookies`, `clear`, `clear_domain`, `update_cookies`, `filter_cookies` [implicit-abstract-class]
- ERROR aiohttp/web_urldispatcher.py:101:7-23: Class `AbstractResource` has unimplemented abstract members: `canonical`, `url_for`, `resolve`, `add_prefix`, `get_info`, `raw_match`, `__len__`, `__iter__` [implicit-abstract-class]
+ ERROR aiohttp/web_urldispatcher.py:101:7-23: Class `AbstractResource` has unimplemented abstract members: `__len__`, `__iter__`, `canonical`, `url_for`, `resolve`, `add_prefix`, `get_info`, `raw_match` [implicit-abstract-class]
- ERROR aiohttp/web_urldispatcher.py:308:7-15: Class `Resource` has unimplemented abstract members: `_match`, `canonical`, `url_for`, `add_prefix`, `get_info`, `raw_match` [implicit-abstract-class]
+ ERROR aiohttp/web_urldispatcher.py:308:7-15: Class `Resource` has unimplemented abstract members: `canonical`, `url_for`, `add_prefix`, `get_info`, `raw_match`, `_match` [implicit-abstract-class]
- ERROR aiohttp/web_urldispatcher.py:475:7-21: Class `PrefixResource` has unimplemented abstract members: `url_for`, `resolve`, `get_info`, `__len__`, `__iter__` [implicit-abstract-class]
+ ERROR aiohttp/web_urldispatcher.py:475:7-21: Class `PrefixResource` has unimplemented abstract members: `__len__`, `__iter__`, `url_for`, `resolve`, `get_info` [implicit-abstract-class]

anyio (https://github.com/agronholm/anyio)
- ERROR src/anyio/abc/_sockets.py:178:7-19: Class `SocketStream` has unimplemented abstract members: `send_eof`, `receive`, `aclose`, `send` [implicit-abstract-class]
+ ERROR src/anyio/abc/_sockets.py:178:7-19: Class `SocketStream` has unimplemented abstract members: `aclose`, `receive`, `send`, `send_eof` [implicit-abstract-class]
- ERROR src/anyio/abc/_sockets.py:201:7-23: Class `UNIXSocketStream` has unimplemented abstract members: `send_fds`, `receive_fds`, `send_eof`, `receive`, `aclose`, `send` [implicit-abstract-class]
+ ERROR src/anyio/abc/_sockets.py:201:7-23: Class `UNIXSocketStream` has unimplemented abstract members: `aclose`, `receive`, `send`, `send_eof`, `send_fds`, `receive_fds` [implicit-abstract-class]
- ERROR src/anyio/abc/_sockets.py:240:7-21: Class `SocketListener` has unimplemented abstract members: `accept`, `aclose` [implicit-abstract-class]
+ ERROR src/anyio/abc/_sockets.py:240:7-21: Class `SocketListener` has unimplemented abstract members: `aclose`, `accept` [implicit-abstract-class]
- ERROR src/anyio/abc/_sockets.py:284:7-16: Class `UDPSocket` has unimplemented abstract members: `receive`, `aclose`, `send` [implicit-abstract-class]
+ ERROR src/anyio/abc/_sockets.py:284:7-16: Class `UDPSocket` has unimplemented abstract members: `aclose`, `receive`, `send` [implicit-abstract-class]
- ERROR src/anyio/abc/_sockets.py:314:7-25: Class `ConnectedUDPSocket` has unimplemented abstract members: `receive`, `aclose`, `send` [implicit-abstract-class]
+ ERROR src/anyio/abc/_sockets.py:314:7-25: Class `ConnectedUDPSocket` has unimplemented abstract members: `aclose`, `receive`, `send` [implicit-abstract-class]
- ERROR src/anyio/abc/_sockets.py:341:7-25: Class `UNIXDatagramSocket` has unimplemented abstract members: `receive`, `aclose`, `send` [implicit-abstract-class]
+ ERROR src/anyio/abc/_sockets.py:341:7-25: Class `UNIXDatagramSocket` has unimplemented abstract members: `aclose`, `receive`, `send` [implicit-abstract-class]
- ERROR src/anyio/abc/_sockets.py:373:7-34: Class `ConnectedUNIXDatagramSocket` has unimplemented abstract members: `receive`, `aclose`, `send` [implicit-abstract-class]
+ ERROR src/anyio/abc/_sockets.py:373:7-34: Class `ConnectedUNIXDatagramSocket` has unimplemented abstract members: `aclose`, `receive`, `send` [implicit-abstract-class]
- ERROR src/anyio/abc/_streams.py:17:7-36: Class `UnreliableObjectReceiveStream` has unimplemented abstract members: `receive`, `aclose` [implicit-abstract-class]
+ ERROR src/anyio/abc/_streams.py:17:7-36: Class `UnreliableObjectReceiveStream` has unimplemented abstract members: `aclose`, `receive` [implicit-abstract-class]
- ERROR src/anyio/abc/_streams.py:52:7-33: Class `UnreliableObjectSendStream` has unimplemented abstract members: `send`, `aclose` [implicit-abstract-class]
+ ERROR src/anyio/abc/_streams.py:52:7-33: Class `UnreliableObjectSendStream` has unimplemented abstract members: `aclose`, `send` [implicit-abstract-class]
- ERROR src/anyio/abc/_streams.py:75:7-29: Class `UnreliableObjectStream` has unimplemented abstract members: `receive`, `aclose`, `send` [implicit-abstract-class]
+ ERROR src/anyio/abc/_streams.py:75:7-29: Class `UnreliableObjectStream` has unimplemented abstract members: `aclose`, `receive`, `send` [implicit-abstract-class]
- ERROR src/anyio/abc/_streams.py:84:7-26: Class `ObjectReceiveStream` has unimplemented abstract members: `receive`, `aclose` [implicit-abstract-class]
+ ERROR src/anyio/abc/_streams.py:84:7-26: Class `ObjectReceiveStream` has unimplemented abstract members: `aclose`, `receive` [implicit-abstract-class]
- ERROR src/anyio/abc/_streams.py:91:7-23: Class `ObjectSendStream` has unimplemented abstract members: `send`, `aclose` [implicit-abstract-class]
+ ERROR src/anyio/abc/_streams.py:91:7-23: Class `ObjectSendStream` has unimplemented abstract members: `aclose`, `send` [implicit-abstract-class]
- ERROR src/anyio/abc/_streams.py:98:7-19: Class `ObjectStream` has unimplemented abstract members: `send_eof`, `receive`, `aclose`, `send` [implicit-abstract-class]
+ ERROR src/anyio/abc/_streams.py:98:7-19: Class `ObjectStream` has unimplemented abstract members: `aclose`, `receive`, `send`, `send_eof` [implicit-abstract-class]
- ERROR src/anyio/abc/_streams.py:118:7-24: Class `ByteReceiveStream` has unimplemented abstract members: `receive`, `aclose` [implicit-abstract-class]
+ ERROR src/anyio/abc/_streams.py:118:7-24: Class `ByteReceiveStream` has unimplemented abstract members: `aclose`, `receive` [implicit-abstract-class]
- ERROR src/anyio/abc/_streams.py:151:7-21: Class `ByteSendStream` has unimplemented abstract members: `send`, `aclose` [implicit-abstract-class]
+ ERROR src/anyio/abc/_streams.py:151:7-21: Class `ByteSendStream` has unimplemented abstract members: `aclose`, `send` [implicit-abstract-class]
- ERROR src/anyio/abc/_streams.py:163:7-17: Class `ByteStream` has unimplemented abstract members: `send_eof`, `receive`, `aclose`, `send` [implicit-abstract-class]
+ ERROR src/anyio/abc/_streams.py:163:7-17: Class `ByteStream` has unimplemented abstract members: `aclose`, `receive`, `send`, `send_eof` [implicit-abstract-class]
- ERROR src/anyio/abc/_streams.py:194:7-15: Class `Listener` has unimplemented abstract members: `serve`, `aclose` [implicit-abstract-class]
+ ERROR src/anyio/abc/_streams.py:194:7-15: Class `Listener` has unimplemented abstract members: `aclose`, `serve` [implicit-abstract-class]
- ERROR src/anyio/abc/_subprocesses.py:10:7-14: Class `Process` has unimplemented abstract members: `wait`, `terminate`, `kill`, `send_signal`, `pid`, `returncode`, `stdin`, `stdout`, `stderr`, `aclose` [implicit-abstract-class]
+ ERROR src/anyio/abc/_subprocesses.py:10:7-14: Class `Process` has unimplemented abstract members: `aclose`, `wait`, `terminate`, `kill`, `send_signal`, `pid`, `returncode`, `stdin`, `stdout`, `stderr` [implicit-abstract-class]

Tanjun (https://github.com/FasterSpeeding/Tanjun)
- ERROR tanjun/abc.py:265:7-14: Class `Context` has unimplemented abstract members: `author`, `channel_id`, `cache`, `client`, `component`, `command`, `created_at`, `events`, `guild_id`, `has_responded`, `is_human`, `member`, `server`, `rest`, `shard`, `shards`, `voice`, `triggering_name`, `set_component`, `fetch_channel`, `fetch_guild`, `get_channel`, `get_guild`, `delete_initial_response`, `delete_last_response`, `edit_initial_response`, `edit_last_response`, `fetch_initial_response`, `fetch_last_response`, `respond`, `injection_client`, `get_type_dependency` [implicit-abstract-class]
+ ERROR tanjun/abc.py:265:7-14: Class `Context` has unimplemented abstract members: `injection_client`, `get_type_dependency`, `author`, `channel_id`, `cache`, `client`, `component`, `command`, `created_at`, `events`, `guild_id`, `has_responded`, `is_human`, `member`, `server`, `rest`, `shard`, `shards`, `voice`, `triggering_name`, `set_component`, `fetch_channel`, `fetch_guild`, `get_channel`, `get_guild`, `delete_initial_response`, `delete_last_response`, `edit_initial_response`, `edit_last_response`, `fetch_initial_response`, `fetch_last_response`, `respond` [implicit-abstract-class]
- ERROR tanjun/abc.py:1823:7-26: Class `AutocompleteContext` has unimplemented abstract members: `author`, `channel_id`, `cache`, `client`, `created_at`, `events`, `focused`, `guild_id`, `member`, `server`, `rest`, `shard`, `shards`, `voice`, `has_responded`, `interaction`, `options`, `triggering_name`, `fetch_channel`, `fetch_guild`, `get_channel`, `get_guild`, `set_choices`, `injection_client`, `get_type_dependency` [implicit-abstract-class]
+ ERROR tanjun/abc.py:1823:7-26: Class `AutocompleteContext` has unimplemented abstract members: `injection_client`, `get_type_dependency`, `author`, `channel_id`, `cache`, `client`, `created_at`, `events`, `focused`, `guild_id`, `member`, `server`, `rest`, `shard`, `shards`, `voice`, `has_responded`, `interaction`, `options`, `triggering_name`, `fetch_channel`, `fetch_guild`, `get_channel`, `get_guild`, `set_choices` [implicit-abstract-class]
- ERROR tanjun/abc.py:2578:7-17: Class `AppCommand` has unimplemented abstract members: `default_member_permissions`, `defaults_to_ephemeral`, `is_dm_enabled`, `is_global`, `name`, `tracked_command`, `tracked_command_id`, `type`, `build`, `check_context`, `execute`, `set_tracked_command`, `checks`, `component`, `hooks`, `metadata`, `bind_client`, `bind_component`, `copy`, `set_hooks`, `add_check`, `remove_check`, `set_metadata` [implicit-abstract-class]
+ ERROR tanjun/abc.py:2578:7-17: Class `AppCommand` has unimplemented abstract members: `checks`, `component`, `hooks`, `metadata`, `bind_client`, `bind_component`, `copy`, `set_hooks`, `add_check`, `remove_check`, `set_metadata`, `default_member_permissions`, `defaults_to_ephemeral`, `is_dm_enabled`, `is_global`, `name`, `tracked_command`, `tracked_command_id`, `type`, `build`, `check_context`, `execute`, `set_tracked_command` [implicit-abstract-class]
- ERROR tanjun/abc.py:2808:7-18: Class `MenuCommand` has unimplemented abstract members: `callback`, `type`, `tracked_command`, `build`, `default_member_permissions`, `defaults_to_ephemeral`, `is_dm_enabled`, `is_global`, `name`, `tracked_command_id`, `check_context`, `execute`, `set_tracked_command`, `checks`, `component`, `hooks`, `metadata`, `bind_client`, `bind_component`, `copy`, `set_hooks`, `add_check`, `remove_check`, `set_metadata` [implicit-abstract-class]
+ ERROR tanjun/abc.py:2808:7-18: Class `MenuCommand` has unimplemented abstract members: `checks`, `component`, `hooks`, `metadata`, `bind_client`, `bind_component`, `copy`, `set_hooks`, `add_check`, `remove_check`, `set_metadata`, `default_member_permissions`, `defaults_to_ephemeral`, `is_dm_enabled`, `is_global`, `name`, `tracked_command`, `tracked_command_id`, `type`, `build`, `check_context`, `execute`, `set_tracked_command`, `callback` [implicit-abstract-class]
- ERROR tanjun/dependencies/async_cache.py:109:7-20: Class `CacheIterator` has unimplemented abstract members: `len`, `__anext__` [implicit-abstract-class]
+ ERROR tanjun/dependencies/async_cache.py:109:7-20: Class `CacheIterator` has unimplemented abstract members: `__anext__`, `len` [implicit-abstract-class]
- ERROR tanjun/parsing.py:441:7-21: Class `AbstractParser` has unimplemented abstract members: `arguments`, `options`, `add_argument`, `add_option`, `bind_client`, `bind_component`, `copy`, `parse`, `validate_arg_keys` [implicit-abstract-class]
+ ERROR tanjun/parsing.py:441:7-21: Class `AbstractParser` has unimplemented abstract members: `bind_client`, `bind_component`, `copy`, `parse`, `validate_arg_keys`, `arguments`, `options`, `add_argument`, `add_option` [implicit-abstract-class]

ignite (https://github.com/pytorch/ignite)
- ERROR ignite/contrib/metrics/regression/_base.py:42:7-22: Class `_BaseRegression` has unimplemented abstract members: `_update`, `reset`, `compute` [implicit-abstract-class]
+ ERROR ignite/contrib/metrics/regression/_base.py:42:7-22: Class `_BaseRegression` has unimplemented abstract members: `reset`, `compute`, `_update` [implicit-abstract-class]
- ERROR ignite/metrics/regression/_base.py:45:7-22: Class `_BaseRegression` has unimplemented abstract members: `_update`, `reset`, `compute` [implicit-abstract-class]
+ ERROR ignite/metrics/regression/_base.py:45:7-22: Class `_BaseRegression` has unimplemented abstract members: `reset`, `compute`, `_update` [implicit-abstract-class]

hydpy (https://github.com/hydpy-dev/hydpy)
- ERROR hydpy/core/sequencetools.py:1342:7-17: Class `IOSequence` has unimplemented abstract members: `descr_sequence`, `descr_device`, `NDIM` [implicit-abstract-class]
+ ERROR hydpy/core/sequencetools.py:1342:7-17: Class `IOSequence` has unimplemented abstract members: `NDIM`, `descr_sequence`, `descr_device` [implicit-abstract-class]

dd-trace-py (https://github.com/DataDog/dd-trace-py)
- ERROR ddtrace/llmobs/_integrations/base_stream_handler.py:76:7-20: Class `StreamHandler` has unimplemented abstract members: `process_chunk`, `finalize_stream` [implicit-abstract-class]
+ ERROR ddtrace/llmobs/_integrations/base_stream_handler.py:76:7-20: Class `StreamHandler` has unimplemented abstract members: `finalize_stream`, `process_chunk` [implicit-abstract-class]
- ERROR ddtrace/llmobs/_integrations/base_stream_handler.py:103:7-25: Class `AsyncStreamHandler` has unimplemented abstract members: `process_chunk`, `finalize_stream` [implicit-abstract-class]
+ ERROR ddtrace/llmobs/_integrations/base_stream_handler.py:103:7-25: Class `AsyncStreamHandler` has unimplemented abstract members: `finalize_stream`, `process_chunk` [implicit-abstract-class]

pandas (https://github.com/pandas-dev/pandas)
- ERROR pandas/io/formats/info.py:583:7-32: Class `_TableBuilderVerboseMixin` has unimplemented abstract members: `headers`, `_gen_rows_with_counts`, `_gen_rows_without_counts`, `get_lines` [implicit-abstract-class]
+ ERROR pandas/io/formats/info.py:583:7-32: Class `_TableBuilderVerboseMixin` has unimplemented abstract members: `get_lines`, `headers`, `_gen_rows_with_counts`, `_gen_rows_without_counts` [implicit-abstract-class]

mypy (https://github.com/python/mypy)
- ERROR mypy/typeshed/stdlib/importlib/abc.pyi:49:7-22: Class `ExecutionLoader` has unimplemented abstract members: `get_filename`, `get_source` [implicit-abstract-class]
+ ERROR mypy/typeshed/stdlib/importlib/abc.pyi:49:7-22: Class `ExecutionLoader` has unimplemented abstract members: `get_source`, `get_filename` [implicit-abstract-class]
- ERROR mypy/typeshed/stdlib/numbers.pyi:113:7-11: Class `Real` has unimplemented abstract members: `__float__`, `__trunc__`, `__floor__`, `__ceil__`, `__round__`, `__floordiv__`, `__rfloordiv__`, `__mod__`, `__rmod__`, `__lt__`, `__le__`, `__pos__`, `__neg__`, `__add__`, `__radd__`, `__mul__`, `__rmul__`, `__truediv__`, `__rtruediv__`, `__pow__`, `__rpow__`, `__abs__`, `__eq__` [implicit-abstract-class]
+ ERROR mypy/typeshed/stdlib/numbers.pyi:113:7-11: Class `Real` has unimplemented abstract members: `__add__`, `__radd__`, `__neg__`, `__pos__`, `__mul__`, `__rmul__`, `__truediv__`, `__rtruediv__`, `__pow__`, `__rpow__`, `__abs__`, `__eq__`, `__float__`, `__trunc__`, `__floor__`, `__ceil__`, `__round__`, `__floordiv__`, `__rfloordiv__`, `__mod__`, `__rmod__`, `__lt__`, `__le__` [implicit-abstract-class]
- ERROR mypy/typeshed/stdlib/numbers.pyi:160:7-15: Class `Rational` has unimplemented abstract members: `numerator`, `denominator`, `__trunc__`, `__floor__`, `__ceil__`, `__round__`, `__floordiv__`, `__rfloordiv__`, `__mod__`, `__rmod__`, `__lt__`, `__le__`, `__pos__`, `__neg__`, `__add__`, `__radd__`, `__mul__`, `__rmul__`, `__truediv__`, `__rtruediv__`, `__pow__`, `__rpow__`, `__abs__`, `__eq__` [implicit-abstract-class]
+ ERROR mypy/typeshed/stdlib/numbers.pyi:160:7-15: Class `Rational` has unimplemented abstract members: `__add__`, `__radd__`, `__neg__`, `__pos__`, `__mul__`, `__rmul__`, `__truediv__`, `__rtruediv__`, `__pow__`, `__rpow__`, `__abs__`, `__eq__`, `__trunc__`, `__floor__`, `__ceil__`, `__round__`, `__floordiv__`, `__rfloordiv__`, `__mod__`, `__rmod__`, `__lt__`, `__le__`, `numerator`, `denominator` [implicit-abstract-class]
- ERROR mypy/typeshed/stdlib/numbers.pyi:172:7-15: Class `Integral` has unimplemented abstract members: `__int__`, `__pow__`, `__lshift__`, `__rlshift__`, `__rshift__`, `__rrshift__`, `__and__`, `__rand__`, `__xor__`, `__rxor__`, `__or__`, `__ror__`, `__invert__`, `__pos__`, `__neg__`, `__abs__`, `__round__`, `__trunc__`, `__floor__`, `__ceil__`, `__floordiv__`, `__rfloordiv__`, `__mod__`, `__rmod__`, `__lt__`, `__le__`, `__add__`, `__radd__`, `__mul__`, `__rmul__`, `__truediv__`, `__rtruediv__`, `__rpow__`, `__eq__` [implicit-abstract-class]
+ ERROR mypy/typeshed/stdlib/numbers.pyi:172:7-15: Class `Integral` has unimplemented abstract members: `__add__`, `__radd__`, `__neg__`, `__pos__`, `__mul__`, `__rmul__`, `__truediv__`, `__rtruediv__`, `__pow__`, `__rpow__`, `__abs__`, `__eq__`, `__trunc__`, `__floor__`, `__ceil__`, `__round__`, `__floordiv__`, `__rfloordiv__`, `__mod__`, `__rmod__`, `__lt__`, `__le__`, `__int__`, `__lshift__`, `__rlshift__`, `__rshift__`, `__rrshift__`, `__and__`, `__rand__`, `__xor__`, `__rxor__`, `__or__`, `__ror__`, `__invert__` [implicit-abstract-class]

core (https://github.com/home-assistant/core)
- ERROR homeassistant/components/backup/agent.py:100:7-23: Class `LocalBackupAgent` has unimplemented abstract members: `get_backup_path`, `get_new_backup_path`, `async_download_backup`, `async_upload_backup`, `async_delete_backup`, `async_list_backups`, `async_get_backup` [implicit-abstract-class]
+ ERROR homeassistant/components/backup/agent.py:100:7-23: Class `LocalBackupAgent` has unimplemented abstract members: `async_download_backup`, `async_upload_backup`, `async_delete_backup`, `async_list_backups`, `async_get_backup`, `get_backup_path`, `get_new_backup_path` [implicit-abstract-class]
- ERROR homeassistant/components/homeassistant_hardware/firmware_config_flow.py:638:7-29: Class `BaseFirmwareConfigFlow` has unimplemented abstract members: `async_get_options_flow`, `_async_flow_finished` [implicit-abstract-class]
+ ERROR homeassistant/components/homeassistant_hardware/firmware_config_flow.py:638:7-29: Class `BaseFirmwareConfigFlow` has unimplemented abstract members: `_async_flow_finished`, `async_get_options_flow` [implicit-abstract-class]
- ERROR homeassistant/components/recorder/migration.py:2863:7-29: Class `BaseMigrationWithQuery` has unimplemented abstract members: `needs_migrate_query`, `migrate_data`, `migrate_data_impl` [implicit-abstract-class]
+ ERROR homeassistant/components/recorder/migration.py:2863:7-29: Class `BaseMigrationWithQuery` has unimplemented abstract members: `migrate_data`, `migrate_data_impl`, `needs_migrate_query` [implicit-abstract-class]
- ERROR homeassistant/components/samsungtv/bridge.py:411:7-28: Class `SamsungTVWSBaseBridge` has unimplemented abstract members: `_async_get_remote_under_lock`, `async_try_connect`, `async_device_info`, `async_send_keys`, `_async_send_power_off` [implicit-abstract-class]
+ ERROR homeassistant/components/samsungtv/bridge.py:411:7-28: Class `SamsungTVWSBaseBridge` has unimplemented abstract members: `async_try_connect`, `async_device_info`, `async_send_keys`, `_async_send_power_off`, `_async_get_remote_under_lock` [implicit-abstract-class]
- ERROR homeassistant/components/template/binary_sensor.py:123:7-35: Class `AbstractTemplateBinarySensor` has unimplemented abstract members: `_update_state`, `referenced_blueprint`, `_render_script_variables`, `setup_state_template`, `setup_template`, `restore_attribute` [implicit-abstract-class]
+ ERROR homeassistant/components/template/binary_sensor.py:123:7-35: Class `AbstractTemplateBinarySensor` has unimplemented abstract members: `referenced_blueprint`, `_render_script_variables`, `setup_state_template`, `setup_template`, `restore_attribute`, `_update_state` [implicit-abstract-class]
- ERROR homeassistant/helpers/condition.py:400:7-16: Class `Condition` has unimplemented abstract members: `async_validate_config`, `_async_check` [implicit-abstract-class]
+ ERROR homeassistant/helpers/condition.py:400:7-16: Class `Condition` has unimplemented abstract members: `_async_check`, `async_validate_config` [implicit-abstract-class]

trio (https://github.com/python-trio/trio)
- ERROR src/trio/_abc.py:312:7-17: Class `SendStream` has unimplemented abstract members: `send_all`, `wait_send_all_might_not_block`, `aclose` [implicit-abstract-class]
+ ERROR src/trio/_abc.py:312:7-17: Class `SendStream` has unimplemented abstract members: `aclose`, `send_all`, `wait_send_all_might_not_block` [implicit-abstract-class]
- ERROR src/trio/_abc.py:413:7-20: Class `ReceiveStream` has unimplemented abstract members: `receive_some`, `aclose` [implicit-abstract-class]
+ ERROR src/trio/_abc.py:413:7-20: Class `ReceiveStream` has unimplemented abstract members: `aclose`, `receive_some` [implicit-abstract-class]
- ERROR src/trio/_abc.py:475:7-13: Class `Stream` has unimplemented abstract members: `send_all`, `wait_send_all_might_not_block`, `aclose`, `receive_some` [implicit-abstract-class]
+ ERROR src/trio/_abc.py:475:7-13: Class `Stream` has unimplemented abstract members: `aclose`, `send_all`, `wait_send_all_might_not_block`, `receive_some` [implicit-abstract-class]
- ERROR src/trio/_abc.py:489:7-26: Class `HalfCloseableStream` has unimplemented abstract members: `send_eof`, `send_all`, `wait_send_all_might_not_block`, `aclose`, `receive_some` [implicit-abstract-class]
+ ERROR src/trio/_abc.py:489:7-26: Class `HalfCloseableStream` has unimplemented abstract members: `aclose`, `send_all`, `wait_send_all_might_not_block`, `receive_some`, `send_eof` [implicit-abstract-class]
- ERROR src/trio/_abc.py:565:7-15: Class `Listener` has unimplemented abstract members: `accept`, `aclose` [implicit-abstract-class]
+ ERROR src/trio/_abc.py:565:7-15: Class `Listener` has unimplemented abstract members: `aclose`, `accept` [implicit-abstract-class]
- ERROR src/trio/_abc.py:604:7-18: Class `SendChannel` has unimplemented abstract members: `send`, `aclose` [implicit-abstract-class]
+ ERROR src/trio/_abc.py:604:7-18: Class `SendChannel` has unimplemented abstract members: `aclose`, `send` [implicit-abstract-class]
- ERROR src/trio/_abc.py:640:7-21: Class `ReceiveChannel` has unimplemented abstract members: `receive`, `aclose` [implicit-abstract-class]
+ ERROR src/trio/_abc.py:640:7-21: Class `ReceiveChannel` has unimplemented abstract members: `aclose`, `receive` [implicit-abstract-class]
- ERROR src/trio/_abc.py:702:7-14: Class `Channel` has unimplemented abstract members: `send`, `aclose`, `receive` [implicit-abstract-class]
+ ERROR src/trio/_abc.py:702:7-14: Class `Channel` has unimplemented abstract members: `aclose`, `send`, `receive` [implicit-abstract-class]
- ERROR src/trio/_subprocess_platform/__init__.py:19:11-29: Class `ClosableSendStream` has unimplemented abstract members: `send_all`, `wait_send_all_might_not_block`, `aclose` [implicit-abstract-class]
+ ERROR src/trio/_subprocess_platform/__init__.py:19:11-29: Class `ClosableSendStream` has unimplemented abstract members: `aclose`, `send_all`, `wait_send_all_might_not_block` [implicit-abstract-class]
- ERROR src/trio/_subprocess_platform/__init__.py:22:11-32: Class `ClosableReceiveStream` has unimplemented abstract members: `receive_some`, `aclose` [implicit-abstract-class]
+ ERROR src/trio/_subprocess_platform/__init__.py:22:11-32: Class `ClosableReceiveStream` has unimplemented abstract members: `aclose`, `receive_some` [implicit-abstract-class]

dedupe (https://github.com/dedupeio/dedupe)
- ERROR dedupe/predicates.py:125:7-21: Class `IndexPredicate` has unimplemented abstract members: `reset`, `initIndex`, `preprocess`, `__call__` [implicit-abstract-class]
+ ERROR dedupe/predicates.py:125:7-21: Class `IndexPredicate` has unimplemented abstract members: `__call__`, `reset`, `initIndex`, `preprocess` [implicit-abstract-class]
- ERROR dedupe/predicates.py:276:7-21: Class `TfidfPredicate` has unimplemented abstract members: `reset`, `preprocess`, `__call__` [implicit-abstract-class]
+ ERROR dedupe/predicates.py:276:7-21: Class `TfidfPredicate` has unimplemented abstract members: `__call__`, `reset`, `preprocess` [implicit-abstract-class]
- ERROR dedupe/predicates.py:290:7-25: Class `TfidfTextPredicate` has unimplemented abstract members: `reset`, `initIndex`, `__call__` [implicit-abstract-class]
+ ERROR dedupe/predicates.py:290:7-25: Class `TfidfTextPredicate` has unimplemented abstract members: `__call__`, `reset`, `initIndex` [implicit-abstract-class]
- ERROR dedupe/predicates.py:295:7-24: Class `TfidfSetPredicate` has unimplemented abstract members: `reset`, `initIndex`, `__call__` [implicit-abstract-class]
+ ERROR dedupe/predicates.py:295:7-24: Class `TfidfSetPredicate` has unimplemented abstract members: `__call__`, `reset`, `initIndex` [implicit-abstract-class]
- ERROR dedupe/predicates.py:300:7-26: Class `TfidfNGramPredicate` has unimplemented abstract members: `reset`, `initIndex`, `__call__` [implicit-abstract-class]
+ ERROR dedupe/predicates.py:300:7-26: Class `TfidfNGramPredicate` has unimplemented abstract members: `__call__`, `reset`, `initIndex` [implicit-abstract-class]
- ERROR dedupe/predicates.py:329:7-27: Class `LevenshteinPredicate` has unimplemented abstract members: `reset`, `__call__` [implicit-abstract-class]
+ ERROR dedupe/predicates.py:329:7-27: Class `LevenshteinPredicate` has unimplemented abstract members: `__call__`, `reset` [implicit-abstract-class]

scrapy (https://github.com/scrapy/scrapy)
- ERROR scrapy/crawler.py:626:7-25: Class `CrawlerProcessBase` has unimplemented abstract members: `start`, `_stop_dfd`, `crawl` [implicit-abstract-class]
+ ERROR scrapy/crawler.py:626:7-25: Class `CrawlerProcessBase` has unimplemented abstract members: `crawl`, `start`, `_stop_dfd` [implicit-abstract-class]

kopf (https://github.com/nolar/kopf)
- ERROR kopf/_cogs/structs/ephemera.py:56:7-12: Class `Store` has unimplemented abstract members: `__len__`, `__iter__`, `__contains__` [implicit-abstract-class]
+ ERROR kopf/_cogs/structs/ephemera.py:56:7-12: Class `Store` has unimplemented abstract members: `__iter__`, `__contains__`, `__len__` [implicit-abstract-class]
+ ERROR kopf/_cogs/structs/ephemera.py:78:7-12: Class `Index` has unimplemented abstract members: `__iter__`, `__len__`, `__getitem__` [implicit-abstract-class]
+ ERROR kopf/_core/actions/execution.py:102:7-12: Class `State` has unimplemented abstract members: `__iter__`, `__len__`, `__getitem__` [implicit-abstract-class]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

final class implementing Sequence shows no error when abstract method is not implemented

1 participant