class_docstr: Wrapper around os.pipe, that ensures we don't double close any end.
class_docstr_tok: ["Wrapper","around","os.pipe",",","that","ensures","we","do","n't","double","close","any","end","."]
docstr: Close read-end if not yet closed.
docstr_tok: ["Close","read-end","if","not","yet","closed","."]
code: def close_read(self) -> None:
      "Close read-end if not yet closed."
      if self._read_closed:
          return
  
      os.close(self.read_fd)
      self._read_closed = True
  
imports: from __future__ import annotations
  import sys
  import os
  from contextlib import contextmanager
  from typing import ContextManager, Iterator, TextIO, cast
  from ..utils import DummyContext
  from .base import PipeInput
  from .vt100 import Vt100Input
label_desc: Use image node_id 2 for calling the _Pipe obj's underlying member method code with example usage: obj.close_read() without return types