rapydscript-ns 0.9.3 → 0.9.5

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.
Files changed (111) hide show
  1. package/.agignore +1 -1
  2. package/.github/workflows/ci.yml +38 -38
  3. package/=template.pyj +5 -5
  4. package/CHANGELOG.md +18 -0
  5. package/HACKING.md +103 -103
  6. package/LICENSE +24 -24
  7. package/PYTHON_GAPS.md +52 -142
  8. package/README.md +51 -21
  9. package/TODO.md +1 -26
  10. package/add-toc-to-readme +2 -2
  11. package/bin/export +75 -75
  12. package/bin/rapydscript +0 -0
  13. package/bin/web-repl-export +102 -102
  14. package/build +2 -2
  15. package/language-service/index.js +88 -36
  16. package/package.json +1 -1
  17. package/publish.py +37 -37
  18. package/release/baselib-plain-pretty.js +157 -31
  19. package/release/baselib-plain-ugly.js +5 -5
  20. package/release/compiler.js +724 -426
  21. package/release/signatures.json +29 -29
  22. package/session.vim +4 -4
  23. package/setup.cfg +2 -2
  24. package/src/ast.pyj +7 -0
  25. package/src/baselib-containers.pyj +41 -4
  26. package/src/baselib-errors.pyj +4 -3
  27. package/src/baselib-internal.pyj +47 -18
  28. package/src/baselib-str.pyj +16 -3
  29. package/src/compiler.pyj +36 -36
  30. package/src/errors.pyj +30 -30
  31. package/src/lib/aes.pyj +646 -646
  32. package/src/lib/collections.pyj +227 -3
  33. package/src/lib/copy.pyj +120 -120
  34. package/src/lib/elementmaker.pyj +83 -83
  35. package/src/lib/encodings.pyj +126 -126
  36. package/src/lib/gettext.pyj +569 -569
  37. package/src/lib/itertools.pyj +580 -580
  38. package/src/lib/math.pyj +193 -193
  39. package/src/lib/operator.pyj +11 -11
  40. package/src/lib/pprint.pyj +455 -0
  41. package/src/lib/random.pyj +118 -118
  42. package/src/lib/react.pyj +74 -74
  43. package/src/lib/statistics.pyj +0 -0
  44. package/src/lib/traceback.pyj +63 -63
  45. package/src/lib/uuid.pyj +77 -77
  46. package/src/monaco-language-service/completions.js +21 -14
  47. package/src/monaco-language-service/diagnostics.js +2 -2
  48. package/src/monaco-language-service/dts.js +58 -15
  49. package/src/monaco-language-service/package.json +3 -0
  50. package/src/output/classes.pyj +25 -2
  51. package/src/output/codegen.pyj +4 -1
  52. package/src/output/comments.pyj +45 -45
  53. package/src/output/exceptions.pyj +201 -201
  54. package/src/output/jsx.pyj +164 -164
  55. package/src/output/treeshake.pyj +182 -182
  56. package/src/output/utils.pyj +72 -72
  57. package/src/parse.pyj +42 -7
  58. package/src/string_interpolation.pyj +72 -72
  59. package/src/tokenizer.pyj +18 -2
  60. package/src/unicode_aliases.pyj +576 -576
  61. package/src/utils.pyj +192 -192
  62. package/test/_import_one.pyj +37 -37
  63. package/test/_import_two/__init__.pyj +11 -11
  64. package/test/_import_two/level2/deep.pyj +4 -4
  65. package/test/_import_two/other.pyj +6 -6
  66. package/test/_import_two/sub.pyj +13 -13
  67. package/test/aes_vectors.pyj +421 -421
  68. package/test/annotations.pyj +80 -80
  69. package/test/baselib.pyj +23 -0
  70. package/test/chainmap.pyj +185 -0
  71. package/test/dataclasses.pyj +3 -4
  72. package/test/decorators.pyj +77 -77
  73. package/test/docstrings.pyj +39 -39
  74. package/test/elementmaker_test.pyj +45 -45
  75. package/test/enum.pyj +1 -1
  76. package/test/functions.pyj +151 -151
  77. package/test/generators.pyj +41 -41
  78. package/test/generic.pyj +370 -370
  79. package/test/internationalization.pyj +73 -73
  80. package/test/lint.pyj +164 -164
  81. package/test/loops.pyj +85 -85
  82. package/test/numpy.pyj +734 -734
  83. package/test/pprint.pyj +232 -0
  84. package/test/python_features.pyj +1 -1
  85. package/test/repl.pyj +121 -121
  86. package/test/scoped_flags.pyj +76 -76
  87. package/test/statistics.pyj +224 -0
  88. package/test/str.pyj +4 -4
  89. package/test/unit/index.js +455 -0
  90. package/test/unit/language-service-completions.js +2 -0
  91. package/test/unit/language-service-dts.js +113 -0
  92. package/test/unit/language-service-hover.js +455 -455
  93. package/test/unit/language-service.js +135 -2
  94. package/test/unit/web-repl.js +349 -1
  95. package/tools/compiler.d.ts +367 -367
  96. package/tools/completer.js +131 -131
  97. package/tools/export.js +4 -2
  98. package/tools/gettext.js +185 -185
  99. package/tools/ini.js +65 -65
  100. package/tools/msgfmt.js +187 -187
  101. package/tools/repl.js +223 -223
  102. package/tools/test.js +118 -118
  103. package/tools/utils.js +141 -128
  104. package/tools/web_repl.js +95 -95
  105. package/try +41 -41
  106. package/web-repl/env.js +196 -196
  107. package/web-repl/index.html +163 -163
  108. package/web-repl/prism.css +139 -139
  109. package/web-repl/prism.js +113 -113
  110. package/web-repl/rapydscript.js +228 -226
  111. package/web-repl/sha1.js +25 -25
