Skip to content

Commit ddcf687

Browse files
committed
Initial commit
0 parents  commit ddcf687

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+16011
-0
lines changed

.eslintignore

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
lint-staged.config.js
2+
.eslintrc.js
3+
4+
node_modules
5+
**/build
6+
**/lib
7+
**/node_modules
8+
**/mock_packages
9+
**/static
10+
**/typings
11+
**/schemas
12+
**/themes
13+
coverage
14+
*.map.js
15+
*.bundle.js
16+
17+
# jetbrains IDE stuff
18+
.idea/
19+
20+
# ms IDE stuff
21+
.history/
22+
.vscode/

.eslintrc.js

+56
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
module.exports = {
2+
env: {
3+
browser: true,
4+
es6: true,
5+
commonjs: true,
6+
node: true,
7+
'jest/globals': true
8+
},
9+
root: true,
10+
extends: [
11+
'eslint:recommended',
12+
'plugin:@typescript-eslint/eslint-recommended',
13+
'plugin:@typescript-eslint/recommended',
14+
'plugin:prettier/recommended',
15+
'plugin:react/recommended',
16+
'plugin:jest/recommended'
17+
],
18+
parser: '@typescript-eslint/parser',
19+
parserOptions: {
20+
project: 'tsconfig.eslint.json',
21+
sourceType: 'module'
22+
},
23+
plugins: ['@typescript-eslint', 'jest'],
24+
rules: {
25+
'@typescript-eslint/naming-convention': [
26+
'error',
27+
{
28+
selector: 'interface',
29+
format: ['PascalCase'],
30+
custom: {
31+
regex: '^I[A-Z]',
32+
match: true
33+
}
34+
}
35+
],
36+
'@typescript-eslint/no-unused-vars': ['warn', { args: 'none' }],
37+
'@typescript-eslint/no-explicit-any': 'off',
38+
'@typescript-eslint/no-namespace': 'off',
39+
'@typescript-eslint/no-var-requires': 'off',
40+
'@typescript-eslint/no-use-before-define': 'off',
41+
'@typescript-eslint/no-empty-interface': 'off',
42+
'@typescript-eslint/quotes': [
43+
'error',
44+
'single',
45+
{ avoidEscape: true, allowTemplateLiterals: false }
46+
],
47+
curly: ['error', 'all'],
48+
eqeqeq: 'error',
49+
'prefer-arrow-callback': 'error'
50+
},
51+
settings: {
52+
react: {
53+
version: 'detect'
54+
}
55+
}
56+
};

.gitignore

+116
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
*.bundle.*
2+
lib/
3+
node_modules/
4+
*.egg-info/
5+
.ipynb_checkpoints
6+
*.tsbuildinfo
7+
8+
# Created by https://www.gitignore.io/api/python
9+
# Edit at https://www.gitignore.io/?templates=python
10+
11+
### Python ###
12+
# Byte-compiled / optimized / DLL files
13+
__pycache__/
14+
*.py[cod]
15+
*$py.class
16+
17+
# C extensions
18+
*.so
19+
20+
# Distribution / packaging
21+
.Python
22+
build/
23+
develop-eggs/
24+
dist/
25+
downloads/
26+
eggs/
27+
.eggs/
28+
lib/
29+
lib64/
30+
parts/
31+
sdist/
32+
var/
33+
wheels/
34+
pip-wheel-metadata/
35+
share/python-wheels/
36+
.installed.cfg
37+
*.egg
38+
MANIFEST
39+
40+
# PyInstaller
41+
# Usually these files are written by a python script from a template
42+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
43+
*.manifest
44+
*.spec
45+
46+
# Installer logs
47+
pip-log.txt
48+
pip-delete-this-directory.txt
49+
50+
# Unit test / coverage reports
51+
htmlcov/
52+
.tox/
53+
.nox/
54+
.coverage
55+
.coverage.*
56+
.cache
57+
nosetests.xml
58+
coverage.xml
59+
*.cover
60+
.hypothesis/
61+
.pytest_cache/
62+
63+
# Translations
64+
*.mo
65+
*.pot
66+
67+
# Scrapy stuff:
68+
.scrapy
69+
70+
# Sphinx documentation
71+
docs/_build/
72+
73+
# PyBuilder
74+
target/
75+
76+
# pyenv
77+
.python-version
78+
79+
# celery beat schedule file
80+
celerybeat-schedule
81+
82+
# SageMath parsed files
83+
*.sage.py
84+
85+
# Spyder project settings
86+
.spyderproject
87+
.spyproject
88+
89+
# Rope project settings
90+
.ropeproject
91+
92+
# Mr Developer
93+
.mr.developer.cfg
94+
.project
95+
.pydevproject
96+
97+
# mkdocs documentation
98+
/site
99+
100+
# mypy
101+
.mypy_cache/
102+
.dmypy.json
103+
dmypy.json
104+
105+
# Pyre type checker
106+
.pyre/
107+
108+
# OS X stuff
109+
*.DS_Store
110+
111+
# End of https://www.gitignore.io/api/python
112+
113+
_temp_extension
114+
junit.xml
115+
[uU]ntitled*
116+
jupyterlab_classic/static

