Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

robotkernel status #58

Open
martinRenou opened this issue Jan 14, 2021 · 5 comments
Open

robotkernel status #58

martinRenou opened this issue Jan 14, 2021 · 5 comments

Comments

@martinRenou
Copy link
Contributor

martinRenou commented Jan 14, 2021

Hi there!

cc. @datakurre @bollwyvl

We've been working for the past months on xeus-robot, which is more or less a robotkernel that works with the new JupyterLab 3 debugger (which is not possible with the kernel wrapper approach as of today). As part of this work, we've put together the robotframework-interpreter python library which implements all the robotkernel features, and make them usable as a library for xeus-robot. This work would not have been possible without the effort put in robotkernel!

debugger.mp4

I am opening this issue to start discussing the future of those two projects. Using robotframework-interpreter in robotkernel would drastically reduce the size of the robotkernel codebase while keeping all the features.

@datakurre
Copy link
Collaborator

@martinRenou Thanks for the heads up! Awesome news! I'm looking forward for you to clean up our legacy at robotframework-interpreter, and then see what's the place left for robotkernel in the future. I am also happy to hear that you were able to re-use parts to get started with debuggable robot!

Unfortunately, I am not currently able to do much development on robotkernel before the summer personally. Then I'll take a fresh look on the ecosystem. The robot ecosystem has advanced a lot, and new approaches for both browser and desktop testing and automation with robotframework...

@bollwyvl
Copy link
Contributor

bollwyvl commented Jan 14, 2021 via email

@martinRenou
Copy link
Contributor Author

Thanks for your responses :)

I have noticed that the suite model doesn't seem as aware of the notebook
execution model (e.g by tracking cell id), which both this kernel and
irobotframework (which I also don't get to work on much) share

What do you mean by "not aware of the notebook execution model"?
Concerning the execution model, xeus-robot is slightly different from robotkernel, but this is very subtle. Basically, we do not recompile the entire AST of the Notebook when we execute a new cell, we just compile the AST of the code in the cell, and manually append the new keywords/imports/test cases in the test suite. This is pretty ugly but it works nicely. And I suppose it could be improved by making some contributions in robotframework directly.

@bollwyvl
Copy link
Contributor

Not to be pedantic (the differences are quite subtle) but I guess, symbolically, for some C(ell) with S(ettings) and T(asks):

  • C0: some ***settings*** S0
  • C1: some ***tasks*** T0
  • C2: some more T1, S1

robotkernel/irobotframework:

  • C0: apply S0
  • C1: apply S0, run T0
  • C2: apply S0, S1, run T1

... I think i remember what surprised me was xrobot's behavior in C2:

  • C2: apply S0, S1, run T0, run T1

I'm not sure there's a right answer, as the robot syntax itself seldom uses a "stream"-based model, and only acts against "full" documents.

@martinRenou
Copy link
Contributor Author

Any comment is very welcome!

... I think i remember what surprised me was xrobot's behavior in C2:
C2: apply S0, S1, run T0, run T1

We'd like to stay close to robotkernel's behavior, and we actually have this behavior with tests so we should have the same with tasks. I will look into it. Thanks!

and only acts against "full" documents.

Yep. That was the reason for some ugly workarounds to make the debugger and file mapping work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants