2
2
3
3
import json
4
4
from abc import abstractmethod
5
- from typing import TYPE_CHECKING , Any , ClassVar , TypeAlias , overload
6
-
7
- from typing_extensions import Self
5
+ from typing import TYPE_CHECKING , Any , ClassVar , TypeAlias , Union , overload
8
6
9
7
from ._databackend import AbstractBackend
10
8
11
9
if TYPE_CHECKING :
12
10
import pandas as pd
13
11
14
12
_PandasDataFrame : TypeAlias = pd .DataFrame
15
- _DataFrame : TypeAlias = pd . DataFrame
13
+ _DataFrame : TypeAlias = Union [ _PandasDataFrame ,]
16
14
17
15
18
16
class _AbstractPandasFrame (AbstractBackend ):
@@ -99,7 +97,7 @@ def columns(self) -> list[Any]: ...
99
97
def shape (self ) -> tuple [int , int ]: ...
100
98
101
99
@abstractmethod
102
- def head (self , n : int ) -> Self : ...
100
+ def head (self , n : int ) -> _DFAdaptor : ...
103
101
104
102
@property
105
103
def data_preview (self ) -> str :
@@ -123,6 +121,8 @@ def _obj_name(self) -> str:
123
121
124
122
125
123
class _PandasAdaptor (_DFAdaptor ):
124
+ _d : ClassVar [_PandasDataFrame ]
125
+
126
126
def __init__ (self , data : _AbstractPandasFrame ) -> None :
127
127
super ().__init__ (data )
128
128
@@ -134,7 +134,7 @@ def columns(self) -> list[Any]:
134
134
def shape (self ) -> tuple [int , int ]:
135
135
return self ._d .shape
136
136
137
- def head (self , n : int ) -> Self :
137
+ def head (self , n : int ) -> _PandasAdaptor :
138
138
return _PandasAdaptor (self ._d .head (n ))
139
139
140
140
@overload
0 commit comments