.prettierignore

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
node_modules
2+
**/node_modules
3+
**/lib
4+
**/package.json
5+
**/static

.prettierrc

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"singleQuote": true
3+
}

LICENSE

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
BSD 3-Clause License
2+
3+
Copyright (c) 2020, Jeremy Tuloup
4+
All rights reserved.
5+
6+
Redistribution and use in source and binary forms, with or without
7+
modification, are permitted provided that the following conditions are met:
8+
9+
* Redistributions of source code must retain the above copyright notice, this
10+
list of conditions and the following disclaimer.
11+
12+
* Redistributions in binary form must reproduce the above copyright notice,
13+
this list of conditions and the following disclaimer in the documentation
14+
and/or other materials provided with the distribution.
15+
16+
* Neither the name of the copyright holder nor the names of its
17+
contributors may be used to endorse or promote products derived from
18+
this software without specific prior written permission.
19+
20+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

MANIFEST.in

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
include LICENSE
2+
include README.md
3+
include pyproject.toml
4+
include jupyter-config/jupyterlab-classic.json
5+
6+
include package.json
7+
include install.json
8+
include ts*.json
9+
10+
# Javascript files
11+
graft src
12+
graft style
13+
prune **/node_modules
14+
prune lib
15+
16+
# Patterns to exclude from any directory
17+
global-exclude *~
18+
global-exclude *.pyc
19+
global-exclude *.pyo
20+
global-exclude .git
21+
global-exclude .ipynb_checkpoints

README.md

+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# jupyterlab-classic
2+
3+
The next gen old-school Notebook UI.
4+
5+
## Install
6+
7+
With `pip`:
8+
9+
```bash
10+
pip install jupyterlab-classic
11+
```
12+
13+
With `conda`:
14+
15+
```bash
16+
conda install -c conda-forge jupyterlab-classic
17+
```
18+
19+
## Usage
20+
21+
`jupyterlab-classic` can be started as a standalone app with:
22+
23+
```bash
24+
python -m jupyterlab_classic
25+
```
26+
27+
Existing federated JupyterLab extensions listed via:
28+
29+
```bash
30+
jupyter labextension list
31+
```
32+
33+
Should also be available when starting `jupyterlab-classic`.
34+
35+
## Motivation
36+
37+
JupyterLab is the next-gen UI for Project Jupyter. Approaching version 3.0, it is becoming more mature and provides and advanced computation environment, that can sometimes be compared to what traditional IDEs offer.
38+
39+
However in some cases, having a leaner, simpler, and more focused interface to work on a notebook is really useful.
40+
41+
The single document mode as currently implemented in JupyterLab helps address this issue, but still displays a couple of visual cues to the users that can be distracting.
42+
43+
The goal of the `jupyterlab-classic` project is to look as close to the classic notebook UI as possible, while leveraging the efforts put in the development of JupyterLab itself and its extension system.
44+
45+
Technically speaking, `jupyterlab-classic` reuses **many** of the existing plugins for JupyterLab (notebook, toolbar), and also supports pre-built (federated) third-party extensions using the new distribution system added in 3.0. That way, extensions built for JupyterLab should also be compatible with `jupyterlab-classic`, as long as they can be added to the application.
46+
47+
## Prior art
48+
49+
This project is mostly a reboot of the two previous attempts at making something similar:
50+
51+
- [simplest-notebook](https://github.com/yuvipanda/simplest-notebook)
52+
- [jupyterlab-clarity-mode](https://github.com/jupytercalpoly/jupyterlab-clarity-mode)
53+
54+
These projects real expressed the need for a stripped down, minimal version of the Jupyter Notebook UI.
55+
56+
`jupyterlab-classic` contributes to that space With the added:
57+
58+
- Support for existing federated (prebuilt) JupyterLab extensions
59+
- Repo structure, similar to JupyterLab
60+
- Reusing as much as possible from upstream JupyterLab

0 commit comments

Comments
 (0)