A plugin for JupyterLab that lets you set up and use as many filebrowsers as you like, connected to whatever local and/or remote filesystem-like resources you want.
The backend is built on top of PyFilesystem, while the frontend is built on top of JupyterLab Filetree.
bash
pip install jupyter-fs
Add the following to your jupyter_server_config.json
:
json
{
"ServerApp": {
"contents_manager_class": "jupyterfs.metamanager.MetaManager",
"jpserver_extensions": {
"jupyterfs.extension": true
}
}
}
Add specifications for additional contents managers in your user settings (in the Settings menu under Advanced Settings Editor -> jupyter-fs). Here's an example config that sets up several new filebrowsers side-by-side:
json
{
"resources": [
{
"name": "root at test dir",
"url": "osfs:///Users/foo/test"
},
{
"name": "s3 test bucket",
"url": "s3://test"
},
{
"name": "s3 test key",
"url": "s3://test-2/prefix/",
"defaultWritable": false
},
{
"name": "samba guest share",
"url": "smb://[email protected]/test?name-port=3669"
}
]
}
You should see your new filebrowsers pop up in the left-hand sidebar instantly when you save your settings:
Any stretch of a "url"
that is enclosed in double-brackets {{VAR}}
will be treated as a template, and will be handled by jupyter-fs's auth system. For example, you can pass a username/password to the "samba guest share"
resource in the Simple use
example above by modifying its "url"
like so:
```json { "resources": [ ...
{
"name": "samba share",
"url": "smb://{{user}}:{{passwd}}@127.0.0.1/test?name-port=3669"
}
] } ```
When you save the above "resouces"
config, a dialog box will pop asking for the username
and passwd
values:
Once you enter those values and hit ok, the new filebrowsers will then immediately appear in the sidebar:
The jupyter-fs auth dialog will only appear when:
- JupyterLab first loads, if any fs resources reqiure auth
- a new fs resouce is added that requires auth, or its "url"
field is modified
The type of resource each filebrowser will point to is determined by the protocol at the start of its url:
jupyter-fs can open a filebrowser pointing to any of the diverse resources supported by PyFilesystem. Currently, we test only test the S3 and smb/samba backends as part of our CI, so your milleage may vary with the other PyFilesystem backends.
The "url"
field jupyter-fs config is based on the PyFilesystem opener url standard. For more info on how to write these urls, see the documentation of the relevant PyFilesystem plugin:
- S3: S3FS docs
- smb: fs.smbfs docs
If you prefer to set up your filesystem resources in the server-side config, you can do so. For example, you can set up a local filesystem by adding the following to your jupyter_server_config.py
file:
python
c.Jupyterfs.resources = [
{
"name": "local_test",
"url": "osfs:///Users/foo/test"
},
]
ALternatively, you can add resource specifications alongside the basic jupyter-fs config in your jupyter_server_config.json
file:
json
{
"ServerApp": {
"contents_manager_class": "jupyterfs.metamanager.MetaManager",
"jpserver_extensions": {
"jupyterfs.extension": true
}
},
"Jupyterfs": {
"resources": [
{
"name": "local_test",
"url": "osfs:///Users/foo/test"
}
]
}
}
Any filesystem resources specified in any server-side config file will be merged with the resources given in a user's settings.
See CONTRIBUTING.md for guidelines.
This software is licensed under the Apache 2.0 license. See the LICENSE and AUTHORS files for details.
Bumps webpack from 5.75.0 to 5.76.1.
Sourced from webpack's releases.
v5.76.1
Fixed
- Added
assert/strict
built-in toNodeTargetPlugin
Revert
- Improve performance of
hashRegExp
lookup by@ryanwilsonperkin
in webpack/webpack#16759v5.76.0
Bugfixes
- Avoid cross-realm object access by
@Jack-Works
in webpack/webpack#16500- Improve hash performance via conditional initialization by
@lvivski
in webpack/webpack#16491- Serialize
generatedCode
info to fix bug in asset module cache restoration by@ryanwilsonperkin
in webpack/webpack#16703- Improve performance of
hashRegExp
lookup by@ryanwilsonperkin
in webpack/webpack#16759Features
- add
target
toLoaderContext
type by@askoufis
in webpack/webpack#16781Security
- CVE-2022-37603 fixed by
@akhilgkrishnan
in webpack/webpack#16446Repo Changes
- Fix HTML5 logo in README by
@jakebailey
in webpack/webpack#16614- Replace TypeScript logo in README by
@jakebailey
in webpack/webpack#16613- Update actions/cache dependencies by
@piwysocki
in webpack/webpack#16493New Contributors
@Jack-Works
made their first contribution in webpack/webpack#16500@lvivski
made their first contribution in webpack/webpack#16491@jakebailey
made their first contribution in webpack/webpack#16614@akhilgkrishnan
made their first contribution in webpack/webpack#16446@ryanwilsonperkin
made their first contribution in webpack/webpack#16703@piwysocki
made their first contribution in webpack/webpack#16493@askoufis
made their first contribution in webpack/webpack#16781Full Changelog: https://github.com/webpack/webpack/compare/v5.75.0...v5.76.0
21be52b
Merge pull request #16804 from webpack/chore-patch-release1cce945
chore(release): 5.76.1e76ad9e
Merge pull request #16803 from ryanwilsonperkin/revert-16759-real-content-has...52b1b0e
Revert "Improve performance of hashRegExp lookup"c989143
Merge pull request #16766 from piranna/patch-1710eaf4
Merge pull request #16789 from dmichon-msft/contenthash-hashsalt5d64468
Merge pull request #16792 from webpack/update-version67af5ec
chore(release): 5.76.097b1718
Merge pull request #16781 from askoufis/loader-context-target-typeb84efe6
Merge pull request #16759 from ryanwilsonperkin/real-content-hash-regex-perfThis version was pushed to npm by evilebottnawi, a new releaser for webpack since your current version.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
As it says in the title!
This functionality would enable easily opening a terminal at the specified location.
An Open in Terminal
context menu entry would also be very convenient but a simple Copy Path
gets you 90% of the way there as you can manually open a terminal and paste the path.
The FileTree seems to include size/mimetype/last_modified as default columns:
...which takes up quite a lot of horizontal space. By default I'd probably choose to not include the mimetype column as horizontal space is more important to me.
It would be great if the user could easily choose which columns to display (ideally as a right-click context menu)
Bumps http-cache-semantics from 4.1.0 to 4.1.1.
2449650
Update mocha560b2d8
Don't use regex to trim whitespaceb1bdb92
Remove linting package zooc20dc7e
Cache 308Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Seems like setuptools>v66.0 will fail the installation if version specs are not conforming to PEP440.
After installing the extension in Jupyter Lab, and installing the package in the virtual environment via pip install jupyter-fs, Jupyter Lab says that it needs a rebuild.
This rebuild fails with an number of errors:
`
[LabBuildApp] > node D:\Software\Anaconda3\envs\data-analysis\lib\site-packages\jupyterlab\staging\yarn.js run build:prod:minimize
[LabBuildApp] yarn run v1.21.1
$ webpack --config webpack.prod.minimize.config.js
[webpack-cli] [31mModuleNotFoundError: Module not found: Error: Can't resolve 'jupyter-fs/style/index.js' in 'D:\Software\Anaconda3\envs\data-analysis\share\jupyter\lab\staging\build'
at D:\Software\Anaconda3\envs\data-analysis\share\jupyter\lab\staging\node_modules\webpack\lib\Compilation.js:1768:28
at D:\Software\Anaconda3\envs\data-analysis\share\jupyter\lab\staging\node_modules\webpack\lib\NormalModuleFactory.js:742:13
at eval (eval at create (D:\Software\Anaconda3\envs\data-analysis\share\jupyter\lab\staging\node_modules\tapable\lib\HookCodeFactory.js:33:10),
[LabBuildApp] JupyterLab failed to build [LabBuildApp] Traceback (most recent call last):
[LabBuildApp] File "D:\Software\Anaconda3\envs\data-analysis\lib\site-packages\jupyterlab\debuglog.py", line 47, in debug_logging yield
[LabBuildApp] File "D:\Software\Anaconda3\envs\data-analysis\lib\site-packages\jupyterlab\labapp.py", line 196, in start raise e
[LabBuildApp] File "D:\Software\Anaconda3\envs\data-analysis\lib\site-packages\jupyterlab\labapp.py", line 187, in start build(
[LabBuildApp] File "D:\Software\Anaconda3\envs\data-analysis\lib\site-packages\jupyterlab\commands.py", line 506, in build return handler.build(
[LabBuildApp] File "D:\Software\Anaconda3\envs\data-analysis\lib\site-packages\jupyterlab\commands.py", line 722, in build raise RuntimeError(msg)
[LabBuildApp] RuntimeError: JupyterLab failed to build
[LabBuildApp] Exiting application: JupyterLab `
The error associated with the
Field 'browser' doesn't contain a valid alias configuration
line may be due to ../ci/browser.sh not being included in the pip distributed package, but this may be a spurious issue.
Welcome to the open source project repositories for JPMorgan Chase
GitHub Repositoryjupyter jupyter-notebook jupyterlab jupyterlab-extension jupyter-lab