class_docstr: Class representing a pipeline template.
class_docstr_tok: ["Class","representing","a","pipeline","template","."]
docstr: t.open_r(file) and t.open_w(file) implement
  t.open(file, 'r') and t.open(file, 'w') respectively.
docstr_tok: ["t.open_r","(","file",")","and","t.open_w","(","file",")","implement","t.open","(","file",",","'","r","'",")","and","t.open","(","file",",","'","w","'",")","respectively","."]
code: def open_r(self, file):
      """t.open_r(file) and t.open_w(file) implement
      t.open(file, 'r') and t.open(file, 'w') respectively."""
      if not self.steps:
          return open(file, "r")
      if self.steps[-1][1] == SINK:
          raise ValueError("Template.open_r: pipeline ends width SINK")
      cmd = self.makepipeline(file, "")
      return os.popen(cmd, "r")
  
file_path: catboost/contrib/tools/python3/src/Lib/pipes.py
imports: import re
  import os
  import tempfile
  import warnings
  from shlex import quote
label_desc: Use image node_id 9 for calling the Template obj's underlying member method code with example usage: obj.open_r(file) and returns: os, open