code: def pipe_notebook(notebook, command, fmt='py:percent', update=True, preserve_outputs=True):
      
      if command in ['black', 'flake8', 'autopep8']:
          command = command + ' -'
  
      fmt = long_form_one_format(fmt, notebook.metadata)
      text = writes(notebook, fmt)
      process = subprocess.Popen(command.split(' '), stdout=subprocess.PIPE, stdin=subprocess.PIPE)
      cmd_output, err = process.communicate(input=text.encode('utf-8'))
  
      if process.returncode:
          sys.stderr.write("Command '{}' exited with code {}: {}"
                           .format(command, process.returncode, err or cmd_output))
          raise SystemExit(process.returncode)
  
      if not update:
          return notebook
  
      if not cmd_output:
          sys.stderr.write("[jupytext] The command '{}' had no output. As a result, the notebook is empty. "
                           "Is this expected? If not, use --check rather than --pipe for this command.".format(command))
  
      piped_notebook = reads(cmd_output.decode('utf-8'), fmt)
  
      if preserve_outputs:
          combine_inputs_with_outputs(piped_notebook, notebook, fmt)
  
      # Remove jupytext / text_representation entry
      piped_notebook.metadata.pop('jupytext')
      if 'jupytext' in notebook.metadata:
          piped_notebook.metadata['jupytext'] = notebook.metadata['jupytext']
  
      return piped_notebook
docs: Pipe the notebook, in the desired representation, to the given command. Update the notebook
      with the returned content if desired.