1212# See the License for the specific language governing permissions and
1313# limitations under the License.
1414
15- from typing import Any , List , Optional , Pattern , Union
15+ import collections .abc
16+ from typing import Any , List , Optional , Pattern , Sequence , Union
1617from urllib .parse import urljoin
1718
1819from playwright ._impl ._api_structures import ExpectedTextValue , FrameExpectOptions
@@ -149,9 +150,9 @@ def _not(self) -> "LocatorAssertions":
149150 async def to_contain_text (
150151 self ,
151152 expected : Union [
152- List [str ],
153- List [Pattern [str ]],
154- List [Union [Pattern [str ], str ]],
153+ Sequence [str ],
154+ Sequence [Pattern [str ]],
155+ Sequence [Union [Pattern [str ], str ]],
155156 Pattern [str ],
156157 str ,
157158 ],
@@ -160,7 +161,9 @@ async def to_contain_text(
160161 ignore_case : bool = None ,
161162 ) -> None :
162163 __tracebackhide__ = True
163- if isinstance (expected , list ):
164+ if isinstance (expected , collections .abc .Sequence ) and not isinstance (
165+ expected , str
166+ ):
164167 expected_text = to_expected_text_values (
165168 expected ,
166169 match_substring = True ,
@@ -198,9 +201,9 @@ async def to_contain_text(
198201 async def not_to_contain_text (
199202 self ,
200203 expected : Union [
201- List [str ],
202- List [Pattern [str ]],
203- List [Union [Pattern [str ], str ]],
204+ Sequence [str ],
205+ Sequence [Pattern [str ]],
206+ Sequence [Union [Pattern [str ], str ]],
204207 Pattern [str ],
205208 str ,
206209 ],
@@ -244,16 +247,18 @@ async def not_to_have_attribute(
244247 async def to_have_class (
245248 self ,
246249 expected : Union [
247- List [str ],
248- List [Pattern [str ]],
249- List [Union [Pattern [str ], str ]],
250+ Sequence [str ],
251+ Sequence [Pattern [str ]],
252+ Sequence [Union [Pattern [str ], str ]],
250253 Pattern [str ],
251254 str ,
252255 ],
253256 timeout : float = None ,
254257 ) -> None :
255258 __tracebackhide__ = True
256- if isinstance (expected , list ):
259+ if isinstance (expected , collections .abc .Sequence ) and not isinstance (
260+ expected , str
261+ ):
257262 expected_text = to_expected_text_values (expected )
258263 await self ._expect_impl (
259264 "to.have.class.array" ,
@@ -273,9 +278,9 @@ async def to_have_class(
273278 async def not_to_have_class (
274279 self ,
275280 expected : Union [
276- List [str ],
277- List [Pattern [str ]],
278- List [Union [Pattern [str ], str ]],
281+ Sequence [str ],
282+ Sequence [Pattern [str ]],
283+ Sequence [Union [Pattern [str ], str ]],
279284 Pattern [str ],
280285 str ,
281286 ],
@@ -402,7 +407,9 @@ async def not_to_have_value(
402407
403408 async def to_have_values (
404409 self ,
405- values : Union [List [str ], List [Pattern [str ]], List [Union [Pattern [str ], str ]]],
410+ values : Union [
411+ Sequence [str ], Sequence [Pattern [str ]], Sequence [Union [Pattern [str ], str ]]
412+ ],
406413 timeout : float = None ,
407414 ) -> None :
408415 __tracebackhide__ = True
@@ -416,7 +423,9 @@ async def to_have_values(
416423
417424 async def not_to_have_values (
418425 self ,
419- values : Union [List [str ], List [Pattern [str ]], List [Union [Pattern [str ], str ]]],
426+ values : Union [
427+ Sequence [str ], Sequence [Pattern [str ]], Sequence [Union [Pattern [str ], str ]]
428+ ],
420429 timeout : float = None ,
421430 ) -> None :
422431 __tracebackhide__ = True
@@ -425,9 +434,9 @@ async def not_to_have_values(
425434 async def to_have_text (
426435 self ,
427436 expected : Union [
428- List [str ],
429- List [Pattern [str ]],
430- List [Union [Pattern [str ], str ]],
437+ Sequence [str ],
438+ Sequence [Pattern [str ]],
439+ Sequence [Union [Pattern [str ], str ]],
431440 Pattern [str ],
432441 str ,
433442 ],
@@ -436,7 +445,9 @@ async def to_have_text(
436445 ignore_case : bool = None ,
437446 ) -> None :
438447 __tracebackhide__ = True
439- if isinstance (expected , list ):
448+ if isinstance (expected , collections .abc .Sequence ) and not isinstance (
449+ expected , str
450+ ):
440451 expected_text = to_expected_text_values (
441452 expected ,
442453 normalize_white_space = True ,
@@ -470,9 +481,9 @@ async def to_have_text(
470481 async def not_to_have_text (
471482 self ,
472483 expected : Union [
473- List [str ],
474- List [Pattern [str ]],
475- List [Union [Pattern [str ], str ]],
484+ Sequence [str ],
485+ Sequence [Pattern [str ]],
486+ Sequence [Union [Pattern [str ], str ]],
476487 Pattern [str ],
477488 str ,
478489 ],
@@ -758,11 +769,13 @@ def expected_regex(
758769
759770
760771def to_expected_text_values (
761- items : Union [List [Pattern [str ]], List [str ], List [Union [str , Pattern [str ]]]],
772+ items : Union [
773+ Sequence [Pattern [str ]], Sequence [str ], Sequence [Union [str , Pattern [str ]]]
774+ ],
762775 match_substring : bool = False ,
763776 normalize_white_space : bool = False ,
764777 ignore_case : Optional [bool ] = None ,
765- ) -> List [ExpectedTextValue ]:
778+ ) -> Sequence [ExpectedTextValue ]:
766779 out : List [ExpectedTextValue ] = []
767780 assert isinstance (items , list )
768781 for item in items :
0 commit comments