alter the PyObjMixin to carry over typing information from Node

as PyObjMixin is always supposed to be mixed in the mro
before nodes.Node the behavior doesn't change,
but all the typing information carry over to help mypy.

extracted from #8037
This commit is contained in:
Ronny Pfannschmidt 2021-01-17 14:23:07 +01:00
parent c9e9a599fe
commit a9e43152bc
2 changed files with 7 additions and 14 deletions

View File

@ -0,0 +1 @@
Internal Restructure: let python.PyObjMixing inherit from nodes.Node to carry over typing information.

View File

@ -23,7 +23,6 @@ from typing import Optional
from typing import Sequence
from typing import Set
from typing import Tuple
from typing import Type
from typing import TYPE_CHECKING
from typing import Union
@ -255,21 +254,14 @@ def pytest_pycollect_makeitem(collector: "PyCollector", name: str, obj: object):
return res
class PyobjMixin:
class PyobjMixin(nodes.Node):
"""this mix-in inherits from Node to carry over the typing information
as its intended to always mix in before a node
its position in the mro is unaffected"""
_ALLOW_MARKERS = True
# Function and attributes that the mixin needs (for type-checking only).
if TYPE_CHECKING:
name: str = ""
parent: Optional[nodes.Node] = None
own_markers: List[Mark] = []
def getparent(self, cls: Type[nodes._NodeType]) -> Optional[nodes._NodeType]:
...
def listchain(self) -> List[nodes.Node]:
...
@property
def module(self):
"""Python module object this node was collected from (can be None)."""