rapydscript-ns 0.9.2 → 0.9.3

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 (151) 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 +19 -0
  5. package/HACKING.md +103 -103
  6. package/LICENSE +24 -24
  7. package/PYTHON_GAPS.md +420 -0
  8. package/README.md +153 -29
  9. package/TODO.md +16 -118
  10. package/add-toc-to-readme +2 -2
  11. package/bin/export +75 -75
  12. package/bin/rapydscript +70 -70
  13. package/bin/web-repl-export +102 -102
  14. package/build +2 -2
  15. package/language-service/index.js +237 -8
  16. package/memory/project_string_impl.md +43 -0
  17. package/package.json +1 -1
  18. package/publish.py +37 -37
  19. package/release/baselib-plain-pretty.js +248 -38
  20. package/release/baselib-plain-ugly.js +8 -8
  21. package/release/compiler.js +778 -277
  22. package/release/signatures.json +30 -30
  23. package/session.vim +4 -4
  24. package/setup.cfg +2 -2
  25. package/src/ast.pyj +4 -1
  26. package/src/baselib-builtins.pyj +56 -2
  27. package/src/baselib-containers.pyj +2 -0
  28. package/src/baselib-errors.pyj +7 -3
  29. package/src/baselib-internal.pyj +51 -6
  30. package/src/baselib-str.pyj +5 -3
  31. package/src/compiler.pyj +36 -36
  32. package/src/errors.pyj +30 -30
  33. package/src/lib/aes.pyj +646 -646
  34. package/src/lib/asyncio.pyj +534 -0
  35. package/src/lib/base64.pyj +399 -0
  36. package/src/lib/bisect.pyj +73 -0
  37. package/src/lib/collections.pyj +1 -1
  38. package/src/lib/copy.pyj +120 -120
  39. package/src/lib/csv.pyj +494 -0
  40. package/src/lib/elementmaker.pyj +83 -83
  41. package/src/lib/encodings.pyj +126 -126
  42. package/src/lib/gettext.pyj +569 -569
  43. package/src/lib/heapq.pyj +98 -0
  44. package/src/lib/html.pyj +382 -0
  45. package/src/lib/http/__init__.pyj +98 -0
  46. package/src/lib/http/client.pyj +304 -0
  47. package/src/lib/http/cookies.pyj +236 -0
  48. package/src/lib/itertools.pyj +580 -580
  49. package/src/lib/logging.pyj +672 -0
  50. package/src/lib/math.pyj +193 -193
  51. package/src/lib/operator.pyj +11 -11
  52. package/src/lib/pythonize.pyj +20 -20
  53. package/src/lib/random.pyj +118 -118
  54. package/src/lib/react.pyj +74 -74
  55. package/src/lib/string.pyj +357 -0
  56. package/src/lib/textwrap.pyj +329 -0
  57. package/src/lib/traceback.pyj +63 -63
  58. package/src/lib/urllib/__init__.pyj +14 -0
  59. package/src/lib/urllib/error.pyj +66 -0
  60. package/src/lib/urllib/parse.pyj +475 -0
  61. package/src/lib/urllib/request.pyj +86 -0
  62. package/src/lib/uuid.pyj +77 -77
  63. package/src/monaco-language-service/analyzer.js +5 -2
  64. package/src/monaco-language-service/completions.js +26 -0
  65. package/src/monaco-language-service/diagnostics.js +202 -3
  66. package/src/monaco-language-service/dts.js +550 -550
  67. package/src/monaco-language-service/scope.js +1 -0
  68. package/src/output/comments.pyj +45 -45
  69. package/src/output/exceptions.pyj +201 -201
  70. package/src/output/functions.pyj +152 -6
  71. package/src/output/jsx.pyj +164 -164
  72. package/src/output/loops.pyj +17 -2
  73. package/src/output/modules.pyj +1 -1
  74. package/src/output/operators.pyj +15 -0
  75. package/src/output/stream.pyj +0 -1
  76. package/src/output/treeshake.pyj +182 -182
  77. package/src/output/utils.pyj +72 -72
  78. package/src/parse.pyj +80 -17
  79. package/src/string_interpolation.pyj +72 -72
  80. package/src/tokenizer.pyj +1 -1
  81. package/src/unicode_aliases.pyj +576 -576
  82. package/src/utils.pyj +192 -192
  83. package/test/_import_one.pyj +37 -37
  84. package/test/_import_two/__init__.pyj +11 -11
  85. package/test/_import_two/level2/deep.pyj +4 -4
  86. package/test/_import_two/other.pyj +6 -6
  87. package/test/_import_two/sub.pyj +13 -13
  88. package/test/aes_vectors.pyj +421 -421
  89. package/test/annotations.pyj +80 -80
  90. package/test/async_generators.pyj +144 -0
  91. package/test/asyncio.pyj +307 -0
  92. package/test/base64.pyj +202 -0
  93. package/test/bisect.pyj +178 -0
  94. package/test/csv.pyj +405 -0
  95. package/test/decorators.pyj +77 -77
  96. package/test/docstrings.pyj +39 -39
  97. package/test/elementmaker_test.pyj +45 -45
  98. package/test/float_special.pyj +64 -0
  99. package/test/functions.pyj +151 -151
  100. package/test/generators.pyj +41 -41
  101. package/test/generic.pyj +370 -370
  102. package/test/heapq.pyj +174 -0
  103. package/test/html.pyj +212 -0
  104. package/test/http.pyj +259 -0
  105. package/test/imports.pyj +79 -72
  106. package/test/internationalization.pyj +73 -73
  107. package/test/lint.pyj +164 -164
  108. package/test/logging.pyj +356 -0
  109. package/test/long.pyj +130 -0
  110. package/test/loops.pyj +85 -85
  111. package/test/numpy.pyj +734 -734
  112. package/test/parenthesized_with.pyj +141 -0
  113. package/test/python_compat.pyj +3 -5
  114. package/test/python_modulo.pyj +76 -0
  115. package/test/python_modulo_off.pyj +21 -0
  116. package/test/repl.pyj +121 -121
  117. package/test/scoped_flags.pyj +76 -76
  118. package/test/str.pyj +14 -0
  119. package/test/string.pyj +245 -0
  120. package/test/textwrap.pyj +172 -0
  121. package/test/type_display.pyj +48 -0
  122. package/test/type_enforcement.pyj +164 -0
  123. package/test/unit/index.js +14 -6
  124. package/test/unit/language-service-completions.js +119 -0
  125. package/test/unit/language-service-dts.js +543 -543
  126. package/test/unit/language-service-hover.js +455 -455
  127. package/test/unit/language-service-scope.js +32 -0
  128. package/test/unit/language-service.js +127 -3
  129. package/test/unit/run-language-service.js +17 -3
  130. package/test/unit/web-repl.js +2094 -29
  131. package/test/urllib.pyj +193 -0
  132. package/tools/compile.js +1 -1
  133. package/tools/compiler.d.ts +367 -367
  134. package/tools/completer.js +131 -131
  135. package/tools/embedded_compiler.js +7 -7
  136. package/tools/gettext.js +185 -185
  137. package/tools/ini.js +65 -65
  138. package/tools/msgfmt.js +187 -187
  139. package/tools/repl.js +223 -223
  140. package/tools/test.js +118 -118
  141. package/tools/utils.js +128 -128
  142. package/tools/web_repl.js +95 -95
  143. package/try +41 -41
  144. package/web-repl/env.js +196 -196
  145. package/web-repl/index.html +163 -163
  146. package/web-repl/main.js +1 -1
  147. package/web-repl/prism.css +139 -139
  148. package/web-repl/prism.js +113 -113
  149. package/web-repl/rapydscript.js +224 -224
  150. package/web-repl/sha1.js +25 -25
  151. package/test/omit_function_metadata.pyj +0 -20
