rapydscript-ns 0.8.2 → 0.8.4

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 (141) 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 +39 -0
  5. package/HACKING.md +103 -103
  6. package/LICENSE +24 -24
  7. package/PYTHON_DIFFERENCES_REPORT.md +291 -0
  8. package/PYTHON_FEATURE_COVERAGE.md +106 -15
  9. package/README.md +831 -52
  10. package/TODO.md +4 -286
  11. package/add-toc-to-readme +2 -2
  12. package/bin/export +75 -75
  13. package/bin/rapydscript +70 -70
  14. package/bin/web-repl-export +102 -102
  15. package/build +2 -2
  16. package/language-service/index.js +4623 -0
  17. package/language-service/language-service.d.ts +40 -0
  18. package/package.json +9 -7
  19. package/publish.py +37 -37
  20. package/release/baselib-plain-pretty.js +2006 -229
  21. package/release/baselib-plain-ugly.js +70 -3
  22. package/release/compiler.js +11554 -3870
  23. package/release/signatures.json +31 -29
  24. package/session.vim +4 -4
  25. package/setup.cfg +2 -2
  26. package/src/ast.pyj +93 -1
  27. package/src/baselib-builtins.pyj +99 -2
  28. package/src/baselib-containers.pyj +107 -4
  29. package/src/baselib-errors.pyj +44 -0
  30. package/src/baselib-internal.pyj +124 -5
  31. package/src/baselib-itertools.pyj +97 -97
  32. package/src/baselib-str.pyj +32 -1
  33. package/src/compiler.pyj +36 -36
  34. package/src/errors.pyj +30 -30
  35. package/src/lib/aes.pyj +646 -646
  36. package/src/lib/collections.pyj +1 -1
  37. package/src/lib/copy.pyj +120 -0
  38. package/src/lib/elementmaker.pyj +83 -83
  39. package/src/lib/encodings.pyj +126 -126
  40. package/src/lib/gettext.pyj +569 -569
  41. package/src/lib/itertools.pyj +580 -580
  42. package/src/lib/math.pyj +193 -193
  43. package/src/lib/numpy.pyj +10 -10
  44. package/src/lib/operator.pyj +11 -11
  45. package/src/lib/pythonize.pyj +20 -20
  46. package/src/lib/random.pyj +118 -118
  47. package/src/lib/re.pyj +470 -470
  48. package/src/lib/react.pyj +74 -0
  49. package/src/lib/traceback.pyj +63 -63
  50. package/src/lib/uuid.pyj +77 -77
  51. package/src/monaco-language-service/analyzer.js +131 -9
  52. package/src/monaco-language-service/builtins.js +17 -2
  53. package/src/monaco-language-service/completions.js +170 -1
  54. package/src/monaco-language-service/diagnostics.js +25 -3
  55. package/src/monaco-language-service/dts.js +550 -550
  56. package/src/monaco-language-service/index.js +17 -0
  57. package/src/monaco-language-service/scope.js +3 -0
  58. package/src/output/classes.pyj +128 -11
  59. package/src/output/codegen.pyj +17 -3
  60. package/src/output/comments.pyj +45 -45
  61. package/src/output/exceptions.pyj +201 -105
  62. package/src/output/functions.pyj +13 -16
  63. package/src/output/jsx.pyj +164 -0
  64. package/src/output/literals.pyj +28 -2
  65. package/src/output/loops.pyj +0 -9
  66. package/src/output/modules.pyj +2 -5
  67. package/src/output/operators.pyj +22 -2
  68. package/src/output/statements.pyj +2 -2
  69. package/src/output/stream.pyj +1 -13
  70. package/src/output/treeshake.pyj +182 -182
  71. package/src/output/utils.pyj +72 -72
  72. package/src/parse.pyj +434 -114
  73. package/src/string_interpolation.pyj +72 -72
  74. package/src/tokenizer.pyj +29 -0
  75. package/src/unicode_aliases.pyj +576 -576
  76. package/src/utils.pyj +192 -192
  77. package/test/_import_one.pyj +37 -37
  78. package/test/_import_two/__init__.pyj +11 -11
  79. package/test/_import_two/level2/deep.pyj +4 -4
  80. package/test/_import_two/other.pyj +6 -6
  81. package/test/_import_two/sub.pyj +13 -13
  82. package/test/aes_vectors.pyj +421 -421
  83. package/test/annotations.pyj +80 -80
  84. package/test/baselib.pyj +4 -4
  85. package/test/classes.pyj +56 -17
  86. package/test/collections.pyj +5 -5
  87. package/test/decorators.pyj +77 -77
  88. package/test/docstrings.pyj +39 -39
  89. package/test/elementmaker_test.pyj +45 -45
  90. package/test/functions.pyj +151 -151
  91. package/test/generators.pyj +41 -41
  92. package/test/generic.pyj +370 -370
  93. package/test/imports.pyj +72 -72
  94. package/test/internationalization.pyj +73 -73
  95. package/test/lint.pyj +164 -164
  96. package/test/loops.pyj +85 -85
  97. package/test/numpy.pyj +734 -734
  98. package/test/omit_function_metadata.pyj +20 -20
  99. package/test/python_compat.pyj +326 -0
  100. package/test/python_features.pyj +129 -29
  101. package/test/regexp.pyj +55 -55
  102. package/test/repl.pyj +121 -121
  103. package/test/scoped_flags.pyj +76 -76
  104. package/test/slice.pyj +105 -0
  105. package/test/str.pyj +25 -0
  106. package/test/unit/fixtures/fibonacci_expected.js +1 -1
  107. package/test/unit/index.js +2296 -71
  108. package/test/unit/language-service-builtins.js +70 -0
  109. package/test/unit/language-service-bundle.js +5 -5
  110. package/test/unit/language-service-completions.js +180 -0
  111. package/test/unit/language-service-dts.js +543 -543
  112. package/test/unit/language-service-hover.js +455 -455
  113. package/test/unit/language-service-index.js +350 -0
  114. package/test/unit/language-service-scope.js +255 -0
  115. package/test/unit/language-service.js +625 -4
  116. package/test/unit/run-language-service.js +1 -0
  117. package/test/unit/web-repl.js +437 -0
  118. package/tools/build-language-service.js +2 -2
  119. package/tools/cli.js +547 -547
  120. package/tools/compile.js +219 -219
  121. package/tools/compiler.js +0 -24
  122. package/tools/completer.js +131 -131
  123. package/tools/embedded_compiler.js +251 -251
  124. package/tools/export.js +3 -37
  125. package/tools/gettext.js +185 -185
  126. package/tools/ini.js +65 -65
  127. package/tools/msgfmt.js +187 -187
  128. package/tools/repl.js +223 -223
  129. package/tools/test.js +118 -118
  130. package/tools/utils.js +128 -128
  131. package/tools/web_repl.js +95 -95
  132. package/try +41 -41
  133. package/web-repl/env.js +196 -74
  134. package/web-repl/index.html +163 -163
  135. package/web-repl/main.js +252 -254
  136. package/web-repl/prism.css +139 -139
  137. package/web-repl/prism.js +113 -113
  138. package/web-repl/rapydscript.js +227 -139
  139. package/web-repl/sha1.js +25 -25
  140. package/hack_demo.pyj +0 -112
  141. package/web-repl/language-service.js +0 -4187
