jupyterlab-contrib / jupyter-archive Goto Github PK
View Code? Open in Web Editor NEWA Jupyter/Jupyterlab extension to make, download and extract archive files.
License: BSD 3-Clause "New" or "Revised" License
A Jupyter/Jupyterlab extension to make, download and extract archive files.
License: BSD 3-Clause "New" or "Revised" License
On large trees (>400,000 files and > 30GB), if you execute the extension, the download starts after a few seconds (which is good), but if you cancel it, no error message appears but the RAM memory starts increasing very quickly.
It only stops after stopping the Jupyter server.
I feel like many await self.flush()
calls are still in memory but have not been canceled by the extension.
At the moment, I didn't figure out how to fix this.
@hadim I would like to create a conda recipe on conda-forge. Is it ok for you? Do you want to be added as maintainer?
FYI - recipe template
{% set name = "jupyter-archive" %}
{% set version = "0.5.1" %}
package:
name: {{ name|lower }}
version: {{ version }}
source:
url: https://pypi.io/packages/source/{{ name[0] }}/{{ name }}/{{ name }}-{{ version }}.tar.gz
sha256: c578affa23afcfebb1b2a7956db46f48dc6477cf804f8af8a1be638ffa039ac9
build:
noarch: python
number: 0
script: "{{ PYTHON }} -m pip install . -vv --no-deps"
requirements:
host:
- python >=3.5
- pip
build:
- nodejs
run:
- python >=3.5
- jupyterlab >=1
test:
imports:
- jupyter_archive
about:
home: https://github.com/hadim/jupyter-archive
summary: Make, download and extract archive files in Jupyter.
description: Make, download and extract archive files in Jupyter.
license: BSD 3-Clause
license_family: BSD
license_file: LICENSE
extra:
recipe-maintainers:
- hadim
- fcollonval
When I install 0.5.4 from conda, I have an error related to settings when loading the JLab interface.
I also tried uninstalling the lab extension and installing manually with jupyter labextension uninstall @hadim/jupyter-archive
but I still have the same error:
JupyterLab extension jupyter-archive is activated!
lab/api/settings/@hadim/jupyter-archive:archive?1574261408927:1 Failed to load resource: the server responded with a status of 404 (Not Found)
index.js:170 Error: Invalid response: 404 Not Found
at SettingManager.fetch (index.js:41)
at async SettingRegistry.reload (settingregistry.js:235)
(anonymous) @ index.js:170
dialog.js:32 Showing error: Error: Invalid response: 404 Not Found
at SettingManager.fetch (index.js:41)
at async SettingRegistry.reload (settingregistry.js:235)
Hiya, I also wrote an archiver though I see this one may get integrated into jupyter_server. Please consider supporting streaming the download which is critical for large archives. Otherwise the server may time out waiting for the archive to build.
_write_buffer
of RequstHandler, as well as _write_buffer
of IOStream, which is base of tornado framework, should be limitedHi there,
Got myself a clean install of Jupyterlab ready to go, working all fine. I need a way to download folders as an archive, so installed this extension. However, when I click "Download as an Archive", it just throws me a 404:
404 GET /user/amuseic/directories/Notebooks/Nolen?archiveToken=sx3k30n763h6n5dy564c&archiveFormat=zip&followSymlinks=true&downloadHidden=false&_xsrf=2%7Cdf7fc5ba%7Cde6993628513bdb312f77d0
I've changed the host, since I'm running this on a VM that I don't work on, so host is local ip using a reversed proxy with Nginx to a DNS service. Is that why it might not work, and how might I fix that?
Kind regards,
Remy
A license file should be added.
just the same as weichsel/ZIPFoundation#63
python zipfile lib using flag to determind the encoding of the file https://github.com/python/cpython/blob/main/Lib/zipfile.py#L1384 but osx compress won't set that
so we may need to guess the encoding for zip
Paste the output from your command line running `jupyter lab` here, use `--debug` if possible.
Paste the output from your browser web console here.
Enhancement
Use a file selector to show the context action only on archive files.
The filename is stored as title attribute in the file browser. Using CSS selector with attribute filtering maybe a solution:
https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors
In light of jupyter-server/pytest-jupyter#10 (comment), pytest-jupyter
plugin should be removed in favor for jupyter_server
integrated plugins.
I have a suggestion for improvement regarding the extract function of jupyter_archive.
Currently, extract fails if the target file name contains .
in the target filename.
I think this is because the file extension retrieved by suffixes()
is compared with the white list.
To allow file names to contain .
in the filename, jupyter-archive will be more useful, I think.
How about checking the extension white list for backward matching?
For example, if we have a file named hoge.old.tar.gz
, it will backward match tar.gz
, so we can run extraction.
When I open the binder example https://mybinder.org/v2/gh/hadim/jupyter-archive/master?urlpath=lab in Firefox 70.0b11 (64-bit) on OSX the list of files and directories is empty. When I click into the area the files appear instantly.
It doesn't happen always. One way to increase the chances of it happening is to open the binder in a new tab and only switch there once the page has fully loaded.
After installing jupyter-archive, if I right click on items in the Jupyter Lab file browser the context menu doesn't appear as expected. In the Javascript console the following error is reported: TypeError: Path must be a string. Received undefined.
Initially reported here: jupyterlab/jupyterlab/issues/14948
When I try to download a folder which is above 10-15MB, it will start to download and after a few seconds download will fail saying Network Error. Not sure what is the issue, is there a cap on the size of zip file download?
PS. Jupyter notebooks are hosted on Kubernetes.
The current version uses async features and indeed, downloading is done on-the-fly.
But since the code is running in the main thread and is very resource-intensive, JLab UI often blocks. The easiest example is trying to navigate in folders during a download of an archive.
A solution would be to run archive_and_download()
in another thread using ioloop.IOLoop.current().run_in_executor
. But this is not compatible with the call self.flush
inside archive_and_download()
to send the data over the network. So far I haven't found a good solution.
Any ideas are welcome.
Building wheels for collected packages: jupyter-archive
Building wheel for jupyter-archive (setup.py): started
Building wheel for jupyter-archive (setup.py): finished with status 'error'
ERROR: Command errored out with exit status 1:
command: /opt/conda/bin/python3.7 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-bjc365l5/jupyter-archive/setup.py'"'"'; __file__='"'"'/tmp/pip-install-bjc365l5/jupyter-archive/
setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-aqm8i
2yt
cwd: /tmp/pip-install-bjc365l5/jupyter-archive/
Complete output (69 lines):
running bdist_wheel
running jsdeps
Installing build dependencies with npm. This may take a while...
> npm install
npm WARN deprecated [email protected]: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1
npm WARN lifecycle @hadim/[email protected]~prepare: cannot run in wd @hadim/[email protected] yarn run clean && yarn run build (wd=/tmp/pip-install-bjc365l5/jupyter-archive)
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN @lumino/[email protected] requires a peer of [email protected] but none is installed. You must install peer dependencies yourself.
added 150 packages from 1016 contributors and audited 150 packages in 10.607s
19 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
> npm run build:all
> @hadim/[email protected] build:all /tmp/pip-install-bjc365l5/jupyter-archive
> yarn run build:labextension
yarn run v1.22.4
$ cd jupyter_archive && rimraf labextension && mkdirp labextension && cd labextension && npm pack ../..
npm WARN lifecycle @hadim/[email protected]~prepare: cannot run in wd @hadim/[email protected] yarn run clean && yarn run build (wd=/tmp/pip-install-bjc365l5/jupyter-archive)
npm notice
npm notice 📦 @hadim/[email protected]
npm notice === Tarball Contents ===
npm notice 1.5kB LICENSE
npm notice 0 style/index.css
npm notice 1.1kB schema/archive.json
npm notice 1.9kB package.json
npm notice 2.8kB README.md
npm notice === Tarball Details ===
npm notice name: @hadim/jupyter-archive
npm notice version: 0.7.0
npm notice filename: hadim-jupyter-archive-0.7.0.tgz
npm notice package size: 3.1 kB
npm notice unpacked size: 7.2 kB
npm notice shasum: 208a93becb2ecbc8754dad19bac28b378d891d5e
npm notice integrity: sha512-sFk9DKVARdD6a[...]ha6Ye8y9Iewzw==
npm notice total files: 5
npm notice
hadim-jupyter-archive-0.7.0.tgz
Done in 13.37s.
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-install-bjc365l5/jupyter-archive/setup.py", line 67, in <module>
extras_require={"test": ["jupyterlab", "pytest"]},
File "/opt/conda/lib/python3.7/site-packages/setuptools/__init__.py", line 144, in setup
return distutils.core.setup(**attrs)
File "/opt/conda/lib/python3.7/distutils/core.py", line 148, in setup
dist.run_commands()
File "/opt/conda/lib/python3.7/distutils/dist.py", line 966, in run_commands
self.run_command(cmd)
File "/opt/conda/lib/python3.7/distutils/dist.py", line 985, in run_command
cmd_obj.run()
File "/tmp/pip-install-bjc365l5/jupyter-archive/setupbase.py", line 465, in run
[self.run_command(cmd) for cmd in cmds]
File "/tmp/pip-install-bjc365l5/jupyter-archive/setupbase.py", line 465, in <listcomp>
[self.run_command(cmd) for cmd in cmds]
File "/opt/conda/lib/python3.7/distutils/cmd.py", line 313, in run_command
self.distribution.run_command(command)
File "/opt/conda/lib/python3.7/distutils/dist.py", line 985, in run_command
cmd_obj.run()
File "/tmp/pip-install-bjc365l5/jupyter-archive/setupbase.py", line 261, in run
c.run()
File "/tmp/pip-install-bjc365l5/jupyter-archive/setupbase.py", line 387, in run
raise ValueError(("missing files: %s" % missing))
ValueError: missing files: ['/tmp/pip-install-bjc365l5/jupyter-archive/lib/index.js']
----------------------------------------
ERROR: Failed building wheel for jupyter-archive
@jasongrout: Both the backend and frontend extension are working nicely.
About the integration to notebook and jupyterlab, I am fine doing it but I need guidance as to where the code should go. Should they have their own module or not? Where should they go?
Also, feel free to ping the relevant person if needed.
hi there @hadim i'm testing out this extension for our jupyter hub. it looks like a great tool! When i load it locally on my machine - i'm getting "file not found" errors when i attemt to download a directory. The error looks like this:
Firefox can’t find the file at http://localhost:8888/directories/0-professional-certificate?archiveToken=h86we7ln86agc3zwhs89&archiveFormat=zip&_xsrf=2|23bbaae0|b5712342d851a6ec0a4a8e7fe6b64323|1588721445.
or just a 404 error.
Is there anything that i can try to figure out why this is happening? i'm trying to find a way for my students to back up their work on our hub before i shut it down at the end of the semester. this tool could work if i can get it to work! thank you for any suggestions :)
I found a problem with data loss when I tried to archive download a large file in a slow network environment.
The download will complete successfully, but this file will fail to extract on local PC.
As a result of my investigation, I found that if the archive process completes when the stream._write_buffer
exceeds the DownloadArchiveHandler.stream_max_buffer_size
, the DownloadArchiveHandler._ write_buffer
will be lost. This is because flush
, which is called after the archive process finishes, is skipped.
In my application, I solved this by modifying DownloadArchiveHandler.flush()
to add a force
option, but this method is a bit clunky to use in common use cases.
However, this method is a bit rough to use in general use cases, because the stream buffer will temporarily exceed the max size.
I have also tried implementing a while loop to wait until the stream buffer becomes small enough, and confirmed that this solves the problem.
I think this problem is a little difficult to reproduce. Even in my application, I was unable to reproduce it in a local environment, but was able to reproduce it by accessing it from a slow network environment.
In addition to the speed of the network, it also depends on the size of the file to be downloaded.
On my slow network environment, I had this problem when I tried to archive and download a 200MB file. If the network speed is a little faster than this, the problem does not occur until I download a larger file.
I tried the network throttle in the chrome dev tool, but it failed to limit the speed of the file download. Please let me know if there is a better way.
The download completes normally, and the file can be extracted.
Paste the output from your command line running `jupyter lab` here, use `--debug` if possible.
Paste the output from your browser web console here.
If there is any other information you need, please let me know.
with this extension it makes it easy to download an archive folder. it would be cool if it also supported "upload and unzip archive".
this would make it simple for users to store data somewhere else but have a simple workflow for uploading and downloading their working dir. I can imagine this being good in the context of JupyterLite also.
In jupyter-archive, reading and writing of _write_buffer
is performed in different threads. So, for example, if a write to _write_buffer
is performed between L1066 and L1067 in RequestHandler.flush()
, buffer data will be lost.
Ref: https://github.com/tornadoweb/tornado/blob/master/tornado/web.py#L1066-L1067
I found that using threading.Lock()
to lock write()
and flush()
solved the problem.
I will send PR if necessary.
It is very difficult to reproduce this intentionally. If you archive several GB files, it will happen more often, but not all the time.
In my application, I was able to reproduce it with high frequency for certain data, but I think it depends on the environment of application.
Data can be extracted without corruption.
Paste the output from your command line running `jupyter lab` here, use `--debug` if possible.
Paste the output from your browser web console here.
When i run jupyterlab in local it works but not behind jupyterhub.
it try to open this URL :
https://app.dev.naas.ai/user/[email protected]/directories/test_email?archiveToken=***&archiveFormat=zip&followSymlinks=true&downloadHidden=false&_xsrf=***
First of all, thanks for this extension! It is going to be a huge help for me. One thing that would be great to be able to do is set a configuration that excludes hidden directories. I teach a class using a JupyterHub K8s deployment where the students need to be able to take the material with them, but they don't need all of the hidden directories that inevitably pop up around a docker container. This is particularly true because all of the class material is in github projects, and the students pull it down using nbgitpuller, so they end up with .git
folders everywhere which aren't useful to them after the class is over.
Would you have any interest in adding a configuration that allows to exclude hidden directories? I looked through the code briefly, and I don't think this is implemented, but I could be wrong.
I think the head method for the handler is not needed.
https://github.com/hadim/jupyter-archive/blob/55fbf191ab3b055e304de05e8b4b9e7af6583afa/jupyter_archive/handlers.py#L48
It's useful only for file to get some information on them without their content.
See https://github.com/hadim/jupyter-archive/blob/master/jupyter_archive/tests/test_archive_hanlder.py
In short, when doing the test the jupyter-archive server extension is not discovered.
Tasks:
jupyter_server
and pytest syntaxiconClass
(#44)It should be useful.
I have installed jupyter-archive via conda.
conda install -c conda-forge jupyter-archive
I expected that this will show a unzip option but it doesn't
I have enabled 3rd party extensions too.
Clicking "open with" provides the "Editor" option but that does not unzip the file
Instead this happens
I expected to see a unzip/extract option
I am not really using neither working on that extension anymore. Integration to jupyter failed (see jupyter-server/jupyter_server#252).
That being said I think this extension is used by a small (or probably a tiny) community. Would someone like to have admin access in order to keep maintaining the project?
ping @fcollonval here
I am using Jupyterlab2 with some custom front-end plugin
So I am using 2.x version jupyter-archive
But there are many bug fixes that have not been synced to version 2.x, like zip a dir named aaa.bbb, the zip file name is displayed as aaa.zip, and I found that this had been fixed in 3.x version
Do we have any updates planned for version 2.x? Maybe I can refer to the code for version 3.x to update version 2.x?
A server extension can be enable at package installation if a specific Json file is defined see for example https://github.com/fcollonval/jupyterlab-download-folder
JupyerLite provides an in-browser version of JupyterLab supported by an in-browser WASM based Python environment. Notebooks can be uploaded to JupyterLite and saved to browser storage, along with edited notebooks and data files etc. Being able to easily export notebooks as a zip archive from the in-browser environment would be really useful.
Currently, using the jupyter-archive
extension to download a folder as an archive file in Chrome pops up a browser status message to the effect of download.html
File wasn't available on site and no archive file is downloaded.
I am running a JupyterHub on a Kubernetes Cluster. I use two different images, a tensorflow-gpu and a tensorflow-cpu image. In the GPU image the download works fine, but in the CPU image it does not work. When I click "Download as an archive", all I get is an empty browser tab.
docker run --name tf-cpu -d -it -p 8888:8888 -e GRANT_SUDO=yes -e JUPYTER_ENABLE_LAB=yes --user root christofkaufmann/tensorflow-cpu-notebook:fa57d1fa && sleep 2 && docker logs tf-cpu && docker exec -it tf-cpu bash
An archive should be created and downloaded, like with the GPU image (christofkaufmann/tensorflow-gpu-notebook:fa57d1fa). In the GPU image the packages are older. If you need the versions, let me know.
This refers to the CPU image where the bug is triggered.
JupyterLab v3.5.2
/opt/conda/share/jupyter/labextensions
jupyterlab_pygments v0.2.2 enabled OK (python, jupyterlab_pygments)
jupyterlab-execute-time v2.3.1 enabled OK (python, jupyterlab_execute_time)
jupyterlab-system-monitor v0.8.0 enabled OK (python, jupyterlab-system-monitor)
jupyterlab-topbar-extension v0.6.1 enabled OK (python, jupyterlab-topbar)
jupyter-matplotlib v0.11.2 enabled OK
@hadim/jupyter-archive v3.3.0 enabled OK (python, jupyter-archive)
@jupyterlab/server-proxy v3.2.2 enabled OK
@jupyter-server/resource-usage v0.7.1 enabled OK (python, jupyter-resource-usage)
@jupyter-widgets/jupyterlab-manager v5.0.5 enabled OK (python, jupyterlab_widgets)
Config dir: /home/jovyan/.jupyter
Config dir: /opt/conda/etc/jupyter
jupyter_archive enabled
- Validating jupyter_archive...
jupyter_archive 3.3.0 OK
jupyter_server_proxy enabled
- Validating jupyter_server_proxy...
jupyter_server_proxy OK
jupyter_resource_usage enabled
- Validating jupyter_resource_usage...
jupyter_resource_usage 0.7.1 OK
jupyter_server_terminals enabled
- Validating jupyter_server_terminals...
jupyter_server_terminals 0.4.3 OK
jupyterlab enabled
- Validating jupyterlab...
jupyterlab 3.5.2 OK
nbclassic enabled
- Validating nbclassic...
nbclassic 0.4.8 OK
nbgitpuller enabled
- Validating nbgitpuller...
nbgitpuller 1.1.1 OK
notebook_shim enabled
- Validating notebook_shim...
notebook_shim OK
Config dir: /usr/local/etc/jupyter
/opt/conda/lib/python3.10/site-packages/jupyter_archive/handlers.py:123: RuntimeWarning: coroutine 'AsyncFileContentsManager.is_hidden' was never awaited if cm.is_hidden(archive_path) and not cm.allow_hidden: RuntimeWarning: Enable tracemalloc to get the object allocation traceback [I 2023-03-15 17:16:17.137 SingleUserLabApp handlers:124] Refusing to serve hidden file, via 404 Error
So, I think the important bit is the message /opt/conda/lib/python3.10/site-packages/jupyter_archive/handlers.py:123: RuntimeWarning: coroutine 'AsyncFileContentsManager.is_hidden' was never awaited
In jupyter-archive version 3.3.4, we still have the option "Extract Archive" option when right-clicking on a .zip
file. It seems the option is gone in 3.4.0. Is this intended or a real bug?
Screenshot from the working version 3.3.4:
.zip
file on the left file browser panel. The option "Extract Archive" should be there.The option "Extract Archive" should be there.
Working environment: docker image pavics/workflow-tests:py39-230601-1-update240116
Broken environment: docker image pavics/workflow-tests:py310-240411
Working environment again by pinning jupyter-archive to 3.3.4: docker image pavics/workflow-tests:py310-240419
Python package version: see conda env export
Don't have this info since the JupyterLab is spawned by JupyterHub.
Unsatisfied version 1.37.2 from @jupyterlab/application-top of shared singleton module @lumino/widgets (required ^2.3.1-alpha.0) [remoteEntry.9f387e5e108e458f62c3.js:1:7192](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/remoteEntry.9f387e5e108e458f62c3.js) Unsatisfied version 1.11.1 from @jupyterlab/application-top of shared singleton module @lumino/signaling (required ^2.0.0) [remoteEntry.7b569f28d2ab8ae4828e.js:1:5716](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/jupyterlab-jupytext/static/remoteEntry.7b569f28d2ab8ae4828e.js) Unsatisfied version 3.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/codemirror (required ^4.0.10) [remoteEntry.7b569f28d2ab8ae4828e.js:1:5716](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/jupyterlab-jupytext/static/remoteEntry.7b569f28d2ab8ae4828e.js) Unsatisfied version 3.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/codeeditor (required ^4.0.10) [remoteEntry.7b569f28d2ab8ae4828e.js:1:5716](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/jupyterlab-jupytext/static/remoteEntry.7b569f28d2ab8ae4828e.js) Unsatisfied version 6.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/services (required ^7.0.9) [remoteEntry.370de6f77fd53f20b297.js:1:5721](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/nbdime-jupyterlab/static/remoteEntry.370de6f77fd53f20b297.js) Unsatisfied version 1.11.1 from @jupyterlab/application-top of shared singleton module @lumino/signaling (required ^2.0.0) [remoteEntry.370de6f77fd53f20b297.js:1:5721](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/nbdime-jupyterlab/static/remoteEntry.370de6f77fd53f20b297.js) Unsatisfied version 1.10.3 from @jupyterlab/application-top of shared singleton module @lumino/messaging (required ^2.0.0) [remoteEntry.370de6f77fd53f20b297.js:1:5721](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/nbdime-jupyterlab/static/remoteEntry.370de6f77fd53f20b297.js) Unsatisfied version 1.9.2 from @jupyterlab/application-top of shared singleton module @lumino/algorithm (required ^2.0.0) [remoteEntry.370de6f77fd53f20b297.js:1:5721](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/nbdime-jupyterlab/static/remoteEntry.370de6f77fd53f20b297.js) Unsatisfied version 3.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/apputils (required ^4.1.9) [remoteEntry.370de6f77fd53f20b297.js:1:5721](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/nbdime-jupyterlab/static/remoteEntry.370de6f77fd53f20b297.js) Unsatisfied version 3.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/codemirror (required ^4.0.9) [remoteEntry.370de6f77fd53f20b297.js:1:5721](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/nbdime-jupyterlab/static/remoteEntry.370de6f77fd53f20b297.js) Unsatisfied version 1.10.4 from @jupyterlab/application-top of shared singleton module @lumino/disposable (required ^2.0.0) [remoteEntry.370de6f77fd53f20b297.js:1:5721](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/nbdime-jupyterlab/static/remoteEntry.370de6f77fd53f20b297.js) Unsatisfied version 5.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/coreutils (required ^6.0.9) [remoteEntry.370de6f77fd53f20b297.js:1:5721](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/nbdime-jupyterlab/static/remoteEntry.370de6f77fd53f20b297.js) Unsatisfied version 3.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/codeeditor (required ^4.0.9) [remoteEntry.370de6f77fd53f20b297.js:1:5721](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/nbdime-jupyterlab/static/remoteEntry.370de6f77fd53f20b297.js) Unsatisfied version 1.12.1 from @jupyterlab/application-top of shared singleton module @lumino/coreutils (required ^2.0.0) [remoteEntry.370de6f77fd53f20b297.js:1:5721](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/nbdime-jupyterlab/static/remoteEntry.370de6f77fd53f20b297.js) No satisfying version (^4.0.9) of shared module @jupyterlab/nbformat found in shared scope default. Available versions: 3.6.7 from @jupyterlab/application-top [remoteEntry.370de6f77fd53f20b297.js:1:5721](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/nbdime-jupyterlab/static/remoteEntry.370de6f77fd53f20b297.js) Unsatisfied version 0.2.4 from @jupyterlab/application-top of shared singleton module @jupyter/ydoc (required ^1.1.1) [remoteEntry.370de6f77fd53f20b297.js:1:5721](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/nbdime-jupyterlab/static/remoteEntry.370de6f77fd53f20b297.js) Unsatisfied version 3.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/settingregistry (required ^4.0.9) [remoteEntry.370de6f77fd53f20b297.js:1:5721](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/nbdime-jupyterlab/static/remoteEntry.370de6f77fd53f20b297.js) Unsatisfied version 1.37.2 from @jupyterlab/application-top of shared singleton module @lumino/widgets (required ^2.0.1) [remoteEntry.370de6f77fd53f20b297.js:1:5721](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/nbdime-jupyterlab/static/remoteEntry.370de6f77fd53f20b297.js) Unsatisfied version 3.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/translation (required ^4.0.9) [remoteEntry.370de6f77fd53f20b297.js:1:5721](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/nbdime-jupyterlab/static/remoteEntry.370de6f77fd53f20b297.js) Unsatisfied version 3.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/notebook (required ^4.0.9) [remoteEntry.370de6f77fd53f20b297.js:1:5721](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/nbdime-jupyterlab/static/remoteEntry.370de6f77fd53f20b297.js) Unsatisfied version 3.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/rendermime (required ^4.0.9) [remoteEntry.370de6f77fd53f20b297.js:1:5721](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/nbdime-jupyterlab/static/remoteEntry.370de6f77fd53f20b297.js) Unsatisfied version 3.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/filebrowser (required ^4.0.5) [remoteEntry.c3551e86769ef3973316.js:1:5033](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@hadim/jupyter-archive/static/remoteEntry.c3551e86769ef3973316.js) Unsatisfied version 6.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/services (required ^7.0.5) [remoteEntry.c3551e86769ef3973316.js:1:5033](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@hadim/jupyter-archive/static/remoteEntry.c3551e86769ef3973316.js) Unsatisfied version 3.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/settingregistry (required ^4.0.5) [remoteEntry.c3551e86769ef3973316.js:1:5033](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@hadim/jupyter-archive/static/remoteEntry.c3551e86769ef3973316.js) Unsatisfied version 3.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/translation (required ^4.0.5) [remoteEntry.c3551e86769ef3973316.js:1:5033](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@hadim/jupyter-archive/static/remoteEntry.c3551e86769ef3973316.js) Unsatisfied version 5.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/coreutils (required ^6.0.5) [remoteEntry.c3551e86769ef3973316.js:1:5033](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@hadim/jupyter-archive/static/remoteEntry.c3551e86769ef3973316.js) Unsatisfied version 3.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/apputils (required ^4.1.5) [remoteEntry.c3551e86769ef3973316.js:1:5033](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@hadim/jupyter-archive/static/remoteEntry.c3551e86769ef3973316.js) Unsatisfied version 1.9.2 from @jupyterlab/application-top of shared singleton module @lumino/algorithm (required ^2.0.0) [remoteEntry.c3551e86769ef3973316.js:1:5033](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@hadim/jupyter-archive/static/remoteEntry.c3551e86769ef3973316.js) Unsatisfied version 1.37.2 from @jupyterlab/application-top of shared singleton module @lumino/widgets (required ^2.0.1) [remoteEntry.c3551e86769ef3973316.js:1:5033](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@hadim/jupyter-archive/static/remoteEntry.c3551e86769ef3973316.js) Unsatisfied version 3.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/ui-components (required ^4.0.5) [remoteEntry.c3551e86769ef3973316.js:1:5033](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@hadim/jupyter-archive/static/remoteEntry.c3551e86769ef3973316.js) Unsatisfied version 1.11.1 from @jupyterlab/application-top of shared singleton module @lumino/signaling (required ^2.0.0) [remoteEntry.9f387e5e108e458f62c3.js:1:7192](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/remoteEntry.9f387e5e108e458f62c3.js) Unsatisfied version 1.9.2 from @jupyterlab/application-top of shared singleton module @lumino/algorithm (required ^2.0.0) [remoteEntry.9f387e5e108e458f62c3.js:1:7192](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/remoteEntry.9f387e5e108e458f62c3.js) Unsatisfied version 3.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/notebook (required ^4.1.0) [remoteEntry.9f387e5e108e458f62c3.js:1:7192](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/remoteEntry.9f387e5e108e458f62c3.js) Unsatisfied version 1.8.2 from @jupyterlab/application-top of shared singleton module @lumino/properties (required ^2.0.0) [remoteEntry.9f387e5e108e458f62c3.js:1:7192](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/remoteEntry.9f387e5e108e458f62c3.js) Unsatisfied version 3.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/logconsole (required ^4.1.0) [remoteEntry.9f387e5e108e458f62c3.js:1:7192](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/remoteEntry.9f387e5e108e458f62c3.js) No satisfying version (^4.1.0) of shared module @jupyterlab/outputarea found in shared scope default. Available versions: 3.6.7 from @jupyterlab/application-top [remoteEntry.9f387e5e108e458f62c3.js:1:7192](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/remoteEntry.9f387e5e108e458f62c3.js) Unsatisfied version 1.10.4 from @jupyterlab/application-top of shared singleton module @lumino/disposable (required ^2.0.0) [remoteEntry.9f387e5e108e458f62c3.js:1:7192](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/remoteEntry.9f387e5e108e458f62c3.js) Unsatisfied version 3.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/translation (required ^4.1.0) [remoteEntry.9f387e5e108e458f62c3.js:1:7192](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/remoteEntry.9f387e5e108e458f62c3.js) Unsatisfied version 3.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/rendermime (required ^4.1.0) [remoteEntry.9f387e5e108e458f62c3.js:1:7192](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/remoteEntry.9f387e5e108e458f62c3.js) Unsatisfied version 6.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/services (required ^7.1.0) [remoteEntry.9f387e5e108e458f62c3.js:1:7192](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/remoteEntry.9f387e5e108e458f62c3.js) Unsatisfied version 3.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/settingregistry (required ^4.1.0) [remoteEntry.9f387e5e108e458f62c3.js:1:7192](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/remoteEntry.9f387e5e108e458f62c3.js) Unsatisfied version 3.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/mainmenu (required ^4.1.0) [remoteEntry.9f387e5e108e458f62c3.js:1:7192](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/remoteEntry.9f387e5e108e458f62c3.js) Unsatisfied version 3.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/application (required ^4.1.4) [remoteEntry.1d058ab1c1661989f918.js:1:4885](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@jupyterhub/jupyter-server-proxy/static/remoteEntry.1d058ab1c1661989f918.js) Unsatisfied version 3.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/apputils (required ^4.2.4) [remoteEntry.1d058ab1c1661989f918.js:1:4885](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@jupyterhub/jupyter-server-proxy/static/remoteEntry.1d058ab1c1661989f918.js) Unsatisfied version 5.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/coreutils (required ^6.1.4) [remoteEntry.1d058ab1c1661989f918.js:1:4885](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@jupyterhub/jupyter-server-proxy/static/remoteEntry.1d058ab1c1661989f918.js) Unsatisfied version 3.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/filebrowser (required ^4.1.4) [remoteEntry.1d058ab1c1661989f918.js:1:4885](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@jupyterhub/jupyter-server-proxy/static/remoteEntry.1d058ab1c1661989f918.js) Unsatisfied version 3.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/launcher (required ^4.1.4) [remoteEntry.1d058ab1c1661989f918.js:1:4885](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@jupyterhub/jupyter-server-proxy/static/remoteEntry.1d058ab1c1661989f918.js) Unsatisfied version 6.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/services (required ^7.1.4) [remoteEntry.1d058ab1c1661989f918.js:1:4885](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@jupyterhub/jupyter-server-proxy/static/remoteEntry.1d058ab1c1661989f918.js) Unsatisfied version 3.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/ui-components (required ^4.1.5) [remoteEntry.668cb6b9e5e946ee05b9.js:1:5472](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@voila-dashboards/jupyterlab-preview/static/remoteEntry.668cb6b9e5e946ee05b9.js) Unsatisfied version 5.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/coreutils (required ^6.1.5) [remoteEntry.668cb6b9e5e946ee05b9.js:1:5472](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@voila-dashboards/jupyterlab-preview/static/remoteEntry.668cb6b9e5e946ee05b9.js) Unsatisfied version 1.11.1 from @jupyterlab/application-top of shared singleton module @lumino/signaling (required ^2.0.0) [remoteEntry.668cb6b9e5e946ee05b9.js:1:5472](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@voila-dashboards/jupyterlab-preview/static/remoteEntry.668cb6b9e5e946ee05b9.js) Unsatisfied version 3.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/apputils (required ^4.2.5) [remoteEntry.668cb6b9e5e946ee05b9.js:1:5472](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@voila-dashboards/jupyterlab-preview/static/remoteEntry.668cb6b9e5e946ee05b9.js) Unsatisfied version 3.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/application (required ^4.1.5) [remoteEntry.668cb6b9e5e946ee05b9.js:1:5472](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@voila-dashboards/jupyterlab-preview/static/remoteEntry.668cb6b9e5e946ee05b9.js) Unsatisfied version 3.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/notebook (required ^4.1.5) [remoteEntry.668cb6b9e5e946ee05b9.js:1:5472](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@voila-dashboards/jupyterlab-preview/static/remoteEntry.668cb6b9e5e946ee05b9.js) Unsatisfied version 17.0.2 from @jupyterlab/application-top of shared singleton module react (required ^18.2.0) [remoteEntry.668cb6b9e5e946ee05b9.js:1:5472](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@voila-dashboards/jupyterlab-preview/static/remoteEntry.668cb6b9e5e946ee05b9.js) No satisfying version (^4.1.5) of shared module @jupyterlab/docregistry found in shared scope default. Available versions: 3.6.7 from @jupyterlab/application-top [remoteEntry.668cb6b9e5e946ee05b9.js:1:5472](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@voila-dashboards/jupyterlab-preview/static/remoteEntry.668cb6b9e5e946ee05b9.js) Unsatisfied version 3.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/mainmenu (required ^4.1.5) [remoteEntry.668cb6b9e5e946ee05b9.js:1:5472](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@voila-dashboards/jupyterlab-preview/static/remoteEntry.668cb6b9e5e946ee05b9.js) Unsatisfied version 1.12.1 from @jupyterlab/application-top of shared singleton module @lumino/coreutils (required ^2.0.0) [remoteEntry.668cb6b9e5e946ee05b9.js:1:5472](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@voila-dashboards/jupyterlab-preview/static/remoteEntry.668cb6b9e5e946ee05b9.js) Unsatisfied version 3.6.7 from @jupyterlab/application-top of shared singleton module @jupyterlab/settingregistry (required ^4.1.5) [remoteEntry.668cb6b9e5e946ee05b9.js:1:5472](https://pavics.ouranos.ca/jupyter/user/lvu2/lab/extensions/@voila-dashboards/jupyterlab-preview/static/remoteEntry.668cb6b9e5e946ee05b9.js) Failed to create module: package: nbdime-jupyterlab; module: ./extension [index.out.js:34:12](webpack://jupyterlab/application-top/build/index.out.js) Error: Shared module @codemirror/state doesn't exist in shared scope default i remoteEntry.370de6f77fd53f20b297.js:1 g remoteEntry.370de6f77fd53f20b297.js:1 v remoteEntry.370de6f77fd53f20b297.js:1 8204 remoteEntry.370de6f77fd53f20b297.js:1 consumes remoteEntry.370de6f77fd53f20b297.js:1 consumes remoteEntry.370de6f77fd53f20b297.js:1 e remoteEntry.370de6f77fd53f20b297.js:1 e remoteEntry.370de6f77fd53f20b297.js:1 extension remoteEntry.370de6f77fd53f20b297.js:1 n remoteEntry.370de6f77fd53f20b297.js:1 G index.out.js:31 H index.out.js:98 H index.out.js:95 [index.out.js:615:14](webpack://jupyterlab/application-top/build/index.out.js) Plugin 'jupyterlab-jupytext:plugin' failed to activate. [index.es6.js:2288:24](webpack://jupyterlab/application-top/node_modules/@lumino/application/dist/index.es6.js) TypeError: e is undefined b index.es6.js:2191 l index.es6.js:52 a index.es6.js:33 c index.es6.js:26 c index.es6.js:22 resolveRequiredService index.es6.js:2184 n index.es6.js:2081 b index.es6.js:2081 l index.es6.js:52 a index.es6.js:33 c index.es6.js:26 c index.es6.js:22 activatePlugin index.es6.js:2065 r index.es6.js:2287 start index.es6.js:2286 H index.out.js:638 [index.es6.js:2289:24](webpack://jupyterlab/application-top/node_modules/@lumino/application/dist/index.es6.js) Language pack 'en_US' not installed! [manager.js:46:20](webpack://jupyterlab/application-top/node_modules/@jupyterlab/translation/lib/manager.js) hub-extension: Found configuration Object { hubHost: "", hubPrefix: "/jupyter/hub/" } [index.js:36:12](webpack://jupyterlab/application-top/node_modules/@jupyterlab/hub-extension/lib/index.js) Starting application in workspace: "default" [index.js:325:16](webpack://jupyterlab/application-top/node_modules/@jupyterlab/application-extension/lib/index.js) JupyterLab extension jupyter-archive is activated!
@fcollonval There is something I am not sure about: why do I keep pushing new versions to npm (https://www.npmjs.com/package/@hadim/jupyter-archive) if the lab extension is already embedded to both the pip
and conda
packages.
The only advantage I see is that people can discover it through JLab extension manager but they would still need to install the server extension anyway...
What do you think?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.