Giter VIP home page Giter VIP logo

robotkernel's Introduction

Robotkernel

Smoketest Badge

RobotKernel is a Robot Framework IPython kernel for Jupyter Notebook and JupyterLab. It powers RobotLab – the Robot Framework JupyterLab distribution. Check a video to see it in action and read the documentation.

RobotKernel requires Python 3.6 or later with setuptools 40.5.0 later and Robot Framework Robot Framework 3.1 or later.

For alternative Robot Framework IPython kernel, check out ipythonrobotframework or xeus-robot.

Try RobotKernel

You can try RobotKernel instantly without installing it at MyBinder cloud:

Note: Log | Report -links on saved notebooks may not be clickable until notebook is "trusted" ("Trust Notebook" in JupyterLab Commands) the related cells have been executed again.

Install RobotKernel

RobotKernel can be installed using the usual Python package manager tools, like pip:

$ pip install robotkernel

For JupyterLab it is recommended to also install the Robot Framework syntax highlighting and Jupyter widgets support:

$ jupyter labextension install jupyterlab_robotmode
$ jupyter labextension install @jupyter-widgets/jupyterlab-manager

For some environments it might be required to run the following command to manually register robotkernel as an available Jupyter kernel:

$ python -m robotkernel.install

Export to .robot

It is possible to export Robot Framework Jupyter notebooks to regular plain text .robot files for usage without Jupyter:

$ jupyter nbconvert --to script example.ipynb

Execute notebooks

RobotKernel installs a script named nbrobot. It can be used instead of Robot Framework's robot test runner to execute Robot Framework with .ipynb-extension support:

$ nbrobot example.ipynb

Hacking RobotKernel

Create and activate a new Python virtual environment:

$ venv myenv
$ source myenv/bin/activate

Install Jupyter:

$ pip install --upgrade pip setuptools
$ pip install jupyter

Clone this kernel:

$ git clone https://github.com/robots-from-jupyter/robotkernel.git
$ cd robotkernel

Install the kernel into the virtualenv in develop mode:

$ python setup.py develop
$ python -m robotkernel.install

Launch the jupyter:

$ jupyter notebook

Reloading the kernel reloads the code.

Learn more about Jupyter kernel development.

Nix-shell

This repository includes an opinionated environment for running and developing RobotKernel with Nix with Cachix-powered binary cache.

Launch Jupyter Notebook with RobotKernel:

$ nix-shell -E 'import (fetchTarball https://github.com/robots-from-jupyter/robotkernel/archive/master.tar.gz + "/shell.nix")' --run "jupyter notebook"

Launch JupyterLab with RobotKernel:

$ nix-shell -E 'import (fetchTarball https://github.com/robots-from-jupyter/robotkernel/archive/master.tar.gz + "/shell.nix")'
$ jupyter labextension install jupyterlab_robotmode --app-dir=.jupyterlab
$ jupyter lab --app-dir=.jupyterlab
$ exit

Add --arg vim true to enable vim bindings.

Open development environment with Nix:

$ git clone https://github.com/robots-from-jupyter/robotkernel.git
$ cd robotkernel
$ nix-build setup.nix -A env  # to generate ./result/bin/python for IDE
$ nix-shell setup.nix -A develop

robotkernel's People

Contributors

automateaaron avatar bollwyvl avatar datakurre avatar dependabot[bot] avatar jfoederer avatar martinrenou avatar romacz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

robotkernel's Issues

Always have console output

It would be nice to have the console log always be shown and not only if there is an error.
Absolutely awesome if that log console could also update while the test is running as it would be if robot is run form the console.

Docker Image Permissions for RobotKernel

Hey I noticed you have configured a user for the image and there are permissions in the opt volume which conflicts with python packages as they install. If I add a dependency that is already installed with robotkernel, but is an updated version, it will throw the permissions error when pip is attempting to uninstall the package from /opt/jupyter/bin, to reinstall an updated version of the dependency.

Is there a way we can change this or is there a reason for this that i am missing?

Integration with JupyterHub (TLJH) Kernel always died (auto-restarting)

Hello, I have a JupyterHub (TLJH) with JupyterLab installed, all behind a reverse HTTP/WebSocket proxy (python kernel works).
The robotkernel was installed and I can see it in the luncher tab.
If I open a notebook with a robot kernel the kernel seems to not start. If press the start button nothing is running and no output is shown.
After some time the kernel status is marked as "autorestarting" and a popup is shown.

Kernel Restarting
The kernel for RobotFramework/Untitled.ipynb appears to have died. It will restart automatically.

For installation I use a jupyter terminal (my user is admin) just using sudo before :

sudo jupyter labextension install jupyterlab_robotmode
sudo jupyter labextension install @jupyter-widgets/jupyterlab-manager

When using RobotFramework-requestslibrary, sometimes the log will not generate

i am using robotkernel in jupyterlab Version 1.1.4.

i am also using robotframework-requestslibrary. for some reason - and only with this library - and only in jupyterlab/robotkernel -- I am getting this problem that cell with Test Case will not end.

It gets stuck with
image and shows that it's still doing the last keyword in the test -- for example the suite teardown. Actual result is that everything has correctly finished, it's just the log that won't be generated.

when i run the test using nbrobot it ends correctly and with generated log.

Sadly it seems i cannot reliably get a logical conclusion on when this happens. I have a test with given words send in body and it works, when i change them to different words, it gets stuck:

Body: {message: "hello"} --> OK
Body: {message: "hi!"} --> stuck

Leaving it out here, maybe someone had a similar problem and found a solution :)

Keep the state of an Imported Library

I would like to use RobotKernel to develop larger Notebooks with multiple Cells.
For this notebook there is one library, which needs to be "setup" and keeps a state.
In current Implementation of the robotkernel it looks like, the imported Library is getting a new instance with each state.
Would it be possible, to keep one instance of a library over multiple cells?

I have the following code:

%%python module LibraryWithState

class LibraryWithState:
    def __init__(self):
        self.state = 0
        
    def get_increased_state(self):
        self.state += 1
        return self.state

And then the cells like

*** Settings ***
Library    LibraryWithState

*** Test Cases ***
Check the test Library
    Get Increased State

... which results in an output of the expected "1"
And the next cell like

*** Settings ***
Library    LibraryWithState

*** Test Cases ***
Check the test Library
    Get Increased State

this second output is still 1, but I wanted to see 2.

Is it possible, to achieve this? As I mentioned, seems with each cell, my python library gets freshly instantiated.
I would like to overcome this.

Thank you for any feedback or proposal.

Pick a mime type?

So the back story of why jupter_lsp wants to talk over text/plain: it's what the kernel says it wants!

While we'll go ahead and try to do a better job on that end, discrete mime types, even if they are not defined by the IANA, certainly help a lot as they have the intent to aid in machine-level integration. I don't want to put this all on robotkernel, as it would no doubt benefit the whole community, but...

Support Robot Framework 4.0

Robot 4.0b1 is the next major Robot Framework release. It is scheduled to be released during December 2020 and it includes some breaking changes listed here https://github.com/robotframework/robotframework/blob/master/doc/releasenotes/rf-4.0b1.rst#backwards-incompatible-changes