package/src/lib/math.pyj CHANGED
@@ -1,193 +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))
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))
package/src/lib/numpy.pyj CHANGED
@@ -1055,7 +1055,7 @@ def sort(a, axis=-1):
1055
1055
  a = asarray(a)
1056
1056
  if a.ndim is 1 or axis is None:
1057
1057
  data = a._data.slice()
1058
- data.sort(def(x, y): return x - y;)
1058
+ data.jssort(def(x, y): return x - y;)
1059
1059
  return ndarray(a.shape.slice(), a.dtype, data, True)
1060
1060
  # 2D sort along last axis (axis=1 or axis=-1)
1061
1061
  if axis < 0:
@@ -1066,7 +1066,7 @@ def sort(a, axis=-1):
1066
1066
  if axis is 1:
1067
1067
  for i in range(rows):
1068
1068
  row = a._data.slice(i * cols, (i + 1) * cols)
1069
- row.sort(def(x, y): return x - y;)
1069
+ row.jssort(def(x, y): return x - y;)
1070
1070
  for v in row:
1071
1071
  new_data.push(v)
1072
1072
  elif axis is 0:
@@ -1074,7 +1074,7 @@ def sort(a, axis=-1):
1074
1074
  col = []
1075
1075
  for i in range(rows):
1076
1076
  col.push(a._data[i * cols + j])
1077
- col.sort(def(x, y): return x - y;)
1077
+ col.jssort(def(x, y): return x - y;)
1078
1078
  for i in range(rows):
1079
1079
  new_data[i * cols + j] = col[i]
1080
1080
  if new_data.length is 0:
@@ -1089,14 +1089,14 @@ def argsort(a, axis=-1):
1089
1089
  for i in range(a.size):
1090
1090
  indices.push(i)
1091
1091
  data = a._data.slice()
1092
- indices.sort(def(i, j): return data[i] - data[j];)
1092
+ indices.jssort(def(i, j): return data[i] - data[j];)
1093
1093
  return ndarray([a.size], 'int32', indices, True)
1094
1094
  # Flatten and sort
1095
1095
  data = a._data.slice()
1096
1096
  indices = []
1097
1097
  for i in range(data.length):
1098
1098
  indices.push(i)
1099
- indices.sort(def(i, j): return data[i] - data[j];)
1099
+ indices.jssort(def(i, j): return data[i] - data[j];)
1100
1100
  return ndarray([indices.length], 'int32', indices, True)
1101
1101
 
1102
1102
  def searchsorted(a, v, side='left'):
@@ -1157,7 +1157,7 @@ def where(condition, x=None, y=None):
1157
1157
  def median(a, axis=None):
1158
1158
  a = asarray(a)
1159
1159
  data = a._data.slice()
1160
- data.sort(def(x, y): return x - y;)
1160
+ data.jssort(def(x, y): return x - y;)
1161
1161
  n = data.length
