Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Support path links (JupyterLab 4.1+) and fix CI #20

Merged
merged 4 commits into from
Apr 1, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1

- name: Install dependencies
run: python -m pip install -U "jupyterlab>=4.0.0b0,<5"
run: python -m pip install -U "jupyterlab>=4.1.0a4,<5"

- name: Lint the extension
run: |
Expand All @@ -29,7 +29,7 @@ jobs:
- name: Build the extension
run: |
set -eux
python -m pip install .[test]
python -m pip install .

jupyter labextension list
jupyter labextension list 2>&1 | grep -ie "jupyterlab-skip-traceback.*OK"
Expand Down
2 changes: 1 addition & 1 deletion .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ node_modules
**/lib
**/package.json
!/package.json
jupyterlab-skip-traceback
jupyterlab_skip_traceback
5 changes: 0 additions & 5 deletions .travis.yml

This file was deleted.

6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
## [5.1.0](https://github.com/deshaw/jupyterlab-skip-traceback/compare/v5.0.0...v5.1.0) (20240331)

### Added

- Support for clicking on paths in tracebacks (requires >=jupyterlab@4.1) #20

## [5.0.0](https://github.com/deshaw/jupyterlab-skip-traceback/compare/v4.0.4...v5.0.0) (20220519)

### Changed
Expand Down
24 changes: 0 additions & 24 deletions MANIFEST.in

This file was deleted.

13 changes: 0 additions & 13 deletions jupyterlab-skip-traceback/__init__.py

This file was deleted.

4 changes: 0 additions & 4 deletions jupyterlab-skip-traceback/_version.py

This file was deleted.

13 changes: 13 additions & 0 deletions jupyterlab_skip_traceback/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
try:
from ._version import __version__
except ImportError:
# Fallback when using the package in dev mode without installing
# in editable mode with pip. It is highly recommended to install
# the package from a stable release or in editable mode: https://pip.pypa.io/en/stable/topics/local-project-installs/#editable-installs
import warnings
warnings.warn("Importing 'jupyterlab_skip_traceback' outside a proper installation.")
__version__ = "dev"


