>>> py3-terminado: Building community/py3-terminado 0.18.1-r0 (using abuild 3.15.0-r0) started Mon, 13 Oct 2025 04:50:34 +0000 >>> py3-terminado: Validating /home/udu/aports/community/py3-terminado/APKBUILD... >>> py3-terminado: Analyzing dependencies... >>> py3-terminado: Installing for build: build-base py3-ptyprocess py3-tornado py3-gpep517 py3-hatchling py3-pytest py3-pytest-timeout WARNING: opening /home/udu/packages//community: No such file or directory WARNING: opening /home/udu/packages//main: No such file or directory fetch http://dl-cdn.alpinelinux.org/alpine/v3.22/main/x86_64/APKINDEX.tar.gz fetch http://dl-cdn.alpinelinux.org/alpine/v3.22/community/x86_64/APKINDEX.tar.gz (1/31) Installing py3-ptyprocess-pyc (0.7.0-r6) (2/31) Installing py3-ptyprocess (0.7.0-r6) (3/31) Installing py3-tornado (6.5.1-r0) (4/31) Installing py3-tornado-pyc (6.5.1-r0) (5/31) Installing py3-installer (0.7.0-r2) (6/31) Installing py3-installer-pyc (0.7.0-r2) (7/31) Installing py3-gpep517 (19-r0) (8/31) Installing py3-gpep517-pyc (19-r0) (9/31) Installing py3-editables (0.5-r2) (10/31) Installing py3-editables-pyc (0.5-r2) (11/31) Installing py3-parsing (3.2.3-r0) (12/31) Installing py3-parsing-pyc (3.2.3-r0) (13/31) Installing py3-packaging (25.0-r0) (14/31) Installing py3-packaging-pyc (25.0-r0) (15/31) Installing py3-pathspec (0.12.1-r2) (16/31) Installing py3-pathspec-pyc (0.12.1-r2) (17/31) Installing py3-pluggy (1.5.0-r0) (18/31) Installing py3-pluggy-pyc (1.5.0-r0) (19/31) Installing py3-trove-classifiers (2025.9.11.17-r0) (20/31) Installing py3-trove-classifiers-pyc (2025.9.11.17-r0) (21/31) Installing py3-hatchling (1.27.0-r0) (22/31) Installing py3-hatchling-pyc (1.27.0-r0) (23/31) Installing py3-iniconfig (2.1.0-r0) (24/31) Installing py3-iniconfig-pyc (2.1.0-r0) (25/31) Installing py3-py (1.11.0-r4) (26/31) Installing py3-py-pyc (1.11.0-r4) (27/31) Installing py3-pytest (8.3.5-r0) (28/31) Installing py3-pytest-pyc (8.3.5-r0) (29/31) Installing py3-pytest-timeout (2.3.1-r1) (30/31) Installing py3-pytest-timeout-pyc (2.3.1-r1) (31/31) Installing .makedepends-py3-terminado (20251013.045035) Executing busybox-1.37.0-r19.trigger OK: 305 MiB in 120 packages >>> py3-terminado: Cleaning up srcdir >>> py3-terminado: Cleaning up pkgdir >>> py3-terminado: Cleaning up tmpdir >>> py3-terminado: Fetching py3-terminado-0.18.1.tar.gz::https://github.com/jupyter/terminado/archive/refs/tags/v0.18.1.tar.gz >>> py3-terminado: Fetching py3-terminado-0.18.1.tar.gz::https://github.com/jupyter/terminado/archive/refs/tags/v0.18.1.tar.gz >>> py3-terminado: Checking sha512sums... py3-terminado-0.18.1.tar.gz: OK bash.patch: OK ResourceWarning.patch: OK >>> py3-terminado: Unpacking /var/cache/distfiles/py3-terminado-0.18.1.tar.gz... >>> py3-terminado: bash.patch patching file tests/basic_test.py >>> py3-terminado: ResourceWarning.patch patching file pyproject.toml 2025-10-13 04:50:35,959 gpep517 INFO Building wheel via backend hatchling.build 2025-10-13 04:50:36,005 gpep517 INFO The backend produced .dist/terminado-0.18.1-py3-none-any.whl terminado-0.18.1-py3-none-any.whl ============================================================================================================================================ test session starts ============================================================================================================================================= platform linux -- Python 3.12.11, pytest-8.3.5, pluggy-1.5.0 rootdir: /home/udu/aports/community/py3-terminado/src/terminado-0.18.1 configfile: pyproject.toml testpaths: tests/ plugins: timeout-2.3.1 timeout: 300.0s timeout method: signal timeout func_only: False collected 9 items / 1 deselected / 8 selected tests/basic_test.py FFFFFFFF [100%] ================================================================================================================================================== FAILURES ================================================================================================================================================== ___________________________________________________________________________________________________________________________________________ CommonTests.test_basic ___________________________________________________________________________________________________________________________________________ self = @tornado.testing.gen_test async def test_basic(self): for url in self.test_urls: tm = await self.get_term_client(url) response = await tm.read_msg() > self.assertEqual(response, ["setup", {}]) E AssertionError: None != ['setup', {}] response = None self = tm = url = '/named/term1' tests/basic_test.py:203: AssertionError --------------------------------------------------------------------------------------------------------------------------------------------- Captured log call ---------------------------------------------------------------------------------------------------------------------------------------------- INFO  tornado.access:web.py:2407 101 GET /named/term1 (127.0.0.1) 0.22ms INFO  terminado.websocket:websocket.py:60 TermSocket.open: term1 INFO  terminado.management:management.py:385 New terminal with specified name: term1 ERROR  tornado.application:web.py:1934 Uncaught exception GET /named/term1 (127.0.0.1) HTTPServerRequest(protocol='http', host='127.0.0.1:35047', method='GET', uri='/named/term1', version='HTTP/1.1', remote_ip='127.0.0.1') Traceback (most recent call last): File "/usr/lib/python3.12/site-packages/tornado/websocket.py", line 965, in _accept_connection open_result = handler.open(*handler.open_args, **handler.open_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/websocket.py", line 64, in open self.terminal = self.term_manager.get_terminal(url_component) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 386, in get_terminal term = self.new_terminal() ^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 233, in new_terminal return PtyWithClients(argv, env, cwd) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 58, in __init__ self.ptyproc = PtyProcessUnicode.spawn(**kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/ptyprocess/ptyprocess.py", line 230, in spawn pid, fd = pty.fork() ^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 107, in fork master_fd, slave_fd = openpty() ^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 34, in openpty master_fd, slave_name = _open_terminal() ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 67, in _open_terminal raise OSError('out of pty devices') OSError: out of pty devices _______________________________________________________________________________________________________________________________________ CommonTests.test_basic_command _______________________________________________________________________________________________________________________________________ self = , message = b'["stdin", "whoami\\n"]', binary = False def write_message( self, message: Union[str, bytes, Dict[str, Any]], binary: bool = False ) -> "Future[None]": """Sends the given message to the client of this Web Socket.""" if binary: opcode = 0x2 else: opcode = 0x1 if isinstance(message, dict): message = tornado.escape.json_encode(message) message = tornado.escape.utf8(message) assert isinstance(message, bytes) self._message_bytes_out += len(message) flags = 0 if self._compressor: message = self._compressor.compress(message) flags |= self.RSV1 # For historical reasons, write methods in Tornado operate in a semi-synchronous # mode in which awaiting the Future they return is optional (But errors can # still be raised). This requires us to go through an awkward dance here # to transform the errors that may be returned while presenting the same # semi-synchronous interface. try: > fut = self._write_frame(True, opcode, message, flags=flags) binary = False flags = 0 message = b'["stdin", "whoami\\n"]' opcode = 1 self = /usr/lib/python3.12/site-packages/tornado/websocket.py:1107: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.12/site-packages/tornado/websocket.py:1082: in _write_frame return self.stream.write(frame) data = b'\xd7\xc4\xd5c\x8c\xe6\xa6\x17\xb3\xad\xbbA\xfb\xe4\xf7\x14\xbf\xab\xb4\x0e\xbe\x98\xbbA\x8a' data_len = 21 fin = True finbit = 128 flags = 0 frame = b'\x81\x95\xd7\xc4\xd5c\x8c\xe6\xa6\x17\xb3\xad\xbbA\xfb\xe4\xf7\x14\xbf\xab\xb4\x0e\xbe\x98\xbbA\x8a' mask = b'\xd7\xc4\xd5c' mask_bit = 128 opcode = 1 self = /usr/lib/python3.12/site-packages/tornado/iostream.py:523: in write self._check_closed() data = b'\x81\x95\xd7\xc4\xd5c\x8c\xe6\xa6\x17\xb3\xad\xbbA\xfb\xe4\xf7\x14\xbf\xab\xb4\x0e\xbe\x98\xbbA\x8a' self = _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = def _check_closed(self) -> None: if self.closed(): > raise StreamClosedError(real_error=self.error) E tornado.iostream.StreamClosedError: Stream is closed self = /usr/lib/python3.12/site-packages/tornado/iostream.py:998: StreamClosedError During handling of the above exception, another exception occurred: self = @tornado.testing.gen_test async def test_basic_command(self): for url in self.test_urls: tm = await self.get_term_client(url) await tm.read_all_msg() > await tm.write_stdin("whoami\n") self = tm = url = '/named/term1' tests/basic_test.py:216: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/basic_test.py:107: in write_stdin await self.write_msg(["stdin", data]) data = 'whoami\n' self = tests/basic_test.py:77: in write_msg await self.ws.write_message(json.dumps(msg)) msg = ['stdin', 'whoami\n'] self = /usr/lib/python3.12/site-packages/tornado/websocket.py:1540: in write_message return self.protocol.write_message(message, binary=binary) binary = False message = '["stdin", "whoami\\n"]' self = _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , message = b'["stdin", "whoami\\n"]', binary = False def write_message( self, message: Union[str, bytes, Dict[str, Any]], binary: bool = False ) -> "Future[None]": """Sends the given message to the client of this Web Socket.""" if binary: opcode = 0x2 else: opcode = 0x1 if isinstance(message, dict): message = tornado.escape.json_encode(message) message = tornado.escape.utf8(message) assert isinstance(message, bytes) self._message_bytes_out += len(message) flags = 0 if self._compressor: message = self._compressor.compress(message) flags |= self.RSV1 # For historical reasons, write methods in Tornado operate in a semi-synchronous # mode in which awaiting the Future they return is optional (But errors can # still be raised). This requires us to go through an awkward dance here # to transform the errors that may be returned while presenting the same # semi-synchronous interface. try: fut = self._write_frame(True, opcode, message, flags=flags) except StreamClosedError: > raise WebSocketClosedError() E tornado.websocket.WebSocketClosedError binary = False flags = 0 message = b'["stdin", "whoami\\n"]' opcode = 1 self = /usr/lib/python3.12/site-packages/tornado/websocket.py:1109: WebSocketClosedError --------------------------------------------------------------------------------------------------------------------------------------------- Captured log call ---------------------------------------------------------------------------------------------------------------------------------------------- WARNING  tornado.general:autoreload.py:125 tornado.autoreload started more than once in the same process INFO  tornado.access:web.py:2407 101 GET /named/term1 (127.0.0.1) 0.17ms INFO  terminado.websocket:websocket.py:60 TermSocket.open: term1 INFO  terminado.management:management.py:385 New terminal with specified name: term1 ERROR  tornado.application:web.py:1934 Uncaught exception GET /named/term1 (127.0.0.1) HTTPServerRequest(protocol='http', host='127.0.0.1:39831', method='GET', uri='/named/term1', version='HTTP/1.1', remote_ip='127.0.0.1') Traceback (most recent call last): File "/usr/lib/python3.12/site-packages/tornado/websocket.py", line 965, in _accept_connection open_result = handler.open(*handler.open_args, **handler.open_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/websocket.py", line 64, in open self.terminal = self.term_manager.get_terminal(url_component) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 386, in get_terminal term = self.new_terminal() ^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 233, in new_terminal return PtyWithClients(argv, env, cwd) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 58, in __init__ self.ptyproc = PtyProcessUnicode.spawn(**kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/ptyprocess/ptyprocess.py", line 230, in spawn pid, fd = pty.fork() ^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 107, in fork master_fd, slave_fd = openpty() ^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 34, in openpty master_fd, slave_name = _open_terminal() ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 67, in _open_terminal raise OSError('out of pty devices') OSError: out of pty devices _____________________________________________________________________________________________________________________________________ NamedTermTests.test_max_terminals ______________________________________________________________________________________________________________________________________ self = @tornado.testing.gen_test @pytest.mark.skipif("linux" not in platform, reason="It only works on Linux") async def test_max_terminals(self): urls = ["/named/%d" % i for i in range(MAX_TERMS + 1)] tms = await self.get_term_clients(urls[:MAX_TERMS]) > _ = await self.get_pids(tms) self = tms = [, , ] urls = ['/named/0', '/named/1', '/named/2', '/named/3'] tests/basic_test.py:258: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/basic_test.py:150: in get_pids pid = await tm.get_pid() pids = [] self = tm = tm_list = [, , ] tests/basic_test.py:111: in get_pid await self.read_stdout() # Clear out any pending self = _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , timeout = 1.0 async def read_stdout(self, timeout=DONE_TIMEOUT): """Read standard output until timeout read reached, return stdout and any non-stdout msgs received.""" msglist = await self.read_all_msg(timeout) > stdout = "".join([msg[1] for msg in msglist if msg[0] == "stdout"]) E TypeError: 'NoneType' object is not subscriptable msglist = [None] self = timeout = 1.0 tests/basic_test.py:83: TypeError --------------------------------------------------------------------------------------------------------------------------------------------- Captured log call ---------------------------------------------------------------------------------------------------------------------------------------------- WARNING  tornado.general:autoreload.py:125 tornado.autoreload started more than once in the same process INFO  tornado.access:web.py:2407 101 GET /named/0 (127.0.0.1) 0.42ms INFO  terminado.websocket:websocket.py:60 TermSocket.open: 0 INFO  terminado.management:management.py:385 New terminal with specified name: 0 ERROR  tornado.application:web.py:1934 Uncaught exception GET /named/0 (127.0.0.1) HTTPServerRequest(protocol='http', host='127.0.0.1:44623', method='GET', uri='/named/0', version='HTTP/1.1', remote_ip='127.0.0.1') Traceback (most recent call last): File "/usr/lib/python3.12/site-packages/tornado/websocket.py", line 965, in _accept_connection open_result = handler.open(*handler.open_args, **handler.open_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/websocket.py", line 64, in open self.terminal = self.term_manager.get_terminal(url_component) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 386, in get_terminal term = self.new_terminal() ^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 233, in new_terminal return PtyWithClients(argv, env, cwd) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 58, in __init__ self.ptyproc = PtyProcessUnicode.spawn(**kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/ptyprocess/ptyprocess.py", line 230, in spawn pid, fd = pty.fork() ^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 107, in fork master_fd, slave_fd = openpty() ^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 34, in openpty master_fd, slave_name = _open_terminal() ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 67, in _open_terminal raise OSError('out of pty devices') OSError: out of pty devices INFO  tornado.access:web.py:2407 101 GET /named/1 (127.0.0.1) 1.38ms INFO  terminado.websocket:websocket.py:60 TermSocket.open: 1 INFO  terminado.management:management.py:385 New terminal with specified name: 1 ERROR  tornado.application:web.py:1934 Uncaught exception GET /named/1 (127.0.0.1) HTTPServerRequest(protocol='http', host='127.0.0.1:44623', method='GET', uri='/named/1', version='HTTP/1.1', remote_ip='127.0.0.1') Traceback (most recent call last): File "/usr/lib/python3.12/site-packages/tornado/websocket.py", line 965, in _accept_connection open_result = handler.open(*handler.open_args, **handler.open_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/websocket.py", line 64, in open self.terminal = self.term_manager.get_terminal(url_component) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 386, in get_terminal term = self.new_terminal() ^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 233, in new_terminal return PtyWithClients(argv, env, cwd) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 58, in __init__ self.ptyproc = PtyProcessUnicode.spawn(**kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/ptyprocess/ptyprocess.py", line 230, in spawn pid, fd = pty.fork() ^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 107, in fork master_fd, slave_fd = openpty() ^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 34, in openpty master_fd, slave_name = _open_terminal() ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 67, in _open_terminal raise OSError('out of pty devices') OSError: out of pty devices INFO  tornado.access:web.py:2407 101 GET /named/2 (127.0.0.1) 2.33ms INFO  terminado.websocket:websocket.py:60 TermSocket.open: 2 INFO  terminado.management:management.py:385 New terminal with specified name: 2 ERROR  tornado.application:web.py:1934 Uncaught exception GET /named/2 (127.0.0.1) HTTPServerRequest(protocol='http', host='127.0.0.1:44623', method='GET', uri='/named/2', version='HTTP/1.1', remote_ip='127.0.0.1') Traceback (most recent call last): File "/usr/lib/python3.12/site-packages/tornado/websocket.py", line 965, in _accept_connection open_result = handler.open(*handler.open_args, **handler.open_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/websocket.py", line 64, in open self.terminal = self.term_manager.get_terminal(url_component) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 386, in get_terminal term = self.new_terminal() ^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 233, in new_terminal return PtyWithClients(argv, env, cwd) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 58, in __init__ self.ptyproc = PtyProcessUnicode.spawn(**kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/ptyprocess/ptyprocess.py", line 230, in spawn pid, fd = pty.fork() ^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 107, in fork master_fd, slave_fd = openpty() ^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 34, in openpty master_fd, slave_name = _open_terminal() ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 67, in _open_terminal raise OSError('out of pty devices') OSError: out of pty devices _______________________________________________________________________________________________________________________________________ NamedTermTests.test_namespace ________________________________________________________________________________________________________________________________________ self = @tornado.testing.gen_test async def test_namespace(self): names = ["/named/1"] * 2 + ["/named/2"] * 2 tms = await self.get_term_clients(names) > pids = await self.get_pids(tms) names = ['/named/1', '/named/1', '/named/2', '/named/2'] self = tms = [, , , ] tests/basic_test.py:240: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/basic_test.py:150: in get_pids pid = await tm.get_pid() pids = [] self = tm = tm_list = [, , , ] tests/basic_test.py:111: in get_pid await self.read_stdout() # Clear out any pending self = _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , timeout = 1.0 async def read_stdout(self, timeout=DONE_TIMEOUT): """Read standard output until timeout read reached, return stdout and any non-stdout msgs received.""" msglist = await self.read_all_msg(timeout) > stdout = "".join([msg[1] for msg in msglist if msg[0] == "stdout"]) E TypeError: 'NoneType' object is not subscriptable msglist = [None] self = timeout = 1.0 tests/basic_test.py:83: TypeError --------------------------------------------------------------------------------------------------------------------------------------------- Captured log call ---------------------------------------------------------------------------------------------------------------------------------------------- WARNING  tornado.general:autoreload.py:125 tornado.autoreload started more than once in the same process INFO  tornado.access:web.py:2407 101 GET /named/1 (127.0.0.1) 0.33ms INFO  terminado.websocket:websocket.py:60 TermSocket.open: 1 INFO  terminado.management:management.py:385 New terminal with specified name: 1 ERROR  tornado.application:web.py:1934 Uncaught exception GET /named/1 (127.0.0.1) HTTPServerRequest(protocol='http', host='127.0.0.1:44987', method='GET', uri='/named/1', version='HTTP/1.1', remote_ip='127.0.0.1') Traceback (most recent call last): File "/usr/lib/python3.12/site-packages/tornado/websocket.py", line 965, in _accept_connection open_result = handler.open(*handler.open_args, **handler.open_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/websocket.py", line 64, in open self.terminal = self.term_manager.get_terminal(url_component) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 386, in get_terminal term = self.new_terminal() ^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 233, in new_terminal return PtyWithClients(argv, env, cwd) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 58, in __init__ self.ptyproc = PtyProcessUnicode.spawn(**kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/ptyprocess/ptyprocess.py", line 230, in spawn pid, fd = pty.fork() ^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 107, in fork master_fd, slave_fd = openpty() ^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 34, in openpty master_fd, slave_name = _open_terminal() ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 67, in _open_terminal raise OSError('out of pty devices') OSError: out of pty devices INFO  tornado.access:web.py:2407 101 GET /named/1 (127.0.0.1) 1.27ms INFO  terminado.websocket:websocket.py:60 TermSocket.open: 1 INFO  terminado.management:management.py:385 New terminal with specified name: 1 ERROR  tornado.application:web.py:1934 Uncaught exception GET /named/1 (127.0.0.1) HTTPServerRequest(protocol='http', host='127.0.0.1:44987', method='GET', uri='/named/1', version='HTTP/1.1', remote_ip='127.0.0.1') Traceback (most recent call last): File "/usr/lib/python3.12/site-packages/tornado/websocket.py", line 965, in _accept_connection open_result = handler.open(*handler.open_args, **handler.open_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/websocket.py", line 64, in open self.terminal = self.term_manager.get_terminal(url_component) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 386, in get_terminal term = self.new_terminal() ^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 233, in new_terminal return PtyWithClients(argv, env, cwd) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 58, in __init__ self.ptyproc = PtyProcessUnicode.spawn(**kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/ptyprocess/ptyprocess.py", line 230, in spawn pid, fd = pty.fork() ^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 107, in fork master_fd, slave_fd = openpty() ^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 34, in openpty master_fd, slave_name = _open_terminal() ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 67, in _open_terminal raise OSError('out of pty devices') OSError: out of pty devices INFO  tornado.access:web.py:2407 101 GET /named/2 (127.0.0.1) 2.18ms INFO  terminado.websocket:websocket.py:60 TermSocket.open: 2 INFO  terminado.management:management.py:385 New terminal with specified name: 2 ERROR  tornado.application:web.py:1934 Uncaught exception GET /named/2 (127.0.0.1) HTTPServerRequest(protocol='http', host='127.0.0.1:44987', method='GET', uri='/named/2', version='HTTP/1.1', remote_ip='127.0.0.1') Traceback (most recent call last): File "/usr/lib/python3.12/site-packages/tornado/websocket.py", line 965, in _accept_connection open_result = handler.open(*handler.open_args, **handler.open_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/websocket.py", line 64, in open self.terminal = self.term_manager.get_terminal(url_component) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 386, in get_terminal term = self.new_terminal() ^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 233, in new_terminal return PtyWithClients(argv, env, cwd) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 58, in __init__ self.ptyproc = PtyProcessUnicode.spawn(**kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/ptyprocess/ptyprocess.py", line 230, in spawn pid, fd = pty.fork() ^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 107, in fork master_fd, slave_fd = openpty() ^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 34, in openpty master_fd, slave_name = _open_terminal() ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 67, in _open_terminal raise OSError('out of pty devices') OSError: out of pty devices INFO  tornado.access:web.py:2407 101 GET /named/2 (127.0.0.1) 0.16ms INFO  terminado.websocket:websocket.py:60 TermSocket.open: 2 INFO  terminado.management:management.py:385 New terminal with specified name: 2 ERROR  tornado.application:web.py:1934 Uncaught exception GET /named/2 (127.0.0.1) HTTPServerRequest(protocol='http', host='127.0.0.1:44987', method='GET', uri='/named/2', version='HTTP/1.1', remote_ip='127.0.0.1') Traceback (most recent call last): File "/usr/lib/python3.12/site-packages/tornado/websocket.py", line 965, in _accept_connection open_result = handler.open(*handler.open_args, **handler.open_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/websocket.py", line 64, in open self.terminal = self.term_manager.get_terminal(url_component) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 386, in get_terminal term = self.new_terminal() ^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 233, in new_terminal return PtyWithClients(argv, env, cwd) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 58, in __init__ self.ptyproc = PtyProcessUnicode.spawn(**kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/ptyprocess/ptyprocess.py", line 230, in spawn pid, fd = pty.fork() ^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 107, in fork master_fd, slave_fd = openpty() ^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 34, in openpty master_fd, slave_name = _open_terminal() ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 67, in _open_terminal raise OSError('out of pty devices') OSError: out of pty devices __________________________________________________________________________________________________________________________________________ NamedTermTests.test_new ___________________________________________________________________________________________________________________________________________ self = def test_new(self): response = self.fetch("/new", follow_redirects=False) > self.assertEqual(response.code, 302) E AssertionError: 500 != 302 response = HTTPResponse(_body=None,_error_is_response_code=True,buffer=<_io.BytesIO object at 0x7334f6fadf80>,code=500,effective_...ient.HTTPRequest object at 0x7334f6fab1d0>,request_time=0.003017425537109375,start_time=1760331039.420888,time_info={}) self = tests/basic_test.py:229: AssertionError --------------------------------------------------------------------------------------------------------------------------------------------- Captured log call ---------------------------------------------------------------------------------------------------------------------------------------------- WARNING  tornado.general:autoreload.py:125 tornado.autoreload started more than once in the same process ERROR  tornado.application:web.py:1934 Uncaught exception GET /new (127.0.0.1) HTTPServerRequest(protocol='http', host='127.0.0.1:46375', method='GET', uri='/new', version='HTTP/1.1', remote_ip='127.0.0.1') Traceback (most recent call last): File "/usr/lib/python3.12/site-packages/tornado/web.py", line 1846, in _execute result = method(*self.path_args, **self.path_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/tests/basic_test.py", line 181, in get name, terminal = named_tm.new_named_terminal() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 404, in new_named_terminal term = self.new_terminal(**kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 233, in new_terminal return PtyWithClients(argv, env, cwd) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 58, in __init__ self.ptyproc = PtyProcessUnicode.spawn(**kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/ptyprocess/ptyprocess.py", line 230, in spawn pid, fd = pty.fork() ^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 107, in fork master_fd, slave_fd = openpty() ^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 34, in openpty master_fd, slave_name = _open_terminal() ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 67, in _open_terminal raise OSError('out of pty devices') OSError: out of pty devices ERROR  tornado.access:web.py:2407 500 GET /new (127.0.0.1) 1.76ms ____________________________________________________________________________________________________________________________________ SingleTermTests.test_single_process _____________________________________________________________________________________________________________________________________ self = @tornado.testing.gen_test async def test_single_process(self): tms = await self.get_term_clients(["/single", "/single"]) > pids = await self.get_pids(tms) self = tms = [, ] tests/basic_test.py:272: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/basic_test.py:150: in get_pids pid = await tm.get_pid() pids = [] self = tm = tm_list = [, ] tests/basic_test.py:111: in get_pid await self.read_stdout() # Clear out any pending self = _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , timeout = 1.0 async def read_stdout(self, timeout=DONE_TIMEOUT): """Read standard output until timeout read reached, return stdout and any non-stdout msgs received.""" msglist = await self.read_all_msg(timeout) > stdout = "".join([msg[1] for msg in msglist if msg[0] == "stdout"]) E TypeError: 'NoneType' object is not subscriptable msglist = [None] self = timeout = 1.0 tests/basic_test.py:83: TypeError --------------------------------------------------------------------------------------------------------------------------------------------- Captured log call ---------------------------------------------------------------------------------------------------------------------------------------------- WARNING  tornado.general:autoreload.py:125 tornado.autoreload started more than once in the same process INFO  tornado.access:web.py:2407 101 GET /single (127.0.0.1) 0.15ms INFO  terminado.websocket:websocket.py:60 TermSocket.open: None ERROR  tornado.application:web.py:1934 Uncaught exception GET /single (127.0.0.1) HTTPServerRequest(protocol='http', host='127.0.0.1:40971', method='GET', uri='/single', version='HTTP/1.1', remote_ip='127.0.0.1') Traceback (most recent call last): File "/usr/lib/python3.12/site-packages/tornado/websocket.py", line 965, in _accept_connection open_result = handler.open(*handler.open_args, **handler.open_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/websocket.py", line 64, in open self.terminal = self.term_manager.get_terminal(url_component) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 313, in get_terminal self.terminal = self.new_terminal() ^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 233, in new_terminal return PtyWithClients(argv, env, cwd) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 58, in __init__ self.ptyproc = PtyProcessUnicode.spawn(**kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/ptyprocess/ptyprocess.py", line 230, in spawn pid, fd = pty.fork() ^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 107, in fork master_fd, slave_fd = openpty() ^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 34, in openpty master_fd, slave_name = _open_terminal() ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 67, in _open_terminal raise OSError('out of pty devices') OSError: out of pty devices INFO  tornado.access:web.py:2407 101 GET /single (127.0.0.1) 0.15ms INFO  terminado.websocket:websocket.py:60 TermSocket.open: None ERROR  tornado.application:web.py:1934 Uncaught exception GET /single (127.0.0.1) HTTPServerRequest(protocol='http', host='127.0.0.1:40971', method='GET', uri='/single', version='HTTP/1.1', remote_ip='127.0.0.1') Traceback (most recent call last): File "/usr/lib/python3.12/site-packages/tornado/websocket.py", line 965, in _accept_connection open_result = handler.open(*handler.open_args, **handler.open_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/websocket.py", line 64, in open self.terminal = self.term_manager.get_terminal(url_component) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 313, in get_terminal self.terminal = self.new_terminal() ^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 233, in new_terminal return PtyWithClients(argv, env, cwd) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 58, in __init__ self.ptyproc = PtyProcessUnicode.spawn(**kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/ptyprocess/ptyprocess.py", line 230, in spawn pid, fd = pty.fork() ^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 107, in fork master_fd, slave_fd = openpty() ^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 34, in openpty master_fd, slave_name = _open_terminal() ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 67, in _open_terminal raise OSError('out of pty devices') OSError: out of pty devices _____________________________________________________________________________________________________________________________________ UniqueTermTests.test_max_terminals _____________________________________________________________________________________________________________________________________ self = @tornado.testing.gen_test @pytest.mark.skipif("linux" not in platform, reason="It only works on Linux") async def test_max_terminals(self): tms = await self.get_term_clients(["/unique"] * MAX_TERMS) > pids = await self.get_pids(tms) self = tms = [, , ] tests/basic_test.py:294: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/basic_test.py:150: in get_pids pid = await tm.get_pid() pids = [] self = tm = tm_list = [, , ] tests/basic_test.py:111: in get_pid await self.read_stdout() # Clear out any pending self = _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , timeout = 1.0 async def read_stdout(self, timeout=DONE_TIMEOUT): """Read standard output until timeout read reached, return stdout and any non-stdout msgs received.""" msglist = await self.read_all_msg(timeout) > stdout = "".join([msg[1] for msg in msglist if msg[0] == "stdout"]) E TypeError: 'NoneType' object is not subscriptable msglist = [None] self = timeout = 1.0 tests/basic_test.py:83: TypeError --------------------------------------------------------------------------------------------------------------------------------------------- Captured log call ---------------------------------------------------------------------------------------------------------------------------------------------- WARNING  tornado.general:autoreload.py:125 tornado.autoreload started more than once in the same process INFO  tornado.access:web.py:2407 101 GET /unique (127.0.0.1) 0.27ms INFO  terminado.websocket:websocket.py:60 TermSocket.open: None ERROR  tornado.application:web.py:1934 Uncaught exception GET /unique (127.0.0.1) HTTPServerRequest(protocol='http', host='127.0.0.1:35135', method='GET', uri='/unique', version='HTTP/1.1', remote_ip='127.0.0.1') Traceback (most recent call last): File "/usr/lib/python3.12/site-packages/tornado/websocket.py", line 965, in _accept_connection open_result = handler.open(*handler.open_args, **handler.open_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/websocket.py", line 64, in open self.terminal = self.term_manager.get_terminal(url_component) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 348, in get_terminal term = self.new_terminal() ^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 233, in new_terminal return PtyWithClients(argv, env, cwd) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 58, in __init__ self.ptyproc = PtyProcessUnicode.spawn(**kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/ptyprocess/ptyprocess.py", line 230, in spawn pid, fd = pty.fork() ^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 107, in fork master_fd, slave_fd = openpty() ^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 34, in openpty master_fd, slave_name = _open_terminal() ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 67, in _open_terminal raise OSError('out of pty devices') OSError: out of pty devices INFO  tornado.access:web.py:2407 101 GET /unique (127.0.0.1) 1.27ms INFO  terminado.websocket:websocket.py:60 TermSocket.open: None ERROR  tornado.application:web.py:1934 Uncaught exception GET /unique (127.0.0.1) HTTPServerRequest(protocol='http', host='127.0.0.1:35135', method='GET', uri='/unique', version='HTTP/1.1', remote_ip='127.0.0.1') Traceback (most recent call last): File "/usr/lib/python3.12/site-packages/tornado/websocket.py", line 965, in _accept_connection open_result = handler.open(*handler.open_args, **handler.open_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/websocket.py", line 64, in open self.terminal = self.term_manager.get_terminal(url_component) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 348, in get_terminal term = self.new_terminal() ^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 233, in new_terminal return PtyWithClients(argv, env, cwd) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 58, in __init__ self.ptyproc = PtyProcessUnicode.spawn(**kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/ptyprocess/ptyprocess.py", line 230, in spawn pid, fd = pty.fork() ^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 107, in fork master_fd, slave_fd = openpty() ^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 34, in openpty master_fd, slave_name = _open_terminal() ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 67, in _open_terminal raise OSError('out of pty devices') OSError: out of pty devices INFO  tornado.access:web.py:2407 101 GET /unique (127.0.0.1) 0.21ms INFO  terminado.websocket:websocket.py:60 TermSocket.open: None ERROR  tornado.application:web.py:1934 Uncaught exception GET /unique (127.0.0.1) HTTPServerRequest(protocol='http', host='127.0.0.1:35135', method='GET', uri='/unique', version='HTTP/1.1', remote_ip='127.0.0.1') Traceback (most recent call last): File "/usr/lib/python3.12/site-packages/tornado/websocket.py", line 965, in _accept_connection open_result = handler.open(*handler.open_args, **handler.open_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/websocket.py", line 64, in open self.terminal = self.term_manager.get_terminal(url_component) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 348, in get_terminal term = self.new_terminal() ^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 233, in new_terminal return PtyWithClients(argv, env, cwd) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 58, in __init__ self.ptyproc = PtyProcessUnicode.spawn(**kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/ptyprocess/ptyprocess.py", line 230, in spawn pid, fd = pty.fork() ^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 107, in fork master_fd, slave_fd = openpty() ^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 34, in openpty master_fd, slave_name = _open_terminal() ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 67, in _open_terminal raise OSError('out of pty devices') OSError: out of pty devices ___________________________________________________________________________________________________________________________________ UniqueTermTests.test_unique_processes ____________________________________________________________________________________________________________________________________ self = @tornado.testing.gen_test async def test_unique_processes(self): tms = await self.get_term_clients(["/unique", "/unique"]) > pids = await self.get_pids(tms) self = tms = [, ] tests/basic_test.py:286: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/basic_test.py:150: in get_pids pid = await tm.get_pid() pids = [] self = tm = tm_list = [, ] tests/basic_test.py:111: in get_pid await self.read_stdout() # Clear out any pending self = _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , timeout = 1.0 async def read_stdout(self, timeout=DONE_TIMEOUT): """Read standard output until timeout read reached, return stdout and any non-stdout msgs received.""" msglist = await self.read_all_msg(timeout) > stdout = "".join([msg[1] for msg in msglist if msg[0] == "stdout"]) E TypeError: 'NoneType' object is not subscriptable msglist = [None] self = timeout = 1.0 tests/basic_test.py:83: TypeError --------------------------------------------------------------------------------------------------------------------------------------------- Captured log call ---------------------------------------------------------------------------------------------------------------------------------------------- WARNING  tornado.general:autoreload.py:125 tornado.autoreload started more than once in the same process INFO  tornado.access:web.py:2407 101 GET /unique (127.0.0.1) 0.24ms INFO  terminado.websocket:websocket.py:60 TermSocket.open: None ERROR  tornado.application:web.py:1934 Uncaught exception GET /unique (127.0.0.1) HTTPServerRequest(protocol='http', host='127.0.0.1:42771', method='GET', uri='/unique', version='HTTP/1.1', remote_ip='127.0.0.1') Traceback (most recent call last): File "/usr/lib/python3.12/site-packages/tornado/websocket.py", line 965, in _accept_connection open_result = handler.open(*handler.open_args, **handler.open_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/websocket.py", line 64, in open self.terminal = self.term_manager.get_terminal(url_component) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 348, in get_terminal term = self.new_terminal() ^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 233, in new_terminal return PtyWithClients(argv, env, cwd) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 58, in __init__ self.ptyproc = PtyProcessUnicode.spawn(**kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/ptyprocess/ptyprocess.py", line 230, in spawn pid, fd = pty.fork() ^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 107, in fork master_fd, slave_fd = openpty() ^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 34, in openpty master_fd, slave_name = _open_terminal() ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 67, in _open_terminal raise OSError('out of pty devices') OSError: out of pty devices INFO  tornado.access:web.py:2407 101 GET /unique (127.0.0.1) 1.11ms INFO  terminado.websocket:websocket.py:60 TermSocket.open: None ERROR  tornado.application:web.py:1934 Uncaught exception GET /unique (127.0.0.1) HTTPServerRequest(protocol='http', host='127.0.0.1:42771', method='GET', uri='/unique', version='HTTP/1.1', remote_ip='127.0.0.1') Traceback (most recent call last): File "/usr/lib/python3.12/site-packages/tornado/websocket.py", line 965, in _accept_connection open_result = handler.open(*handler.open_args, **handler.open_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/websocket.py", line 64, in open self.terminal = self.term_manager.get_terminal(url_component) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 348, in get_terminal term = self.new_terminal() ^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 233, in new_terminal return PtyWithClients(argv, env, cwd) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/udu/aports/community/py3-terminado/src/terminado-0.18.1/terminado/management.py", line 58, in __init__ self.ptyproc = PtyProcessUnicode.spawn(**kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/ptyprocess/ptyprocess.py", line 230, in spawn pid, fd = pty.fork() ^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 107, in fork master_fd, slave_fd = openpty() ^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 34, in openpty master_fd, slave_name = _open_terminal() ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/pty.py", line 67, in _open_terminal raise OSError('out of pty devices') OSError: out of pty devices ============================================================================================================================================== warnings summary ============================================================================================================================================== tests/basic_test.py: 17 warnings /usr/lib/python3.12/pty.py:95: DeprecationWarning: This process (pid=2055595) is multi-threaded, use of forkpty() may lead to deadlocks in the child. pid, fd = os.forkpty() -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html ============================================================================================================================================ slowest 10 durations ============================================================================================================================================ 1.01s call tests/basic_test.py::NamedTermTests::test_namespace 1.01s call tests/basic_test.py::UniqueTermTests::test_max_terminals 1.01s call tests/basic_test.py::NamedTermTests::test_max_terminals 1.00s call tests/basic_test.py::SingleTermTests::test_single_process 1.00s call tests/basic_test.py::UniqueTermTests::test_unique_processes 1.00s call tests/basic_test.py::CommonTests::test_basic_command 0.01s call tests/basic_test.py::CommonTests::test_basic (3 durations < 0.005s hidden. Use -vv to show these durations.) ========================================================================================================================================== short test summary info =========================================================================================================================================== FAILED tests/basic_test.py::CommonTests::test_basic - AssertionError: None != ['setup', {}] FAILED tests/basic_test.py::CommonTests::test_basic_command - tornado.websocket.WebSocketClosedError FAILED tests/basic_test.py::NamedTermTests::test_max_terminals - TypeError: 'NoneType' object is not subscriptable FAILED tests/basic_test.py::NamedTermTests::test_namespace - TypeError: 'NoneType' object is not subscriptable FAILED tests/basic_test.py::NamedTermTests::test_new - AssertionError: 500 != 302 FAILED tests/basic_test.py::SingleTermTests::test_single_process - TypeError: 'NoneType' object is not subscriptable FAILED tests/basic_test.py::UniqueTermTests::test_max_terminals - TypeError: 'NoneType' object is not subscriptable FAILED tests/basic_test.py::UniqueTermTests::test_unique_processes - TypeError: 'NoneType' object is not subscriptable ================================================================================================================================ 8 failed, 1 deselected, 17 warnings in 6.22s ================================================================================================================================ >>> ERROR: py3-terminado: check failed >>> py3-terminado: Uninstalling dependencies... (1/31) Purging .makedepends-py3-terminado (20251013.045035) (2/31) Purging py3-ptyprocess-pyc (0.7.0-r6) (3/31) Purging py3-ptyprocess (0.7.0-r6) (4/31) Purging py3-tornado-pyc (6.5.1-r0) (5/31) Purging py3-tornado (6.5.1-r0) (6/31) Purging py3-gpep517-pyc (19-r0) (7/31) Purging py3-gpep517 (19-r0) (8/31) Purging py3-installer-pyc (0.7.0-r2) (9/31) Purging py3-installer (0.7.0-r2) (10/31) Purging py3-hatchling-pyc (1.27.0-r0) (11/31) Purging py3-hatchling (1.27.0-r0) (12/31) Purging py3-editables-pyc (0.5-r2) (13/31) Purging py3-editables (0.5-r2) (14/31) Purging py3-pathspec-pyc (0.12.1-r2) (15/31) Purging py3-pathspec (0.12.1-r2) (16/31) Purging py3-trove-classifiers-pyc (2025.9.11.17-r0) (17/31) Purging py3-trove-classifiers (2025.9.11.17-r0) (18/31) Purging py3-pytest-timeout-pyc (2.3.1-r1) (19/31) Purging py3-pytest-timeout (2.3.1-r1) (20/31) Purging py3-pytest-pyc (8.3.5-r0) (21/31) Purging py3-pytest (8.3.5-r0) (22/31) Purging py3-iniconfig-pyc (2.1.0-r0) (23/31) Purging py3-iniconfig (2.1.0-r0) (24/31) Purging py3-packaging-pyc (25.0-r0) (25/31) Purging py3-packaging (25.0-r0) (26/31) Purging py3-parsing-pyc (3.2.3-r0) (27/31) Purging py3-parsing (3.2.3-r0) (28/31) Purging py3-pluggy-pyc (1.5.0-r0) (29/31) Purging py3-pluggy (1.5.0-r0) (30/31) Purging py3-py-pyc (1.11.0-r4) (31/31) Purging py3-py (1.11.0-r4) Executing busybox-1.37.0-r19.trigger OK: 296 MiB in 89 packages