pyodide 0.20.1-alpha.2 → 0.21.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/console.html CHANGED
@@ -15,9 +15,56 @@
15
15
  --size: 1.5;
16
16
  --color: rgba(255, 255, 255, 0.8);
17
17
  }
18
+ .noblink {
19
+ --animation: terminal-none;
20
+ }
21
+ body {
22
+ background-color: black;
23
+ }
24
+ #jquery-terminal-logo {
25
+ color: white;
26
+ border-color: white;
27
+ position: absolute;
28
+ top: 7px;
29
+ right: 18px;
30
+ z-index: 2;
31
+ }
32
+ #jquery-terminal-logo a {
33
+ color: gray;
34
+ text-decoration: none;
35
+ font-size: 0.7em;
36
+ }
37
+ #loading {
38
+ display: inline-block;
39
+ width: 50px;
40
+ height: 50px;
41
+ position: fixed;
42
+ top: 50%;
43
+ left: 50%;
44
+ border: 3px solid rgba(172, 237, 255, 0.5);
45
+ border-radius: 50%;
46
+ border-top-color: #fff;
47
+ animation: spin 1s ease-in-out infinite;
48
+ -webkit-animation: spin 1s ease-in-out infinite;
49
+ }
50
+
51
+ @keyframes spin {
52
+ to {
53
+ -webkit-transform: rotate(360deg);
54
+ }
55
+ }
56
+ @-webkit-keyframes spin {
57
+ to {
58
+ -webkit-transform: rotate(360deg);
59
+ }
60
+ }
18
61
  </style>
19
62
  </head>
20
63
  <body>
64
+ <div id="jquery-terminal-logo">
65
+ <a href="https://terminal.jcubic.pl/">jQuery Terminal</a>
66
+ </div>
67
+ <div id="loading"></div>
21
68
  <script>
22
69
  "use strict";
23
70
  function sleep(s) {
@@ -25,7 +72,14 @@
25
72
  }
26
73
 