Some of them relate to Libdoc and removing Criticality and replacing it with new Skip test status. This might break some features of robotkernel.

When running robotkernel's test suite with robotframework==4.0b1 following test failures happened. At least these imports of DocToHtml will need changing, but overall some more comprehensive tesing is probably required before full robot framework 4 support can be announced.

(venv)  ~/C/r/robocode-kernel (robocode)> rake test
rm -rf tmp
mkdir tmp
python3 -W ignore::FutureWarning -m pytest -q --cov-branch --cov=src/robotkernel --cov-report=term-missing src/robotkernel tests

================================================================================================================== ERRORS ==================================================================================================================
___________________________________________________________________________________________________ ERROR collecting tests/test_misc.py ____________________________________________________________________________________________________
ImportError while importing test module '/Users/kerkko/Code/robocorp/robocode-kernel/tests/test_misc.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
tests/test_misc.py:3: in <module>
    from robotkernel import display, exceptions, executors, install, kernel
src/robotkernel/executors.py:18: in <module>
    from robotkernel.utils import data_uri
src/robotkernel/utils.py:14: in <module>
    from robot.libdocpkg.htmlwriter import DocToHtml
E   ImportError: cannot import name 'DocToHtml' from 'robot.libdocpkg.htmlwriter' (/Users/kerkko/Code/robocorp/robocode-kernel/venv/lib/python3.9/site-packages/robot/libdocpkg/htmlwriter.py)
___________________________________________________________________________________________________ ERROR collecting tests/test_utils.py ___________________________________________________________________________________________________
ImportError while importing test module '/Users/kerkko/Code/robocorp/robocode-kernel/tests/test_utils.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
tests/test_utils.py:2: in <module>
    from robotkernel.utils import detect_robot_context
src/robotkernel/utils.py:14: in <module>
    from robot.libdocpkg.htmlwriter import DocToHtml
E   ImportError: cannot import name 'DocToHtml' from 'robot.libdocpkg.htmlwriter' (/Users/kerkko/Code/robocorp/robocode-kernel/venv/lib/python3.9/site-packages/robot/libdocpkg/htmlwriter.py)

---------- coverage: platform darwin, python 3.9.0-final-0 -----------
Name                                    Stmts   Miss Branch BrPart  Cover   Missing
-----------------------------------------------------------------------------------
src/robotkernel/__init__.py                 2      0      0      0   100%
src/robotkernel/builders.py                 5      1      2      1    71%   5->8, 8
src/robotkernel/builders_31.py             67     67      8      0     0%   2-99
src/robotkernel/builders_32.py             40     28     12      0    23%   15-20, 29-69
src/robotkernel/completion_finders.py       9      9      4      0     0%   3-16
src/robotkernel/constants.py               18      3      2      0    85%   10-11, 15
src/robotkernel/display.py                 76     46     14      0    33%   22-41, 46-47, 52-54, 57-58, 63-64, 67, 70, 73-78, 89, 100, 118-133, 136-145, 158-164, 167-170
src/robotkernel/exceptions.py               3      1      0      0    67%   9
src/robotkernel/executors.py              195    178     78      0     6%   19-386
src/robotkernel/install.py                 42     42     10      0     0%   5-96
src/robotkernel/kernel.py                 184    184     56      0     0%   2-322
src/robotkernel/listeners.py              242    185     62      0    19%   35, 39-40, 44-62, 69, 73-80, 83-96, 100-106, 109-116, 119-131, 139, 142, 145, 153-154, 157-167, 170, 173, 177-182, 187-204, 209-218, 225, 229-238, 242-250, 257, 261-266, 270-274, 281, 285-291, 295-300, 307, 311-317, 321-326, 333, 337-354, 358-367
src/robotkernel/monkeypatches.py           64     64     20      0     0%   2-97
src/robotkernel/nbreader.py                18     18      4      0     0%   2-27
src/robotkernel/selectors.py              390    390    176      0     0%   2-630
src/robotkernel/selectors_pywin32.py      198    198     26      0     0%   1-358
src/robotkernel/selectors_white.py        154    154     32      0     0%   2-229
src/robotkernel/utils.py                  167    154     77      0     5%   15-269
-----------------------------------------------------------------------------------
TOTAL                                    1874   1722    583      1     6%

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 2 errors during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2 error in 1.05 seconds
rake aborted!
Command failed with status (2): [python3 -W ignore::FutureWarning -m pytest...]
/Users/kerkko/Code/robocorp/robocode-kernel/Rakefile:38:in `block in <top (required)>'
/Library/Ruby/Gems/2.6.0/gems/rake-12.3.2/exe/rake:27:in `<top (required)>'
Tasks: TOP => test
(See full trace by running task with --trace)

Keyword execution widgets are saved with notebook and are loaded as broken

@bollwyvl If you have time, I'd have a question related to widgets.

I implemented naive Jupyter widgets based keyword execution feature. It's currently available at master and can be seen with binder: https://mybinder.org/v2/gh/robots-from-jupyter/robotkernel/master?urlpath=lab/tree/example.ipynb

When user "executes" a cell with Robot keywords, there will be buttons for setting parameters and executing generated test/task with just that keyword. That works well and should make RobotLab more useful for writing keyword resource files.

The problem is that now those will pollute saved notebooks. It seems lab does not properly save widget states yet. Notebook can, but because those widgets rely on kernel state they will still load broken. Also I have not found any way to completely clear the widgets (I was able to add an extra button to clear the widgets themselves, but the notebook did still contain empty output areas for widgets and their outputs).

Would you have ideas, how should I implement this properly or a way to completely remove widget output areas from the notebook (with kernel code, without JS)?

Support In-Browser Execution?

Elevator Pitch

Support in-browser, interactive execution of plain-language Task and Test Cases, without a (necessarily) python runtime running on the server.

Motivation

For a number of use cases, like documentation/playground websites, the weight of standing up a full binder is pretty heavy. If we could run all of robotkernel and some of its more fun extensions entirely within the browser, it would be just that much faster to get started.

Key Challenges

  • adding novel python-based kernel is still quite involved, requiring a python, nodejs and webpack build to see one change
  • ...

Design ideas

JupyterLite is an in-browser implementation of a subset of the Jupyter Server and Kernel APIs hosted together with a re-configured JupyterLab, and any number of supported federated extensions.

At present, the "pyolite" (name may change) kernel built on pyodide implements much of the IPython and ipykernel namespaces. At any rate, it's enough to load up robotframework:

Screenshot from 2021-07-05 09-25-59

It's likely just a few shims we need to figure out properly to get await micropip.install("robotkernel") to just work and start experimenting, and be able to put browser/server kernels through the same tests.

Shouldn't the state be kept?

When using Jupyter Notebook, its main pull for me was the possibility of keeping the state between cells. But with Robot Kernel, when I have a cell:

*** TASKS *** Setting Variable ${variable} Set Variable stuff

I cannot access it in the next cell:
*** TASKS *** Setting Variable Log ${variable}

This of course is linked to test scope and everything, but settings Suite Variables also fails, because every run "restarts" the suite. Is there some other way of going about this? Maybe i'm doing something wrong, but I wasn't able to get it to work without readding *** TASKS *** to every next cell.

It also does not work with global scope libraries. I import a global library, set a state to in one task, but the next task 'restarts' everything and the state is not kept.