1162
1162
  if n % 2 is 1:
1163
1163
  return data[Math.floor(n / 2)]
@@ -1166,7 +1166,7 @@ def median(a, axis=None):
1166
1166
  def percentile(a, q, axis=None):
1167
1167
  a = asarray(a)
1168
1168
  data = a._data.slice()
1169
- data.sort(def(x, y): return x - y;)
1169
+ data.jssort(def(x, y): return x - y;)
1170
1170
  n = data.length
1171
1171
  idx = q / 100.0 * (n - 1)
1172
1172
  lo = Math.floor(idx)
@@ -1497,7 +1497,7 @@ def union1d(ar1, ar2):
1497
1497
  if not seen[key]:
1498
1498
  seen[key] = True
1499
1499
  unique.push(v)
1500
- unique.sort(def(a, b): return a - b;)
1500
+ unique.jssort(def(a, b): return a - b;)
1501
1501
  return ndarray([unique.length], 'float64', unique, True)
1502
1502
 
1503
1503
  def intersect1d(ar1, ar2):
@@ -1513,7 +1513,7 @@ def intersect1d(ar1, ar2):
1513
1513
  if s[key] and not seen[key]:
1514
1514
  seen[key] = True
1515
1515
  result.push(v)
1516
- result.sort(def(a, b): return a - b;)
1516
+ result.jssort(def(a, b): return a - b;)
1517
1517
  return ndarray([result.length], 'float64', result, True)
1518
1518
 
1519
1519
  def setdiff1d(ar1, ar2):
@@ -1529,7 +1529,7 @@ def setdiff1d(ar1, ar2):
1529
1529
  if not s[key] and not seen[key]:
1530
1530
  seen[key] = True
1531
1531
  result.push(v)
1532
- result.sort(def(a, b): return a - b;)
1532
+ result.jssort(def(a, b): return a - b;)
1533
1533
  return ndarray([result.length], 'float64', result, True)
1534
1534
 
1535
1535
  def in1d(ar1, ar2):
@@ -1,11 +1,11 @@
1
- add = __add__ = def(x, y): return x + y
2
- sub = __sub__ = def(x, y): return x - y
3
- mul = __mul__ = def(x, y): return x * y
4
- div = __div__ = def(x, y): return x / y
5
-
6
- lt = __lt__ = def(x, y): return x < y
7
- le = __le__ = def(x, y): return x <= y
8
- eq = __eq__ = def(x, y): return x is y
9
- ne = __ne__ = def(x, y): return x is not y
10
- ge = __ge__ = def(x, y): return x >= y
11
- gt = __gt__ = def(x, y): return x > y
1
+ add = __add__ = def(x, y): return x + y
2
+ sub = __sub__ = def(x, y): return x - y
3
+ mul = __mul__ = def(x, y): return x * y
4
+ div = __div__ = def(x, y): return x / y
5
+
6
+ lt = __lt__ = def(x, y): return x < y
7
+ le = __le__ = def(x, y): return x <= y
8
+ eq = __eq__ = def(x, y): return x is y
9
+ ne = __ne__ = def(x, y): return x is not y
10
+ ge = __ge__ = def(x, y): return x >= y
11
+ gt = __gt__ = def(x, y): return x > y
@@ -1,20 +1,20 @@
1
- # vim:fileencoding=utf-8
2
- # License: BSD Copyright: 2016, Kovid Goyal <kovid at kovidgoyal.net>
3
- # globals: ρσ_str
4
-
5
- def strings():
6
- string_funcs = set((
7
- 'capitalize strip lstrip rstrip islower isupper isspace lower upper swapcase title'
8
- ' center count endswith startswith find rfind index rindex format join ljust rjust'
9
- ' partition rpartition replace split rsplit splitlines zfill').split(' '))
10
-
11
- if not arguments.length:
12
- exclude = {'split', 'replace'}
13
- elif arguments[0]:
14
- exclude = Array.prototype.slice.call(arguments)
15
- else:
16
- exclude = None
17
- if exclude:
18
- string_funcs = string_funcs.difference(set(exclude))
19
- for name in string_funcs:
20
- String.prototype[name] = ρσ_str.prototype[name]
1
+ # vim:fileencoding=utf-8
2
+ # License: BSD Copyright: 2016, Kovid Goyal <kovid at kovidgoyal.net>
3
+ # globals: ρσ_str
4
+
5
+ def strings():
6
+ string_funcs = set((
7
+ 'capitalize strip lstrip rstrip islower isupper isspace lower upper swapcase title'
8
+ ' center count endswith startswith find rfind index rindex format join ljust rjust'
9
+ ' partition rpartition replace split rsplit splitlines zfill expandtabs').split(' '))
10
+
11
+ if not arguments.length:
12
+ exclude = {'split', 'replace'}
13
+ elif arguments[0]:
14
+ exclude = Array.prototype.slice.call(arguments)
15
+ else:
16
+ exclude = None
17
+ if exclude:
18
+ string_funcs = string_funcs.difference(set(exclude))
19
+ for name in string_funcs:
20
+ String.prototype[name] = ρσ_str.prototype[name]