1313- Abstract methods for transport-specific implementations.
1414"""
1515import abc
16- import code
1716import contextlib
1817import io
1918import os
@@ -105,8 +104,8 @@ def _log_error(self, message: str, *args, stacklevel: int = 2):
105104 # --- Properties -------------------------------------------------------
106105
107106 @property
108- def newline (self ) -> list [ bytes ] :
109- """List of byte sequences considered as newline terminators.
107+ def newline (self ) -> bytes :
108+ """A byte sequence considered as newline terminators.
110109
111110 Examples:
112111 ```
@@ -116,6 +115,20 @@ def newline(self) -> list[bytes]:
116115 sock.newline = "\\ r\\ n"
117116 ```
118117 """
118+ return self ._newline [0 ]
119+
120+ @property
121+ def newlines (self ) -> list [bytes ]:
122+ """List of byte sequences considered as newline terminators.
123+
124+ Examples:
125+ ```
126+ p = Process(["wine", "a.exe"])
127+ p.newline = [b"\\ n", "\\ r\\ n"]
128+ p.newline # b"\n "
129+ p.newlines # b"\r \n "
130+ ```
131+ """
119132 return self ._newline
120133
121134 @newline .setter
@@ -302,7 +315,7 @@ def recvline(self,
302315 OSError: If a system error occurred.
303316 """
304317 return self .recvuntil (
305- delim = self ._newline ,
318+ delim = self .newlines ,
306319 blocksize = blocksize ,
307320 regex = None ,
308321 timeout = timeout ,
@@ -583,7 +596,7 @@ def sendline(self,
583596 data = str (data )
584597
585598 data = str2bytes (data )
586- return self .sendall (data + self .newline [ 0 ] )
599+ return self .sendall (data + self .newline )
587600
588601 def sendkey (self ):
589602 pass
@@ -1098,7 +1111,7 @@ class TubeTimeout(TimeoutError):
10981111 """
10991112 def __init__ (self , message : str , * , buffered : bytes = b'' ):
11001113 super ().__init__ (message )
1101- self .buffered = buffered
1114+ self .buffered = bytes ( buffered )
11021115
11031116 def __bytes__ (self ) -> bytes :
11041117 return self .buffered
0 commit comments