Skip to content

Commit c36ccc4

Browse files
authored
chore: minor cleanup for coverage (#115)
1 parent d4ccf6a commit c36ccc4

File tree

10 files changed

+60
-39
lines changed

10 files changed

+60
-39
lines changed

playwright/async_api.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4664,13 +4664,15 @@ def expect_file_chooser(
46644664

46654665
def expect_request(
46664666
self,
4667+
url: typing.Union[str, typing.Pattern, typing.Callable[[str], bool]] = None,
46674668
predicate: typing.Union[typing.Callable[["Request"], bool]] = None,
46684669
timeout: int = None,
46694670
) -> AsyncEventContextManager["Request"]:
46704671
return AsyncEventContextManager(self, "request", predicate, timeout)
46714672

46724673
def expect_response(
46734674
self,
4675+
url: typing.Union[str, typing.Pattern, typing.Callable[[str], bool]] = None,
46744676
predicate: typing.Union[typing.Callable[["Response"], bool]] = None,
46754677
timeout: int = None,
46764678
) -> AsyncEventContextManager["Response"]:

playwright/event_context_manager.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,5 +58,5 @@ def __init__(
5858
async def __aenter__(self) -> EventInfoImpl[T]:
5959
return self._event
6060

61-
async def __aexit__(self, exc_type: Any, exc_val: Any, exc_tb: Any) -> None:
61+
async def __aexit__(self, *args: Any) -> None:
6262
await self._event.value

playwright/network.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ def postData(self) -> Optional[str]:
5353
b64_content = self._initializer.get("postData")
5454
if not b64_content:
5555
return None
56-
return base64.b64decode(bytes(b64_content, "utf-8")).decode()
56+
return base64.b64decode(b64_content).decode()
5757

5858
@property
5959
def headers(self) -> Dict[str, str]:
@@ -130,7 +130,7 @@ async def continue_(
130130
if headers:
131131
overrides["headers"] = serialize_headers(headers)
132132
if isinstance(postData, str):
133-
overrides["postData"] = base64.b64encode(bytes(postData, "utf-8")).decode()
133+
overrides["postData"] = base64.b64encode(postData.encode()).decode()
134134
elif isinstance(postData, bytes):
135135
overrides["postData"] = base64.b64encode(postData).decode()
136136
await self._channel.send("continue", cast(Any, overrides))
@@ -173,7 +173,7 @@ async def body(self) -> bytes:
173173

174174
async def text(self) -> str:
175175
content = await self.body()
176-
return content.decode("utf-8")
176+
return content.decode()
177177

178178
async def json(self) -> Union[Dict, List]:
179179
return json.loads(await self.text())

playwright/page.py

Lines changed: 40 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -395,12 +395,9 @@ async def waitForNavigation(
395395
) -> Optional[Response]:
396396
return await self._main_frame.waitForNavigation(**locals_to_params(locals()))
397397

398-
async def waitForRequest(
399-
self,
400-
url: URLMatch = None,
401-
predicate: Callable[[Request], bool] = None,
402-
timeout: int = None,
403-
) -> Request:
398+
def _get_request_predicate(
399+
self, url: Optional[URLMatch], predicate: Optional[Callable[[Request], bool]]
400+
) -> Callable[[Any], bool]:
404401
matcher = URLMatcher(url) if url else None
405402

406403
def my_predicate(request: Request) -> bool:
@@ -410,10 +407,34 @@ def my_predicate(request: Request) -> bool:
410407
return predicate(request)
411408
return True
412409

410+
return my_predicate
411+
412+
def _get_response_predicate(
413+
self, url: Optional[URLMatch], predicate: Optional[Callable[[Response], bool]]
414+
) -> Callable[[Any], bool]:
415+
matcher = URLMatcher(url) if url else None
416+
417+
def my_predicate(response: Response) -> bool:
418+
if matcher:
419+
return matcher.matches(response.url)
420+
if predicate:
421+
return predicate(response)
422+
return True
423+
424+
return my_predicate
425+
426+
async def waitForRequest(
427+
self,
428+
url: URLMatch = None,
429+
predicate: Callable[[Request], bool] = None,
430+
timeout: int = None,
431+
) -> Request:
432+
predicate = self._get_request_predicate(url, predicate)
433+
413434
return cast(
414435
Request,
415436
await self.waitForEvent(
416-
Page.Events.Request, predicate=my_predicate, timeout=timeout
437+
Page.Events.Request, predicate=predicate, timeout=timeout
417438
),
418439
)
419440

@@ -423,19 +444,12 @@ async def waitForResponse(
423444
predicate: Callable[[Response], bool] = None,
424445
timeout: int = None,
425446
) -> Response:
426-
matcher = URLMatcher(url) if url else None
427-
428-
def my_predicate(response: Response) -> bool:
429-
if matcher:
430-
return matcher.matches(response.url)
431-
if predicate:
432-
return predicate(response)
433-
return True
447+
predicate = self._get_response_predicate(url, predicate)
434448

435449
return cast(
436450
Response,
437451
await self.waitForEvent(
438-
Page.Events.Response, predicate=my_predicate, timeout=timeout
452+
Page.Events.Response, predicate=predicate, timeout=timeout
439453
),
440454
)
441455

@@ -741,13 +755,21 @@ def expect_file_chooser(
741755
return EventContextManagerImpl(self, "filechooser", predicate, timeout)
742756

743757
def expect_request(
744-
self, predicate: Callable[[Request], bool] = None, timeout: int = None,
758+
self,
759+
url: URLMatch = None,
760+
predicate: Callable[[Request], bool] = None,
761+
timeout: int = None,
745762
) -> EventContextManagerImpl[Request]:
763+
predicate = self._get_request_predicate(url, predicate)
746764
return EventContextManagerImpl(self, "request", predicate, timeout)
747765

748766
def expect_response(
749-
self, predicate: Callable[[Response], bool] = None, timeout: int = None,
767+
self,
768+
url: URLMatch = None,
769+
predicate: Callable[[Response], bool] = None,
770+
timeout: int = None,
750771
) -> EventContextManagerImpl[Response]:
772+
predicate = self._get_response_predicate(url, predicate)
751773
return EventContextManagerImpl(self, "response", predicate, timeout)
752774

753775
def expect_popup(

playwright/sync_api.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4866,13 +4866,15 @@ def expect_file_chooser(
48664866

48674867
def expect_request(
48684868
self,
4869+
url: typing.Union[str, typing.Pattern, typing.Callable[[str], bool]] = None,
48694870
predicate: typing.Union[typing.Callable[["Request"], bool]] = None,
48704871
timeout: int = None,
48714872
) -> EventContextManager["Request"]:
48724873
return EventContextManager(self, "request", predicate, timeout)
48734874

48744875
def expect_response(
48754876
self,
4877+
url: typing.Union[str, typing.Pattern, typing.Callable[[str], bool]] = None,
48764878
predicate: typing.Union[typing.Callable[["Response"], bool]] = None,
48774879
timeout: int = None,
48784880
) -> EventContextManager["Response"]:

playwright/transport.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,10 @@ async def _run(self) -> None:
5353
data = await self._input.readexactly(to_read)
5454
length -= to_read
5555
if len(buffer):
56-
buffer = b"".join([buffer, data])
56+
buffer = buffer + data
5757
else:
5858
buffer = data
59-
msg = buffer.decode("utf-8")
60-
obj = json.loads(msg)
59+
obj = json.loads(buffer)
6160

6261
if "DEBUGP" in os.environ: # pragma: no cover
6362
print("\x1b[33mRECV>\x1b[0m", json.dumps(obj, indent=2))
@@ -70,7 +69,7 @@ def send(self, message: Dict) -> None:
7069
msg = json.dumps(message)
7170
if "DEBUGP" in os.environ: # pragma: no cover
7271
print("\x1b[32mSEND>\x1b[0m", json.dumps(message, indent=2))
73-
data = bytes(msg, "utf-8")
72+
data = msg.encode()
7473
self._output.write(
7574
len(data).to_bytes(4, byteorder="little", signed=False) + data
7675
)

scripts/generate_api.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@
1818
from typing import ( # type: ignore
1919
Any,
2020
List,
21+
Match,
2122
Union,
23+
cast,
2224
get_args,
2325
get_origin,
2426
get_type_hints,
@@ -81,10 +83,6 @@ def signature(func: FunctionType, indent: int) -> str:
8183
else:
8284
raise ValueError(f"value {default_value} not recognized")
8385
tokens.append(f"{name}: {processed} = {default_value}")
84-
elif name == "contentScript":
85-
tokens.append(f"{name}: {processed} = False")
86-
elif name == "arg":
87-
tokens.append(f"{name}: typing.Any")
8886
else:
8987
tokens.append(f"{name}: {processed}")
9088
return split.join(tokens)
@@ -113,10 +111,8 @@ def return_type(func: FunctionType) -> str:
113111

114112

115113
def short_name(t: Any) -> str:
116-
match = re.compile(r"playwright\.[^.]+\.([^']+)").search(str(t))
117-
if match:
118-
return match.group(1)
119-
return str(t)
114+
match = cast(Match[str], re.compile(r"playwright\.[^.]+\.([^']+)").search(str(t)))
115+
return match.group(1)
120116

121117

122118
def return_value(value: Any) -> List[str]:

scripts/generate_async_api.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,5 +135,5 @@ def main() -> None:
135135
documentation_provider.print_remainder()
136136

137137

138-
if __name__ == "__main__":
138+
if __name__ == "__main__": # pragma: no cover
139139
main()

scripts/generate_sync_api.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,5 +118,5 @@ def main() -> None:
118118
documentation_provider.print_remainder()
119119

120120

121-
if __name__ == "__main__":
121+
if __name__ == "__main__": # pragma: no cover
122122
main()

tests/server.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,9 +106,9 @@ def process(self):
106106
return
107107
file_content = None
108108
try:
109-
file_content = open(
110-
static_path / request.path.decode()[1:], "rb"
111-
).read()
109+
file_content = (
110+
static_path / request.path.decode()[1:]
111+
).read_bytes()
112112
except (FileNotFoundError, IsADirectoryError):
113113
request.setResponseCode(HTTPStatus.NOT_FOUND)
114114
if file_content:

0 commit comments

Comments
 (0)