def _create_repl(self): cmd = self.executable if 'octave-cli' not in cmd: version_cmd = [self.executable, '--version'] version = subprocess.check_output(version_cmd).decode('utf-8') if 'version 4' in version: cmd += ' --no-gui' # Interactive mode prevents crashing on Windows on syntax errors. # Delay sourcing the "~/.octaverc" file in case it displays a pager. cmd += ' --interactive --quiet --no-init-file ' # Add cli options provided by the user. cmd += os.environ.get('OCTAVE_CLI_OPTIONS', self.cli_options) orig_prompt = u('octave.*>') change_prompt = u("PS1('{0}'); PS2('{1}')") repl = REPLWrapper(cmd, orig_prompt, change_prompt, stdin_prompt_regex=STDIN_PROMPT_REGEX, force_prompt_on_continuation=True) if os.name == 'nt': repl.child.crlf = '\n' repl.interrupt = self._interrupt # Remove the default 50ms delay before sending lines. repl.child.delaybeforesend = None return repl
def makeWrapper(self): """Start an PsySH process and return a :class:`REPLWrapper` object. """ executable = self.executable wrapper = REPLWrapper(executable, u('>>>'), None, continuation_prompt_regex=u('\.\.\.'), echo=True) wrapper.child.linesep = '\n' return wrapper
def makeWrapper(self): """ Start a math/mathics kernel and return a :class:`REPLWrapper` object. """ self.js_libraries_loaded = False # Maybe we can consider as prompt P:, M: and # Out[]:= to catch all signals in real time orig_prompt = u('In\[.*\]:=') prompt_cmd = None change_prompt = None self.check_wolfram() if self.kernel_type == "mathics": cmdline = self.language_info[ 'exec'] + " --colors NOCOLOR --persist '" + self.initfilename + "'" else: cmdline = self.language_info[ 'exec'] + " -rawterm -initfile '" + self.initfilename + "'" # self.log.warning("Building the process wrapper...") myspawner = spawnu(cmdline, errors="ignore", echo=False) replwrapper = REPLWrapper(myspawner, orig_prompt, change_prompt, prompt_emit_cmd=None, echo=False) #self.log.warning(" ... done") return replwrapper
def makeWrapper(self): """ Start a math/mathics kernel and return a :class:`REPLWrapper` object. """ self.js_libraries_loaded = False orig_prompt = u("In\[.*\]:=") prompt_cmd = None change_prompt = None self.check_wolfram() if self.kernel_type in ["wolfram"]: print("Wolfram Kernel or compabible found") self.process_response = self.process_response_wolfram self.open_envel = 'ToExpression["Identity[' self.close_envel = ']"]' cmdline = ( self.language_info["exec"] + " -rawterm -initfile '" + self.initfilename + "'" ) if self.kernel_type in ["expreduce"]: print("Expreduce found") self.open_envel = "" self.close_envel = "" self.process_response = self.process_response_wolfram self.do_execute_direct = self.do_execute_direct_expred self.do_execute_direct_single_command = ( self.do_execute_direct_single_command_expred ) cmdline = ( self.language_info["exec"] + " -rawterm -initfile '" + self.initfilename + "'" ) elif self.kernel_type in ["mathics"]: print("Mathics found") self.process_response = self.process_response_mathics self.open_envel = 'ToExpression["Identity[' self.close_envel = ']"]' cmdline = ( self.language_info["exec"] + " --colors NOCOLOR --no-readline --persist '" + self.initfilename + "'" ) self.myspawner = spawnu(cmdline, errors="ignore", echo=False) replwrapper = REPLWrapper( self.myspawner, orig_prompt, change_prompt, continuation_prompt_regex="Interrupt>", prompt_emit_cmd=None, echo=False, ) return replwrapper
def makeWrapper(self): """ Start gnuplot and return wrapper around the REPL """ if pexpect.which('gnuplot'): program = 'gnuplot' elif pexpect.which('gnuplot.exe'): program = 'gnuplot.exe' else: raise Exception("gnuplot not found.") # We don't want help commands getting stuck, # use a non interactive PAGER if pexpect.which('env') and pexpect.which('cat'): command = 'env PAGER=cat {}'.format(program) else: command = program d = dict(cmd_or_spawn=command, prompt_regex=u('\w*> $'), prompt_change_cmd=None) wrapper = GnuplotREPLWrapper(**d) # No sleeping before sending commands to gnuplot wrapper.child.delaybeforesend = 0 return wrapper
def makeWrapper(self): """Start a MrBayes process and return a :class:`REPLWrapper` object. """ #if os.name == 'nt': # orig_prompt = u(chr(3)) # prompt_cmd = u('disp(char(3))') # change_prompt = None #else: # orig_prompt = u('octave.*>') # prompt_cmd = None # change_prompt = u("PS1('{0}'); PS2('{1}')") orig_prompt = u('MrBayes > ') prompt_cmd = None change_prompt = None self._first = True executable = os.environ.get('MRBAYES_EXECUTABLE', 'mb') #try: # info = subprocess.check_output([executable, '--version']) # if 'version 4' in info.decode('utf-8').lower(): # executable += ' --no-gui' #except OSError: # pragma: no cover # pass return REPLWrapper(executable, orig_prompt, change_prompt, prompt_emit_cmd=prompt_cmd)
def makeWrapper(self): """Start an Octave process and return a :class:`REPLWrapper` object. """ if os.name == 'nt': orig_prompt = u(chr(3)) prompt_cmd = u('disp(char(3))') change_prompt = None else: orig_prompt = u('octave.*>') prompt_cmd = None change_prompt = u("PS1('{0}'); PS2('{1}')") self._first = True executable = os.environ.get('OCTAVE_EXECUTABLE', 'octave') return REPLWrapper(executable, orig_prompt, change_prompt, prompt_emit_cmd=prompt_cmd)
def makeWrapper(self): """Start a bash shell and return a :class:`REPLWrapper` object. Note that this is equivalent :function:`metakernel.pyexpect.bash`, but is used here as an example of how to be cross-platform. """ if os.name == 'nt': orig_prompt = u(chr(3)) prompt_cmd = u('disp(char(3))') change_prompt = None else: orig_prompt = u('octave.*>') prompt_cmd = None change_prompt = u("PS1('{0}'); PS2('{1}')") self._first = True return REPLWrapper('octave', orig_prompt, change_prompt, prompt_emit_cmd=prompt_cmd)
def makeWrapper(self): """Start a Scilab process and return a :class:`REPLWrapper` object. """ if os.name == 'nt': orig_prompt = u(chr(3)) prompt_cmd = u('disp(char(3))') change_prompt = None else: orig_prompt = u('-->') prompt_cmd = None change_prompt = None self._first = True executable = self.executable + ' -nw' wrapper = REPLWrapper(executable, orig_prompt, change_prompt, prompt_emit_cmd=prompt_cmd) wrapper.child.linesep = '\n' return wrapper
def makeWrapper(self): """Start an Octave process and return a :class:`REPLWrapper` object. """ if os.name == 'nt': orig_prompt = u(chr(3)) prompt_cmd = u('disp(char(3))') change_prompt = None else: orig_prompt = u('octave.*>') prompt_cmd = None change_prompt = u("PS1('{0}'); PS2('{1}')") self._first = True executable = self.executable if 'version 4' in self.banner: executable += ' --no-gui' wrapper = REPLWrapper(executable, orig_prompt, change_prompt, prompt_emit_cmd=prompt_cmd) wrapper.child.linesep = '\n' return wrapper
def makeWrapper(self): """Start an Octave process and return a :class:`REPLWrapper` object. """ if os.name == "nt": orig_prompt = u(chr(3)) prompt_cmd = u("disp(char(3))") change_prompt = None else: orig_prompt = u("octave.*>") prompt_cmd = None change_prompt = u("PS1('{0}'); PS2('{1}')") self._first = True executable = os.environ.get("OCTAVE_EXECUTABLE", "octave") try: info = subprocess.check_output([executable, "--version"]) if "version 4" in info.decode("utf-8").lower(): executable += " --no-gui" except OSError: # pragma: no cover pass return REPLWrapper(executable, orig_prompt, change_prompt, prompt_emit_cmd=prompt_cmd)
def makeWrapper(self): """Start an Octave process and return a :class:`REPLWrapper` object. """ if os.name == 'nt': orig_prompt = u(chr(3)) prompt_cmd = u('disp(char(3))') change_prompt = None else: orig_prompt = u('octave.*>') prompt_cmd = None change_prompt = u("PS1('{0}'); PS2('{1}')") self._first = True executable = os.environ.get('OCTAVE_EXECUTABLE', 'octave') try: info = subprocess.check_output([executable, '--version']) if 'version 4' in info.decode('utf-8').lower(): executable += ' --no-gui' except OSError: # pragma: no cover pass return REPLWrapper(executable, orig_prompt, change_prompt, prompt_emit_cmd=prompt_cmd)
def makeWrapper(self): """ Start gnuplot and return wrapper around the REPL """ if not pexpect.which('gnuplot'): raise Exception("gnuplot not found.") # We don't want help commands getting stuck, # use a non interactive PAGER command = 'env PAGER=cat gnuplot' d = dict(cmd_or_spawn=command, prompt_regex=u('\w*> $'), prompt_change_cmd=None) wrapper = GnuplotREPLWrapper(**d) # No sleeping before sending commands to gnuplot wrapper.child.delaybeforesend = 0 return wrapper
def makeWrapper(self): """ Start a math/mathics kernel and return a :class:`REPLWrapper` object. """ self.js_libraries_loaded = False orig_prompt = u('In\[.*\]:=') prompt_cmd = None change_prompt = None self.check_wolfram() if self.kernel_type in ["wolfram"]: self.process_response = self.process_response_wolfram self.open_envel = "ToExpression[\"Identity[" self.close_envel = "]\"]" cmdline = self.language_info['exec'] + " -rawterm -initfile '" + \ self.initfilename + "'" if self.kernel_type in ["expreduce"]: self.process_response = self.process_response_wolfram self.do_execute_direct = self.do_execute_direct_expred self.do_execute_direct_single_command = \ self.do_execute_direct_single_command_expred cmdline = self.language_info['exec'] + \ " -rawterm -initfile '" + self.initfilename + "'" elif self.kernel_type in ["mathics"]: self.process_response = self.process_response_mathics self.open_envel = "$PrePrint[ToExpression[\"Identity[" self.close_envel = "]\"]]" cmdline = self.language_info['exec'] + \ " --colors NOCOLOR --persist '" + \ self.initfilename + "'" self.myspawner = spawnu(cmdline, errors="ignore", echo=False) replwrapper = REPLWrapper(self.myspawner, orig_prompt, change_prompt, continuation_prompt_regex="Interrupt>", prompt_emit_cmd=None, echo=False) return replwrapper
def banner(self): if self._banner is None: banner = "mathics 0.1" self._banner = u(banner) return self._banner
def banner(self): if self._banner is None: banner = "wolfram kernel 0.1" self._banner = u(banner) return self._banner