rapydscript-ns 0.8.0
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/.agignore +1 -0
- package/.gitattributes +4 -0
- package/.github/workflows/ci.yml +38 -0
- package/.github/workflows/web-repl-page-deploy.yml +42 -0
- package/=template.pyj +5 -0
- package/CHANGELOG.md +456 -0
- package/CONTRIBUTORS +13 -0
- package/HACKING.md +103 -0
- package/LICENSE +24 -0
- package/README.md +2512 -0
- package/TODO.md +327 -0
- package/add-toc-to-readme +2 -0
- package/bin/export +75 -0
- package/bin/rapydscript +70 -0
- package/bin/web-repl-export +102 -0
- package/build +3 -0
- package/package.json +46 -0
- package/publish.py +37 -0
- package/release/baselib-plain-pretty.js +4370 -0
- package/release/baselib-plain-ugly.js +3 -0
- package/release/compiler.js +18394 -0
- package/release/signatures.json +31 -0
- package/session.vim +4 -0
- package/setup.cfg +2 -0
- package/src/ast.pyj +1356 -0
- package/src/baselib-builtins.pyj +279 -0
- package/src/baselib-containers.pyj +723 -0
- package/src/baselib-errors.pyj +37 -0
- package/src/baselib-internal.pyj +421 -0
- package/src/baselib-itertools.pyj +97 -0
- package/src/baselib-str.pyj +798 -0
- package/src/compiler.pyj +36 -0
- package/src/errors.pyj +30 -0
- package/src/lib/aes.pyj +646 -0
- package/src/lib/collections.pyj +695 -0
- package/src/lib/elementmaker.pyj +83 -0
- package/src/lib/encodings.pyj +126 -0
- package/src/lib/functools.pyj +148 -0
- package/src/lib/gettext.pyj +569 -0
- package/src/lib/itertools.pyj +580 -0
- package/src/lib/math.pyj +193 -0
- package/src/lib/numpy.pyj +2101 -0
- package/src/lib/operator.pyj +11 -0
- package/src/lib/pythonize.pyj +20 -0
- package/src/lib/random.pyj +118 -0
- package/src/lib/re.pyj +470 -0
- package/src/lib/traceback.pyj +63 -0
- package/src/lib/uuid.pyj +77 -0
- package/src/monaco-language-service/analyzer.js +526 -0
- package/src/monaco-language-service/builtins.js +543 -0
- package/src/monaco-language-service/completions.js +498 -0
- package/src/monaco-language-service/diagnostics.js +643 -0
- package/src/monaco-language-service/dts.js +550 -0
- package/src/monaco-language-service/hover.js +121 -0
- package/src/monaco-language-service/index.js +386 -0
- package/src/monaco-language-service/scope.js +162 -0
- package/src/monaco-language-service/signature.js +144 -0
- package/src/output/__init__.pyj +0 -0
- package/src/output/classes.pyj +296 -0
- package/src/output/codegen.pyj +492 -0
- package/src/output/comments.pyj +45 -0
- package/src/output/exceptions.pyj +105 -0
- package/src/output/functions.pyj +491 -0
- package/src/output/literals.pyj +109 -0
- package/src/output/loops.pyj +444 -0
- package/src/output/modules.pyj +329 -0
- package/src/output/operators.pyj +429 -0
- package/src/output/statements.pyj +463 -0
- package/src/output/stream.pyj +309 -0
- package/src/output/treeshake.pyj +182 -0
- package/src/output/utils.pyj +72 -0
- package/src/parse.pyj +3106 -0
- package/src/string_interpolation.pyj +72 -0
- package/src/tokenizer.pyj +702 -0
- package/src/unicode_aliases.pyj +576 -0
- package/src/utils.pyj +192 -0
- package/test/_import_one.pyj +37 -0
- package/test/_import_two/__init__.pyj +11 -0
- package/test/_import_two/level2/__init__.pyj +0 -0
- package/test/_import_two/level2/deep.pyj +4 -0
- package/test/_import_two/other.pyj +6 -0
- package/test/_import_two/sub.pyj +13 -0
- package/test/aes_vectors.pyj +421 -0
- package/test/annotations.pyj +80 -0
- package/test/baselib.pyj +319 -0
- package/test/classes.pyj +452 -0
- package/test/collections.pyj +152 -0
- package/test/decorators.pyj +77 -0
- package/test/dict_spread.pyj +76 -0
- package/test/docstrings.pyj +39 -0
- package/test/elementmaker_test.pyj +45 -0
- package/test/ellipsis.pyj +49 -0
- package/test/functions.pyj +151 -0
- package/test/generators.pyj +41 -0
- package/test/generic.pyj +370 -0
- package/test/imports.pyj +72 -0
- package/test/internationalization.pyj +73 -0
- package/test/lint.pyj +164 -0
- package/test/loops.pyj +85 -0
- package/test/numpy.pyj +734 -0
- package/test/omit_function_metadata.pyj +20 -0
- package/test/regexp.pyj +55 -0
- package/test/repl.pyj +121 -0
- package/test/scoped_flags.pyj +76 -0
- package/test/starargs.pyj +506 -0
- package/test/starred_assign.pyj +104 -0
- package/test/str.pyj +198 -0
- package/test/subscript_tuple.pyj +53 -0
- package/test/unit/fixtures/fibonacci_expected.js +46 -0
- package/test/unit/index.js +2989 -0
- package/test/unit/language-service-builtins.js +815 -0
- package/test/unit/language-service-completions.js +1067 -0
- package/test/unit/language-service-dts.js +543 -0
- package/test/unit/language-service-hover.js +455 -0
- package/test/unit/language-service-scope.js +833 -0
- package/test/unit/language-service-signature.js +458 -0
- package/test/unit/language-service.js +705 -0
- package/test/unit/run-language-service.js +41 -0
- package/test/unit/web-repl.js +484 -0
- package/tools/build-language-service.js +190 -0
- package/tools/cli.js +547 -0
- package/tools/compile.js +219 -0
- package/tools/compiler.js +108 -0
- package/tools/completer.js +131 -0
- package/tools/embedded_compiler.js +251 -0
- package/tools/export.js +316 -0
- package/tools/gettext.js +185 -0
- package/tools/ini.js +65 -0
- package/tools/lint.js +705 -0
- package/tools/msgfmt.js +187 -0
- package/tools/repl.js +223 -0
- package/tools/self.js +162 -0
- package/tools/test.js +118 -0
- package/tools/utils.js +128 -0
- package/tools/web_repl.js +95 -0
- package/try +41 -0
- package/web-repl/env.js +74 -0
- package/web-repl/index.html +163 -0
- package/web-repl/language-service.js +4084 -0
- package/web-repl/main.js +254 -0
- package/web-repl/prism.css +139 -0
- package/web-repl/prism.js +113 -0
- package/web-repl/rapydscript.js +435 -0
- package/web-repl/sha1.js +25 -0
package/src/lib/math.pyj
ADDED
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
###########################################################
|
|
2
|
+
# RapydScript Standard Library
|
|
3
|
+
# Author: Alexander Tsepkov
|
|
4
|
+
# Copyright 2013 Pyjeon Software LLC
|
|
5
|
+
# License: Apache License 2.0
|
|
6
|
+
# This library is covered under Apache license, so that
|
|
7
|
+
# you can distribute it with your RapydScript applications.
|
|
8
|
+
###########################################################
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
# basic implementation of Python's 'math' library
|
|
12
|
+
|
|
13
|
+
# NOTE: this is only meant to aid those porting lots of Python code into RapydScript,
|
|
14
|
+
# if you're writing a new RapydScript application, in most cases you probably want to
|
|
15
|
+
# use JavaScript's Math module directly instead
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
pi = Math.PI
|
|
19
|
+
e = Math.E
|
|
20
|
+
inf = Infinity
|
|
21
|
+
|
|
22
|
+
########################################
|
|
23
|
+
# Number-theoretic and representation functions
|
|
24
|
+
########################################
|
|
25
|
+
def ceil(x):
|
|
26
|
+
return Math.ceil(x)
|
|
27
|
+
def copysign(x, y):
|
|
28
|
+
x = Math.abs(x)
|
|
29
|
+
if y < 0:
|
|
30
|
+
return -x
|
|
31
|
+
else:
|
|
32
|
+
return x
|
|
33
|
+
def fabs(x):
|
|
34
|
+
return Math.abs(x)
|
|
35
|
+
def factorial(x):
|
|
36
|
+
if Math.abs(int(x)) is not x:
|
|
37
|
+
raise ValueError("factorial() only accepts integral values")
|
|
38
|
+
factorial.cache = []
|
|
39
|
+
r = def(n):
|
|
40
|
+
if n is 0 or n is 1:
|
|
41
|
+
return 1
|
|
42
|
+
if not factorial.cache[n]:
|
|
43
|
+
factorial.cache[n] = r(n-1) * n
|
|
44
|
+
return factorial.cache[n]
|
|
45
|
+
return r(x)
|
|
46
|
+
def floor(x):
|
|
47
|
+
return Math.floor(x)
|
|
48
|
+
def fmod(x, y):
|
|
49
|
+
# javascript's % operator isn't consistent with C fmod implementation, this function is
|
|
50
|
+
while y <= x:
|
|
51
|
+
x -= y
|
|
52
|
+
return x
|
|
53
|
+
def fsum(iterable):
|
|
54
|
+
# like Python's fsum, this method is much more resilient to rounding errors than regular sum
|
|
55
|
+
partials = [] # sorted, non-overlapping partial sums
|
|
56
|
+
for x in iterable:
|
|
57
|
+
i = 0
|
|
58
|
+
for y in partials:
|
|
59
|
+
if Math.abs(x) < Math.abs(y):
|
|
60
|
+
x, y = y, x
|
|
61
|
+
hi = x + y
|
|
62
|
+
lo = y - (hi - x)
|
|
63
|
+
if lo:
|
|
64
|
+
partials[i] = lo
|
|
65
|
+
i += 1
|
|
66
|
+
x = hi
|
|
67
|
+
#partials[i:] = [x]
|
|
68
|
+
partials.splice(i, partials.length-i, x)
|
|
69
|
+
return sum(partials)
|
|
70
|
+
def isinf(x):
|
|
71
|
+
return not isFinite(x)
|
|
72
|
+
def isnan(x):
|
|
73
|
+
return isNaN(x)
|
|
74
|
+
def modf(x):
|
|
75
|
+
m = fmod(x, 1)
|
|
76
|
+
return m, x-m
|
|
77
|
+
def trunc(x):
|
|
78
|
+
return x | 0
|
|
79
|
+
|
|
80
|
+
########################################
|
|
81
|
+
# Power and logarithmic functions
|
|
82
|
+
########################################
|
|
83
|
+
def exp(x):
|
|
84
|
+
return Math.exp(x)
|
|
85
|
+
def expm1(x):
|
|
86
|
+
# NOTE: Math.expm1() is currently only implemented in Firefox, this provides alternative implementation
|
|
87
|
+
# https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/expm1
|
|
88
|
+
#return Math.expm1(x)
|
|
89
|
+
if Math.abs(x) < 1e-5:
|
|
90
|
+
return x + 0.5*x*x
|
|
91
|
+
else:
|
|
92
|
+
return Math.exp(x) - 1
|
|
93
|
+
def log(x, base=e):
|
|
94
|
+
return Math.log(x)/Math.log(base)
|
|
95
|
+
def log1p(x):
|
|
96
|
+
# NOTE: Math.log1p() is currently only implemented in Firefox, this provides alternative implementation
|
|
97
|
+
# https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log1p
|
|
98
|
+
# this version has been taken from http://phpjs.org/functions/log1p/
|
|
99
|
+
# admittedly it's not as accurate as MDN version, as you can see from math.log1p(1) result
|
|
100
|
+
ret = 0
|
|
101
|
+
n = 50
|
|
102
|
+
if x <= -1:
|
|
103
|
+
return Number.NEGATIVE_INFINITY
|
|
104
|
+
if x < 0 or x > 1:
|
|
105
|
+
return Math.log(1 + x)
|
|
106
|
+
for i in range(1, n):
|
|
107
|
+
if i % 2 is 0:
|
|
108
|
+
ret -= Math.pow(x, i) / i
|
|
109
|
+
else:
|
|
110
|
+
ret += Math.pow(x, i) / i
|
|
111
|
+
return ret
|
|
112
|
+
def log10(x):
|
|
113
|
+
# NOTE: Math.log10() is currently only implemented in Firefox, this provides alternative implementation
|
|
114
|
+
# https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log10
|
|
115
|
+
# I didn't find a more accurate algorithm so I'm using the basic implementation
|
|
116
|
+
return Math.log(x)/Math.LN10
|
|
117
|
+
def pow(x, y):
|
|
118
|
+
if x < 0 and int(y) is not y:
|
|
119
|
+
raise ValueError('math domain error')
|
|
120
|
+
if isnan(y) and x is 1:
|
|
121
|
+
return 1
|
|
122
|
+
return Math.pow(x, y)
|
|
123
|
+
def sqrt(x):
|
|
124
|
+
return Math.sqrt(x)
|
|
125
|
+
|
|
126
|
+
########################################
|
|
127
|
+
# Trigonometric functions
|
|
128
|
+
########################################
|
|
129
|
+
def acos(x): return Math.acos(x)
|
|
130
|
+
def asin(x): return Math.asin(x)
|
|
131
|
+
def atan(x): return Math.atan(x)
|
|
132
|
+
def atan2(y, x): return Math.atan2(y, x)
|
|
133
|
+
def cos(x): return Math.cos(x)
|
|
134
|
+
def sin(x): return Math.sin(x)
|
|
135
|
+
def hypot(x, y): return Math.sqrt(x*x + y*y)
|
|
136
|
+
def tan(x): return Math.tan(x)
|
|
137
|
+
|
|
138
|
+
########################################
|
|
139
|
+
# Angular conversion
|
|
140
|
+
########################################
|
|
141
|
+
def degrees(x): return x*180/pi
|
|
142
|
+
def radians(x): return x*pi/180
|
|
143
|
+
|
|
144
|
+
########################################
|
|
145
|
+
# Hyperbolic functions
|
|
146
|
+
########################################
|
|
147
|
+
def acosh(x):
|
|
148
|
+
# NOTE: will be replaced with official, when it becomes mainstream
|
|
149
|
+
# https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/acosh
|
|
150
|
+
return Math.log(x + Math.sqrt(x*x - 1))
|
|
151
|
+
def asinh(x):
|
|
152
|
+
# NOTE: will be replaced with official, when it becomes mainstream
|
|
153
|
+
# https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/asinh
|
|
154
|
+
return Math.log(x + Math.sqrt(x*x + 1))
|
|
155
|
+
def atanh(x):
|
|
156
|
+
# NOTE: will be replaced with official, when it becomes mainstream
|
|
157
|
+
# https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/atanh
|
|
158
|
+
return 0.5 * Math.log((1 + x) / (1 - x))
|
|
159
|
+
def cosh(x):
|
|
160
|
+
# NOTE: will be replaced with official, when it becomes mainstream
|
|
161
|
+
# https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/cosh
|
|
162
|
+
return (Math.exp(x) + Math.exp(-x)) / 2
|
|
163
|
+
def sinh(x):
|
|
164
|
+
# NOTE: will be replaced with official, when it becomes mainstream
|
|
165
|
+
# https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sinh
|
|
166
|
+
return (Math.exp(x) - Math.exp(-x)) / 2
|
|
167
|
+
def tanh(x):
|
|
168
|
+
# NOTE: will be replaced with official, when it becomes mainstream
|
|
169
|
+
# https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/tanh
|
|
170
|
+
return (Math.exp(x) - Math.exp(-x)) / (Math.exp(x) + Math.exp(-x))
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
#import stdlib
|
|
175
|
+
#print(math.ceil(4.2))
|
|
176
|
+
#print(math.floor(4.2))
|
|
177
|
+
#print(math.fabs(-6))
|
|
178
|
+
#print(math.copysign(-5, 7))
|
|
179
|
+
#print(math.factorial(4))
|
|
180
|
+
#print(math.fmod(-1e100, 1e100))
|
|
181
|
+
#
|
|
182
|
+
#d = [0.9999999, 1, 2, 3]
|
|
183
|
+
#print(sum(d), math.fsum(d))
|
|
184
|
+
#print(math.isinf(5), math.isinf(Infinity))
|
|
185
|
+
#print(math.modf(5.5))
|
|
186
|
+
#print(math.trunc(2.6), math.trunc(-2.6))
|
|
187
|
+
#print(math.exp(1e-5), math.expm1(1e-5))
|
|
188
|
+
#print(math.log(10), math.log(10, 1000))
|
|
189
|
+
#print(math.log1p(1e-15), math.log1p(1))
|
|
190
|
+
#print(math.log10(1000), math.log(1000, 10))
|
|
191
|
+
#print(math.pow(1, 0), math.pow(1, NaN), math.pow(0, 0), math.pow(NaN, 0), math.pow(4,3), math.pow(100, -2))
|
|
192
|
+
#print(math.hypot(3,4))
|
|
193
|
+
#print(math.acosh(2), math.asinh(1), math.atanh(0.5), math.cosh(1), math.cosh(-1), math.sinh(1), math.tanh(1))
|