11from _typeshed import Self
2- from typing import Any , Callable , Iterable , List , Mapping , Pattern , Set , Tuple , Type , TypeVar , Union , overload
2+ from typing import Any , Callable , Generic , Iterable , List , Mapping , Pattern , Set , Tuple , Type , TypeVar , Union , overload
33
44from . import BeautifulSoup
55from .builder import TreeBuilder
@@ -33,14 +33,14 @@ _SimpleNormalizedStrainable = Union[str, bool, None, Pattern[str], Callable[[str
3333_NormalizedStrainable = Union [_SimpleNormalizedStrainable , Iterable [_SimpleNormalizedStrainable ]]
3434
3535class PageElement :
36- parent : PageElement | None
36+ parent : Tag | None
3737 previous_element : PageElement | None
3838 next_element : PageElement | None
3939 next_sibling : PageElement | None
4040 previous_sibling : PageElement | None
4141 def setup (
4242 self ,
43- parent : PageElement | None = ...,
43+ parent : Tag | None = ...,
4444 previous_element : PageElement | None = ...,
4545 next_element : PageElement | None = ...,
4646 previous_sibling : PageElement | None = ...,
@@ -59,7 +59,7 @@ class PageElement:
5959 def extract (self : Self , _self_index : int | None = ...) -> Self : ...
6060 def insert (self , position : int , new_child : PageElement ) -> None : ...
6161 def append (self , tag : PageElement ) -> None : ...
62- def extend (self , tags : Tag | Iterable [PageElement ]) -> None : ...
62+ def extend (self , tags : Iterable [PageElement ]) -> None : ...
6363 def insert_before (self , * args : PageElement ) -> None : ...
6464 def insert_after (self , * args : PageElement ) -> None : ...
6565 def find_next (
@@ -77,7 +77,7 @@ class PageElement:
7777 text : _Strainable | None = ...,
7878 limit : int | None = ...,
7979 ** kwargs : _Strainable ,
80- ) -> ResultSet : ...
80+ ) -> ResultSet [ PageElement ] : ...
8181 findAllNext = find_all_next
8282 def find_next_sibling (
8383 self ,
@@ -94,7 +94,7 @@ class PageElement:
9494 text : _Strainable | None = ...,
9595 limit : int | None = ...,
9696 ** kwargs : _Strainable ,
97- ) -> ResultSet : ...
97+ ) -> ResultSet [ PageElement ] : ...
9898 findNextSiblings = find_next_siblings
9999 fetchNextSiblings = find_next_siblings
100100 def find_previous (
@@ -112,7 +112,7 @@ class PageElement:
112112 text : _Strainable | None = ...,
113113 limit : int | None = ...,
114114 ** kwargs : _Strainable ,
115- ) -> ResultSet : ...
115+ ) -> ResultSet [ PageElement ] : ...
116116 findAllPrevious = find_all_previous
117117 fetchPrevious = find_all_previous
118118 def find_previous_sibling (
@@ -130,23 +130,23 @@ class PageElement:
130130 text : _Strainable | None = ...,
131131 limit : int | None = ...,
132132 ** kwargs : _Strainable ,
133- ) -> ResultSet : ...
133+ ) -> ResultSet [ PageElement ] : ...
134134 findPreviousSiblings = find_previous_siblings
135135 fetchPreviousSiblings = find_previous_siblings
136136 def find_parent (
137137 self ,
138138 name : _Strainable | SoupStrainer | None = ...,
139139 attrs : dict [str , _Strainable ] | _Strainable = ...,
140140 ** kwargs : _Strainable ,
141- ) -> Tag | NavigableString | None : ...
141+ ) -> Tag | None : ...
142142 findParent = find_parent
143143 def find_parents (
144144 self ,
145145 name : _Strainable | SoupStrainer | None = ...,
146146 attrs : dict [str , _Strainable ] | _Strainable = ...,
147147 limit : int | None = ...,
148148 ** kwargs : _Strainable ,
149- ) -> ResultSet : ...
149+ ) -> ResultSet [ Tag ] : ...
150150 findParents = find_parents
151151 fetchParents = find_parents
152152 @property
@@ -162,14 +162,14 @@ class PageElement:
162162 @property
163163 def previous_siblings (self ) -> Iterable [PageElement ]: ...
164164 @property
165- def parents (self ) -> Iterable [PageElement ]: ...
165+ def parents (self ) -> Iterable [Tag ]: ...
166166 @property
167167 def decomposed (self ) -> bool : ...
168168 def nextGenerator (self ) -> Iterable [PageElement ]: ...
169169 def nextSiblingGenerator (self ) -> Iterable [PageElement ]: ...
170170 def previousGenerator (self ) -> Iterable [PageElement ]: ...
171171 def previousSiblingGenerator (self ) -> Iterable [PageElement ]: ...
172- def parentGenerator (self ) -> Iterable [PageElement ]: ...
172+ def parentGenerator (self ) -> Iterable [Tag ]: ...
173173
174174class NavigableString (str , PageElement ):
175175 PREFIX : str
@@ -227,8 +227,8 @@ class Tag(PageElement):
227227 sourceline : int | None
228228 sourcepos : int | None
229229 known_xml : bool | None
230- attrs : Mapping [str , Any ]
231- contents : Any
230+ attrs : Mapping [str , str ]
231+ contents : List [ PageElement ]
232232 hidden : bool
233233 can_be_empty_element : bool | None
234234 cdata_list_attributes : list [str ] | None
@@ -240,8 +240,8 @@ class Tag(PageElement):
240240 name : str | None = ...,
241241 namespace : str | None = ...,
242242 prefix : str | None = ...,
243- attrs : Mapping [str , Any ] | None = ...,
244- parent : PageElement | None = ...,
243+ attrs : Mapping [str , str ] | None = ...,
244+ parent : Tag | None = ...,
245245 previous : PageElement | None = ...,
246246 is_xml : bool | None = ...,
247247 sourceline : int | None = ...,
@@ -282,7 +282,7 @@ class Tag(PageElement):
282282 def __bool__ (self ) -> bool : ...
283283 def __setitem__ (self , key : str , value : str | list [str ]) -> None : ...
284284 def __delitem__ (self , key : str ) -> None : ...
285- def __getattr__ (self , tag : str ) -> Tag | NavigableString | None : ...
285+ def __getattr__ (self , tag : str ) -> Tag | None : ...
286286 def __eq__ (self , other : object ) -> bool : ...
287287 def __ne__ (self , other : object ) -> bool : ...
288288 def __unicode__ (self ) -> str : ...
@@ -316,7 +316,7 @@ class Tag(PageElement):
316316 text : _Strainable | None = ...,
317317 limit : int | None = ...,
318318 ** kwargs : _Strainable ,
319- ) -> ResultSet : ...
319+ ) -> ResultSet [ PageElement ] : ...
320320 __call__ = find_all
321321 findAll = find_all
322322 findChildren = find_all
@@ -325,7 +325,7 @@ class Tag(PageElement):
325325 @property
326326 def descendants (self ) -> Iterable [PageElement ]: ...
327327 def select_one (self , selector : str , namespaces : Any | None = ..., ** kwargs ) -> Tag | None : ...
328- def select (self , selector : str , namespaces : Any | None = ..., limit : int | None = ..., ** kwargs ) -> ResultSet : ...
328+ def select (self , selector : str , namespaces : Any | None = ..., limit : int | None = ..., ** kwargs ) -> ResultSet [ Tag ] : ...
329329 def childGenerator (self ) -> Iterable [PageElement ]: ...
330330 def recursiveChildGenerator (self ) -> Iterable [PageElement ]: ...
331331 def has_key (self , key : str ) -> bool : ...
@@ -345,6 +345,6 @@ class SoupStrainer:
345345 searchTag = search_tag
346346 def search (self , markup : PageElement | Iterable [PageElement ]): ...
347347
348- class ResultSet (List [PageElement ]):
348+ class ResultSet (Generic [ _PageElementT ], List [_PageElementT ]):
349349 source : SoupStrainer
350- def __init__ (self , source : SoupStrainer , result : Iterable [PageElement ] = ...) -> None : ...
350+ def __init__ (self , source : SoupStrainer , result : Iterable [_PageElementT ] = ...) -> None : ...
0 commit comments