@@ -1,131 +1,131 @@
1
- /* vim:fileencoding=utf-8
2
- *
3
- * Copyright (C) 2016 Kovid Goyal <kovid at kovidgoyal.net>
4
- *
5
- * Distributed under terms of the BSD license
6
- */
7
-
8
-
9
- module.exports = function(compiler, options) {
10
- "use strict";
11
- var all_keywords = compiler.ALL_KEYWORDS.split(' ');
12
- var vm = require('vm');
13
- options = options || {};
14
- if (!options.enum_global) options.enum_global = "var global = Function('return this')(); Object.getOwnPropertyNames(global);";
15
-
16
- function global_names(ctx) {
17
- try {
18
- var ans = vm.runInContext(options.enum_global, ctx);
19
- ans = ans.concat(all_keywords);
20
- ans.sort();
21
- var seen = {};
22
- ans.filter(function (item) {
23
- if (Object.prototype.hasOwnProperty.call(seen, item)) return false;
24
- seen[item] = true;
25
- return true;
26
- });
27
- return ans;
28
- } catch(e) {
29
- console.log(e.stack || e.toString());
30
- }
31
- return [];
32
- }
33
-
34
- function object_names(obj, prefix) {
35
- if (obj === null || obj === undefined) return [];
36
- var groups = [], prefix_len = prefix.length, p;
37
-
38
- function prefix_filter(name) { return (prefix_len) ? (name.substr(0, prefix_len) === prefix) : true; }
39
-
40
- function add(o) {
41
- var items = Object.getOwnPropertyNames(o).filter(prefix_filter);
42
- if (items.length) groups.push(items);
43
- }
44
-
45
- if (typeof obj === 'object' || typeof obj === 'function') {
46
- add(obj);
47
- p = Object.getPrototypeOf(obj);
48
- } else p = obj.constructor ? obj.constructor.prototype : null;
49
-
50
- // Walk the prototype chain
51
- try {
52
- var sentinel = 5;
53
- while (p !== null && sentinel > 0) {
54
- add(p);
55
- p = Object.getPrototypeOf(p);
56
- // Circular refs possible? Let's guard against that.
57
- sentinel--;
58
- }
59
- } catch (e) {
60
- // console.error("completion error walking prototype chain:" + e);
61
- }
62
- if (!groups.length) return [];
63
- var seen = {}, ans = [];
64
- function uniq(name) {
65
- if (Object.prototype.hasOwnProperty.call(seen, name)) return false;
66
- seen[name] = true;
67
- return true;
68
- }
69
- for (var i = 0; i < groups.length; i++) {
70
- var group = groups[i];
71
- group.sort();
72
- ans = ans.concat(group.filter(uniq));
73
- ans.push(''); // group separator
74
-
75
- }
76
- while (ans.length && ans[ans.length - 1] === '') ans.pop();
77
- return ans;
78
- }
79
-
80
- function prefix_matches(prefix, items) {
81
- var len = prefix.length;
82
- var ans = items.filter(function(item) { return item.substr(0, len) === prefix; });
83
- ans.sort();
84
- return ans;
85
- }
86
-
87
- function find_completions(line, ctx) {
88
- var t;
89
- try {
90
- t = compiler.tokenizer(line, '<repl>');
91
- } catch(e) { return []; }
92
- var tokens = [], token;
93
- while (true) {
94
- try {
95
- token = t();
96
- } catch (e) { return []; }
97
- if (token.type === 'eof') break;
98
- if (token.type === 'punc' && '(){},;:'.indexOf(token.value) > -1)
99
- tokens = [];
100
- tokens.push(token);
101
- }
102
- if (!tokens.length) {
103
- // New line or trailing space
104
- return [global_names(ctx), ''];
105
- }
106
- var last_tok = tokens[tokens.length - 1];
107
- if (last_tok.value === '.' || (last_tok.type === 'name' && compiler.IDENTIFIER_PAT.test(last_tok.value))) {
108
- last_tok = last_tok.value;
109
- if (last_tok === '.') {
110
- tokens.push({'value':''});
111
- last_tok = '';
112
- }
113
- if (tokens.length > 1 && tokens[tokens.length - 2].value === '.') {
114
- // A compound expression
115
- var prefix = '', result;
116
- tokens.slice(0, tokens.length - 2).forEach(function (tok) { prefix += tok.value; });
117
- if (prefix) {
118
- try {
119
- result = vm.runInContext(prefix, ctx, {'displayErrors':false});
120
- } catch(e) { return []; }
121
- return [object_names(result, last_tok), last_tok];
122
- }
123
- } else {
124
- return [prefix_matches(last_tok, global_names(ctx)), last_tok];
125
- }
126
- }
127
- return [];
128
- }
129
-
130
- return find_completions;
131
- };
1
+ /* vim:fileencoding=utf-8
2
+ *
3
+ * Copyright (C) 2016 Kovid Goyal <kovid at kovidgoyal.net>
4
+ *
5
+ * Distributed under terms of the BSD license
6
+ */
7
+
8
+
9
+ module.exports = function(compiler, options) {
10
+ "use strict";
11
+ var all_keywords = compiler.ALL_KEYWORDS.split(' ');
12
+ var vm = require('vm');
13
+ options = options || {};
14
+ if (!options.enum_global) options.enum_global = "var global = Function('return this')(); Object.getOwnPropertyNames(global);";
15
+
16
+ function global_names(ctx) {
17
+ try {
18
+ var ans = vm.runInContext(options.enum_global, ctx);
19
+ ans = ans.concat(all_keywords);
20
+ ans.sort();
21
+ var seen = {};
22
+ ans.filter(function (item) {
23
+ if (Object.prototype.hasOwnProperty.call(seen, item)) return false;
24
+ seen[item] = true;
25
+ return true;
26
+ });
27
+ return ans;
28
+ } catch(e) {
29
+ console.log(e.stack || e.toString());
30
+ }
31
+ return [];
32
+ }
33
+
34
+ function object_names(obj, prefix) {
35
+ if (obj === null || obj === undefined) return [];
36
+ var groups = [], prefix_len = prefix.length, p;
37
+
38
+ function prefix_filter(name) { return (prefix_len) ? (name.substr(0, prefix_len) === prefix) : true; }
39
+
40
+ function add(o) {
41
+ var items = Object.getOwnPropertyNames(o).filter(prefix_filter);
42
+ if (items.length) groups.push(items);
43
+ }
44
+
45
+ if (typeof obj === 'object' || typeof obj === 'function') {
46
+ add(obj);
47
+ p = Object.getPrototypeOf(obj);
48
+ } else p = obj.constructor ? obj.constructor.prototype : null;
49
+
50
+ // Walk the prototype chain
51
+ try {
52
+ var sentinel = 5;
53
+ while (p !== null && sentinel > 0) {
54
+ add(p);
55
+ p = Object.getPrototypeOf(p);
56
+ // Circular refs possible? Let's guard against that.
57
+ sentinel--;
58
+ }
59
+ } catch (e) {
60
+ // console.error("completion error walking prototype chain:" + e);
61
+ }
62
+ if (!groups.length) return [];
63
+ var seen = {}, ans = [];
64
+ function uniq(name) {
65
+ if (Object.prototype.hasOwnProperty.call(seen, name)) return false;
66
+ seen[name] = true;
67
+ return true;
68
+ }
69
+ for (var i = 0; i < groups.length; i++) {
70
+ var group = groups[i];
71
+ group.sort();
72
+ ans = ans.concat(group.filter(uniq));
73
+ ans.push(''); // group separator
74
+
75
+ }
76
+ while (ans.length && ans[ans.length - 1] === '') ans.pop();
77
+ return ans;
78
+ }
79
+
80
+ function prefix_matches(prefix, items) {
81
+ var len = prefix.length;
82
+ var ans = items.filter(function(item) { return item.substr(0, len) === prefix; });
83
+ ans.sort();
84
+ return ans;
85
+ }
86
+
87
+ function find_completions(line, ctx) {
88
+ var t;
89
+ try {
90
+ t = compiler.tokenizer(line, '<repl>');
91
+ } catch(e) { return []; }
92
+ var tokens = [], token;
93
+ while (true) {
94
+ try {
95
+ token = t();
96
+ } catch (e) { return []; }
97
+ if (token.type === 'eof') break;
98
+ if (token.type === 'punc' && '(){},;:'.indexOf(token.value) > -1)
99
+ tokens = [];
100
+ tokens.push(token);
101
+ }
102
+ if (!tokens.length) {
103
+ // New line or trailing space
104
+ return [global_names(ctx), ''];
105
+ }
106
+ var last_tok = tokens[tokens.length - 1];
107
+ if (last_tok.value === '.' || (last_tok.type === 'name' && compiler.IDENTIFIER_PAT.test(last_tok.value))) {
108
+ last_tok = last_tok.value;
109
+ if (last_tok === '.') {
110
+ tokens.push({'value':''});
111
+ last_tok = '';
112
+ }
113
+ if (tokens.length > 1 && tokens[tokens.length - 2].value === '.') {
114
+ // A compound expression
115
+ var prefix = '', result;
116
+ tokens.slice(0, tokens.length - 2).forEach(function (tok) { prefix += tok.value; });
117
+ if (prefix) {
118
+ try {
119
+ result = vm.runInContext(prefix, ctx, {'displayErrors':false});
120
+ } catch(e) { return []; }
121
+ return [object_names(result, last_tok), last_tok];
122
+ }
123
+ } else {
124
+ return [prefix_matches(last_tok, global_names(ctx)), last_tok];
125
+ }
126
+ }
127
+ return [];
128
+ }
129
+
130
+ return find_completions;
131
+ };
@@ -7,7 +7,7 @@
7
7
  "use strict"; /*jshint node:true */