tl;dr:
i would expect to be able to set state in one cell and have it kept in the next cell.

robotkernel status

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.

Consider adding live demo with binder?

Howdy! I must confess, I was looking for kernels that already ran on, you know, robots, but am glad I found this. This is really great work! The embedded, base64-encoded reports are a truly glorious hack.

Anyhow, Binder is a service from Jupyter (uses JupyterHub under the hood) that builds on-demand images and serves them up to whoever wants them from any github repo.

Here's a branch that started off adding a live binder demo, but ended up adding some more stuff: icon, package structure, install command, probably other stuff. If you're interested, I can work it up into a better PR that doesn't stomp all over your existing stuff.

While JupyterLab doesn't support kernel.js, and upstreaming to CM is the Right Thing To Do, in the nearterm we could likely hack up a lab extension to support that. Everything else works fine, including those marvelous reports!

screenshot from 2018-04-04 00-24-09

Keep up the good work!

Documentation website

We could add a sphinx-based build of this site, and build/host it for free on readthedocs.org.

It could then include the in-browser version of the kernel #72.

It's also quite easy to have per-PR preview builds, which is otherwise kind of tricky.

robotkernel binder build is broken

@bollwyvl Once again, I am asking help for binder magic maintenance. I have never seen this error before:

https://mybinder.org/v2/gh/robots-from-jupyter/robotkernel/master?urlpath=lab/tree/example.ipynb

Waiting for build to start...
Picked Git content provider.
Cloning into '/tmp/repo2dockero90u3_5r'...
HEAD is now at 6e95c42 Minimal fix for issue where user keywords failed on RF 6.1 because of changes in doc implementation
Python version unspecified, using current default Python version 3.10. This will change in the future.Building conda environment for python=3.10
Using CondaBuildPack builder
Step 1/53 : FROM docker.io/library/buildpack-deps:bionic
 ---> 0f137f206fa8
Step 2/53 : ENV DEBIAN_FRONTEND=noninteractive
 ---> Using cache
 ---> 4817195344f8
