diff --git a/.vscodeignore b/.vscodeignore index 13b7d54..d8e3ac5 100755 --- a/.vscodeignore +++ b/.vscodeignore @@ -4,7 +4,6 @@ out/test/** out/**/*.map src-backend/** src-frontend/** -src-common/** !src-backend/media/** .gitignore tsconfig.json diff --git a/README.md b/README.md index 30d340c..e0af556 100755 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # neuron for Visual Studio Code -### An interactive programming experience for data scientists +### An Interactive Programming Experience for Data Scientists **neuron** is a robust application that seamlessly combines the power of Visual Studio Code with the interactivity of Jupyter Notebook. @@ -9,7 +9,7 @@ Visual Studio Code with the interactivity of Jupyter Notebook. ## Getting started -Download the latest release from [the releases page](https://github.com/lorenzo2897/vscode-ipe/releases). +Download the latest release from the [releases page](https://github.com/lorenzo2897/vscode-ipe/releases) or via the [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=neuron.neuron-IPE). This extension makes available several commands starting with `IPE:` to control the behaviour. @@ -22,12 +22,22 @@ To add a card, select some Python code and run the `Send code to output` command ## Requirements * You must have at least Visual Studio Code version 1.23.0 +* Supports Windows, macOS and Linux -## Release Notes +## 1.0.4 Release Notes -### 1.0.1 +* Repo moved to new Organisation +* Minor error printing improvement -Initial Release on VS Code Marketplace +### Known Issues + +#### 500 Internal Server Error + +When running you may receive a '500 Internal Server Error' message, this usually occurs due to the installation of Jupyter. neuron will try to install it for you however this may not be enough. A simple solution is to run `pip3 install jupyter` in the terminal. For more help go to [Installing Jupyter Notebook](https://jupyter.readthedocs.io/en/latest/install.html) + +#### Kernal runs from Home Directory not Current + +This issue will be addressed in v1.1 For information about building upon this extension, visit [the guide for developers](DEVELOPING.md). diff --git a/package-lock.json b/package-lock.json index be278f3..f723528 100755 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { - "name": "neuron-ipe", - "version": "1.0.1", + "name": "neuron-IPE", + "version": "1.0.2", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -8,7 +8,6 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/@jupyterlab/coreutils/-/coreutils-1.1.3.tgz", "integrity": "sha512-H6NgjZKHlDelN1tRsQn6mfO8lC04gcNe3e0ZWD9BTtI7/H4G+8oeEify1NJ9DkS6vl1fo5opsrtxwESnfZXqyw==", - "dev": true, "requires": { "@phosphor/algorithm": "1.1.2", "@phosphor/coreutils": "1.3.0", @@ -26,7 +25,6 @@ "version": "5.1.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.1.6.tgz", "integrity": "sha1-Sy8aGd7Ok9V6whYDfj6XkcfdFWQ=", - "dev": true, "requires": { "co": "4.6.0", "json-schema-traverse": "0.3.1", @@ -36,20 +34,17 @@ "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, "querystringify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", - "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=", - "dev": true + "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=" }, "url-parse": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.1.9.tgz", "integrity": "sha1-xn8dd11R8KGJEd17P/rSe7nlvRk=", - "dev": true, "requires": { "querystringify": "1.0.0", "requires-port": "1.0.0" @@ -61,7 +56,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/@jupyterlab/observables/-/observables-1.0.10.tgz", "integrity": "sha512-HsWchDHXarPHwF/msP7DyLJmfTsmPc+1lL1sLgYzMvU1ARXKalzA3P5LLEyrgrCssemv+pO2IkUviJ0XQKg8eQ==", - "dev": true, "requires": { "@phosphor/algorithm": "1.1.2", "@phosphor/coreutils": "1.3.0", @@ -74,7 +68,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/@jupyterlab/services/-/services-2.0.3.tgz", "integrity": "sha512-613PALJSc16ce/W5butOnqOTUFspYACB0DQKydIuDVwFefxrdMIBNAk8pqVXih6D2NHQTwC0DZKGViYD8Hj6hg==", - "dev": true, "requires": { "@jupyterlab/coreutils": "1.1.3", "@jupyterlab/observables": "1.0.10", @@ -89,14 +82,12 @@ "@phosphor/algorithm": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@phosphor/algorithm/-/algorithm-1.1.2.tgz", - "integrity": "sha1-/R3pEEyafzTpKGRYbd8ufy53eeg=", - "dev": true + "integrity": "sha1-/R3pEEyafzTpKGRYbd8ufy53eeg=" }, "@phosphor/collections": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@phosphor/collections/-/collections-1.1.2.tgz", "integrity": "sha1-xMC4uREpkF+zap8kPy273kYtq40=", - "dev": true, "requires": { "@phosphor/algorithm": "1.1.2" } @@ -104,14 +95,12 @@ "@phosphor/coreutils": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@phosphor/coreutils/-/coreutils-1.3.0.tgz", - "integrity": "sha1-YyktOBwBLFqw0Blug87YKbfgSkI=", - "dev": true + "integrity": "sha1-YyktOBwBLFqw0Blug87YKbfgSkI=" }, "@phosphor/disposable": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@phosphor/disposable/-/disposable-1.1.2.tgz", "integrity": "sha1-oZLdai5sadXQnTns8zTauTd4Bg4=", - "dev": true, "requires": { "@phosphor/algorithm": "1.1.2" } @@ -120,7 +109,6 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/@phosphor/messaging/-/messaging-1.2.2.tgz", "integrity": "sha1-fYlt3TeXuUo0dwje0T2leD23XBQ=", - "dev": true, "requires": { "@phosphor/algorithm": "1.1.2", "@phosphor/collections": "1.1.2" @@ -130,7 +118,6 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/@phosphor/signaling/-/signaling-1.2.2.tgz", "integrity": "sha1-P8+Xyojji/s1f+j+a/dRM0elFKk=", - "dev": true, "requires": { "@phosphor/algorithm": "1.1.2" } @@ -388,8 +375,7 @@ "child-process": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/child-process/-/child-process-1.0.2.tgz", - "integrity": "sha1-mJdNx+0e5MYin44wX6cxOmiFp/I=", - "dev": true + "integrity": "sha1-mJdNx+0e5MYin44wX6cxOmiFp/I=" }, "clone": { "version": "0.2.0", @@ -423,8 +409,7 @@ "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" }, "color-support": { "version": "1.1.3", @@ -451,7 +436,6 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-1.1.3.tgz", "integrity": "sha1-aYbDMw/uDEyeAMI5jNYa+l2PI54=", - "dev": true, "requires": { "json-parser": "1.1.5" } @@ -597,7 +581,6 @@ "version": "0.1.12", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", - "dev": true, "requires": { "iconv-lite": "0.4.23" } @@ -1413,7 +1396,6 @@ "version": "0.4.23", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", - "dev": true, "requires": { "safer-buffer": "2.1.2" } @@ -1554,8 +1536,7 @@ "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, "is-typedarray": { "version": "1.0.0", @@ -1607,7 +1588,6 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/json-parser/-/json-parser-1.1.5.tgz", "integrity": "sha1-5i7FJh0aal/CDoEqMgdAxtkAVnc=", - "dev": true, "requires": { "esprima": "2.7.3" }, @@ -1615,8 +1595,7 @@ "esprima": { "version": "2.7.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=" } } }, @@ -1629,14 +1608,12 @@ "json-schema-traverse": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" }, "json-stable-stringify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, "requires": { "jsonify": "0.0.0" } @@ -1650,8 +1627,7 @@ "jsonify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" }, "jsonpointer": { "version": "4.0.1", @@ -1979,8 +1955,7 @@ "moment": { "version": "2.21.0", "resolved": "https://registry.npmjs.org/moment/-/moment-2.21.0.tgz", - "integrity": "sha512-TCZ36BjURTeFTM/CwRcViQlfkMvL1/vFISuNLO5GkcVm1+QHfbSiNqZuWeMFjj1/3+uAjXswgRk30j1kkLYJBQ==", - "dev": true + "integrity": "sha512-TCZ36BjURTeFTM/CwRcViQlfkMvL1/vFISuNLO5GkcVm1+QHfbSiNqZuWeMFjj1/3+uAjXswgRk30j1kkLYJBQ==" }, "ms": { "version": "2.0.0", @@ -2009,11 +1984,13 @@ "duplexer2": "0.0.2" } }, + "neuron-ipe-types": { + "version": "file:src-common" + }, "node-fetch": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", - "dev": true, "requires": { "encoding": "0.1.12", "is-stream": "1.1.0" @@ -2071,8 +2048,7 @@ "options": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", - "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", - "dev": true + "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=" }, "ordered-read-streams": { "version": "0.3.0", @@ -2134,8 +2110,7 @@ "path-posix": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/path-posix/-/path-posix-1.0.0.tgz", - "integrity": "sha1-BrJhE/Vr6rBCVFojv6iAA8ysJg8=", - "dev": true + "integrity": "sha1-BrJhE/Vr6rBCVFojv6iAA8ysJg8=" }, "pause-stream": { "version": "0.0.11", @@ -2479,8 +2454,7 @@ "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" }, "resolve": { "version": "1.7.1", @@ -2509,8 +2483,7 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "semver": { "version": "5.5.0", @@ -2791,8 +2764,7 @@ "ultron": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", - "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=", - "dev": true + "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=" }, "unique-stream": { "version": "2.2.1", @@ -2953,7 +2925,6 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz", "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==", - "dev": true, "requires": { "options": "0.0.6", "ultron": "1.0.2" diff --git a/package.json b/package.json index a078bd6..bbb8315 100755 --- a/package.json +++ b/package.json @@ -2,9 +2,9 @@ "name": "neuron-IPE", "displayName": "neuron", "description": "Interactive Programming Experience for Data Scientists", - "version": "1.0.1", + "version": "1.0.4", "license": "MIT", - "repository": "https://github.com/lorenzo2897/vscode-ipe", + "repository": "https://github.com/neuron-team/vscode-ipe", "publisher": "neuron", "engines": { "vscode": "^1.23.0" @@ -116,8 +116,9 @@ }, "scripts": { "clean": "shx rm -rf html/ out/", - "vscode:prepublish": "npm run compile", - "build-types": "tsc -p src-common/ && shx cp -r src-common/ node_modules/neuron-ipe-types/", + "vscode:prepublish": "npm run publish", + "publish": "npm run compile-frontend && npm run compile-backend", + "build-types": "npm install ./src-common", "compile-frontend": "cd src-frontend && npm run build", "watch-frontend": "npm run build-types && cd src-frontend && npm run watch", "compile-backend": "tsc -p ./", @@ -138,6 +139,7 @@ "dependencies": { "@jupyterlab/services": "^2.0.3", "ansi_up": "^3.0.0", - "child-process": "^1.0.2" + "child-process": "^1.0.2", + "neuron-ipe-types": "file:src-common" } } diff --git a/src-backend/cardManager.ts b/src-backend/cardManager.ts index 38dc6e7..8f529a8 100644 --- a/src-backend/cardManager.ts +++ b/src-backend/cardManager.ts @@ -1,4 +1,4 @@ -import { Card, CardOutput } from 'vscode-ipe-types'; +import { Card, CardOutput } from 'neuron-ipe-types'; import * as path from "path"; import * as fs from "fs"; import * as vscode from 'vscode'; diff --git a/src-backend/contentHelpers.ts b/src-backend/contentHelpers.ts index 71930a1..62e598c 100644 --- a/src-backend/contentHelpers.ts +++ b/src-backend/contentHelpers.ts @@ -1,5 +1,5 @@ import { JSONValue, JSONObject, JSONArray } from '@phosphor/coreutils'; -import {Card, CardOutput} from 'vscode-ipe-types'; +import {Card, CardOutput} from 'neuron-ipe-types'; import { Kernel, ServerConnection, KernelMessage } from '@jupyterlab/services'; import * as vscode from 'vscode'; diff --git a/src-backend/extension.ts b/src-backend/extension.ts index 2eafb52..f0df4f0 100755 --- a/src-backend/extension.ts +++ b/src-backend/extension.ts @@ -2,12 +2,12 @@ import * as vscode from 'vscode'; -import { Card } from 'vscode-ipe-types'; +import { Card } from 'neuron-ipe-types'; import { WebviewController } from "./webviewController"; import { Interpreter } from "./interpreter"; import { UserInteraction } from "./userInteraction"; import { JupyterManager } from './jupyterManager'; -import { CardManager } from './CardManager'; +import { CardManager } from './cardManager'; import { JSONObject } from '@phosphor/coreutils'; import {ContentHelpers} from './contentHelpers'; @@ -144,7 +144,7 @@ export function activate(context: vscode.ExtensionContext) { localJupyter = true; } }) - .catch(() => vscode.window.showErrorMessage('Could not start a notebook automatically')); + .catch(error => vscode.window.showErrorMessage('Could not start a notebook automatically: ' + error)); } } else { diff --git a/src-backend/interpreter.ts b/src-backend/interpreter.ts index bfe76b2..8a46d72 100644 --- a/src-backend/interpreter.ts +++ b/src-backend/interpreter.ts @@ -1,6 +1,6 @@ import { Kernel, ServerConnection, KernelMessage } from '@jupyterlab/services'; import { JSONValue, JSONObject } from '@phosphor/coreutils'; -import {Card, CardOutput} from 'vscode-ipe-types'; +import {Card, CardOutput} from 'neuron-ipe-types'; import { ContentHelpers } from './contentHelpers'; import * as vscode from 'vscode'; diff --git a/src-backend/webviewController.ts b/src-backend/webviewController.ts index 315123b..cdc1442 100644 --- a/src-backend/webviewController.ts +++ b/src-backend/webviewController.ts @@ -2,7 +2,7 @@ import * as vscode from "vscode"; import * as path from "path"; import * as fs from "fs"; -import { Card } from 'vscode-ipe-types'; +import { Card } from 'neuron-ipe-types'; import {Event, EventEmitter} from "vscode"; /** diff --git a/src-frontend/src/app/app.component.ts b/src-frontend/src/app/app.component.ts index c398c2e..df38693 100644 --- a/src-frontend/src/app/app.component.ts +++ b/src-frontend/src/app/app.component.ts @@ -1,6 +1,6 @@ import { AfterViewInit, Component, QueryList, ViewChild, ViewChildren } from '@angular/core'; import { ExtensionService } from './classes/extension.service'; -import { Card, CardOutput } from 'vscode-ipe-types'; +import { Card, CardOutput } from 'neuron-ipe-types'; import { RegexService } from './classes/regex.service'; diff --git a/src-frontend/src/app/card/card.component.ts b/src-frontend/src/app/card/card.component.ts index 50da8be..84ff88b 100644 --- a/src-frontend/src/app/card/card.component.ts +++ b/src-frontend/src/app/card/card.component.ts @@ -1,5 +1,5 @@ import {Component, Input, Output, EventEmitter} from '@angular/core'; -import { Card } from 'vscode-ipe-types'; +import { Card } from 'neuron-ipe-types'; import { trigger, diff --git a/src-frontend/src/app/classes/extension.service.ts b/src-frontend/src/app/classes/extension.service.ts index 30e124e..0ef4a65 100644 --- a/src-frontend/src/app/classes/extension.service.ts +++ b/src-frontend/src/app/classes/extension.service.ts @@ -1,6 +1,6 @@ import { EventEmitter, Injectable} from '@angular/core'; -import { Card } from 'vscode-ipe-types'; +import { Card } from 'neuron-ipe-types'; declare var acquireVsCodeApi; @Injectable() diff --git a/src-frontend/src/app/testing/card.component.spec.ts b/src-frontend/src/app/testing/card.component.spec.ts index a9fb926..8325545 100644 --- a/src-frontend/src/app/testing/card.component.spec.ts +++ b/src-frontend/src/app/testing/card.component.spec.ts @@ -8,7 +8,7 @@ import { PreviewPipe } from '../classes/preview.pipe' import { MapComponent } from '../map/map.component'; import { AnsiColorizePipe } from '../classes/ansi-colorize.pipe'; import { RegexService } from '../classes/regex.service'; -import { Card } from 'vscode-ipe-types'; +import { Card } from 'neuron-ipe-types'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import {MathComponent} from '../math/math.component' import { MarkdownModule } from 'ngx-markdown'; diff --git a/src-frontend/src/app/testing/custom-markdown.component.spec.ts b/src-frontend/src/app/testing/custom-markdown.component.spec.ts index d852680..15e3f1e 100644 --- a/src-frontend/src/app/testing/custom-markdown.component.spec.ts +++ b/src-frontend/src/app/testing/custom-markdown.component.spec.ts @@ -8,7 +8,7 @@ import { PreviewPipe } from '../classes/preview.pipe' import { MapComponent } from '../map/map.component'; import { AnsiColorizePipe } from '../classes/ansi-colorize.pipe'; import { RegexService } from '../classes/regex.service'; -import { Card } from 'vscode-ipe-types'; +import { Card } from 'neuron-ipe-types'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { MathComponent } from '../math/math.component' import { MarkdownModule } from 'ngx-markdown';