code: def do_txn(self, params):
          
          try:
              with self.transaction():
                  for cmd in params.cmds:
                      try:
                          self.onecmd(cmd)
                      except AttributeError:
                          # silently swallow unrecognized commands
                          pass
          except BadVersionError:
              self.show_output("Bad version.")
          except NoNodeError:
              self.show_output("Missing path.")
          except NodeExistsError:
              self.show_output("One of the paths exists.")
docs: \x1b[1mNAME\x1b[0m
          txn - Create and execute a transaction
  
  \x1b[1mSYNOPSIS\x1b[0m
          txn <cmd> [cmd] [cmd] ... [cmd]
  
  \x1b[1mDESCRIPTION\x1b[0m
          Allowed cmds are check, create, rm and set. Check parameters are:
  
          check <path> <version>
  
          For create, rm and set see their help menu for their respective parameters.
  
  \x1b[1mEXAMPLES\x1b[0m
          > txn 'create /foo "start"' 'check /foo 0' 'set /foo "end"' 'rm /foo 1'