package/bin/export CHANGED
@@ -1,75 +1,75 @@
1
- #!/usr/bin/env node
2
- // vim:ft=javascript:ts=4:et
3
-
4
- "use strict";
5
-
6
- var fs = require('fs');
7
- var path = require('path');
8
- var crypto = require('crypto');
9
-
10
- var base = path.join(path.dirname(__dirname));
11
- var meta = JSON.parse(fs.readFileSync(path.join(base, 'package.json'), {'encoding':'utf-8'}));
12
- var compiler_dir = path.join(base, 'dev');
13
- if (!path_exists(path.join(compiler_dir, 'compiler.js'))) compiler_dir = path.join(base, 'release');
14
-
15
- var manifest = {}, total = 0;
16
- ['compiler.js', 'baselib-plain-pretty.js', 'baselib-plain-ugly.js'].forEach(function(x) {
17
- manifest[x] = fs.readFileSync(path.join(compiler_dir, x), {'encoding':'utf-8'});
18
- total += manifest[x].length;
19
- });
20
-
21
- ['web_repl.js', 'repl.js', 'completer.js', 'utils.js', 'gettext.js', 'msgfmt.js'].forEach(function(x) {
22
- x = 'tools/' + x;
23
- manifest[x] = fs.readFileSync(path.join(base, x), {'encoding':'utf-8'});
24
- total += manifest[x].length;
25
- });
26
-
27
-
28
- var dedup = {};
29
-
30
- function path_exists(path) {
31
- try {
32
- fs.statSync(path);
33
- return true;
34
- } catch(e) {
35
- if (e.code != 'ENOENT') throw e;
36
- }
37
- }
38
-
39
- function sha1sum(data) {
40
- var h = crypto.createHash('sha1');
41
- h.update(data);
42
- return h.digest('hex');
43
- }
44
-
45
- function process_dir(name) {
46
- var dpath = path.join(base, name);
47
- var items = fs.readdirSync(dpath);
48
- items.forEach(function (x) {
49
- var iname = name + '/' + x;
50
- var ipath = path.join(dpath, x);
51
- var s = fs.statSync(ipath);
52
- if (s.isDirectory()) return process_dir(iname);
53
- var raw = fs.readFileSync(ipath, {'encoding':'utf-8'});
54
- var sig = sha1sum(raw);
55
- if (dedup.hasOwnProperty(sig)) {
56
- manifest[iname] = [dedup[sig]];
57
- } else {
58
- manifest[iname] = raw;
59
- dedup[sig] = iname;
60
- total += s.size;
61
- }
62
- });
63
- }
64
-
65
- Object.keys(meta.dependencies).forEach(function (x) {
66
- process_dir('node_modules/' + x);
67
- });
68
- console.log('// vim:fileencoding=utf-8');
69
- console.log('(function() {');
70
- console.log('var rs_version = ' + JSON.stringify(meta.version) + ';');
71
- console.log('var data = ' + JSON.stringify(manifest) + ';');
72
- console.log();
73
- console.log(fs.readFileSync(path.join(base, 'tools', 'export.js'), {'encoding':'utf-8'}));
74
- console.log('})()');
75
- console.error('RapydScript compiler (uncompressed) size: ' + (total/(1024 * 1024)).toFixed(1) + ' MB');
1
+ #!/usr/bin/env node
2
+ // vim:ft=javascript:ts=4:et
3
+
4
+ "use strict";
5
+
6
+ var fs = require('fs');
7
+ var path = require('path');
8
+ var crypto = require('crypto');
9
+
10
+ var base = path.join(path.dirname(__dirname));
11
+ var meta = JSON.parse(fs.readFileSync(path.join(base, 'package.json'), {'encoding':'utf-8'}));
12
+ var compiler_dir = path.join(base, 'dev');
13
+ if (!path_exists(path.join(compiler_dir, 'compiler.js'))) compiler_dir = path.join(base, 'release');
14
+
15
+ var manifest = {}, total = 0;
16
+ ['compiler.js', 'baselib-plain-pretty.js', 'baselib-plain-ugly.js'].forEach(function(x) {
17
+ manifest[x] = fs.readFileSync(path.join(compiler_dir, x), {'encoding':'utf-8'});
18
+ total += manifest[x].length;
19
+ });
20
+
21
+ ['web_repl.js', 'repl.js', 'completer.js', 'utils.js', 'gettext.js', 'msgfmt.js'].forEach(function(x) {
22
+ x = 'tools/' + x;
23
+ manifest[x] = fs.readFileSync(path.join(base, x), {'encoding':'utf-8'});
24
+ total += manifest[x].length;
25
+ });
26
+
27
+
28
+ var dedup = {};
29
+
30
+ function path_exists(path) {
31
+ try {
32
+ fs.statSync(path);
33
+ return true;
34
+ } catch(e) {
35
+ if (e.code != 'ENOENT') throw e;
36
+ }
37
+ }
38
+
39
+ function sha1sum(data) {
40
+ var h = crypto.createHash('sha1');
41
+ h.update(data);
42
+ return h.digest('hex');
43
+ }
44
+
45
+ function process_dir(name) {
46
+ var dpath = path.join(base, name);
47
+ var items = fs.readdirSync(dpath);
48
+ items.forEach(function (x) {
49
+ var iname = name + '/' + x;
50
+ var ipath = path.join(dpath, x);
51
+ var s = fs.statSync(ipath);
52
+ if (s.isDirectory()) return process_dir(iname);
53
+ var raw = fs.readFileSync(ipath, {'encoding':'utf-8'});
54
+ var sig = sha1sum(raw);
55
+ if (dedup.hasOwnProperty(sig)) {
56
+ manifest[iname] = [dedup[sig]];
57
+ } else {
58
+ manifest[iname] = raw;
59
+ dedup[sig] = iname;
60
+ total += s.size;
61
+ }
62
+ });
63
+ }
64
+
65
+ Object.keys(meta.dependencies).forEach(function (x) {
66
+ process_dir('node_modules/' + x);
67
+ });
68
+ console.log('// vim:fileencoding=utf-8');
69
+ console.log('(function() {');
70
+ console.log('var rs_version = ' + JSON.stringify(meta.version) + ';');
71
+ console.log('var data = ' + JSON.stringify(manifest) + ';');
72
+ console.log();
73
+ console.log(fs.readFileSync(path.join(base, 'tools', 'export.js'), {'encoding':'utf-8'}));
74
+ console.log('})()');
75
+ console.error('RapydScript compiler (uncompressed) size: ' + (total/(1024 * 1024)).toFixed(1) + ' MB');
package/bin/rapydscript CHANGED
File without changes
@@ -1,102 +1,102 @@
1
- #!/usr/bin/env node
2
- // vim:ft=javascript:ts=4:et
3
-
4
- "use strict";
5
-
6
- var fs = require('fs');
7
- var path = require('path');
8
-
9
- var base = path.normalize(path.resolve(path.join(path.dirname(__dirname))));
10
- var meta = JSON.parse(fs.readFileSync(path.join(base, 'package.json'), {'encoding':'utf-8'}));
11
- var commit_sha = fs.readFileSync(path.join(base, '.git', 'refs', 'heads', 'master'), {'encoding':'utf-8'}).trim();
12
- var compiler_dir = path.join(base, 'dev');
13
- if (!path_exists(path.join(compiler_dir, 'compiler.js'))) compiler_dir = path.join(base, 'release');
14
-
15
- var manifest = {}, total = 0;
16
- ['compiler.js', 'baselib-plain-pretty.js'].forEach(function(x) {
17
- manifest[x] = fs.readFileSync(path.join(compiler_dir, x), {'encoding':'utf-8'});
18
- total += manifest[x].length;
19
- });
20
-
21
- ['web_repl.js', 'embedded_compiler.js', 'utils.js', 'completer.js', 'msgfmt.js', 'gettext.js'].forEach(function(x) {
22
- x = 'tools/' + x;
23
- manifest[x] = fs.readFileSync(path.join(base, x), {'encoding':'utf-8'});
24
- total += manifest[x].length;
25
- });
26
-
27
- var stdlib = path.join(base, 'src', 'lib');
28
-
29
- function path_exists(path) {
30
- try {
31
- fs.statSync(path);
32
- return true;
33
- } catch(e) {
34
- if (e.code != 'ENOENT') throw e;
35
- }
36
- }
37
-
38
- function process_dir(relpath) {
39
- var fullpath = (relpath) ? path.join(stdlib, relpath) : stdlib;
40
- fs.readdirSync(fullpath).forEach(function (x) {
41
- var q = path.join(fullpath, x);
42
- var s = fs.statSync(q);
43
- if (s.isDirectory()) return process_dir(relpath + '/' + x);
44
- if (!x.endsWith('.pyj')) return;
45
- var iname = ('__stdlib__' + '/' + relpath + '/' + x).replace(/\\/g, '/').replace(/\/+/g, '/');
46
- var raw = fs.readFileSync(q, {'encoding':'utf-8'});
47
- manifest[iname] = raw;
48
- total += s.size;
49
- });
50
- }
51
- process_dir('');
52
-
53
-
54
- var rs = '// vim:fileencoding=utf-8\n';
55
- rs += '(function(external_namespace) {\n';
56
- rs += '"use strict;"\n';
57
- rs += 'var rs_version = ' + JSON.stringify(meta.version) + ';\n';
58
- rs += 'var rs_commit_sha = ' + JSON.stringify(commit_sha) + ';\n';
59
- rs += '\n// Embedded modules {{{\n';
60
- rs += 'var data = ' + JSON.stringify(manifest) + ';\n\n';
61
- rs += '// End embedded modules }}}\n\n';
62
- rs += fs.readFileSync(path.join(base, 'web-repl', 'env.js'));
63
- rs += '\n// Embedded sha1 implementation {{{\n';
64
- rs += '(function() {\n';
65
- rs += fs.readFileSync(path.join(base, 'web-repl', 'sha1.js'));
66
- rs += '}).call(jsSHA);\n';
67
- rs += '// End embedded sha1 implementation }}}\n\n';
68
- rs += 'var exports = namespace;\n';
69
- rs += fs.readFileSync(path.join(base, 'tools', 'export.js'), {'encoding':'utf-8'});
70
- rs += 'external_namespace.RapydScript = namespace;\n';
71
- rs += '})(this);\n';
72
-
73
-
74
- var base_dir = process.argv.slice(-1)[0];
75
- if (process.argv.length !== 3) {
76
- console.error('Usage: web-repl-export /path/to/export/directory');
77
- process.exit(1);
78
- }
79
-
80
- base_dir = path.normalize(path.resolve(base_dir));
81
-
82
- try {
83
- fs.mkdirSync(base_dir);
84
- } catch(e) {
85
- if (e.code !== 'EEXIST') throw e;
86
- }
87
-
88
- try {
89
- process.chdir(base_dir);
90
- } catch(e) {
91
- if (e.code === 'ENOTDIR') { console.error(base_dir + ' is not a directory'); process.exit(1); }
92
- throw e;
93
- }
94
- fs.writeFileSync('rapydscript.js', rs, {'encoding':'utf-8'});
95
- var web_repl = path.join(base, 'web-repl');
96
- fs.readdirSync(web_repl).forEach(function(x) {
97
- if (['sha1.js', 'env.js'].indexOf(x) !== -1) return;
98
- var data = fs.readFileSync(path.join(web_repl, x), {'encoding':'utf-8'});
99
- fs.writeFileSync(x, data, {'encoding':'utf-8'});
100
- });
101
- console.log('RapydScript compiler (uncompressed) size: ' + (total/(1024)).toFixed(1) + ' KB');
102
- console.log('web-repl exported to: ' + base_dir);
1
+ #!/usr/bin/env node
2
+ // vim:ft=javascript:ts=4:et
3
+
4
+ "use strict";
5
+
6
+ var fs = require('fs');
7
+ var path = require('path');
8
+
9
+ var base = path.normalize(path.resolve(path.join(path.dirname(__dirname))));
10
+ var meta = JSON.parse(fs.readFileSync(path.join(base, 'package.json'), {'encoding':'utf-8'}));
11
+ var commit_sha = fs.readFileSync(path.join(base, '.git', 'refs', 'heads', 'master'), {'encoding':'utf-8'}).trim();
12
+ var compiler_dir = path.join(base, 'dev');
13
+ if (!path_exists(path.join(compiler_dir, 'compiler.js'))) compiler_dir = path.join(base, 'release');
14
+
15
+ var manifest = {}, total = 0;
16
+ ['compiler.js', 'baselib-plain-pretty.js'].forEach(function(x) {
17
+ manifest[x] = fs.readFileSync(path.join(compiler_dir, x), {'encoding':'utf-8'});
18
+ total += manifest[x].length;
19
+ });
20
+
21
+ ['web_repl.js', 'embedded_compiler.js', 'utils.js', 'completer.js', 'msgfmt.js', 'gettext.js'].forEach(function(x) {
22
+ x = 'tools/' + x;
23
+ manifest[x] = fs.readFileSync(path.join(base, x), {'encoding':'utf-8'});
24
+ total += manifest[x].length;
25
+ });
26
+
27
+ var stdlib = path.join(base, 'src', 'lib');
28
+
29
+ function path_exists(path) {
30
+ try {
31
+ fs.statSync(path);
32
+ return true;
33
+ } catch(e) {
34
+ if (e.code != 'ENOENT') throw e;
35
+ }
36
+ }
37
+
38
+ function process_dir(relpath) {
39
+ var fullpath = (relpath) ? path.join(stdlib, relpath) : stdlib;
40
+ fs.readdirSync(fullpath).forEach(function (x) {
41
+ var q = path.join(fullpath, x);
42
+ var s = fs.statSync(q);
43
+ if (s.isDirectory()) return process_dir(relpath + '/' + x);
44
+ if (!x.endsWith('.pyj')) return;
45
+ var iname = ('__stdlib__' + '/' + relpath + '/' + x).replace(/\\/g, '/').replace(/\/+/g, '/');
46
+ var raw = fs.readFileSync(q, {'encoding':'utf-8'});
47
+ manifest[iname] = raw;
48
+ total += s.size;
49
+ });
50
+ }
51
+ process_dir('');
52
+
53
+
54
+ var rs = '// vim:fileencoding=utf-8\n';
55
+ rs += '(function(external_namespace) {\n';
56
+ rs += '"use strict;"\n';
57
+ rs += 'var rs_version = ' + JSON.stringify(meta.version) + ';\n';
58
+ rs += 'var rs_commit_sha = ' + JSON.stringify(commit_sha) + ';\n';
59
+ rs += '\n// Embedded modules {{{\n';
60
+ rs += 'var data = ' + JSON.stringify(manifest) + ';\n\n';
61
+ rs += '// End embedded modules }}}\n\n';
62
+ rs += fs.readFileSync(path.join(base, 'web-repl', 'env.js'));
63
+ rs += '\n// Embedded sha1 implementation {{{\n';
64
+ rs += '(function() {\n';
65
+ rs += fs.readFileSync(path.join(base, 'web-repl', 'sha1.js'));
66
+ rs += '}).call(jsSHA);\n';
67
+ rs += '// End embedded sha1 implementation }}}\n\n';
68
+ rs += 'var exports = namespace;\n';
69
+ rs += fs.readFileSync(path.join(base, 'tools', 'export.js'), {'encoding':'utf-8'});
70
+ rs += 'external_namespace.RapydScript = namespace;\n';
71
+ rs += '})(this);\n';
72
+
73
+
74
+ var base_dir = process.argv.slice(-1)[0];
75
+ if (process.argv.length !== 3) {
76
+ console.error('Usage: web-repl-export /path/to/export/directory');
77
+ process.exit(1);
78
+ }
79
+
80
+ base_dir = path.normalize(path.resolve(base_dir));
81
+
82
+ try {
83
+ fs.mkdirSync(base_dir);
84
+ } catch(e) {
85
+ if (e.code !== 'EEXIST') throw e;
86
+ }
87
+
88
+ try {
89
+ process.chdir(base_dir);
90
+ } catch(e) {
91
+ if (e.code === 'ENOTDIR') { console.error(base_dir + ' is not a directory'); process.exit(1); }
92
+ throw e;
93
+ }
94
+ fs.writeFileSync('rapydscript.js', rs, {'encoding':'utf-8'});
95
+ var web_repl = path.join(base, 'web-repl');
96
+ fs.readdirSync(web_repl).forEach(function(x) {
97
+ if (['sha1.js', 'env.js'].indexOf(x) !== -1) return;
98
+ var data = fs.readFileSync(path.join(web_repl, x), {'encoding':'utf-8'});
99
+ fs.writeFileSync(x, data, {'encoding':'utf-8'});
100
+ });
101
+ console.log('RapydScript compiler (uncompressed) size: ' + (total/(1024)).toFixed(1) + ' KB');
102
+ console.log('web-repl exported to: ' + base_dir);
package/build CHANGED
@@ -1,3 +1,3 @@
1
- #!/bin/sh
2
- exec bin/rapydscript self --complete --test
1
+ #!/bin/sh
2
+ exec bin/rapydscript self --complete --test
3
3
  exec bin/web-repl-export web-repl