Step 3/53 : RUN apt-get -qq update &&     apt-get -qq install --yes --no-install-recommends locales > /dev/null &&     apt-get -qq purge &&     apt-get -qq clean &&     rm -rf /var/lib/apt/lists/*
 ---> Using cache
 ---> 2cd13a4260d7
Step 4/53 : RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen &&     locale-gen
 ---> Using cache
 ---> 9e7ffe56a438
Step 5/53 : ENV LC_ALL=en_US.UTF-8     LANG=en_US.UTF-8     LANGUAGE=en_US.UTF-8
 ---> Using cache
 ---> 48a67f939fd4
Step 6/53 : ENV SHELL=/bin/bash
 ---> Using cache
 ---> 5db789f04aae
Step 7/53 : ARG NB_USER
 ---> Using cache
 ---> d3b84eada285
Step 8/53 : ARG NB_UID
 ---> Using cache
 ---> ab8c2abbd51f
Step 9/53 : ENV USER=${NB_USER}     HOME=/home/${NB_USER}
 ---> Using cache
 ---> 85fb93b33431
Step 10/53 : RUN groupadd         --gid ${NB_UID}         ${NB_USER} &&     useradd         --comment "Default user"         --create-home         --gid ${NB_UID}         --no-log-init         --shell /bin/bash         --uid ${NB_UID}         ${NB_USER}
 ---> Using cache
 ---> bb11a075e86e
Step 11/53 : RUN apt-get -qq update &&     apt-get -qq install --yes --no-install-recommends        gettext-base        less        unzip        > /dev/null &&     apt-get -qq purge &&     apt-get -qq clean &&     rm -rf /var/lib/apt/lists/*
 ---> Using cache
 ---> e338186b3757
Step 12/53 : EXPOSE 8888
 ---> Using cache
 ---> c55a7b99091f
Step 13/53 : ENV APP_BASE=/srv
 ---> Using cache
 ---> c8954d964b0c
Step 14/53 : ENV CONDA_DIR=${APP_BASE}/conda
 ---> Using cache
 ---> 5376bf6193b4
Step 15/53 : ENV NB_PYTHON_PREFIX=${CONDA_DIR}/envs/notebook
 ---> Using cache
 ---> 394dd0bd5231
Step 16/53 : ENV NPM_DIR=${APP_BASE}/npm
 ---> Using cache
 ---> f663924008a6
Step 17/53 : ENV NPM_CONFIG_GLOBALCONFIG=${NPM_DIR}/npmrc
 ---> Using cache
 ---> a6d983b03f28
Step 18/53 : ENV NB_ENVIRONMENT_FILE=/tmp/env/environment.lock
 ---> Using cache
 ---> 6305b49331e8
Step 19/53 : ENV MAMBA_ROOT_PREFIX=${CONDA_DIR}
 ---> Using cache
 ---> 14e2867de7e3
Step 20/53 : ENV MAMBA_EXE=${CONDA_DIR}/bin/mamba
 ---> Using cache
 ---> d50209251ad5
Step 21/53 : ENV CONDA_PLATFORM=linux-64
 ---> Using cache
 ---> 659f061fcee7
Step 22/53 : ENV KERNEL_PYTHON_PREFIX=${NB_PYTHON_PREFIX}
 ---> Using cache
 ---> 56e00e181dc6
Step 23/53 : ENV PATH=${NB_PYTHON_PREFIX}/bin:${CONDA_DIR}/bin:${NPM_DIR}/bin:${PATH}
 ---> Using cache
 ---> 3de7a0cf6f50
Step 24/53 : COPY --chown=1000:1000 build_script_files/-2fusr-2flib-2fpython3-2e10-2fsite-2dpackages-2frepo2docker-2fbuildpacks-2fconda-2factivate-2dconda-2esh-44e764 /etc/profile.d/activate-conda.sh
 ---> Using cache
 ---> e440751e4647
Step 25/53 : COPY --chown=1000:1000 build_script_files/-2fusr-2flib-2fpython3-2e10-2fsite-2dpackages-2frepo2docker-2fbuildpacks-2fconda-2fenvironment-2epy-2d3-2e10-2dlinux-2d64-2elock-388e0b /tmp/env/environment.lock
 ---> Using cache
 ---> 2b88e05c5dfb
Step 26/53 : COPY --chown=1000:1000 build_script_files/-2fusr-2flib-2fpython3-2e10-2fsite-2dpackages-2frepo2docker-2fbuildpacks-2fconda-2finstall-2dbase-2denv-2ebash-e5509f /tmp/install-base-env.bash
 ---> Using cache
 ---> 363d3569f4e8
Step 27/53 : RUN TIMEFORMAT='time: %3R' bash -c 'time /tmp/install-base-env.bash' && rm -rf /tmp/install-base-env.bash /tmp/env
 ---> Using cache
 ---> d481ffeed8cf
Step 28/53 : RUN mkdir -p ${NPM_DIR} && chown -R ${NB_USER}:${NB_USER} ${NPM_DIR}
 ---> Using cache
 ---> acfa2ae18d41
Step 29/53 : USER root
 ---> Using cache
 ---> a9a24047295a
Step 30/53 : ARG REPO_DIR=${HOME}
 ---> Using cache
 ---> 152fd5e8e1d5
Step 31/53 : ENV REPO_DIR=${REPO_DIR}
 ---> Using cache
 ---> d0b8c0c052d1
Step 32/53 : RUN if [ ! -d "${REPO_DIR}" ]; then         /usr/bin/install -o ${NB_USER} -g ${NB_USER} -d "${REPO_DIR}";     fi
 ---> Using cache
 ---> 22af38eddf33
Step 33/53 : WORKDIR ${REPO_DIR}
 ---> Using cache
 ---> 3769bf1b212d
Step 34/53 : RUN chown ${NB_USER}:${NB_USER} ${REPO_DIR}
 ---> Using cache
 ---> 704f77d54f51
Step 35/53 : ENV PATH=${HOME}/.local/bin:${REPO_DIR}/.local/bin:${PATH}
 ---> Using cache
 ---> b3a363ce293a
Step 36/53 : ENV CONDA_DEFAULT_ENV=${KERNEL_PYTHON_PREFIX}
 ---> Using cache
 ---> cfbd37d25188
Step 37/53 : COPY --chown=1000:1000 src/binder/environment.yml ${REPO_DIR}/binder/environment.yml
 ---> Using cache
 ---> e771479ff5e9
Step 38/53 : RUN apt-get -qq update && apt-get install --yes --no-install-recommends firefox libgl1-mesa-glx && apt-get -qq purge && apt-get -qq clean && rm -rf /var/lib/apt/lists/*
 ---> Using cache
 ---> d2bac30b3a9e
Step 39/53 : USER ${NB_USER}
 ---> Using cache
 ---> 52376f1a69fe
Step 40/53 : RUN TIMEFORMAT='time: %3R' bash -c 'time ${MAMBA_EXE} env update -p ${NB_PYTHON_PREFIX} --file "binder/environment.yml" && time ${MAMBA_EXE} clean --all -f -y && ${MAMBA_EXE} list -p ${NB_PYTHON_PREFIX} '
 ---> Running in 0468d22b2e63


Looking for: ['opencv', "python[version='>=3.6,<3.9.0a0']", "jupyterlab[version='>=3.2.9,<3.3']", "nodejs[version='>=14,<15']", "geckodriver[version='>=0.26.0,<0.27.0']", 'pip']


Transaction

  Prefix: /srv/conda/envs/notebook

  Updating specs:

   - opencv
   - geckodriver[version='>=0.26.0,<0.27.0']
   - python[version='>=3.6,<3.9.0a0']
   - jupyterlab[version='>=3.2.9,<3.3']
   - nodejs[version='>=14,<15']
   - pip


  Package                               Version  Build                Channel          Size
─────────────────────────────────────────────────────────────────────────────────────────────
  Install:
─────────────────────────────────────────────────────────────────────────────────────────────

  + geckodriver                          0.26.0  he1b5a44_0           conda-forge       3MB
  + libpng                               1.6.39  h753d276_0           conda-forge     283kB
  + libprotobuf                         3.21.12  h3eb15da_0           conda-forge       2MB
  + aom                                   3.5.0  h27087fc_0           conda-forge       3MB
  + gmp                                   6.2.1  h58526e2_0           conda-forge     826kB
  + svt-av1                               1.4.1  hcb278e6_0           conda-forge       2MB
  + libtasn1                             4.19.0  h166bdaf_0           conda-forge     117kB
  + nettle                                3.8.1  hc379101_1           conda-forge       1MB
  + jpeg                                     9e  h0b41bf4_3           conda-forge     240kB
  + gettext                              0.21.1  h27087fc_0           conda-forge       4MB
  + libiconv                               1.17  h166bdaf_0           conda-forge       1MB
  + pcre2                                 10.40  hc3806b6_0           conda-forge       2MB
  + libwebp-base                          1.3.1  hd590300_0           conda-forge     400kB
  + alsa-lib                              1.2.8  h166bdaf_0           conda-forge     592kB
  + nspr                                   4.35  h27087fc_0           conda-forge     227kB
  + keyutils                              1.6.1  h166bdaf_0           conda-forge     118kB
  + libglu                                9.0.0  he1b5a44_1001        conda-forge     423kB
  + pixman                               0.40.0  h36c2ea0_0           conda-forge     643kB
  + lame                                  3.100  h166bdaf_1003        conda-forge     508kB
  + libopus                               1.3.1  h7f98852_1           conda-forge     261kB
  + libvpx                               1.11.0  h9c3ff4c_3           conda-forge       1MB
  + openh264                              2.3.1  hcb278e6_2           conda-forge     719kB
  + x264                             1!164.3095  h166bdaf_2           conda-forge     898kB
  + x265                                    3.5  h924138e_3           conda-forge       3MB
  + libpciaccess                           0.17  h166bdaf_0           conda-forge      40kB
  + xorg-libxau                          1.0.11  hd590300_0           conda-forge      14kB
  + xorg-libice                           1.1.1  hd590300_0           conda-forge      58kB
  + xorg-xextproto                        7.3.0  h0b41bf4_1003        conda-forge      30kB
  + libexpat                              2.5.0  hcb278e6_1           conda-forge      78kB
  + libtool                               2.4.7  h27087fc_0           conda-forge     412kB
  + zstd                                  1.5.2  hfc55251_7           conda-forge     431kB
  + gstreamer-orc                        0.4.34  hd590300_0           conda-forge     259kB
  + libudev1                                253  h0b41bf4_0           conda-forge     119kB
  + xkeyboard-config                       2.38  h0b41bf4_0           conda-forge     882kB
  + libogg                                1.3.4  h7f98852_1           conda-forge     211kB
  + mpg123                               1.31.3  hcb278e6_0           conda-forge     485kB
  + lerc                                  4.0.0  h27087fc_0           conda-forge     282kB
  + libdeflate                             1.17  h0b41bf4_0           conda-forge      65kB
  + libgfortran5                         13.1.0  h15d22d2_0           conda-forge       1MB
  + libaec                                1.0.6  hcb278e6_1           conda-forge      34kB
  + lz4-c                                 1.9.4  hcb278e6_0           conda-forge     143kB
  + attr                                  2.5.1  h166bdaf_1           conda-forge      71kB
  + c-ares                               1.19.1  hd590300_0           conda-forge     113kB
  + libev                                  4.33  h516909a_1           conda-forge     106kB
  + libedit                        3.1.20191231  he28a2e2_2           conda-forge     124kB
  + libdb                                6.2.32  h9c3ff4c_0           conda-forge      24MB
  + graphite2                            1.3.13  h58526e2_1001        conda-forge     105kB
  + xorg-renderproto                     0.11.1  h7f98852_1002        conda-forge      10kB
  + xorg-inputproto                       2.3.2  h7f98852_1002        conda-forge      20kB
  + pthread-stubs                           0.4  h36c2ea0_1001        conda-forge       6kB
  + xorg-libxdmcp                         1.1.3  h7f98852_0           conda-forge      19kB
  + libunistring                         0.9.10  h7f98852_0           conda-forge       1MB
  + xorg-kbproto                          1.0.7  h7f98852_1002        conda-forge      27kB
  + xorg-xproto                          7.0.31  h7f98852_1007        conda-forge      75kB
  + freetype                             2.12.1  hca18f0e_1           conda-forge     626kB
  + libssh2                              1.10.0  haa6b8db_3           conda-forge     239kB
  + libevent                             2.1.10  h9b69904_4           conda-forge       1MB
  + mysql-common                         8.0.32  h14678bc_0           conda-forge     803kB
  + p11-kit                              0.24.1  hc5aa10d_0           conda-forge       5MB
  + libgpg-error                           1.47  h71f35ed_0           conda-forge     261kB
  + libxml2                              2.10.3  hca2bb57_4           conda-forge     714kB
  + libglib                              2.76.4  hebfc3b9_0           conda-forge       3MB
  + nss                                    3.89  he45b914_0           conda-forge       2MB
  + libdrm                              2.4.114  h166bdaf_0           conda-forge     305kB
  + xorg-libsm                            1.2.4  h7391055_0           conda-forge      27kB
  + xorg-fixesproto                         5.0  h7f98852_1002        conda-forge       9kB
  + expat                                 2.5.0  hcb278e6_1           conda-forge     137kB
  + libvorbis                             1.3.7  h9c3ff4c_0           conda-forge     286kB
  + libflac                               1.4.3  h59595ed_0           conda-forge     394kB
  + libtiff                               4.5.0  h6adf6a1_2           conda-forge     407kB
  + libgfortran-ng                       13.1.0  h69a702a_0           conda-forge      23kB
  + libcap                                 2.66  ha37c62d_0           conda-forge     100kB
  + libnghttp2                           1.51.0  hdcd2b5c_0           conda-forge     623kB
  + krb5                                 1.20.1  hf9c8cef_0           conda-forge       1MB
  + jack                                 1.9.22  h11f4161_0           conda-forge     464kB
  + libxcb                                 1.13  h7f98852_1004        conda-forge     400kB
  + libidn2                               2.3.4  h166bdaf_0           conda-forge     160kB
  + mysql-libs                           8.0.32  h54cf53e_0           conda-forge       2MB
  + libgcrypt                            1.10.1  h166bdaf_0           conda-forge     720kB
  + libllvm15                            15.0.7  hadd5161_1           conda-forge      33MB
  + glib-tools                           2.76.4  hfc55251_0           conda-forge     111kB
  + dbus                                 1.13.6  h5008d03_3           conda-forge     619kB
  + fontconfig                           2.14.2  h14ed4e7_0           conda-forge     272kB
  + libsndfile                            1.2.0  hb75c966_0           conda-forge     350kB
  + fftw                                 3.3.10  nompi_hc118613_108   conda-forge       2MB
  + libopenblas                          0.3.23  pthreads_h80387f5_0  conda-forge       5MB
  + libcurl                              7.87.0  h6312ad2_0           conda-forge     347kB
  + libpq                                  15.1  h2baec63_3           conda-forge       2MB
  + libcups                               2.3.3  h36d4200_3           conda-forge       5MB
  + xcb-util-wm                           0.4.1  h516909a_0           conda-forge      56kB
  + xcb-util-keysyms                      0.4.0  h516909a_0           conda-forge      12kB
  + xcb-util                              0.4.0  h516909a_0           conda-forge      20kB
  + libxkbcommon                          1.5.0  h79f4944_1           conda-forge     563kB
  + xorg-libx11                           1.8.4  h0b41bf4_0           conda-forge     830kB
  + xcb-util-renderutil                   0.3.9  h166bdaf_0           conda-forge      16kB
  + gnutls                                3.7.8  hf3e180e_0           conda-forge       2MB
  + libsystemd0                             252  h2a991cd_0           conda-forge     393kB
  + libclang13                           15.0.7  default_h9986a30_2   conda-forge      10MB
  + libblas                               3.9.0  17_linux64_openblas  conda-forge      14kB
  + hdf5                                 1.14.0  nompi_h5231ba7_103   conda-forge       4MB
  + xcb-util-image                        0.4.0  h166bdaf_0           conda-forge      24kB
  + xorg-libxext                          1.3.4  h0b41bf4_2           conda-forge      50kB
  + xorg-libxfixes                        5.0.3  h7f98852_1004        conda-forge      18kB
  + xorg-libxrender                      0.9.10  h7f98852_1003        conda-forge      33kB
  + pulseaudio                             16.1  h4ab2085_1           conda-forge       2MB
  + libclang                             15.0.7  default_h7634d5b_2   conda-forge     133kB
  + libcblas                              3.9.0  17_linux64_openblas  conda-forge      14kB
  + liblapack                             3.9.0  17_linux64_openblas  conda-forge      14kB
  + xorg-libxi                           1.7.10  h7f98852_0           conda-forge      47kB
  + libva                                2.18.0  h0b41bf4_0           conda-forge     187kB
  + liblapacke                            3.9.0  17_linux64_openblas  conda-forge      14kB
  + freeglut                              3.2.2  h9c3ff4c_1           conda-forge     166kB
  + jasper                               2.0.33  h0ff4b12_1           conda-forge     726kB
  + font-ttf-dejavu-sans-mono              2.37  hab24e00_0           conda-forge     397kB
  + font-ttf-ubuntu                        0.83  hab24e00_0           conda-forge       2MB
  + font-ttf-inconsolata                  3.000  h77eed37_0           conda-forge      97kB
  + font-ttf-source-code-pro              2.038  h77eed37_0           conda-forge     701kB
  + fonts-conda-forge                         1  0                    conda-forge       4kB
  + fonts-conda-ecosystem                     1  0                    conda-forge       4kB
  + glib                                 2.76.4  hfc55251_0           conda-forge     482kB
  + numpy                                1.24.4  py38h59b608b_0       conda-forge       7MB
  + cairo                                1.16.0  ha61ee94_1014        conda-forge       2MB
  + ffmpeg                                5.1.2  gpl_h8dda1f0_106     conda-forge      10MB
  + gstreamer                            1.21.3  h25f0c4b_1           conda-forge       2MB
  + harfbuzz                              6.0.0  h8e241bc_0           conda-forge       1MB
  + gst-plugins-base                     1.21.3  h4243ec0_1           conda-forge       3MB
  + qt-main                              5.15.6  h18908ee_6           conda-forge      55MB
  + libopencv                             4.7.0  py38hb32f1de_1       conda-forge      31MB
  + py-opencv                             4.7.0  py38h6f1a3b6_1       conda-forge       1MB
  + opencv                                4.7.0  py38h578d9bd_1       conda-forge      25kB

  Change:
─────────────────────────────────────────────────────────────────────────────────────────────

  - pycparser                              2.21  pyhd8ed1ab_0         conda-forge          
  + pycparser                              2.21  pyhd8ed1ab_0         conda-forge     103kB
  - markupsafe                            2.1.3  py310h2372a71_0      conda-forge          
  + markupsafe                            2.1.3  py38h01eb140_0       conda-forge      24kB
  - greenlet                              2.0.2  py310hc6cd4ac_1      conda-forge          
  + greenlet                              2.0.2  py38h17151c0_1       conda-forge     190kB
  - debugpy                               1.6.7  py310heca2aa9_0      conda-forge          
  + debugpy                               1.6.7  py38h8dc9893_0       conda-forge       2MB
  - tornado                               6.3.2  py310h2372a71_0      conda-forge          
  + tornado                               6.3.2  py38h01eb140_0       conda-forge     627kB
  - ruamel.yaml.clib                      0.2.7  py310h1fa729e_1      conda-forge          
  + ruamel.yaml.clib                      0.2.7  py38h1de0b5d_1       conda-forge     146kB
  - pyzmq                                25.1.0  py310h5bbb5d0_0      conda-forge          
  + pyzmq                                25.1.0  py38h509eb50_0       conda-forge     452kB
  - pyyaml                                  6.0  py310h5764c6d_5      conda-forge          
  + pyyaml                                  6.0  py38h0a891b7_5       conda-forge     187kB
  - pyrsistent                           0.19.3  py310h1fa729e_0      conda-forge          
  + pyrsistent                           0.19.3  py38h1de0b5d_0       conda-forge      99kB
  - psutil                                5.9.5  py310h1fa729e_0      conda-forge          
  + psutil                                5.9.5  py38h1de0b5d_0       conda-forge     357kB
  - cffi                                 1.15.1  py310h255011f_3      conda-forge          
  + cffi                                 1.15.1  py38h4a40e3a_3       conda-forge     235kB
  - jupyter_core                          5.3.0  py310hff52083_0      conda-forge          
  + jupyter_core                          5.3.0  py38h578d9bd_0       conda-forge      91kB
  - argon2-cffi-bindings                 21.2.0  py310h5764c6d_3      conda-forge          
  + argon2-cffi-bindings                 21.2.0  py38h0a891b7_3       conda-forge      36kB

  Reinstall:
─────────────────────────────────────────────────────────────────────────────────────────────

  o wheel                                0.40.0  pyhd8ed1ab_0         conda-forge          
  o setuptools                           67.7.2  pyhd8ed1ab_0         conda-forge          
  o zipp                                 3.15.0  pyhd8ed1ab_0         conda-forge          
  o widgetsnbextension                    4.0.7  pyhd8ed1ab_0         conda-forge          
  o websocket-client                      1.5.2  pyhd8ed1ab_0         conda-forge          
  o webencodings                          0.5.1  py_1                 conda-forge          
  o typing_extensions                     4.6.3  pyha770c72_0         conda-forge          
  o traitlets                             5.9.0  pyhd8ed1ab_0         conda-forge          
  o tomli                                 2.0.1  pyhd8ed1ab_0         conda-forge          
  o soupsieve                       2.3.2.post1  pyhd8ed1ab_0         conda-forge          
  o sniffio                               1.3.0  pyhd8ed1ab_0         conda-forge          
  o six                                  1.16.0  pyh6c4a22f_0         conda-forge          
  o send2trash                            1.8.2  pyh41d4057_0         conda-forge          
  o rfc3986-validator                     0.1.1  pyh9f0ad1d_0         conda-forge          
  o pytz                                 2023.3  pyhd8ed1ab_0         conda-forge          
  o python-json-logger                    2.0.7  pyhd8ed1ab_0         conda-forge          
  o python-fastjsonschema                2.17.1  pyhd8ed1ab_0         conda-forge          
  o pysocks                               1.7.1  pyha2e5f31_6         conda-forge          
  o pyjwt                                 2.7.0  pyhd8ed1ab_0         conda-forge          
  o pygments                             2.15.1  pyhd8ed1ab_0         conda-forge          
  o pure_eval                             0.2.2  pyhd8ed1ab_0         conda-forge          
  o ptyprocess                            0.7.0  pyhd3deb0d_0         conda-forge          
  o prometheus_client                    0.17.0  pyhd8ed1ab_0         conda-forge          
  o pkgutil-resolve-name                 1.3.10  pyhd8ed1ab_0         conda-forge          
  o pickleshare                           0.7.5  py_1003              conda-forge          
  o parso                                 0.8.3  pyhd8ed1ab_0         conda-forge          
  o pandocfilters                         1.5.0  pyhd8ed1ab_0         conda-forge          
  o pamela                                1.0.0  py_0                 conda-forge          
  o packaging                              23.1  pyhd8ed1ab_0         conda-forge          
  o nest-asyncio                          1.5.6  pyhd8ed1ab_0         conda-forge          
  o mistune                               2.0.5  pyhd8ed1ab_0         conda-forge          
  o jupyterlab_widgets                    3.0.7  pyhd8ed1ab_1         conda-forge          
  o json5                                 0.9.5  pyh9f0ad1d_0         conda-forge          
  o ipython_genutils                      0.2.0  py_1                 conda-forge          
  o idna                                    3.4  pyhd8ed1ab_0         conda-forge          
  o flit-core                             3.9.0  pyhd8ed1ab_0         conda-forge          
  o executing                             1.2.0  pyhd8ed1ab_0         conda-forge          
  o exceptiongroup                        1.1.1  pyhd8ed1ab_0         conda-forge          
  o entrypoints                             0.4  pyhd8ed1ab_0         conda-forge          
  o defusedxml                            0.7.1  pyhd8ed1ab_0         conda-forge          
  o decorator                             5.1.1  pyhd8ed1ab_0         conda-forge          
  o charset-normalizer                    3.1.0  pyhd8ed1ab_0         conda-forge          
  o certifi                            2023.5.7  pyhd8ed1ab_0         conda-forge          
  o blinker                               1.6.2  pyhd8ed1ab_0         conda-forge          
  o backports                               1.0  pyhd8ed1ab_3         conda-forge          
  o backcall                              0.2.0  pyh9f0ad1d_0         conda-forge          
  o attrs                                23.1.0  pyh71513ae_1         conda-forge          
  o async_generator                        1.10  py_0                 conda-forge          
  o aiofiles                             22.1.0  pyhd8ed1ab_0         conda-forge          
  o importlib_resources                  5.12.0  pyhd8ed1ab_0         conda-forge          
  o importlib-metadata                    6.6.0  pyha770c72_0         conda-forge          
  o tinycss2                              1.2.1  pyhd8ed1ab_0         conda-forge          
  o typing-extensions                     4.6.3  hd8ed1ab_0           conda-forge          
  o matplotlib-inline                     0.1.6  pyhd8ed1ab_0         conda-forge          
  o comm                                  0.1.3  pyhd8ed1ab_0         conda-forge          
  o beautifulsoup4                       4.12.2  pyha770c72_0         conda-forge          
  o rfc3339-validator                     0.1.4  pyhd8ed1ab_0         conda-forge          
  o python-dateutil                       2.8.2  pyhd8ed1ab_0         conda-forge          
  o asttokens                             2.2.1  pyhd8ed1ab_0         conda-forge          
  o babel                                2.12.1  pyhd8ed1ab_1         conda-forge          
  o urllib3                               2.0.3  pyhd8ed1ab_0         conda-forge          
  o jupyterlab_pygments                   0.2.2  pyhd8ed1ab_0         conda-forge          
  o pexpect                               4.8.0  pyh1a96a4e_2         conda-forge          
  o jedi                                 0.18.2  pyhd8ed1ab_0         conda-forge          
  o bleach                                6.0.0  pyhd8ed1ab_0         conda-forge          
  o anyio                                 3.7.0  pyhd8ed1ab_1         conda-forge          
  o backports.functools_lru_cache         1.6.4  pyhd8ed1ab_0         conda-forge          
  o platformdirs                          3.5.1  pyhd8ed1ab_0         conda-forge          
  o aiosqlite                            0.19.0  pyhd8ed1ab_0         conda-forge          
  o stack_data                            0.6.2  pyhd8ed1ab_0         conda-forge          
  o requests                             2.31.0  pyhd8ed1ab_0         conda-forge          
  o wcwidth                               0.2.6  pyhd8ed1ab_0         conda-forge          
  o prompt-toolkit                       3.0.38  pyha770c72_0         conda-forge          
  o mako                                  1.2.4  pyhd8ed1ab_0         conda-forge          
  o jinja2                                3.1.2  pyhd8ed1ab_1         conda-forge          
  o terminado                            0.17.1  pyh41d4057_0         conda-forge          
  o jsonschema                           4.17.3  pyhd8ed1ab_0         conda-forge          
  o jupyter_client                        8.2.0  pyhd8ed1ab_0         conda-forge          
  o pyopenssl                            23.2.0  pyhd8ed1ab_1         conda-forge          
  o oauthlib                              3.2.2  pyhd8ed1ab_0         conda-forge          
  o argon2-cffi                          21.3.0  pyhd8ed1ab_0         conda-forge          
  o alembic                              1.11.1  pyhd8ed1ab_0         conda-forge          
  o nbformat                              5.9.0  pyhd8ed1ab_0         conda-forge          
  o jupyter_telemetry                     0.1.0  pyhd8ed1ab_1         conda-forge          
  o jupyter_events                        0.6.3  pyhd8ed1ab_0         conda-forge          
  o ipykernel                            6.23.1  pyh210e3f2_0         conda-forge          
  o certipy                               0.1.3  py_0                 conda-forge          
  o nbclient                              0.8.0  pyhd8ed1ab_0         conda-forge          
  o ipywidgets                            8.0.6  pyhd8ed1ab_0         conda-forge          
  o jupyterhub-base                       3.1.1  pyh2a2186d_0         conda-forge          
  o nbconvert-core                        7.4.0  pyhd8ed1ab_0         conda-forge          
  o nbconvert-pandoc                      7.4.0  pyhd8ed1ab_0         conda-forge          
  o jupyter_server                       1.23.6  pyhd8ed1ab_0         conda-forge          
  o nbconvert                             7.4.0  pyhd8ed1ab_0         conda-forge          
  o notebook-shim                         0.2.3  pyhd8ed1ab_0         conda-forge          
  o jupyterlab_server                    2.22.1  pyhd8ed1ab_0         conda-forge          
  o jupyter_server_fileid                 0.9.0  pyhd8ed1ab_0         conda-forge          
  o jupyter-resource-usage                0.7.1  pyhd8ed1ab_0         conda-forge          
  o notebook                              6.5.4  pyha770c72_0         conda-forge          
  o jupyter-offlinenotebook               0.2.2  pyh1d7be83_0         conda-forge          
  o jupyterhub-singleuser                 3.1.1  pyh2a2186d_0         conda-forge          

  Upgrade:
─────────────────────────────────────────────────────────────────────────────────────────────

  - pip                                  23.1.2  pyhd8ed1ab_0         conda-forge          
  + pip                                  23.2.1  pyhd8ed1ab_0         conda-forge       1MB
  - y-py                                  0.5.9  py310h4426083_0      conda-forge          
  + y-py                                  0.6.0  py38h9fda977_0       conda-forge       1MB
  - sqlalchemy                           2.0.15  py310h2372a71_0      conda-forge          
  + sqlalchemy                           2.0.19  py38h01eb140_0       conda-forge       3MB
  - ruamel.yaml                         0.17.31  py310h2372a71_0      conda-forge          
  + ruamel.yaml                         0.17.32  py38h01eb140_0       conda-forge     200kB
  - jupyter_ydoc                          0.2.4  pyhd8ed1ab_0         conda-forge          
  + jupyter_ydoc                          1.0.2  pyhd8ed1ab_0         conda-forge      36kB
  - ypy-websocket                         0.8.2  pyhd8ed1ab_0         conda-forge          
  + ypy-websocket                        0.12.1  pyhd8ed1ab_0         conda-forge      22kB

  Downgrade:
─────────────────────────────────────────────────────────────────────────────────────────────

  - icu                                    72.1  hcb278e6_0           conda-forge          
  + icu                                    70.1  h27087fc_0           conda-forge      14MB
  - openssl                               3.1.1  hd590300_1           conda-forge          
  + openssl                              1.1.1u  hd590300_0           conda-forge       2MB
  - python_abi                             3.10  3_cp310              conda-forge          
  + python_abi                              3.8  3_cp38               conda-forge       6kB
  - nodejs                              18.15.0  h4abf6b9_1           conda-forge          
  + nodejs                              14.20.1  h96d913c_1           conda-forge      16MB
  - python                              3.10.11  he550d4f_0_cpython   conda-forge          
  + python                               3.8.15  h257c98d_0_cpython   conda-forge      21MB
  - ipython                              8.14.0  pyh41d4057_0         conda-forge          
  + ipython                              8.12.2  pyh41d4057_0         conda-forge     582kB
  - cryptography                         41.0.1  py310h75e40e8_0      conda-forge          
  + cryptography                         39.0.0  py38h1724139_0       conda-forge       1MB
  - nbclassic                             1.0.0  pyhb4ecaf3_1         conda-forge          
  + nbclassic                             0.5.6  pyhb4ecaf3_1         conda-forge       6MB
  - jupyter_server_ydoc                   0.8.0  pyhd8ed1ab_0         conda-forge          
  + jupyter_server_ydoc                   0.1.4  pyhd8ed1ab_0         conda-forge      11kB
  - jupyterlab                            3.6.4  pyhd8ed1ab_0         conda-forge          
  + jupyterlab                            3.2.9  pyhd8ed1ab_0         conda-forge       6MB

  Summary:

  Install: 130 packages
  Change: 13 packages
  Reinstall: 101 packages
  Upgrade: 6 packages
  Downgrade: 10 packages

  Total download: 343MB

─────────────────────────────────────────────────────────────────────────────────────────────


�[91m
# >>>>>>>>>>>>>>>>>>>>>> ERROR REPORT <<<<<<<<<<<<<<<<<<<<<<

    Traceback (most recent call last):
      File "/srv/conda/lib/python3.11/site-packages/conda/exception_handler.py", line 16, in __call__
        return func(*args, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^
      File "/srv/conda/lib/python3.11/site-packages/conda_env/cli/main.py", line 49, in do_call
        exit_code = getattr(module, func_name)(args, parser)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/srv/conda/lib/python3.11/site-packages/conda/notices/core.py", line 123, in wrapper
        return func(*args, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^
      File "/srv/conda/lib/python3.11/site-packages/conda_env/cli/main_update.py", line 139, in execute
        result[installer_type] = installer.install(prefix, specs, args, env)
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/srv/conda/lib/python3.11/site-packages/mamba/mamba_env.py", line 153, in mamba_install
        transaction.fetch_extract_packages()
    RuntimeError: Could not set URL (code: 14 - url = /wheel-0.40.0-pyhd8ed1ab_0.conda)

`$ /srv/conda/bin/mamba update -p /srv/conda/envs/notebook --file binder/environment.yml`

  environment variables:
                 CIO_TEST=<not set>
  CONDA_AUTO_UPDATE_CONDA=false
        CONDA_DEFAULT_ENV=/srv/conda/envs/notebook
                CONDA_DIR=/srv/conda
           CONDA_PLATFORM=linux-64
               CONDA_ROOT=/srv/conda
           CURL_CA_BUNDLE=<not set>
               LD_PRELOAD=<not set>
                     PATH=/home/jovyan/.local/bin:/home/jovyan/.local/bin:/srv/conda/envs/notebo
                          ok/bin:/srv/conda/bin:/srv/npm/bin:/usr/local/sbin:/usr/local/bin:/usr
                          /sbin:/usr/bin:/sbin:/bin
       REQUESTS_CA_BUNDLE=<not set>
            SSL_CERT_FILE=<not set>

     active environment : None
       user config file : /home/jovyan/.condarc
 populated config files : /srv/conda/.condarc
          conda version : 23.5.2
    conda-build version : not installed
         python version : 3.11.4.final.0
       virtual packages : __archspec=1=x86_64
                          __glibc=2.27=0
                          __linux=5.15.0=0
                          __unix=0=0
       base environment : /srv/conda  (writable)
      conda av data dir : /srv/conda/etc/conda
  conda av metadata url : None
           channel URLs : https://conda.anaconda.org/conda-forge/linux-64
                          https://conda.anaconda.org/conda-forge/noarch
                          https://repo.anaconda.com/pkgs/main/linux-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/linux-64
                          https://repo.anaconda.com/pkgs/r/noarch
          package cache : /srv/conda/pkgs
                          /home/jovyan/.conda/pkgs
       envs directories : /srv/conda/envs
                          /home/jovyan/.conda/envs
               platform : linux-64
             user-agent : conda/23.5.2 requests/2.31.0 CPython/3.11.4 Linux/5.15.0-72-generic ubuntu/18.04.6 glibc/2.27
                UID:GID : 1000:1000
             netrc file : None
           offline mode : False


An unexpected error has occurred. Conda has prepared the above report.

�[0m�[91mtime: 24.204
�[0mRemoving intermediate container 0468d22b2e63
The command '/bin/sh -c TIMEFORMAT='time: %3R' bash -c 'time ${MAMBA_EXE} env update -p ${NB_PYTHON_PREFIX} --file "binder/environment.yml" && time ${MAMBA_EXE} clean --all -f -y && ${MAMBA_EXE} list -p ${NB_PYTHON_PREFIX} '' returned a non-zero code: 1

lite: pyodide 0.20.x support

Robot tests / tasks with errors fail with pyodide 0.20.0.

Maybe just wait for the next pyodide release.

PythonError: Traceback (most recent call last):
  File "/lib/python3.10/site-packages/robotkernel/display_pyolite.py", line 115, in run
    return self.do_execute(code, silent=False)
  File "/lib/python3.10/site-packages/robotkernel/kernel.py", line 269, in do_execute
    result = execute_robot(
  File "/lib/python3.10/site-packages/robotkernel/executors.py", line 222, in execute_robot
    reply = run_robot_suite(
  File "/lib/python3.10/site-packages/robotkernel/executors.py", line 268, in run_robot_suite
    results = suite.run(outputdir=path, stdout=stdout, listener=listeners)
  File "/lib/python3.10/site-packages/robot/running/model.py", line 402, in run
    with STOP_SIGNAL_MONITOR:
  File "/lib/python3.10/site-packages/robot/running/signalhandler.py", line 50, in __enter__
    self._register_signal_handler(signum)
  File "/lib/python3.10/site-packages/robot/running/signalhandler.py", line 64, in _register_signal_handler
    signal.signal(signum, self)
  File "/lib/python3.10/signal.py", line 56, in signal
    handler = _signal.signal(_enum_to_int(signalnum), _enum_to_int(handler))
OSError: [Errno 0] Error

Console logging

Is it possible to have live console logging? It seems that it only logs everything at the end of the tests?

Support (Jupyter) Debug Adapter Protocol

ipykernel 6.0.0 just landed which, among other things, supports the Debug Adapter Protocol. We should see if:

  • we somehow magically get support 🎉
    • though seems a little unlikely 😊
  • we have to do some plumbing to support robot sources, etc. 🔧

This would definitely trigger a need to demonstrate a new 🤖 🔬 !

FileNotFoundError possible when displaying images

  File "/home/datakurre/robotlab/lib/python3.6/site-packages/robotkernel/executors.py", line 291, in run_robot_suite
    bundle, metadata = to_mime_and_metadata(return_values[-1])
  File "/home/datakurre/robotlab/lib/python3.6/site-packages/robotkernel/utils.py", line 192, in to_mime_and_metadata
    return Image(obj, embed=True)._repr_mimebundle_()
  File "/home/datakurre/robotlab/lib/python3.6/site-packages/IPython/core/display.py", line 1262, in _repr_mimebundle_
    data, metadata = self._data_and_metadata(always_both=True)
  File "/home/datakurre/robotlab/lib/python3.6/site-packages/IPython/core/display.py", line 1275, in _data_and_metadata
    "No such file or directory: '%s'" % (self.data))
FileNotFoundError: No such file or directory: 'None'

Support robotframework 7

Hooray, robotframework 7 is released 🤖 🎉!

It would be lovely to kick the tires here to see what can be done to support some of the new features.

Binder starter URL not workin after jupyter-starters upgrade

Kernel crashes when using with latest release of robotframework (6.1.0)

Can be reproduced by launching a Binder with the following environment configuration:

name: robotkernel-repro

channels:
  - conda-forge

dependencies:
  - jupyterlab>=3,<4
  - jupyterlab_robotmode
  - numpy
  - pip
  - pip:
      - robotframework==6.1.0
      - robotkernel==1.6
  - python>=3.9,<3.11

When attempting to start the kernel it crashes due to an import error:

[I 2023-07-13 06:45:03.807 SingleUserLabApp restarter:72] AsyncIOLoopKernelRestarter: restarting kernel (5/5), new random ports
Traceback (most recent call last):
  File "/srv/conda/envs/notebook/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/srv/conda/envs/notebook/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/srv/conda/envs/notebook/lib/python3.10/site-packages/robotkernel/kernel.py", line 10, in <module>
    from robotkernel.executors import execute_python
  File "/srv/conda/envs/notebook/lib/python3.10/site-packages/robotkernel/executors.py", line 9, in <module>
    from robotkernel.builders import build_suite
  File "/srv/conda/envs/notebook/lib/python3.10/site-packages/robotkernel/builders.py", line 6, in <module>
    from robotkernel.builders_32 import build_suite
  File "/srv/conda/envs/notebook/lib/python3.10/site-packages/robotkernel/builders_32.py", line 5, in <module>
    from robot.running.builder.parsers import ErrorReporter
ImportError: cannot import name 'ErrorReporter' from 'robot.running.builder.parsers' (/srv/conda/envs/notebook/lib/python3.10/site-packages/robot/running/builder/parsers.py)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.