def _jupyter_labextension_paths():
return [{"src": "labextension", "dest": "jupyterlab_skip_traceback"}]
16 changes: 8 additions & 8 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "jupyterlab-skip-traceback",
"version": "5.0.0",
"version": "5.1.0",
"description": "A JupyterLab extension for rendering Errors with a copy/paste button and expand/collapse",
"license": "BSD-3-Clause",
"author": {
Expand Down Expand Up @@ -31,7 +31,7 @@
"jupyterlab": {
"extension": true,
"schemaDir": "schema",
"outputDir": "jupyterlab-skip-traceback/labextension"
"outputDir": "jupyterlab_skip_traceback/labextension"
},
"scripts": {
"build": "jlpm build:lib && jlpm build:labextension:dev",
Expand All @@ -42,7 +42,7 @@
"build:prod": "jlpm clean && jlpm build:lib:prod && jlpm build:labextension",
"clean": "jlpm clean:lib",
"clean:all": "jlpm clean:lib && jlpm clean:labextension && jlpm clean:lintcache",
"clean:labextension": "rimraf jupyterlab-skip-traceback/labextension jupyterlab-skip-traceback/_version.py",
"clean:labextension": "rimraf jupyterlab_skip_traceback/labextension jupyterlab_skip_traceback/_version.py",
"clean:lib": "rimraf lib tsconfig.tsbuildinfo",
"clean:lintcache": "rimraf .eslintcache .stylelintcache",
"eslint": "jlpm eslint:check --fix",
Expand All @@ -66,13 +66,13 @@
"watch:src": "tsc -w --sourceMap"
},
"dependencies": {
"@jupyterlab/application": "^4.0.0",
"@jupyterlab/rendermime": "^4.0.0",
"@jupyterlab/settingregistry": "^4.0.0",
"@lumino/widgets": "^2.1.1"
"@jupyterlab/application": "^4.1.0",
"@jupyterlab/rendermime": "^4.1.0",
"@jupyterlab/settingregistry": "^4.1.0",
"@lumino/widgets": "^2.3.1"
},
"devDependencies": {
"@jupyterlab/builder": "^4.0.0",
"@jupyterlab/builder": "^4.1.0",
"@types/json-schema": "^7.0.11",
"@types/react": "^18.0.26",
"@typescript-eslint/eslint-plugin": "^5.55.0",
Expand Down
18 changes: 9 additions & 9 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[build-system]
requires = ["hatchling>=1.5.0", "jupyterlab>=4.0.0,<5", "hatch-nodejs-version"]
requires = ["hatchling>=1.5.0", "jupyterlab>=4.1.0,<5", "hatch-nodejs-version>=0.3.2"]
build-backend = "hatchling.build"

[project]
Expand Down Expand Up @@ -32,24 +32,24 @@ source = "nodejs"
fields = ["description", "authors", "urls"]

[tool.hatch.build.targets.sdist]
artifacts = ["jupyterlab-skip-traceback/labextension"]
artifacts = ["jupyterlab_skip_traceback/labextension"]
exclude = [".github", "binder"]

[tool.hatch.build.targets.wheel.shared-data]
"jupyterlab-skip-traceback/labextension" = "share/jupyter/labextensions/jupyterlab-skip-traceback"
"jupyterlab_skip_traceback/labextension" = "share/jupyter/labextensions/jupyterlab-skip-traceback"
"install.json" = "share/jupyter/labextensions/jupyterlab-skip-traceback/install.json"

[tool.hatch.build.hooks.version]
path = "jupyterlab-skip-traceback/_version.py"
path = "jupyterlab_skip_traceback/_version.py"

[tool.hatch.build.hooks.jupyter-builder]
dependencies = ["hatch-jupyter-builder>=0.5"]
build-function = "hatch_jupyter_builder.npm_builder"
ensured-targets = [
"jupyterlab-skip-traceback/labextension/static/style.js",
"jupyterlab-skip-traceback/labextension/package.json",
"jupyterlab_skip_traceback/labextension/static/style.js",
"jupyterlab_skip_traceback/labextension/package.json",
]
skip-if-exists = ["jupyterlab-skip-traceback/labextension/static/style.js"]
skip-if-exists = ["jupyterlab_skip_traceback/labextension/static/style.js"]

[tool.hatch.build.hooks.jupyter-builder.build-kwargs]
build_cmd = "build:prod"
Expand All @@ -59,14 +59,14 @@ npm = ["jlpm"]
build_cmd = "install:extension"
npm = ["jlpm"]
source_dir = "src"
build_dir = "jupyterlab-skip-traceback/labextension"
build_dir = "jupyterlab_skip_traceback/labextension"

[tool.jupyter-releaser.options]
version_cmd = "hatch version"

[tool.jupyter-releaser.hooks]
before-build-npm = [
"python -m pip install 'jupyterlab>=4.0.0b0,<5'",
"python -m pip install 'jupyterlab>=4.1.0a4,<5'",
"jlpm",
"jlpm build:prod"
]
Expand Down
1 change: 1 addition & 0 deletions setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
__import__("setuptools").setup()
34 changes: 22 additions & 12 deletions src/SkipTracebackWidget.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import '../style/index.css';

import { Widget } from '@lumino/widgets';
import { IRenderMime, renderText } from '@jupyterlab/rendermime';
import { IRenderMime, renderText, renderError } from '@jupyterlab/rendermime';
import { Clipboard } from '@jupyterlab/apputils/lib/clipboard';

const BTN_BASE_CLASS = 'minimal jp-Button';
Expand Down Expand Up @@ -39,7 +39,7 @@ export default class SkipTracebackWidget
constructor(options: IRenderMime.IRendererOptions) {
super();
this._mimeType = options.mimeType;
this._sanitizer = options.sanitizer;
this._options = options;
}

private static _defaults = {
Expand Down Expand Up @@ -100,14 +100,24 @@ export default class SkipTracebackWidget
span.appendChild(shortError);

const traceback = document.createElement('pre');
const rt = renderText({
host: traceback,
sanitizer: this._sanitizer,
// It should look like stderr
source:
(model.data['application/vnd.jupyter.stderr'] as string) ||
this._data.traceback.join('\n'),
});
// It should look like stderr
const source = (model.data['application/vnd.jupyter.stderr'] as string) ||
this._data.traceback.join('\n');

let renderedPromise: Promise<void>;
if (typeof renderError !== 'undefined') {
renderedPromise = renderError({
...this._options,
host: traceback,
source
});
} else {
renderedPromise = renderText({
...this._options,
host: traceback,
source
});
}
const tbDiv = document.createElement('div');
tbDiv.className = 'jp-RenderedText';
tbDiv.setAttribute('data-mime-type', 'application/vnd.jupyter.stderr');
Expand All @@ -121,12 +131,12 @@ export default class SkipTracebackWidget
this._toggleTraceback();
}
// Don't finish until we render the text
return rt;
return renderedPromise;
}

private _toggleBtn?: HTMLButtonElement;
private _tracebackNode?: HTMLDivElement;
private _sanitizer: IRenderMime.ISanitizer;
private _options: IRenderMime.IRendererOptions;
private _data?: IError;
private _mimeType: string;
private _shortError?: HTMLPreElement;
Expand Down
Loading
Loading