8
8
 
9
9
  var has_prop = Object.prototype.hasOwnProperty.call.bind(Object.prototype.hasOwnProperty);
10
- var PYTHON_MODE_FLAGS = ['dict_literals', 'overload_getitem', 'bound_methods', 'hash_literals', 'overload_operators', 'truthiness', 'jsx'];
10
+ var PYTHON_MODE_FLAGS = ['dict_literals', 'overload_getitem', 'bound_methods', 'hash_literals', 'overload_operators', 'truthiness', 'jsx', 'type_enforcement'];
11
11
 
12
12
  function build_scoped_flags(flags_str) {
13
13
  var result = Object.create(null);
@@ -28,8 +28,8 @@ module.exports = function(compiler, baselib, runjs, name, vf_context) {
28
28
  runjs(print_ast(compiler.parse(''), true));
29
29
  runjs('var __name__ = "' + (name || '__embedded__') + '";');
30
30
 
31
- function print_ast(ast, keep_baselib, keep_docstrings, js_version, private_scope, write_name, omit_function_metadata, pythonize_strings) {
32
- var output_options = {omit_baselib:!keep_baselib, write_name:!!write_name, private_scope:!!private_scope, beautify:true, js_version: (js_version || 6), keep_docstrings:keep_docstrings, omit_function_metadata:!!omit_function_metadata, pythonize_strings:!!pythonize_strings};
31
+ function print_ast(ast, keep_baselib, keep_docstrings, js_version, private_scope, write_name, pythonize_strings) {
32
+ var output_options = {omit_baselib:!keep_baselib, write_name:!!write_name, private_scope:!!private_scope, beautify:true, js_version: (js_version || 6), keep_docstrings:keep_docstrings, pythonize_strings:!!pythonize_strings};
33
33
  if (keep_baselib) output_options.baselib_plain = baselib;
34
34
  var output = new compiler.OutputStream(output_options);
35
35
  ast.print(output);
@@ -105,8 +105,8 @@ module.exports = function(compiler, baselib, runjs, name, vf_context) {
105
105
  });
106
106
  }
107
107
 
108
- function print_ast_with_sourcemap(ast, keep_baselib, keep_docstrings, js_version, private_scope, write_name, omit_function_metadata, pythonize_strings, source_name, source_content) {
109
- var output_options = {omit_baselib:!keep_baselib, write_name:!!write_name, private_scope:!!private_scope, beautify:true, js_version:(js_version||6), keep_docstrings:keep_docstrings, omit_function_metadata:!!omit_function_metadata, pythonize_strings:!!pythonize_strings};
108
+ function print_ast_with_sourcemap(ast, keep_baselib, keep_docstrings, js_version, private_scope, write_name, pythonize_strings, source_name, source_content) {
109
+ var output_options = {omit_baselib:!keep_baselib, write_name:!!write_name, private_scope:!!private_scope, beautify:true, js_version:(js_version||6), keep_docstrings:keep_docstrings, pythonize_strings:!!pythonize_strings};
110
110
  if (keep_baselib) output_options.baselib_plain = baselib;
111
111
  var raw_mappings = [];
112
112
  var output = new compiler.OutputStream(output_options);
@@ -171,7 +171,7 @@ module.exports = function(compiler, baselib, runjs, name, vf_context) {
171
171
  });
172
172
  }
173
173
  var pythonize_strings = (opts.legacy_rapydscript !== true) ? true : !!opts.pythonize_strings;
174
- var ans = print_ast(this.toplevel, opts.keep_baselib, opts.keep_docstrings, opts.js_version, opts.private_scope, opts.write_name, opts.omit_function_metadata, pythonize_strings);
174
+ var ans = print_ast(this.toplevel, opts.keep_baselib, opts.keep_docstrings, opts.js_version, opts.private_scope, opts.write_name, pythonize_strings);
175
175
  if (opts.export_main) {
176
176
  ans = ans.replace(/^(function\smain)/gm, 'export $1')
177
177
  .replace(/^(async\sfunction\smain)/gm, 'export $1');
@@ -233,7 +233,7 @@ module.exports = function(compiler, baselib, runjs, name, vf_context) {
233
233
  var result = print_ast_with_sourcemap(
234
234
  this.toplevel,
235
235
  opts.keep_baselib, opts.keep_docstrings, opts.js_version,
236
- opts.private_scope, opts.write_name, opts.omit_function_metadata,
236
+ opts.private_scope, opts.write_name,
237
237
  pythonize_strings_sm,
238
238
  opts.filename || '<input>',
239
239
  code