Closed muotaz closed 7 years ago
the same here, on Ubuntu 16.04 - all output is doubled
same on mac os sierra
Hello;
I was able to remove the duplication after commenting the following lines in ExecuteAction.php which was located at /opt/jupyter-php/pkgs/src/Actions/ :
public function notifyMessage(string $message)
{
//$this->broker->send($this->iopubSocket, 'stream', ['name' => 'stdout', 'text' => $message], $this->header);
$this->broker->send(
$this->iopubSocket,
'execute_result',
['execution_count' => $this->execCount, 'data' => ['text/plain' => $message], 'metadata' => new \stdClass
$this->header
);
}
And Jupyter recognized as output the lines sent as execute_result rather than stream. Was the stream needed ?
Hi all,
@muotaz , @tumregels , @denisristic : excuse me for delaying my responses.
@muotaz : I'll check your patch. To be sincere, I don't remember. I think that this is the way output was generated in first place, and probably it wasn't removed after some PRs solving other more important bugs.
Confirmed, this fixes the bug without introducing noticeable problems :) .
Fixed.
Not sure that this is actually fixed yet. I just built a completely fresh install, in a docker container and we are getting the following output:
I am also attaching the Dockerfile for the build we used:
This is a different issue, you are printing the $text variable, which it does, and then the print function returns a true (1) , if you notice the other cells it is working as expected.
Fair enough - however in the line $text=Hello World"; - it is outputting "Hello World" - that would not be a desired behaviour... and inconsistent with other kernels since you are only setting a variable here.
Also re: the print outputting the text as well as the result of the print statement - this is again, inconsistent with other kernels such as python, where printing does not result in an out[] field - is literally prints it (to stdout?) and supresses in some way the out[]put - only when you do not explicitly print, do you get the out[]put (as in the last example below)
Hi @mmorton75 , is true that sending text to stdout
should be handled in a different way than expression evaluation.
But, on the other hand, in PHP, an assignment is not only an assignment, but also an expression with a return value, this is the reason behind this weird behavior.
So, I see that you're stating the existence of two problems:
stdout
to the "wrong channel").I also state that there is a third problem: the ugly =>
"promt" that appears before values. I sent a patch to the "core" of this kernel (PsySH), to solve this, so I expect that by now it will be easy to solve the problem passing an empty string as a "prompt" parameter.
P.D.: I'll create the issue for the second one, meanwhile we can discuss about what to do with the assignments evaluation.
Hello;
After installing the PHP kernel, jupyter repeats the output returned by the PHP interpreter. Please refer to the the attached image.
This issue happens on both an Ubuntu 16.04 and Fedoea 25 machines.