Beispiel #1
0
    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
Beispiel #2
0
    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
Beispiel #3
0
    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
Beispiel #4
0
    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
Beispiel #5
0
    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
Beispiel #6
0
    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)
Beispiel #10
0
    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
Beispiel #11
0
    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
Beispiel #12
0
    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
Beispiel #13
0
    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)
Beispiel #15
0
    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)
Beispiel #16
0
    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
Beispiel #17
0
    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
Beispiel #18
0
 def banner(self):
     if self._banner is None:
         banner = "mathics 0.1"
         self._banner = u(banner)
     return self._banner
Beispiel #19
0
 def banner(self):
     if self._banner is None:
         banner = "wolfram kernel 0.1"
         self._banner = u(banner)
     return self._banner