extrabacon / python-shell

Run Python scripts from Node.js with simple (but efficient) inter-process communication through stdio
2.11k stars 224 forks source link

Support Bun #305

Open exKAZUu opened 5 months ago

exKAZUu commented 5 months ago

Describe the bug python-shell doesn't work on Bun.

Python code See the below.

Javascript code https://github.com/extrabacon/python-shell#running-python-code

import { PythonShell } from 'python-shell';

PythonShell.runString('x=1+1;print(x)', null).then((messages) => {
  console.log('finished');
});

Expected behavior 2 is shown.

Actual behavior

$ bun example.js
128 |         this.stderrParser = resolve('parse', options.stderrParser || 'text');
129 |         this.terminated = false;
130 |         this.childProcess = (0, child_process_1.spawn)(pythonPath, this.command, options);
131 |         ['stdout', 'stdin', 'stderr'].forEach(function (name) {
132 |             self[name] = self.childProcess[name];
133 |             self.parser && self[name] && self[name].setEncoding(options.encoding || 'utf8');
                                               ^
TypeError: self[name].setEncoding is not a function. (In 'self[name].setEncoding(options.encoding || "utf8")', 'self[name].setEncoding' is undefined)
      at /Users/exkazuu/ghq/github.com/WillBoosterLab/repair-ai/node_modules/python-shell/index.js:133:42
      at forEach (:1:21)
      at new PythonShell (/Users/exkazuu/ghq/github.com/WillBoosterLab/repair-ai/node_modules/python-shell/index.js:131:9)
      at /Users/exkazuu/ghq/github.com/WillBoosterLab/repair-ai/node_modules/python-shell/index.js:252:27
      at new Promise (:1:21)
      at run (/Users/exkazuu/ghq/github.com/WillBoosterLab/repair-ai/node_modules/python-shell/index.js:251:16)
      at /Users/exkazuu/ghq/github.com/WillBoosterLab/repair-ai/example.js:3:1

Bun v1.1.8 (macOS arm64)

Other Information (please complete the following information):

Additional context Nothing.

Almenon commented 5 months ago

This looks like a bug with Bun, not python-shell. Bun should be support nodeJS functions, it's supposed to be compatible. I'll open up a issue there.

Almenon commented 5 months ago

Created an issue over at https://github.com/oven-sh/bun/issues/11011

Suniron commented 6 days ago

Is there a way to bypass this behavior in waiting a Bun update ?