27
74
  async function main() {
28
- globalThis.pyodide = await loadPyodide();
75
+ let term;
76
+ globalThis.pyodide = await loadPyodide({
77
+ stdin: () => {
78
+ let result = prompt();
79
+ echo(result);
80
+ return result;
81
+ },
82
+ });
29
83
  let namespace = pyodide.globals.get("dict")();
30
84
  pyodide.runPython(
31
85
  `
@@ -51,6 +105,11 @@
51
105
  let await_fut = namespace.get("await_fut");
52
106
  let pyconsole = namespace.get("pyconsole");
53
107
  let clear_console = namespace.get("clear_console");
108
+ const echo = (msg, ...opts) =>
109
+ term.echo(
110
+ msg.replace("]]", "&rsqb;&rsqb;").replace("[[", "&lsqb;&lsqb;"),
111
+ ...opts
112
+ );
54
113
  namespace.destroy();
55
114
 
56
115
  let ps1 = ">>> ",
@@ -91,9 +150,9 @@
91
150
  try {
92
151
  let [value] = await wrapped;
93
152
  if (value !== undefined) {
94
- term.echo(
153
+ echo(
95
154
  repr_shorten.callKwargs(value, {
96
- separator: "\n[[;orange;]<long output truncated>]\n",
155
+ separator: "\n<long output truncated>\n",
97
156
  })
98
157
  );
99
158
  }
@@ -117,7 +176,7 @@
117
176
  unlock();
118
177
  }
119
178
 
120
- let term = $("body").terminal(interpreter, {
179
+ term = $("body").terminal(interpreter, {
121
180
  greetings: banner,
122
181
  prompt: ps1,
123
182
  completionEscape: false,
@@ -128,7 +187,7 @@
128
187
  "CTRL+C": async function (event, original) {
129
188
  clear_console();
130
189
  term.enter();
131
- term.echo("KeyboardInterrupt");
190
+ echo("KeyboardInterrupt");
132
191
  term.set_command("");
133
192
  term.set_prompt(ps1);
134
193
  },
@@ -144,7 +203,7 @@
144
203
  },
145
204
  });
146
205
  window.term = term;
147
- pyconsole.stdout_callback = (s) => term.echo(s, { newline: false });
206
+ pyconsole.stdout_callback = (s) => echo(s, { newline: false });
148
207
  pyconsole.stderr_callback = (s) => {
149
208
  term.error(s.trimEnd());
150
209
  };
@@ -161,6 +220,11 @@
161
220
  await sleep(15);
162
221
  term.pause();
163
222
  };
223
+
224
+ const searchParams = new URLSearchParams(window.location.search);
225
+ if (searchParams.has("noblink")) {
226
+ $(".cmd-cursor").addClass("noblink");
227
+ }
164
228
  }
165
229
  window.console_ready = main();
166
230
  </script>
package/distutils.tar CHANGED
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pyodide",
3
- "version": "0.20.1-alpha.2",
3
+ "version": "0.21.0-alpha.1",
4
4
  "description": "The Pyodide JavaScript package",
5
5
  "keywords": [
6
6
  "python",
@@ -25,18 +25,25 @@
25
25
  "@types/node": "^17.0.25",
26
26
  "@types/node-fetch": "^2.6.1",
27
27
  "@types/ws": "^8.5.3",
28
+ "chai": "^4.3.6",
29
+ "chai-as-promised": "^7.1.1",
30
+ "cross-env": "^7.0.3",
28
31
  "dts-bundle-generator": "^6.7.0",
29
32
  "error-stack-parser": "^2.0.6",
33
+ "express": "^4.17.3",
30
34
  "mocha": "^9.0.2",
35
+ "npm-run-all": "^4.1.5",
36
+ "nyc": "^15.1.0",
31
37
  "prettier": "^2.2.1",
38
+ "puppeteer": "^13.6.0",
32
39
  "rollup": "^2.48.0",
33
40
  "rollup-plugin-terser": "^7.0.2",
34
41
  "rollup-plugin-ts": "^2.0.5",
35
42
  "terser": "^5.7.0",
36
43
  "ts-mocha": "^9.0.2",
37
44
  "tsd": "^0.15.1",
38
- "typedoc": "^0.22.11",
39
- "typescript": "^4.2.4"
45
+ "typedoc": "^0.22.15",
46
+ "typescript": "^4.6.4"
40
47
  },
41
48
  "main": "pyodide.js",
42
49
  "exports": {
@@ -54,17 +61,60 @@
54
61
  "distutils.tar",
55
62
  "console.html"
56
63
  ],
64
+ "browser": {
65
+ "child_process": false,
66
+ "crypto": false,
67
+ "fs": false,
68
+ "fs/promises": false,
69
+ "path": false,
70
+ "vm": false,
71
+ "ws": false
72
+ },
57
73
  "scripts": {
58
- "test": "ts-mocha -p tsconfig.test.json test/**/*.test.ts"
74
+ "test": "npm-run-all test:*",
75
+ "test:unit": "cross-env TEST_NODE=1 ts-mocha -p tsconfig.test.json test/unit/**/*.test.ts",
76
+ "test:node": "cross-env TEST_NODE=1 mocha test/integration/**/*.test.js",
77
+ "test:browser": "mocha test/integration/**/*.test.js",
78
+ "coverage": "cross-env TEST_NODE=1 npm-run-all coverage:*",
79
+ "coverage:build": "nyc npm run test:node"
59
80
  },
60
81
  "mocha": {
82
+ "bail": false,
61
83
  "timeout": 30000,
62
- "file": "test/conftest.ts"
84
+ "full-trace": true,
85
+ "inline-diffs": true,
86
+ "check-leaks": false,
87
+ "global": [
88
+ "pyodide",
89
+ "page",
90
+ "chai"
91
+ ],
92
+ "file": [
93
+ "test/conftest.js"
94
+ ]
95
+ },
96
+ "nyc": {
97
+ "reporter": [
98
+ "html",
99
+ "text-summary"
100
+ ],
101
+ "include": [
102
+ "*.ts"
103
+ ],
104
+ "all": true,
105
+ "clean": true,
106
+ "cache": false,
107
+ "instrument": false,
108
+ "checkCoverage": true,
109
+ "statements": 95,
110
+ "functions": 95,
111
+ "branches": 80,
112
+ "lines": 95
63
113
  },
64
114
  "tsd": {
65
115
  "compilerOptions": {
66
116
  "lib": [
67
- "ES2018",
117
+ "ES2017",
68
118
  "DOM"
69
119
  ]
70
120
  }
package/packages.json CHANGED
@@ -1 +1 @@
1
- {"info": {"arch": "wasm32", "platform": "Emscripten-1.0"}, "packages": {"cpp-exceptions-test": {"name": "cpp-exceptions-test", "version": "0.1", "file_name": "cpp-exceptions-test-0.1.zip", "install_dir": "site", "shared_library": true, "depends": [], "imports": ["cpp-exceptions-test"]}, "distutils": {"name": "distutils", "version": "1.0", "file_name": "distutils.tar", "install_dir": "lib", "depends": [], "imports": ["distutils"]}, "fpcast-test": {"name": "fpcast-test", "version": "0.1", "file_name": "fpcast_test-0.1.1-cp310-cp310-emscripten_wasm32.whl", "install_dir": "site", "depends": [], "imports": ["fpcast_test"]}, "jinja2": {"name": "Jinja2", "version": "3.1.1", "file_name": "Jinja2-3.1.1-py3-none-any.whl", "install_dir": "site", "depends": ["markupsafe"], "imports": ["jinja2"]}, "markupsafe": {"name": "MarkupSafe", "version": "2.1.1", "file_name": "MarkupSafe-2.1.1-cp310-cp310-emscripten_wasm32.whl", "install_dir": "site", "depends": [], "imports": ["markupsafe"]}, "micropip": {"name": "micropip", "version": "0.1", "file_name": "micropip-0.1-py3-none-any.whl", "install_dir": "site", "depends": ["pyparsing", "packaging", "distutils"], "imports": ["micropip"]}, "openssl": {"name": "openssl", "version": "1.1.1n", "file_name": "openssl-1.1.1n.zip", "install_dir": "site", "shared_library": true, "depends": [], "imports": ["openssl"]}, "packaging": {"name": "packaging", "version": "21.3", "file_name": "packaging-21.3-py3-none-any.whl", "install_dir": "site", "depends": ["pyparsing"], "imports": ["packaging"]}, "pyparsing": {"name": "pyparsing", "version": "3.0.7", "file_name": "pyparsing-3.0.7-py3-none-any.whl", "install_dir": "site", "depends": [], "imports": ["pyparsing"]}, "pytz": {"name": "pytz", "version": "2022.1", "file_name": "pytz-2022.1-py2.py3-none-any.whl", "install_dir": "site", "depends": [], "imports": ["pytz"]}, "regex": {"name": "regex", "version": "2022.3.15", "file_name": "regex-2022.3.15-cp310-cp310-emscripten_wasm32.whl", "install_dir": "site", "depends": [], "imports": ["regex"], "unvendored_tests": true}, "regex-tests": {"name": "regex-tests", "version": "2022.3.15", "depends": ["regex"], "imports": [], "file_name": "regex-tests.tar", "install_dir": "site"}, "sharedlib-test": {"name": "sharedlib-test", "version": "1.0", "file_name": "sharedlib-test-1.0.zip", "install_dir": "site", "shared_library": true, "depends": [], "imports": ["sharedlib-test"]}, "sharedlib-test-py": {"name": "sharedlib-test-py", "version": "1.0", "file_name": "sharedlib_test_py-1.0-cp310-cp310-emscripten_wasm32.whl", "install_dir": "site", "depends": ["sharedlib-test"], "imports": ["sharedlib_test"]}, "ssl": {"name": "ssl", "version": "1.0.0", "file_name": "ssl-1.0.0.zip", "install_dir": "site", "shared_library": true, "depends": ["openssl"], "imports": ["ssl"]}, "test": {"name": "test", "version": "1.0", "file_name": "test.tar", "install_dir": "lib", "depends": [], "imports": ["test"]}}}
1
+ {"info": {"arch": "wasm32", "platform": "emscripten_3_1_13", "version": "0.21.0a1"}, "packages": {"atomicwrites": {"name": "atomicwrites", "version": "1.4.0", "file_name": "atomicwrites-1.4.0-py2.py3-none-any.whl", "install_dir": "site", "sha256": "237146adf2f517b84d907b8b579caaec792d5243bb4c117b57560629c2dc79a0", "depends": [], "imports": ["atomicwrites"]}, "attrs": {"name": "attrs", "version": "21.4.0", "file_name": "attrs-21.4.0-py2.py3-none-any.whl", "install_dir": "site", "sha256": "4393237a312ba2ec6fa490b93566cde759f5a4de1e25118c56ae998c38fe4e8b", "depends": ["six"], "imports": ["attr"]}, "cpp-exceptions-test": {"name": "cpp-exceptions-test", "version": "0.1", "file_name": "cpp-exceptions-test-0.1.zip", "install_dir": "dynlib", "sha256": "088fcd75ce1692f3c249ce8de905817ea3ea29206ec6cea5d277256e8c092e50", "shared_library": true, "depends": [], "imports": ["cpp-exceptions-test"]}, "distutils": {"name": "distutils", "version": "1.0", "file_name": "distutils.tar", "install_dir": "lib", "sha256": "3b1e2f843b2ccc6051de76cfefcded12f823ab001434d2433123b3db622b5bcb", "depends": [], "imports": ["distutils"]}, "fpcast-test": {"name": "fpcast-test", "version": "0.1", "file_name": "fpcast_test-0.1.1-cp310-cp310-emscripten_3_1_13_wasm32.whl", "install_dir": "site", "sha256": "fc577390d579c21de678ab740c0ae27f32402734885b7c6785bc502fa9d6d107", "depends": [], "imports": ["fpcast_test"]}, "iniconfig": {"name": "iniconfig", "version": "1.1.1", "file_name": "iniconfig-1.1.1-py2.py3-none-any.whl", "install_dir": "site", "sha256": "5de5455987d5a66ace8fe11db6815b57befeea9b6819e88ae88807701298aa20", "depends": [], "imports": ["iniconfig"]}, "jinja2": {"name": "Jinja2", "version": "3.1.1", "file_name": "Jinja2-3.1.1-py3-none-any.whl", "install_dir": "site", "sha256": "3f5068218f8ca47de3de1f1c9be066c2a540eb9bed1d17f0353a9b6aee1b0630", "depends": ["markupsafe"], "imports": ["jinja2"]}, "markupsafe": {"name": "MarkupSafe", "version": "2.1.1", "file_name": "MarkupSafe-2.1.1-cp310-cp310-emscripten_3_1_13_wasm32.whl", "install_dir": "site", "sha256": "8e5b3281ca206a92405108a724f4992dcdfec0d5a718765d63a512f10562130e", "depends": [], "imports": ["markupsafe"]}, "micropip": {"name": "micropip", "version": "0.1", "file_name": "micropip-0.1-py3-none-any.whl", "install_dir": "site", "sha256": "8e947375560230746273c740e4d26a904a048221536b72933b26d1f546f2bb3c", "depends": ["pyparsing", "packaging", "distutils"], "imports": ["micropip"]}, "more-itertools": {"name": "more-itertools", "version": "8.12.0", "file_name": "more_itertools-8.12.0-py3-none-any.whl", "install_dir": "site", "sha256": "f8e09598a125c346dd5e69ead05459280e5b347fe1e4dbaa92aa6e45350476d8", "depends": [], "imports": ["more_itertools"]}, "openssl": {"name": "openssl", "version": "1.1.1n", "file_name": "openssl-1.1.1n.zip", "install_dir": "dynlib", "sha256": "29480dd5e9d9d1a69627abd29ede0ab730c435988edf395118fd8c1f977c7f9b", "shared_library": true, "depends": [], "imports": ["openssl"]}, "packaging": {"name": "packaging", "version": "21.3", "file_name": "packaging-21.3-py3-none-any.whl", "install_dir": "site", "sha256": "bb80805523dc2a1f24d44dec76474f1f9a5b72c535ba3afccd72fe52ee47e502", "depends": ["pyparsing"], "imports": ["packaging"]}, "pluggy": {"name": "pluggy", "version": "1.0.0", "file_name": "pluggy-1.0.0-py2.py3-none-any.whl", "install_dir": "site", "sha256": "80c41b914a0f60f136b62c374d5980ffe37d1af492047699b1e1bb613f52a2d8", "depends": [], "imports": ["pluggy"]}, "py": {"name": "py", "version": "1.11.0", "file_name": "py-1.11.0-py2.py3-none-any.whl", "install_dir": "site", "sha256": "59cb61e1123f6eabbf7974474e46f501ed4cd843e6759272409a286e36af23ae", "depends": [], "imports": ["py", "py.code"]}, "pyparsing": {"name": "pyparsing", "version": "3.0.7", "file_name": "pyparsing-3.0.7-py3-none-any.whl", "install_dir": "site", "sha256": "9cb547629bc7703312a8c8e46531cce1cc0a19c7e24fd3869b98431e90dac9fb", "depends": [], "imports": ["pyparsing"]}, "pytest": {"name": "pytest", "version": "7.1.1", "file_name": "pytest-7.1.1-py3-none-any.whl", "install_dir": "site", "sha256": "aa556bd16302f318888e7ba6a8166cd84c6cb31764d8dd9741473c4410aa52ed", "depends": ["atomicwrites", "attrs", "more-itertools", "pluggy", "py", "setuptools", "six", "iniconfig"], "imports": ["pytest"]}, "pytz": {"name": "pytz", "version": "2022.1", "file_name": "pytz-2022.1-py2.py3-none-any.whl", "install_dir": "site", "sha256": "d06a432bc742ccce9051043fa62771787c4b5c620d4611633e31ea52515de3e4", "depends": [], "imports": ["pytz"]}, "regex": {"name": "regex", "version": "2022.3.15", "file_name": "regex-2022.3.15-cp310-cp310-emscripten_3_1_13_wasm32.whl", "install_dir": "site", "sha256": "6d3fdd2ced1ae9cf59e6a771ffe9aebb2bce9136eb4cd59fdf65eb5715d1dfdd", "depends": [], "imports": ["regex"], "unvendored_tests": true}, "regex-tests": {"name": "regex-tests", "version": "2022.3.15", "depends": ["regex"], "imports": [], "file_name": "regex-tests.tar", "install_dir": "site", "sha256": "afaa6f0455b93f9d4ff54056a69bd932a4082ce5a376e044123419f59062b1fd"}, "setuptools": {"name": "setuptools", "version": "62.0.0", "file_name": "setuptools-62.0.0-py3-none-any.whl", "install_dir": "site", "sha256": "ff5d5c7806624a298caaa62a6bc7246f88a72135a33bf3807d10083dec7f1a4c", "depends": ["distutils", "pyparsing"], "imports": ["setuptools", "pkg_resources"]}, "sharedlib-test": {"name": "sharedlib-test", "version": "1.0", "file_name": "sharedlib-test-1.0.zip", "install_dir": "dynlib", "sha256": "3acb04720253832756563b81359bb3d17f6f4dc3ff25a1b961f3ff5523b9e984", "shared_library": true, "depends": [], "imports": ["sharedlib-test"]}, "sharedlib-test-py": {"name": "sharedlib-test-py", "version": "1.0", "file_name": "sharedlib_test_py-1.0-cp310-cp310-emscripten_3_1_13_wasm32.whl", "install_dir": "site", "sha256": "c200cda407a33858b01d044b676ee269bdff32a6204777e9610765623a3e0664", "depends": ["sharedlib-test"], "imports": ["sharedlib_test"]}, "six": {"name": "six", "version": "1.16.0", "file_name": "six-1.16.0-py2.py3-none-any.whl", "install_dir": "site", "sha256": "634cb16760fff9ebd1009030ccab240545906787d3c95453a00b50fc4847462c", "depends": [], "imports": ["six"]}, "ssl": {"name": "ssl", "version": "1.0.0", "file_name": "ssl-1.0.0.zip", "install_dir": "lib", "sha256": "93f9d8469b0e60863924b4dd5253766d5c623da6f77a10ff18db9695dd4b7b49", "shared_library": true, "depends": ["openssl"], "imports": ["ssl"]}, "tblib": {"name": "tblib", "version": "1.7.0", "file_name": "tblib-1.7.0-py2.py3-none-any.whl", "install_dir": "site", "sha256": "2532542bdb8b27077934a3f26b48c201afa2fc38f35fc6339a85babb4d382806", "depends": [], "imports": ["tblib"]}, "test": {"name": "test", "version": "1.0", "file_name": "test.tar", "install_dir": "lib", "sha256": "dd6b8b2cdc6904db79063469e36a053db85f077621bd5a5ed265cadfedbba1a2", "depends": [], "imports": ["test"]}}}
package/pyodide.asm.data CHANGED
Binary file