npm install fails on Ubuntu

System: Ubuntu 20.10, all software up-to-date. Node.js and NPM versions are in the logs.
This is a fresh clone on a new machine, so there isn't a node_modules folder yet. Trying to install better-sqlite3 or any dependents fails.
Command output:
vertice@TerminalX:~/Documents/dev/Resi/Resistance-Bot$ npm i better-sqlite3
npm ERR! code 1
npm ERR! path /home/vertice/Documents/dev/Resi/Resistance-Bot/node_modules/better-sqlite3
npm ERR! command failed
npm ERR! command sh -c prebuild-install || npm run build-release

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/vertice/.npm/_logs/2021-02-25T20_33_16_138Z-debug.log

Log:
0 verbose cli [
0 verbose cli   '/snap/node/3790/bin/node',
0 verbose cli   '/usr/local/bin/npm',
0 verbose cli   'i',
0 verbose cli   'better-sqlite3'
0 verbose cli ]
1 info using<EMAIL_ADDRESS>2 info using<EMAIL_ADDRESS>3 timing config:load:defaults Completed in 3ms
4 timing config:load:file:/usr/local/lib/node_modules/npm/npmrc Completed in 2ms
5 timing config:load:builtin Completed in 3ms
6 timing config:load:cli Completed in 3ms
7 timing config:load:env Completed in 1ms
8 timing config:load:file:/home/vertice/Documents/dev/Resi/Resistance-Bot/.npmrc Completed in 0ms
9 timing config:load:project Completed in 1ms
10 timing config:load:file:/home/vertice/.npmrc Completed in 0ms
11 timing config:load:user Completed in 0ms
12 timing config:load:file:/snap/node/3790/etc/npmrc Completed in 0ms
13 timing config:load:global Completed in 2ms
14 timing config:load:cafile Completed in 0ms
15 timing config:load:validate Completed in 1ms
16 timing config:load:setUserAgent Completed in 1ms
17 timing config:load:setEnvs Completed in 1ms
18 timing config:load Completed in 16ms
19 verbose npm-session ac1c94546a3923d9
20 timing npm:load Completed in 32ms
21 timing arborist:ctor Completed in 1ms
22 timing idealTree:init Completed in 416ms
23 timing idealTree:userRequests Completed in 5ms
24 silly idealTree buildDeps
25 silly fetch manifest better-sqlite3@*
26 http fetch GET 304 https://registry.npmjs.org/better-sqlite3 1046ms (from cache)
27 silly placeDep ROOT<EMAIL_ADDRESS>REPLACE for<EMAIL_ADDRESS>want: *
28 silly fetch manifest<EMAIL_ADDRESS>29 http fetch GET 304 https://registry.npmjs.org/tar 95ms (from cache)
30 timing idealTree:#root Completed in 1165ms
31 silly placeDep ROOT<EMAIL_ADDRESS>OK for<EMAIL_ADDRESS>want: ^6.0.5
32 silly fetch manifest<EMAIL_ADDRESS>33 silly fetch manifest<EMAIL_ADDRESS>34 silly fetch manifest<EMAIL_ADDRESS>35 silly fetch manifest<EMAIL_ADDRESS>36 silly fetch manifest<EMAIL_ADDRESS>37 silly fetch manifest<EMAIL_ADDRESS>38 http fetch GET 304 https://registry.npmjs.org/chownr 101ms (from cache)
39 http fetch GET 304 https://registry.npmjs.org/fs-minipass 294ms (from cache)
40 http fetch GET 304 https://registry.npmjs.org/mkdirp 292ms (from cache)
41 http fetch GET 304 https://registry.npmjs.org/minipass 296ms (from cache)
42 http fetch GET 304 https://registry.npmjs.org/minizlib 297ms (from cache)
43 http fetch GET 304 https://registry.npmjs.org/yallist 294ms (from cache)
44 timing idealTree:node_modules/better-sqlite3 Completed in 306ms
45 silly placeDep node_modules/tar<EMAIL_ADDRESS>OK for<EMAIL_ADDRESS>want: ^2.0.0
46 silly placeDep ROOT<EMAIL_ADDRESS>OK for<EMAIL_ADDRESS>want: ^2.0.0
47 silly placeDep ROOT<EMAIL_ADDRESS>OK for<EMAIL_ADDRESS>want: ^3.0.0
48 silly placeDep ROOT<EMAIL_ADDRESS>OK for<EMAIL_ADDRESS>want: ^2.1.1
49 silly placeDep node_modules/tar<EMAIL_ADDRESS>OK for<EMAIL_ADDRESS>want: ^1.0.3
50 silly placeDep ROOT<EMAIL_ADDRESS>OK for<EMAIL_ADDRESS>want: ^4.0.0
51 timing idealTree:node_modules/tar Completed in 14ms
52 timing idealTree:node_modules/fs-minipass Completed in 0ms
53 timing idealTree:node_modules/minipass Completed in 0ms
54 timing idealTree:node_modules/minizlib Completed in 0ms
55 timing idealTree:node_modules/yallist Completed in 0ms
56 timing idealTree:node_modules/tar/node_modules/chownr Completed in 0ms
57 timing idealTree:node_modules/tar/node_modules/mkdirp Completed in 0ms
58 timing idealTree:buildDeps Completed in 1489ms
59 timing idealTree:fixDepFlags Completed in 6ms
60 timing idealTree Completed in 1919ms
61 timing reify:loadTrees Completed in 1922ms
62 timing reify:diffTrees Completed in 15ms
63 silly reify moves {}
64 timing reify:retireShallow Completed in 0ms
65 timing reify:createSparse Completed in 90ms
66 timing reify:loadBundles Completed in 0ms
67 http fetch POST 200 https://registry.npmjs.org/-/npm/v1/security/advisories/bulk 2434ms
68 timing auditReport:getReport Completed in 2438ms
69 timing auditReport:init Completed in 0ms
70 timing reify:audit Completed in 2440ms
71 timing reifyNode:node_modules/setimmediate Completed in 2614ms
72 timing reifyNode:node_modules/spdx-exceptions Completed in 2621ms
73 timing reifyNode:node_modules/natural-compare Completed in 2610ms
74 timing reifyNode:node_modules/tar/node_modules/chownr Completed in 2665ms
75 timing reifyNode:node_modules/wrappy Completed in 2665ms
76 timing reifyNode:node_modules/validate-npm-package-license Completed in 2666ms
77 timing reifyNode:node_modules/table/node_modules/string-width Completed in 2668ms
78 timing reifyNode:node_modules/table/node_modules/is-fullwidth-code-point Completed in 2668ms
79 timing reifyNode:node_modules/table/node_modules/ansi-regex Completed in 2669ms
80 timing reifyNode:node_modules/strip-json-comments Completed in 2668ms
81 timing reifyNode:node_modules/strip-bom Completed in 2669ms
82 timing reifyNode:node_modules/strip-ansi Completed in 2669ms
83 timing reifyNode:node_modules/spdx-license-ids Completed in 2671ms
84 timing reifyNode:node_modules/which-pm-runs Completed in 2676ms
85 timing reifyNode:node_modules/slice-ansi Completed in 2676ms
86 timing reifyNode:node_modules/slice-ansi/node_modules/is-fullwidth-code-point Completed in 2677ms
87 timing reifyNode:node_modules/simple-get Completed in 2677ms
88 timing reifyNode:node_modules/resolve-from Completed in 2678ms
89 timing reifyNode:node_modules/string-width Completed in 2682ms
90 timing reifyNode:node_modules/read-pkg-up Completed in 2679ms
91 timing reifyNode:node_modules/read-pkg Completed in 2680ms
92 timing reifyNode:node_modules/shebang-command Completed in 2682ms
93 timing reifyNode:node_modules/process-nextick-args Completed in 2681ms
94 timing reifyNode:node_modules/wide-align Completed in 2691ms
95 timing reifyNode:node_modules/pkg-dir Completed in 2682ms
96 timing reifyNode:node_modules/pkg-conf/node_modules/parse-json Completed in 2683ms
97 timing reifyNode:node_modules/pkg-conf/node_modules/p-locate Completed in 2676ms
98 timing reifyNode:node_modules/pkg-conf/node_modules/locate-path Completed in 2676ms
99 timing reifyNode:node_modules/pkg-conf/node_modules/find-up Completed in 2678ms
100 timing reifyNode:node_modules/pify Completed in 2679ms
101 timing reifyNode:node_modules/path-type Completed in 2680ms
102 timing reifyNode:node_modules/pkg-conf/node_modules/pify Completed in 2688ms
103 timing reifyNode:node_modules/path-is-absolute Completed in 2681ms
104 timing reifyNode:node_modules/path-exists Completed in 2681ms
105 timing reifyNode:node_modules/parent-module Completed in 2681ms
106 timing reifyNode:node_modules/once Completed in 2681ms
107 timing reifyNode:node_modules/object-assign Completed in 2685ms
108 timing reifyNode:node_modules/number-is-nan Completed in 2686ms
109 timing reifyNode:node_modules/ms Completed in 2686ms
110 timing reifyNode:node_modules/mkdirp-classic Completed in 2687ms
111 timing reifyNode:node_modules/locate-path Completed in 2688ms
112 timing reifyNode:node_modules/load-json-file Completed in 2688ms
113 timing reifyNode:node_modules/p-try Completed in 2691ms
114 timing reifyNode:node_modules/is-glob Completed in 2684ms
115 timing reifyNode:node_modules/is-fullwidth-code-point Completed in 2685ms
116 timing reifyNode:node_modules/is-extglob Completed in 2685ms
117 timing reifyNode:node_modules/ini Completed in 2685ms
118 timing reifyNode:node_modules/inflight Completed in 2685ms
119 timing reifyNode:node_modules/imurmurhash Completed in 2686ms
120 timing reifyNode:node_modules/p-locate Completed in 2698ms
121 timing reifyNode:node_modules/p-limit Completed in 2699ms
122 timing reifyNode:node_modules/has-unicode Completed in 2687ms
123 timing reifyNode:node_modules/has-flag Completed in 2687ms
124 timing reifyNode:node_modules/glob-parent Completed in 2687ms
125 timing reifyNode:node_modules/find-up Completed in 2688ms
126 timing reifyNode:node_modules/fast-levenshtein Completed in 2690ms
127 timing reifyNode:node_modules/eslint-module-utils/node_modules/ms Completed in 2691ms
128 timing reifyNode:node_modules/eslint-import-resolver-node/node_modules/ms Completed in 2691ms
129 timing reifyNode:node_modules/eslint-plugin-import/node_modules/ms Completed in 2692ms
130 timing reifyNode:node_modules/end-of-stream Completed in 2691ms
131 timing reifyNode:node_modules/contains-path Completed in 2692ms
132 timing reifyNode:node_modules/escape-string-regexp Completed in 2694ms
133 timing reifyNode:node_modules/code-point-at Completed in 2691ms
134 timing reifyNode:node_modules/chownr Completed in 2692ms
135 timing reifyNode:node_modules/chalk/node_modules/color-name Completed in 2692ms
136 timing reifyNode:node_modules/brace-expansion Completed in 2692ms
137 timing reifyNode:node_modules/error-ex Completed in 2697ms
138 timing reifyNode:node_modules/astral-regex Completed in 2694ms
139 timing reifyNode:node_modules/aproba Completed in 2694ms
140 timing reifyNode:node_modules/ansi-styles Completed in 2695ms
141 timing reifyNode:node_modules/ansi-regex Completed in 2695ms
142 timing reifyNode:node_modules/@types/json5 Completed in 2695ms
143 timing reifyNode:node_modules/minipass Completed in 2740ms
144 timing reifyNode:node_modules/fs-minipass Completed in 2740ms
145 timing reifyNode:node_modules/xdg-basedir Completed in 2741ms
146 timing reifyNode:node_modules/write Completed in 2740ms
147 timing reifyNode:node_modules/word-wrap Completed in 2741ms
148 timing reifyNode:node_modules/bindings Completed in 2701ms
149 timing reifyNode:node_modules/tunnel-agent Completed in 2741ms
150 timing reifyNode:node_modules/table/node_modules/strip-ansi Completed in 2741ms
151 timing reifyNode:node_modules/supports-color Completed in 2741ms
152 timing reifyNode:node_modules/shebang-regex Completed in 2740ms
153 timing reifyNode:node_modules/set-blocking Completed in 2740ms
154 timing reifyNode:node_modules/serialize-javascript Completed in 2744ms
155 timing reifyNode:node_modules/pkg-conf/node_modules/p-try Completed in 2741ms
156 timing reifyNode:node_modules/pkg-conf/node_modules/p-limit Completed in 2735ms
157 timing reifyNode:node_modules/pkg-conf/node_modules/load-json-file Completed in 2735ms
158 timing reifyNode:node_modules/path-key Completed in 2736ms
159 timing reifyNode:node_modules/pkg-conf Completed in 2745ms
160 timing reifyNode:node_modules/mimic-response Completed in 2738ms
161 timing reifyNode:node_modules/lru-cache Completed in 2738ms
162 timing reifyNode:node_modules/json-parse-better-errors Completed in 2740ms
163 timing reifyNode:node_modules/inherits Completed in 2735ms
164 timing reifyNode:node_modules/import-fresh Completed in 2735ms
165 timing reifyNode:node_modules/ieee754 Completed in 2736ms
166 timing reifyNode:node_modules/get-stdin Completed in 2736ms
167 timing reifyNode:node_modules/fs-constants Completed in 2737ms
168 timing reifyNode:node_modules/eslint-import-resolver-node Completed in 2739ms
169 timing reifyNode:node_modules/eslint-config-standard-jsx Completed in 2739ms
170 timing reifyNode:node_modules/eslint/node_modules/strip-json-comments Completed in 2739ms
171 timing reifyNode:node_modules/eslint/node_modules/strip-ansi Completed in 2740ms
172 timing reifyNode:node_modules/eslint/node_modules/ansi-regex Completed in 2740ms
173 timing reifyNode:node_modules/decompress-response Completed in 2739ms
174 timing reifyNode:node_modules/console-control-strings Completed in 2741ms
175 timing reifyNode:node_modules/chalk/node_modules/supports-color Completed in 2740ms
176 timing reifyNode:node_modules/chalk/node_modules/has-flag Completed in 2741ms
177 timing reifyNode:node_modules/callsites Completed in 2742ms
178 timing reifyNode:node_modules/base64-js Completed in 2743ms
179 timing reifyNode:node_modules/balanced-match Completed in 2743ms
180 timing reifyNode:node_modules/@eslint/eslintrc/node_modules/strip-json-comments Completed in 2744ms
181 timing reifyNode:node_modules/@babel/highlight Completed in 2745ms
182 timing reifyNode:node_modules/@babel/code-frame Completed in 2745ms
183 timing reifyNode:node_modules/yallist Completed in 2790ms
184 timing reifyNode:node_modules/util-deprecate Completed in 2788ms
185 timing reifyNode:node_modules/spdx-correct Completed in 2789ms
186 timing reifyNode:node_modules/signal-exit Completed in 2789ms
187 timing reifyNode:node_modules/rimraf Completed in 2790ms
188 timing reifyNode:node_modules/path-parse Completed in 2781ms
189 timing reifyNode:node_modules/minimatch Completed in 2781ms
190 timing reifyNode:node_modules/js-tokens Completed in 2791ms
191 timing reifyNode:node_modules/fs.realpath Completed in 2787ms
192 timing reifyNode:node_modules/expand-template Completed in 2788ms
193 timing reifyNode:node_modules/esrecurse Completed in 2789ms
194 timing reifyNode:node_modules/combined-stream Completed in 2789ms
195 timing reifyNode:node_modules/chalk/node_modules/ansi-styles Completed in 2789ms
196 timing reifyNode:node_modules/minizlib Completed in 2834ms
197 timing reifyNode:node_modules/which Completed in 2833ms
198 timing reifyNode:node_modules/v8-compile-cache Completed in 2834ms
199 timing reifyNode:node_modules/string_decoder Completed in 2840ms
200 timing reifyNode:node_modules/simple-concat Completed in 2840ms
201 timing reifyNode:node_modules/safe-buffer Completed in 2840ms
202 timing reifyNode:node_modules/standardx Completed in 2845ms
203 timing reifyNode:node_modules/pump Completed in 2842ms
204 timing reifyNode:node_modules/npmlog Completed in 2835ms
205 timing reifyNode:node_modules/napi-build-utils Completed in 2839ms
206 timing reifyNode:node_modules/mkdirp Completed in 2839ms
207 timing reifyNode:node_modules/mime-types Completed in 2840ms
208 timing reifyNode:node_modules/has Completed in 2833ms
209 timing reifyNode:node_modules/graceful-fs Completed in 2833ms
210 timing reifyNode:node_modules/file-entry-cache Completed in 2846ms
211 timing reifyNode:node_modules/deep-extend Completed in 2855ms
212 timing reifyNode:node_modules/delayed-stream Completed in 2855ms
213 timing reifyNode:node_modules/color-name Completed in 2855ms
214 timing reifyNode:node_modules/type-check Completed in 2900ms
215 timing reifyNode:node_modules/spdx-expression-parse Completed in 2900ms
216 timing reifyNode:node_modules/randombytes Completed in 2897ms
217 timing reifyNode:node_modules/punycode Completed in 2898ms
218 timing reifyNode:node_modules/acorn-jsx Completed in 2865ms
219 timing reifyNode:node_modules/pkg-conf/node_modules/type-fest Completed in 2897ms
220 timing reifyNode:node_modules/loose-envify Completed in 2890ms
221 timing reifyNode:node_modules/is-arrayish Completed in 2885ms
222 timing reifyNode:node_modules/globals Completed in 2884ms
223 timing reifyNode:node_modules/isarray Completed in 2894ms
224 timing reifyNode:node_modules/eslint-config-standard Completed in 2884ms
225 timing reifyNode:node_modules/progress Completed in 2921ms
226 timing reifyNode:node_modules/levn Completed in 2913ms
227 timing reifyNode:node_modules/hosted-git-info Completed in 2907ms
228 timing reifyNode:node_modules/espree/node_modules/eslint-visitor-keys Completed in 2909ms
229 timing reifyNode:node_modules/eslint-visitor-keys Completed in 2908ms
230 timing reifyNode:node_modules/eslint-utils/node_modules/eslint-visitor-keys Completed in 2909ms
231 timing reifyNode:node_modules/debug Completed in 2916ms
232 timing reifyNode:node_modules/core-util-is Completed in 2917ms
233 timing reifyNode:node_modules/chalk/node_modules/color-convert Completed in 2916ms
234 timing reifyNode:node_modules/concat-map Completed in 2918ms
235 timing reifyNode:node_modules/color-convert Completed in 2919ms
236 timing reifyNode:node_modules/delegates Completed in 2920ms
237 timing reifyNode:node_modules/ansi-colors Completed in 2918ms
238 timing reifyNode:node_modules/standard-engine Completed in 2960ms
239 timing reifyNode:node_modules/parse-json Completed in 2949ms
240 timing reifyNode:node_modules/noop-logger Completed in 2951ms
241 timing reifyNode:node_modules/isexe Completed in 2951ms
242 timing reifyNode:node_modules/estraverse Completed in 2944ms
243 timing reifyNode:node_modules/esrecurse/node_modules/estraverse Completed in 2945ms
244 timing reifyNode:node_modules/esquery/node_modules/estraverse Completed in 2945ms
245 timing reifyNode:node_modules/detect-libc Completed in 2945ms
246 timing reifyNode:node_modules/@babel/highlight/node_modules/chalk Completed in 2943ms
247 timing reifyNode:node_modules/tar-stream Completed in 2986ms
248 timing reifyNode:node_modules/semver Completed in 2984ms
249 timing reifyNode:node_modules/react-is Completed in 2984ms
250 timing reifyNode:node_modules/optionator Completed in 2980ms
251 timing reifyNode:node_modules/ignore Completed in 2969ms
252 timing reifyNode:node_modules/functional-red-black-tree Completed in 2969ms
253 timing reifyNode:node_modules/flat-cache Completed in 2970ms
254 timing reifyNode:node_modules/file-uri-to-path Completed in 2970ms
255 timing reifyNode:node_modules/chalk Completed in 2969ms
256 timing reifyNode:node_modules/are-we-there-yet Completed in 2969ms
257 timing reifyNode:node_modules/@babel/helper-validator-identifier Completed in 2969ms
258 timing reifyNode:node_modules/glob Completed in 2995ms
259 timing reifyNode:node_modules/deep-is Completed in 2996ms
260 timing reifyNode:node_modules/@discordjs/form-data Completed in 2994ms
261 timing reifyNode:node_modules/@discordjs/collection Completed in 2995ms
262 timing reifyNode:node_modules/cross-spawn Completed in 3001ms
263 timing reifyNode:node_modules/json-schema-traverse Completed in 3024ms
264 timing reifyNode:node_modules/eslint-plugin-node/node_modules/semver Completed in 3018ms
265 timing reifyNode:node_modules/eslint-plugin-node/node_modules/ignore Completed in 3019ms
266 timing reifyNode:node_modules/emoji-regex Completed in 3017ms
267 timing reifyNode:node_modules/define-properties Completed in 3018ms
268 timing reifyNode:node_modules/buffer Completed in 3016ms
269 timing reifyNode:node_modules/tar/node_modules/mkdirp Completed in 3059ms
270 timing reifyNode:node_modules/side-channel Completed in 3055ms
271 timing reifyNode:node_modules/normalize-package-data Completed in 3045ms
272 timing reifyNode:node_modules/fast-deep-equal Completed in 3036ms
273 timing reifyNode:node_modules/esutils Completed in 3036ms
274 timing reifyNode:node_modules/prelude-ls Completed in 3076ms
275 timing reifyNode:node_modules/node-abi Completed in 3067ms
276 timing reifyNode:node_modules/is-string Completed in 3067ms
277 timing reifyNode:node_modules/is-regex Completed in 3061ms
278 timing reifyNode:node_modules/internal-slot Completed in 3061ms
279 timing reifyNode:node_modules/github-from-package Completed in 3060ms
280 timing reifyNode:node_modules/function-bind Completed in 3060ms
281 timing reifyNode:node_modules/flatted Completed in 3060ms
282 timing reifyNode:node_modules/eslint-module-utils Completed in 3061ms
283 timing reifyNode:node_modules/rc Completed in 3109ms
284 timing reifyNode:node_modules/object-keys Completed in 3101ms
285 timing reifyNode:node_modules/is-date-object Completed in 3094ms
286 timing reifyNode:node_modules/eslint-plugin-import/node_modules/doctrine Completed in 3090ms
287 timing reifyNode:node_modules/call-bind Completed in 3087ms
288 timing reifyNode:node_modules/on-change Completed in 3116ms
289 timing reifyNode:node_modules/bl Completed in 3102ms
290 timing reifyNode:node_modules/text-table Completed in 3144ms
291 timing reifyNode:node_modules/is-symbol Completed in 3129ms
292 timing reifyNode:node_modules/is-callable Completed in 3122ms
293 timing reifyNode:node_modules/espree Completed in 3119ms
294 timing reifyNode:node_modules/eslint-plugin-react/node_modules/doctrine Completed in 3119ms
295 timing reifyNode:node_modules/doctrine Completed in 3118ms
296 timing reifyNode:node_modules/abort-controller Completed in 3125ms
297 timing reifyNode:node_modules/mime-db Completed in 3151ms
298 timing reifyNode:node_modules/json-stable-stringify-without-jsonify Completed in 3151ms
299 timing reifyNode:node_modules/is-core-module Completed in 3145ms
300 timing reifyNode:node_modules/prop-types Completed in 3172ms
301 timing reifyNode:node_modules/prebuild-install Completed in 3172ms
302 timing reifyNode:node_modules/is-negative-zero Completed in 3156ms
303 timing reifyNode:node_modules/get-intrinsic Completed in 3156ms
304 timing reifyNode:node_modules/asynckit Completed in 3151ms
305 timing reifyNode:node_modules/standard Completed in 3189ms
306 timing reifyNode:node_modules/regexp.prototype.flags Completed in 3187ms
307 timing reifyNode:node_modules/node-fetch Completed in 3178ms
308 timing reifyNode:node_modules/has-symbols Completed in 3174ms
309 timing reifyNode:node_modules/fast-json-stable-stringify Completed in 3172ms
310 timing reifyNode:node_modules/eslint-plugin-import/node_modules/debug Completed in 3171ms
311 timing reifyNode:node_modules/eslint-import-resolver-node/node_modules/debug Completed in 3172ms
312 timing reifyNode:node_modules/eslint-module-utils/node_modules/debug Completed in 3173ms
313 timing reifyNode:node_modules/array.prototype.flatmap Completed in 3168ms
314 timing reifyNode:node_modules/array.prototype.flat Completed in 3168ms
315 timing reifyNode:node_modules/tweetnacl Completed in 3210ms
316 timing reifyNode:node_modules/eslint-scope Completed in 3182ms
317 timing reifyNode:node_modules/sprintf-js Completed in 3216ms
318 timing reifyNode:node_modules/regexpp Completed in 3214ms
319 timing reifyNode:node_modules/json5 Completed in 3203ms
320 timing reifyNode:node_modules/es-to-primitive Completed in 3191ms
321 timing reifyNode:node_modules/gauge Completed in 3202ms
322 timing reifyNode:node_modules/event-target-shim Completed in 3200ms
323 timing reifyNode:node_modules/minimist Completed in 3219ms
324 timing reifyNode:node_modules/type-fest Completed in 3241ms
325 timing reifyNode:node_modules/string.prototype.trimstart Completed in 3249ms
326 timing reifyNode:node_modules/string.prototype.trimend Completed in 3249ms
327 timing reifyNode:node_modules/esprima Completed in 3222ms
328 timing reifyNode:node_modules/ws Completed in 3259ms
329 timing reifyNode:node_modules/eslint-utils Completed in 3227ms
330 timing reifyNode:node_modules/enmap Completed in 3229ms
331 timing reifyNode:node_modules/object.fromentries Completed in 3252ms
332 timing reifyNode:node_modules/prism-media Completed in 3263ms
333 timing reifyNode:node_modules/eslint-plugin-promise Completed in 3239ms
334 timing reifyNode:node_modules/object.values Completed in 3260ms
335 timing reifyNode:node_modules/object.entries Completed in 3259ms
336 timing reifyNode:node_modules/object.assign Completed in 3260ms
337 timing reifyNode:node_modules/string.prototype.matchall Completed in 3300ms
338 timing reifyNode:node_modules/readable-stream Completed in 3367ms
339 timing reifyNode:node_modules/tar-stream/node_modules/readable-stream Completed in 3430ms
340 timing reifyNode:node_modules/bl/node_modules/readable-stream Completed in 3398ms
341 timing reifyNode:node_modules/tsconfig-paths Completed in 3448ms
342 timing reifyNode:node_modules/tar Completed in 3454ms
343 timing reifyNode:node_modules/@eslint/eslintrc Completed in 3416ms
344 timing reifyNode:node_modules/argparse Completed in 3429ms
345 timing reifyNode:node_modules/object-inspect Completed in 3456ms
346 timing reifyNode:node_modules/tar-fs Completed in 3477ms
347 timing reifyNode:node_modules/esquery Completed in 3499ms
348 timing reifyNode:node_modules/eslint/node_modules/semver Completed in 3521ms
349 timing reifyNode:node_modules/enquirer Completed in 3572ms
350 timing reifyNode:node_modules/js-yaml Completed in 3637ms
351 timing reifyNode:node_modules/uri-js Completed in 3701ms
352 timing reifyNode:node_modules/acorn Completed in 3682ms
353 timing reifyNode:node_modules/table Completed in 3749ms
354 timing reifyNode:node_modules/eslint-plugin-node Completed in 3817ms
355 timing reifyNode:node_modules/eslint-plugin-es Completed in 3843ms
356 timing reifyNode:node_modules/array-includes Completed in 3846ms
357 timing reifyNode:node_modules/jsx-ast-utils Completed in 3899ms
358 timing reifyNode:node_modules/ajv Completed in 4000ms
359 timing reifyNode:node_modules/resolve Completed in 4054ms
360 timing reifyNode:node_modules/eslint-plugin-react Completed in 4032ms
361 timing reifyNode:node_modules/eslint-plugin-import Completed in 4038ms
362 timing reifyNode:node_modules/better-sqlite3 Completed in 4207ms
363 timing reifyNode:node_modules/discord.js Completed in 4430ms
364 timing reifyNode:node_modules/eslint Completed in 4879ms
365 timing reifyNode:node_modules/internal-slot/node_modules/es-abstract Completed in 4971ms
366 timing reifyNode:node_modules/es-abstract Completed in 5102ms
367 timing reifyNode:node_modules/lodash Completed in 5190ms
368 timing reify:unpack Completed in 5215ms
369 timing reify:unretire Completed in 2ms
370 timing build:queue Completed in 110ms
371 timing build:link:node_modules/acorn Completed in 19ms
372 timing build:link:node_modules/eslint-plugin-node/node_modules/semver Completed in 14ms
373 timing build:link:node_modules/eslint/node_modules/semver Completed in 14ms
374 timing build:link:node_modules/tar/node_modules/mkdirp Completed in 13ms
375 timing build:link:node_modules/detect-libc Completed in 16ms
376 timing build:link:node_modules/eslint Completed in 16ms
377 timing build:link:node_modules/esprima Completed in 17ms
378 timing build:link:node_modules/js-yaml Completed in 16ms
379 timing build:link:node_modules/json5 Completed in 16ms
380 timing build:link:node_modules/loose-envify Completed in 16ms
381 timing build:link:node_modules/mkdirp Completed in 16ms
382 timing build:link:node_modules/prebuild-install Completed in 16ms
383 timing build:link:node_modules/rc Completed in 15ms
384 timing build:link:node_modules/rimraf Completed in 15ms
385 timing build:link:node_modules/semver Completed in 15ms
386 timing build:link:node_modules/standard Completed in 15ms
387 timing build:link:node_modules/standardx Completed in 15ms
388 timing build:link:node_modules/which Completed in 15ms
389 timing build:link Completed in 20ms
390 info run<EMAIL_ADDRESS>install node_modules/better-sqlite3 prebuild-install || npm run build-release
391 info run<EMAIL_ADDRESS>install { code: 1, signal: null }
392 timing reify:rollback:createSparse Completed in 1319ms
393 timing reify:rollback:retireShallow Completed in 0ms
394 timing command:install Completed in 15157ms
395 verbose stack Error: command failed
395 verbose stack     at ChildProcess.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/index.js:64:27)
395 verbose stack     at ChildProcess.emit (events.js:315:20)
395 verbose stack     at maybeClose (internal/child_process.js:1048:16)
395 verbose stack     at Socket.<anonymous> (internal/child_process.js:439:11)
395 verbose stack     at Socket.emit (events.js:315:20)
395 verbose stack     at Pipe.<anonymous> (net.js:673:12)
396 verbose pkgid<EMAIL_ADDRESS>397 verbose cwd /home/vertice/Documents/dev/Resi/Resistance-Bot
398 verbose Linux 5.8.0-44-generic
399 verbose argv "/snap/node/3790/bin/node" "/usr/local/bin/npm" "i" "better-sqlite3"
400 verbose node v14.16.0
401 verbose npm  v7.5.6
402 error code 1
403 error path /home/vertice/Documents/dev/Resi/Resistance-Bot/node_modules/better-sqlite3
404 error command failed
405 error command sh -c prebuild-install || npm run build-release
406 verbose exit 1

Also having this issue.

same

I was able to fix the issue by ensuring node-gyp requirements were met, installing gcc, make and python3.6+. After installing build-essentials, the issue seemed to fix itself.

I was able to fix the issue by ensuring node-gyp requirements were met, installing gcc, make and python3.6+. After installing build-essentials, the issue seemed to fix itself.

How come these don't get installed automatically like dependencies usually do?

Problem resolved after reinstalling all related packages. I think there was an issue with node-gyp, but I can't tell. Closing issue.


User Testing Feedback

This Epic consists of the feedback obtained from the various user testing sessions throughout February and March.

closing becauase its empty


PyTorch object detection - evaluate function call - object of type <class 'numpy.float64'> cannot be safely interpreted as an integer

I recently made this post on SO:
https://stackoverflow.com/questions/59493606/pytorch-object-detection-evaluate-function-call-object-of-type-class-numpy
I'm not sure if I should have posted on SO or here first, so I figured I'd ask here as well.
I'm attempting to get this PyTorch person detection example running:
https://pytorch.org/tutorials/intermediate/torchvision_tutorial.html
I'm using Ubuntu 18.04. Here is a summary of the steps I've performed:

Stock Ubuntu 18.04 install on a Lenovo ThinkPad X1 Extreme Gen 2 with a GTX 1650 GPU.

Perform a standard CUDA 10.0 / cuDNN 7.4 install. I'd rather not restate all the steps as this post is going to be more than long enough already. This is a standard procedure, pretty much any link found via googling is what I followed.

Install torch and torchvision

From this link on the PyTorch site:

https://pytorch.org/tutorials/intermediate/torchvision_tutorial.html
I saved the source available from the link at the bottom:
https://pytorch.org/tutorials/_static/tv-training-code.py
To a directory I made, PennFudanExample

I did the following (found at the top of the above linked notebook):

Install the CoCo API into Python:
cd ~
git clone https://github.com/cocodataset/cocoapi.git
cd cocoapi/PythonAPI

open Makefile in gedit, change the two instances of "python" to "python3", then:
python3 setup.py build_ext --inplace
sudo python3 setup.py install

Get the necessary files the above linked files need to run:
cd ~
git clone https://github.com/pytorch/vision.git
cd vision
git checkout v0.5.0

from ~/vision/references/detection, copy coco_eval.py, coco_utils.py, engine.py, transforms.py, and utils.py to directory PennFudanExample.

Download the Penn Fudan Pedestrian dataset from the link on the above page:

https://www.cis.upenn.edu/~jshi/ped_html/PennFudanPed.zip
then unzip and put in directory PennFudanExample

The only change I made to tv-training-code.py was to change the training batch size from 2 to 1 to prevent a GPU out of memory crash, see this other post I made here:

PyTorch Object Detection with GPU on Ubuntu 18.04 - RuntimeError: CUDA out of memory. Tried to allocate xx.xx MiB
Here is tv-training-code.py as I'm running it with the slight batch size edit I mentioned:
# Sample code from the TorchVision 0.3 Object Detection Finetuning Tutorial
# http://pytorch.org/tutorials/intermediate/torchvision_tutorial.html

import os
import numpy as np
import torch
from PIL import Image

import torchvision
from torchvision.models.detection.faster_rcnn import FastRCNNPredictor
from torchvision.models.detection.mask_rcnn import MaskRCNNPredictor

from engine import train_one_epoch, evaluate
import utils
import transforms as T

class PennFudanDataset(object):
    def __init__(self, root, transforms):
        self.root = root
        self.transforms = transforms
        # load all image files, sorting them to
        # ensure that they are aligned
        self.imgs = list(sorted(os.listdir(os.path.join(root, "PNGImages"))))
        self.masks = list(sorted(os.listdir(os.path.join(root, "PedMasks"))))

    def __getitem__(self, idx):
        # load images ad masks
        img_path = os.path.join(self.root, "PNGImages", self.imgs[idx])
        mask_path = os.path.join(self.root, "PedMasks", self.masks[idx])
        img = Image.open(img_path).convert("RGB")
        # note that we haven't converted the mask to RGB,
        # because each color corresponds to a different instance
        # with 0 being background
        mask = Image.open(mask_path)

        mask = np.array(mask)
        # instances are encoded as different colors
        obj_ids = np.unique(mask)
        # first id is the background, so remove it
        obj_ids = obj_ids[1:]

        # split the color-encoded mask into a set
        # of binary masks
        masks = mask == obj_ids[:, None, None]

        # get bounding box coordinates for each mask
        num_objs = len(obj_ids)
        boxes = []
        for i in range(num_objs):
            pos = np.where(masks[i])
            xmin = np.min(pos[1])
            xmax = np.max(pos[1])
            ymin = np.min(pos[0])
            ymax = np.max(pos[0])
            boxes.append([xmin, ymin, xmax, ymax])

        boxes = torch.as_tensor(boxes, dtype=torch.float32)
        # there is only one class
        labels = torch.ones((num_objs,), dtype=torch.int64)
        masks = torch.as_tensor(masks, dtype=torch.uint8)

        image_id = torch.tensor([idx])
        area = (boxes[:, 3] - boxes[:, 1]) * (boxes[:, 2] - boxes[:, 0])
        # suppose all instances are not crowd
        iscrowd = torch.zeros((num_objs,), dtype=torch.int64)

        target = {}
        target["boxes"] = boxes
        target["labels"] = labels
        target["masks"] = masks
        target["image_id"] = image_id
        target["area"] = area
        target["iscrowd"] = iscrowd

        if self.transforms is not None:
            img, target = self.transforms(img, target)

        return img, target

    def __len__(self):
        return len(self.imgs)

def get_model_instance_segmentation(num_classes):
    # load an instance segmentation model pre-trained pre-trained on COCO
    model = torchvision.models.detection.maskrcnn_resnet50_fpn(pretrained=True)

    # get number of input features for the classifier
    in_features = model.roi_heads.box_predictor.cls_score.in_features
    # replace the pre-trained head with a new one
    model.roi_heads.box_predictor = FastRCNNPredictor(in_features, num_classes)

    # now get the number of input features for the mask classifier
    in_features_mask = model.roi_heads.mask_predictor.conv5_mask.in_channels
    hidden_layer = 256
    # and replace the mask predictor with a new one
    model.roi_heads.mask_predictor = MaskRCNNPredictor(in_features_mask,
                                                       hidden_layer,
                                                       num_classes)

    return model

def get_transform(train):
    transforms = []
    transforms.append(T.ToTensor())
    if train:
        transforms.append(T.RandomHorizontalFlip(0.5))
    return T.Compose(transforms)

def main():
    # train on the GPU or on the CPU, if a GPU is not available
    device = torch.device('cuda') if torch.cuda.is_available() else torch.device('cpu')

    # our dataset has two classes only - background and person
    num_classes = 2
    # use our dataset and defined transformations
    dataset = PennFudanDataset('PennFudanPed', get_transform(train=True))
    dataset_test = PennFudanDataset('PennFudanPed', get_transform(train=False))

    # split the dataset in train and test set
    indices = torch.randperm(len(dataset)).tolist()
    dataset = torch.utils.data.Subset(dataset, indices[:-50])
    dataset_test = torch.utils.data.Subset(dataset_test, indices[-50:])

    # define training and validation data loaders
    # !!!! CHANGE HERE !!!! For this function call, I changed the batch_size param value from 2 to 1, otherwise this file is exactly as provided from the PyTorch website !!!!
    data_loader = torch.utils.data.DataLoader(
        dataset, batch_size=1, shuffle=True, num_workers=4,
        collate_fn=utils.collate_fn)

    data_loader_test = torch.utils.data.DataLoader(
        dataset_test, batch_size=1, shuffle=False, num_workers=4,
        collate_fn=utils.collate_fn)

    # get the model using our helper function
    model = get_model_instance_segmentation(num_classes)

    # move model to the right device
    model.to(device)

    # construct an optimizer
    params = [p for p in model.parameters() if p.requires_grad]
    optimizer = torch.optim.SGD(params, lr=0.005,
                                momentum=0.9, weight_decay=0.0005)
    # and a learning rate scheduler
    lr_scheduler = torch.optim.lr_scheduler.StepLR(optimizer,
                                                   step_size=3,
                                                   gamma=0.1)

    # let's train it for 10 epochs
    num_epochs = 10

    for epoch in range(num_epochs):
        # train for one epoch, printing every 10 iterations
        train_one_epoch(model, optimizer, data_loader, device, epoch, print_freq=10)
        # update the learning rate
        lr_scheduler.step()
        # evaluate on the test dataset
        evaluate(model, data_loader_test, device=device)

    print("That's it!")

if __name__ == "__main__":
    main()

Here is the full text output including error I'm getting currently:
Epoch: [0]  [  0/120]  eta: 0:01:41  lr: 0.000047  loss: 7.3028 (7.3028)  loss_classifier: 1.0316 (1.0316)  loss_box_reg: 0.0827 (0.0827)  loss_mask: 6.1742 (6.1742)  loss_objectness: 0.0097 (0.0097)  loss_rpn_box_reg: 0.0046 (0.0046)  time: 0.8468  data: 0.0803  max mem: 1067
Epoch: [0]  [ 10/120]  eta: 0:01:02  lr: 0.000467  loss: 2.0995 (3.5058)  loss_classifier: 0.6684 (0.6453)  loss_box_reg: 0.0999 (0.1244)  loss_mask: 1.2471 (2.7069)  loss_objectness: 0.0187 (0.0235)  loss_rpn_box_reg: 0.0060 (0.0057)  time: 0.5645  data: 0.0089  max mem: 1499
Epoch: [0]  [ 20/120]  eta: 0:00:56  lr: 0.000886  loss: 1.0166 (2.1789)  loss_classifier: 0.2844 (0.4347)  loss_box_reg: 0.1631 (0.1540)  loss_mask: 0.4710 (1.5562)  loss_objectness: 0.0187 (0.0242)  loss_rpn_box_reg: 0.0082 (0.0099)  time: 0.5524  data: 0.0020  max mem: 1704
Epoch: [0]  [ 30/120]  eta: 0:00:50  lr: 0.001306  loss: 0.5554 (1.6488)  loss_classifier: 0.1258 (0.3350)  loss_box_reg: 0.1356 (0.1488)  loss_mask: 0.2355 (1.1285)  loss_objectness: 0.0142 (0.0224)  loss_rpn_box_reg: 0.0127 (0.0142)  time: 0.5653  data: 0.0023  max mem: 1756
Epoch: [0]  [ 40/120]  eta: 0:00:45  lr: 0.001726  loss: 0.4520 (1.3614)  loss_classifier: 0.1055 (0.2773)  loss_box_reg: 0.1101 (0.1530)  loss_mask: 0.1984 (0.8981)  loss_objectness: 0.0063 (0.0189)  loss_rpn_box_reg: 0.0139 (0.0140)  time: 0.5621  data: 0.0023  max mem: 1776
Epoch: [0]  [ 50/120]  eta: 0:00:39  lr: 0.002146  loss: 0.3448 (1.1635)  loss_classifier: 0.0622 (0.2346)  loss_box_reg: 0.1004 (0.1438)  loss_mask: 0.1650 (0.7547)  loss_objectness: 0.0033 (0.0172)  loss_rpn_box_reg: 0.0069 (0.0131)  time: 0.5535  data: 0.0022  max mem: 1776
Epoch: [0]  [ 60/120]  eta: 0:00:33  lr: 0.002565  loss: 0.3292 (1.0543)  loss_classifier: 0.0549 (0.2101)  loss_box_reg: 0.1113 (0.1486)  loss_mask: 0.1596 (0.6668)  loss_objectness: 0.0017 (0.0148)  loss_rpn_box_reg: 0.0082 (0.0140)  time: 0.5590  data: 0.0022  max mem: 1776
Epoch: [0]  [ 70/120]  eta: 0:00:28  lr: 0.002985  loss: 0.4105 (0.9581)  loss_classifier: 0.0534 (0.1877)  loss_box_reg: 0.1049 (0.1438)  loss_mask: 0.1709 (0.5995)  loss_objectness: 0.0015 (0.0132)  loss_rpn_box_reg: 0.0133 (0.0138)  time: 0.5884  data: 0.0023  max mem: 1783
Epoch: [0]  [ 80/120]  eta: 0:00:22  lr: 0.003405  loss: 0.3080 (0.8817)  loss_classifier: 0.0441 (0.1706)  loss_box_reg: 0.0875 (0.1343)  loss_mask: 0.1960 (0.5510)  loss_objectness: 0.0015 (0.0122)  loss_rpn_box_reg: 0.0071 (0.0137)  time: 0.5812  data: 0.0023  max mem: 1783
Epoch: [0]  [ 90/120]  eta: 0:00:17  lr: 0.003825  loss: 0.2817 (0.8171)  loss_classifier: 0.0397 (0.1570)  loss_box_reg: 0.0499 (0.1257)  loss_mask: 0.1777 (0.5098)  loss_objectness: 0.0008 (0.0111)  loss_rpn_box_reg: 0.0068 (0.0136)  time: 0.5644  data: 0.0022  max mem: 1794
Epoch: [0]  [100/120]  eta: 0:00:11  lr: 0.004244  loss: 0.2139 (0.7569)  loss_classifier: 0.0310 (0.1446)  loss_box_reg: 0.0327 (0.1163)  loss_mask: 0.1573 (0.4731)  loss_objectness: 0.0003 (0.0101)  loss_rpn_box_reg: 0.0050 (0.0128)  time: 0.5685  data: 0.0022  max mem: 1794
Epoch: [0]  [110/120]  eta: 0:00:05  lr: 0.004664  loss: 0.2139 (0.7160)  loss_classifier: 0.0325 (0.1358)  loss_box_reg: 0.0327 (0.1105)  loss_mask: 0.1572 (0.4477)  loss_objectness: 0.0003 (0.0093)  loss_rpn_box_reg: 0.0047 (0.0128)  time: 0.5775  data: 0.0022  max mem: 1794
Epoch: [0]  [119/120]  eta: 0:00:00  lr: 0.005000  loss: 0.2486 (0.6830)  loss_classifier: 0.0330 (0.1282)  loss_box_reg: 0.0360 (0.1051)  loss_mask: 0.1686 (0.4284)  loss_objectness: 0.0003 (0.0086)  loss_rpn_box_reg: 0.0074 (0.0125)  time: 0.5655  data: 0.0022  max mem: 1794
Epoch: [0] Total time: 0:01:08 (0.5676 s / it)
creating index...
index created!
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/numpy/core/function_base.py", line 117, in linspace
    num = operator.index(num)
TypeError: 'numpy.float64' object cannot be interpreted as an integer

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/cdahms/workspace-apps/PennFudanExample/tv-training-code.py", line 166, in <module>
    main()
  File "/home/cdahms/workspace-apps/PennFudanExample/tv-training-code.py", line 161, in main
    evaluate(model, data_loader_test, device=device)
  File "/usr/local/lib/python3.6/dist-packages/torch/autograd/grad_mode.py", line 49, in decorate_no_grad
    return func(*args, **kwargs)
  File "/home/cdahms/workspace-apps/PennFudanExample/engine.py", line 80, in evaluate
    coco_evaluator = CocoEvaluator(coco, iou_types)
  File "/home/cdahms/workspace-apps/PennFudanExample/coco_eval.py", line 28, in __init__
    self.coco_eval[iou_type] = COCOeval(coco_gt, iouType=iou_type)
  File "/home/cdahms/models/research/pycocotools/cocoeval.py", line 75, in __init__
    self.params = Params(iouType=iouType) # parameters
  File "/home/cdahms/models/research/pycocotools/cocoeval.py", line 527, in __init__
    self.setDetParams()
  File "/home/cdahms/models/research/pycocotools/cocoeval.py", line 506, in setDetParams
    self.iouThrs = np.linspace(.5, 0.95, np.round((0.95 - .5) / .05) + 1, endpoint=True)
  File "<__array_function__ internals>", line 6, in linspace
  File "/usr/local/lib/python3.6/dist-packages/numpy/core/function_base.py", line 121, in linspace
    .format(type(num)))
TypeError: object of type <class 'numpy.float64'> cannot be safely interpreted as an integer.

Process finished with exit code 1

The really strange thing is after I resolved the above-mentioned GPU error this was working for about 1/2 a day and now I'm getting this error, and I could swear I didn't change anything.
I've tried uninstalling and reinstalling torch, torchvision, pycocotools, and for copying the files coco_eval.py, coco_utils.py, engine.py, transforms.py, and utils.py, I've tried checking out torchvision v0.5.0, v0.4.2, and using the latest commit, all produce the same error.
Also, I was working from home yesterday (Christmas) and this error does not happen on my home computer, which is also Ubuntu 18.04 with an NVIDIA GPU.
In Googling for this error one suggestion that is relatively common is to backdate numpy to 1.11.0, but that version is really old now and therefore this would likely cause problems with other packages.
Also in Googleing for this error it seems the general fix is to add a cast to int somewhere or to change a divide by / to // but I'm really hesitant to make changes internal to pycocotools or worse yet inside numpy. Also since error was not occurring previously and is not occurring on another computer I don't suspect this is a good idea anyway.
Fortunately I can comment out the line
evaluate(model, data_loader_test, device=device)
For now and the training will complete, although I don't get the evaluation data (Mean Average Precision, etc.)
About the only thing left I can think of at this point is to format the HD and reinstall Ubuntu 18.04 and everything else, but this will take at least a day, and if this ever happens again I'd really like to know what may be causing it.
Ideas? Suggestions? Additional stuff I should check?

After quite a bit of troubleshooting I found there is a change is numpy 1.18.0 which causes this.  The fix is:
sudo -H pip3 install numpy==1.17.4
A few things I can also mention:
-numpy 1.17.4 was released on November 10th, 2019 and therefore should still be good for quite some time
-There is now a pip package for pycocotools, so instead of the above procedure (cloning and building) you can now simply do:
sudo -H pip3 install pycocotools

Thanks for the heads up and through investigation! This has been fixed in pycocotools already https://github.com/cocodataset/cocoapi/pull/354

Not sure if this is still relevant but I ran into the same issue with numpy version 1.18.1 and the most recent pycocotools.

@nkalavak this should have been fixed with the latest installation of pycocotools. If you still face those issues, please open a new issue in the pycocotools repo

For those curious, I believe they have the issue at https://github.com/cocodataset/cocoapi/issues/356

@EMCP that issue has been fixed in cocodataset/cocoapi#354


make use of Unix-domain socket + yum depreciated

When database and Mattermost are on the same machine, best to communicate is to use the unix socket mechanism. It offers tighter security and a faster connection.

Yum is no longer used in Red Hat family. dnf is the new package manager.

Thanks @gabx, Does this PR replace #567? It seems that the PR's have conflicts with each other.

@esethna well, it will be easier to remove the #567 and keep this one indeed. It is more complete and detailed.

Thanks, closed the old one. Queuing this one for review.

In case you want some explanations about the reasons for my PR, you will find me on your mattermost team, user tth. Do not hesitate to ping when needed.

+1 other than the comment above

Hi @gabx, I submitted a small PR on your repo for a few formatting tweaks https://github.com/gabx/docs/pull/1
Other than these it looks good, please review when you have a chance?

On Mon, Oct 24, 2016 at 7:48 PM Eric Sethna<EMAIL_ADDRESS>wrote:

Hi @gabx https://github.com/gabx, I submitted a small PR on your repo
for a few formatting tweaks gabx#1 https://github.com/gabx/docs/pull/1
Other than these it looks good, please review when you have a chance?

It has be done and merged. Please tell if anything is missing.

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/mattermost/docs/pull/600#issuecomment-255813760, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AEXq-ONsXOxkcJ68_h7DexFM-g3ThNSOks5q3O-IgaJpZM4KYwMp
.

Thanks again for the contribution! Merging.


Level 1: Pew Pew

Make player shoot the shooties

TODO Add Limiter

TODO make button pressed go perma-pew


Bug: apply from online repository panics

Description
When I try to apply my manifests from repository, it fails.
Example manifest
comtrya -d https://github.com/thebino/dotfiles apply -m apps.gnupg
ERROR execute: Failed to find manifests at https://github.com/thebino/dotfiles
thread 'main' panicked at lib/src/manifests/mod.rs:57:13:
explicit panic
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Steps to reproduce
Step by step explanation. Please add the output of with -vvv flag enabled (be careful not to include any secrets from your config).

Environment

OS: macOS Sequoia
Version: 0.9.0

Additional information
Add more context which didn't fit in the fields above.

Since I pushed new releases rather fast with v0.8.9 and v0.9.0, which is why it probably why you didnt catch it until v0.9.0, but we axed the git integration with comtrya in #439 due to all of the issues it presents with libssl. The thought is, eventually we will bring it back when a suitable replacement like gitoxide is ready, or some other alternative.

Okay got it, would love to see it coming back soon.
Its makes it a breathe to share configurations between devices and installations

Yea, it does. Over the next few days I am going to play around with gix and gitoxide and see if it finally has what we need. Last time I checked was about 6 months ago, so lets hope.

Sorry I've been quiet on this. I think I have a path. I've got a little test project that does some interaction with the gix library. It is gonna pull in quite a few transitive dependencies, but I am also gonna try to whittle it down using feature flags. With some little bit of cutting with feature flags, I believe it required about 180 dependencies. I think I can get that lower.
To make the code a little cleaner in comtrya, I may wrap gix in a separate repo so and pull it in as a dependency sort of like how @rawkode did the initial git integration with his git-sync library. I may also take another stab at using git-sync, but having it use six with a feature flag. This was a path I was going down last year.

I'm really not in a hurry here, I understand that this requires a deep investigation and lots of tests to make it right this time. I haven' red the issues you mentioned yet but maybe I'll find time in the wintermonths. Thanks a lot for your contribution 🎉

@thebino if your able to, I have the beginnings of the solution. This doesn't quiet yet solve using git as a source for manifests, but its a start with first implementing a git.clone action based on using gix in lieu of git2rs/git-sync/openssl. If you're able to build that branch and run a couple test manifests with a git.clone action, it would be much appreciated. If this works well for people, then rebuilding using git as a manifest source should be trivial since this is the heart of that.

If you do, just be advise that I have changed the action slightly. An example manifest is in that branch.

I just tested it and it went smooth: https://github.com/thebino/dotfiles/commit/a574dbead7dcbb719e9b076ccfe941c6a8567be9
Will look forward to check the whole manifest repo from url again 🎉

I think that PR is a good start to getting souring git repos with fix. If you wouldn't mind sanity checking it for me before I pull it in.

Tested successfully on a M4 Mac. And I'm building it on a Raspberry Pi 1 right now 😂

Tested successfully on a M4 Mac. And I'm building it on a Raspberry Pi 1 right now 😂

Sweet! I really appreciate you testing this out and validating the functionality for me!

I am going to go-ahead and close this issue. If there is anything missing, let me know with a new issue. Thank you!


Tabbing between datetimepicker fields doesn't close blurred datepickers

If you have multiple datetimepickers in a form, and you use the TAB key to move between them, each opens its own datepicker, but doesn't close on blur. So the result is that you end up with more than one picker open.

I confirm this happens to me as well. It has to be a combination of things because I can't reproduce it in an isolated test page. The bug only shows in my real project form.


Lazily render codeblocks

This PR severely reduces the time it takes to open a channel with a lot of codeblocks (I've seen a 450% performance increase in the #css-snippets channel on the Powercord server).
Trace of current vpc-shiki: entering #css-snippets took ~1.6s

Trace of this PR: entering #css-snippets took ~350ms (we can also see shiki's execution happen a few ms after we entered the channel, and doing way less work)

This looks based as hell, thanks a TON for the PR! :tada:


[question] Create Azure DevOps task

Hi
please consider creating Azure DevOps task

https://github.com/ritesh-modi/terraform-static-code-tfsec-task
I was about to start working on it but looks like it is in progress and already there.

I agree with @vanmash. We are looking to adapt this now with our Azure CI/CD pipeline because of Thoughtworks.

@cliftonz1 I am no longer working on it, I developed a task but sadly it was still on my local when I left the other org xD. Yes this can be raised in azure tasks official repository, but still it's aquasec's product so they must be having a plan for it too.

@shubhamsre Thank you for the response.
@liamg  Do you know if this is currently on your roadmap?

Hey @cliftonz1 yes, this is coming soon!

I've got something running locally but thanks to the Azure DevOps partial outage today and the fact requesting credits from MS takes 2-3 business days, it may be a while before I can test it.
Rest assured though, it's on the way!

Here you go, sorry about the delay:
https://marketplace.visualstudio.com/items?itemName=AquaSecurityOfficial.tfsec-official
Please raise any issues/feature requests on the task repository.

Thank you very much!


Delayed Job metrics don't get published if using LocalClient

I'm having trouble exposing delayed_job metrics. I would like to use the built in client (LocalClient) and a server, rather than running the server in a separate process.
Here is how I've setup:
Dummy articles controller to trigger a delayed job.
class ArticlesController < ApplicationController
  DummyJob = Struct.new(:text) do
    def perform
      puts text
    end
  end

  def index

    Delayed::Job.enqueue DummyJob.new('lorem ipsum...')
  end
end

config/initializers/prometheus.rb
unless Rails.env == "test"
    require 'prometheus_exporter/server'
    require 'prometheus_exporter/client'
    require 'prometheus_exporter/instrumentation'
    require 'prometheus_exporter/middleware'

    # This reports stats per request like HTTP status and timings
    Rails.application.middleware.unshift PrometheusExporter::Middleware

    server = PrometheusExporter::Server::WebServer.new bind: 'localhost', port: ENV.fetch("METRICS_PORT") { 9090 }
    server.start

    # wire up a default local client
    PrometheusExporter::Client.default = PrometheusExporter::LocalClient.new(collector: server.collector)
    PrometheusExporter::Metric::Base.default_labels = { "app" => "rails-metrics" }

    # this reports basic process stats like RSS and GC info
    PrometheusExporter::Instrumentation::Process.start(type: "main")
end

Run Delayed Job
METRICS_PORT=9090 rvm 2.7 do rake jobs:work

Run the web server:
METRICS_PORT=9091 rvm 2.7 do bundle exec rails s

Trigger the delayed job by browsing the app
http://localhost:3000/articles/index
I see console output from Delayed Job showing the job completed
[Worker(host:pathogen pid:6458)] Starting job worker
[Worker(host:pathogen pid:6458)] Job ArticlesController::DummyJob (id=8) RUNNING
lorem ipsum...
[Worker(host:pathogen pid:6458)] Job ArticlesController::DummyJob (id=8) COMPLETED after 0.0072
[Worker(host:pathogen pid:6458)] 1 jobs processed at 9.7363 j/s, 0 failed

Then check both apps metrics ports

http://localhost:9090/metrics - delayed job metrics
http://localhost:9091/metrics - rails server metrics

No delayed_job metrics appear (I do see other metrics).
It works with the external prometheus_exporter
Now, if I remove the server and client from config/initializers/prometheus.rb, and run the exporter as a separate process:
rvm 2.7 do bundle exec prometheus_exporter -b <IP_ADDRESS>

2022-09-06 14:27:04 +0200 Starting prometheus exporter on <IP_ADDRESS>:9394

When I visit http://localhost:9394/metrics, I can see the delayed_job metrics:
# HELP ruby_delayed_job_duration_seconds Total time spent in delayed jobs.
# TYPE ruby_delayed_job_duration_seconds counter
ruby_delayed_job_duration_seconds{queue_name="",job_name=""} 4.300009459257126e-05

# HELP ruby_delayed_jobs_total Total number of delayed jobs executed.
# TYPE ruby_delayed_jobs_total counter
ruby_delayed_jobs_total{queue_name="",job_name=""} 1

# HELP ruby_delayed_failed_jobs_total Total number failed delayed jobs executed.
# TYPE ruby_delayed_failed_jobs_total counter

# HELP ruby_delayed_jobs_max_attempts_reached_total Total number of delayed jobs that reached max attempts.
# TYPE ruby_delayed_jobs_max_attempts_reached_total counter

# HELP ruby_delayed_job_duration_seconds_summary Summary of the time it takes jobs to execute.
# TYPE ruby_delayed_job_duration_seconds_summary summary
ruby_delayed_job_duration_seconds_summary{queue_name="",job_name="",quantile="0.99"} 4.300009459257126e-05
ruby_delayed_job_duration_seconds_summary{queue_name="",job_name="",quantile="0.9"} 4.300009459257126e-05
ruby_delayed_job_duration_seconds_summary{queue_name="",job_name="",quantile="0.5"} 4.300009459257126e-05
ruby_delayed_job_duration_seconds_summary{queue_name="",job_name="",quantile="0.1"} 4.300009459257126e-05
ruby_delayed_job_duration_seconds_summary{queue_name="",job_name="",quantile="0.01"} 4.300009459257126e-05
ruby_delayed_job_duration_seconds_summary_sum{queue_name="",job_name=""} 4.300009459257126e-05
ruby_delayed_job_duration_seconds_summary_count{queue_name="",job_name=""} 1
ruby_delayed_job_duration_seconds_summary{queue_name="",job_name="",status="success",quantile="0.99"} 4.300009459257126e-05
ruby_delayed_job_duration_seconds_summary{queue_name="",job_name="",status="success",quantile="0.9"} 4.300009459257126e-05
ruby_delayed_job_duration_seconds_summary{queue_name="",job_name="",status="success",quantile="0.5"} 4.300009459257126e-05
ruby_delayed_job_duration_seconds_summary{queue_name="",job_name="",status="success",quantile="0.1"} 4.300009459257126e-05
ruby_delayed_job_duration_seconds_summary{queue_name="",job_name="",status="success",quantile="0.01"} 4.300009459257126e-05
ruby_delayed_job_duration_seconds_summary_sum{queue_name="",job_name="",status="success"} 4.300009459257126e-05
ruby_delayed_job_duration_seconds_summary_count{queue_name="",job_name="",status="success"} 1

# HELP ruby_delayed_job_attempts_summary Summary of the amount of attempts it takes delayed jobs to succeed.
# TYPE ruby_delayed_job_attempts_summary summary
ruby_delayed_job_attempts_summary{queue_name="",job_name="",quantile="0.99"} 1.0
ruby_delayed_job_attempts_summary{queue_name="",job_name="",quantile="0.9"} 1.0
ruby_delayed_job_attempts_summary{queue_name="",job_name="",quantile="0.5"} 1.0
ruby_delayed_job_attempts_summary{queue_name="",job_name="",quantile="0.1"} 1.0
ruby_delayed_job_attempts_summary{queue_name="",job_name="",quantile="0.01"} 1.0
ruby_delayed_job_attempts_summary_sum{queue_name="",job_name=""} 1.0
ruby_delayed_job_attempts_summary_count{queue_name="",job_name=""} 1

# HELP ruby_delayed_jobs_enqueued Number of enqueued delayed jobs.
# TYPE ruby_delayed_jobs_enqueued gauge
ruby_delayed_jobs_enqueued{queue_name=""} 1

# HELP ruby_delayed_jobs_pending Number of pending delayed jobs.
# TYPE ruby_delayed_jobs_pending gauge
ruby_delayed_jobs_pending{queue_name=""} 0

I notice that these metrics were published even before I stopped and started delayed_job with the exporter server and client removed - so I assume the metrics were populated from code running from the rails server.

I have managed to get metrics to appear in the right place using the LocalClient. I had to set PROMETHEUS_EXPORTER_PORT to be the same as METRICS_PORT.
PROMETHEUS_EXPORTER_PORT=9090 METRICS_PORT=9090 rvm 2.7 do rake jobs:work

I think that means I shouldn't set a server port in the initializer, and control both the server and client port through PROMETHEUS_EXPORTER_PORT.
I have to run, but I'll try it tonight, and if that works, I'll comment and close the issue.

It seems PROMETHEUS_EXPORTER_PORT is only for the Client. The server needs to have the port configured, or it falls back to PrometheusExporter::DEFAULT_PORT.
Client:
https://github.com/discourse/prometheus_exporter/blob/cef352980020cb9d764b429191aa941c9ce93d9e/lib/prometheus_exporter/client.rb#L60-L61
Server:
https://github.com/discourse/prometheus_exporter/blob/27a768932b81bb6308be761468dbb16c6c55ab0c/lib/prometheus_exporter/server/web_server.rb#L13-L14
I think the Server should read the env var like the Client does, but until that happens, here is how I work around it in my initializer:
server = PrometheusExporter::Server::WebServer.new(
    bind: ENV.fetch("PROMETHEUS_EXPORTER_HOST") { PrometheusExporter::DEFAULT_BIND_ADDRESS },
    port: ENV.fetch("PROMETHEUS_EXPORTER_PORT") { PrometheusExporter::DEFAULT_PORT }
)
server.start

PrometheusExporter::Client.default = PrometheusExporter::LocalClient.new(collector: server.collector)


Performance: tab-switching noticeably slower with autocomplete-plus enabled and lots of tabs open

it seems to be rebuilding the wordlist everytime I switch tabs - is there a way to disable this?
Besides, I have the "Include Completions from All Buffers" setting enabled so all buffers should be using the same set of words anyways (?)

@gqshell, in the short term, please disable include completions from all buffers.
At issue is the following code:

https://github.com/atom-community/autocomplete-plus/blob/f4173b31ba4a090e5e93149b08d5bb234c375794/lib/fuzzy-provider.coffee#L42
https://github.com/atom-community/autocomplete-plus/blob/f4173b31ba4a090e5e93149b08d5bb234c375794/lib/fuzzy-provider.coffee#L126

We are not tracking all open editors, only the current one. Consequently, the entire wordlist is rebuilt every time you switch editors. That's not optimal, and causes performance issues if you have enough editors open and they are sufficiently large.
FuzzyProvider has a short lifespan ahead of it. I'm not sure we will invest the time to fix this, but /cc @benogle to include this consideration in SymbolsProvider.

Yeah my implementation in symbol provider code isn't a whole lot better.
Though it is async and debounced which should help.
On Friday, February 6, 2015, Joe Fitzgerald<EMAIL_ADDRESS>wrote:

@gqshell https://github.com/gqshell, in the short term, please disable
include completions from all buffers.
At issue is the following code:

https://github.com/atom-community/autocomplete-plus/blob/f4173b31ba4a090e5e93149b08d5bb234c375794/lib/fuzzy-provider.coffee#L42
https://github.com/atom-community/autocomplete-plus/blob/f4173b31ba4a090e5e93149b08d5bb234c375794/lib/fuzzy-provider.coffee#L126
We are not tracking all open editors, only the current one. Consequently,
the entire wordlist is rebuilt every time you switch editors. That's not
optimal, and causes performance issues if you have enough editors open and
they are sufficiently large.
FuzzyProvider has a short lifespan ahead of it. I'm not sure we will
invest the time to fix this, but /cc @benogle https://github.com/benogle
to include this consideration in SymbolsProvider.
—
Reply to this email directly or view it on GitHub
https://github.com/atom-community/autocomplete-plus/issues/247#issuecomment-73297338
.


add docs for Viewer configurations

add docs for Viewer comprehensive configurations

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.Song, Xinkun seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


[Perf] Optimize popper component by not triggering layout on every render

Description
Poppers useEffect is called on every render, this triggers a layout calculation which takes 10-20 seconds. With this PR we only do that when required. Which is mostly the first render.
Fixes #4837
Type of change

Performance improvement

How Has This Been Tested?
Profiling before and after
Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes

Test coverage results :test_tube:
:white_circle: Total coverage has not changed
// Code coverage diff between base branch:release and head branch: perf/ui/optimize-popper-component/4837

Status
File
% Stmts
% Branch
% Funcs
% Lines

:red_circle:
app/client/src/pages/Editor/Popper.tsx
85.37 (-0.34)
71.74 (0)
88.89 (0)
85.37 (-0.34)

/ok-to-test sha=64a3131

/ok-to-test sha=e0642dd

/ok-to-test sha=f88f137


State of project.

Hi,
I've been examining the code, is this project considered to be stable enough for a project to use the existing code base?

I've been using it for a little. There's some things that needs to be finished, but you can use it and modify it if you want, I accept PRs.


Allow passing guzzleClient in options

Thanks for accepting this. Also release new version on packagist please, so we can use it via composer.

Thanks for the PR. The changes have been released: https://github.com/recombee/php-api-client/releases/tag/v4.0.1.


Move fixed graphhopper configs yamls to /configs subdir

Background
After recently merging #118, I shifted focus to finishing up the corresponding changes in the model repo, in this draft PR. I got through almost all of the functionality there, but came across a funny edge case in attempting to build the graphhopper sandbox router.
In order to accomplish "injection" of a graphhopper config yaml/custom profiles from the model repo into the graphhopper build process/server pods, we make the assumption that these files will be copied into a specific location - graphhopper/transit_data/configs - during build time [code]. Then, during server spin-up, the configs are expected at the same location [code].

However, for the "fixed" graphhopper configs - ones that remain unchanged and aren't being moved to the model repo, eg test_gh_config.yaml, nationwide_gh_config.yaml, etc - this pattern doesn't quite work. This is due to the fact that we don't need to explicitly re-copy these files into transit_data/configs during the build process, as we now will be doing with standard GH configs.
During the build process, we're running build commands that output built graph files into transit_data/graphhopper, and we "capture" them as a volumeMount at /graphhopper/transit_data/ that we then create a disk snapshot with. During router server startup, we then mount this snapshot at path /graphhopper/transit_data/. The sandbox router image does in fact have bundled with it the proper config it needs to run at path /graphhopper/transit_data/configs/custom_weight_gh_config.yaml, but due to the way kube volume mounts work, because we're creating a volume mount with path /graphhopper/transit_data, any files existing on the container at this file location get overwritten/wiped by the mounted volume. This means when we mount the volume at router startup, we're successfully plopping pre-built graph files into the correct location, but we're wiping the graphhopper config needed for server startup, and we get this:
Exception in thread "main" java.io.FileNotFoundException: ./transit_data/configs/custom_weight_gh_config.yaml (No such file or directory)

See this stackoverflow issue for more info.
Solution
I only placed these "fixed" configs in transit_data/configs originally because it kept consistency with the location we had set up for the non-fixed configs to be handled. However, there's no real requirement that they live here, as we don't have a need to "piggy back" on the transit_data volume mount in order to inject them into our disk snapshots as we're doing with standard configs/profile yamls.
So, I simply moved all fixed configs to a new /configs subdir in the root of the repo, and updated all references to the old /transit_data/configs to instead just point to /configs. NOTE: I purposefully don't update the CMD line in Dockerfile.server to use the updated config location; this is the spot where an "injected" config is referenced to spin up a normal non-sandbox server, so the server will still expect the config to appear at /transit_data/configs here.
Testing

Unit tests pass and got a successful functional test to run.
Took the sandbox docker image created from ^ functional test, moved it temporarily into my model repo PR, built a sandbox with it, and successfully spun up with sandbox without the error pasted above appearing
Similarly to above, took the server docker image built from this branch, built a MNC router with it in my corresponding model repo PR, and spun it up successfully

fun indeed 🙃 Good call re: documentation, I'll make sure to add a note to the doc today mentioning how these fixed configs differ in usage/storage location from the standard configs!


Feat/cli_export

Codecov Report
Patch coverage: 5.88% and project coverage change: -0.16% :warning:

Comparison is base (fb06205) 30.55% compared to head (d2fb449) 30.40%.
Report is 1 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #137      +/-   ##
==========================================
- Coverage   30.55%   30.40%   -0.16%
==========================================
  Files          98       99       +1
  Lines        2422     2434      +12
==========================================
  Hits          740      740
- Misses       1682     1694      +12

Files Changed
Coverage Δ

packages/sidecar/lib/src/reports/reporter.dart
0.00% <0.00%> (ø)

...kages/sidecar/lib/src/reports/stdout_reporter.dart
2.63% <0.00%> (-0.71%)
:arrow_down:

...s/sidecar/lib/src/server/starters/cli_starter.dart
4.54% <0.00%> (-0.46%)
:arrow_down:

...idecar/lib/src/type_checker/type_checker_impl.dart
0.00% <0.00%> (ø)

packages/sidecar_lints/lib/src/utils.dart
75.00% <100.00%> (ø)

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


%compare - library compare currently not working

Hi, it seems that with the change of 13Sep (rename parameter compare to comp), the library compare is no longer working. The library example in the header does not create any output.

The fix was to change:
libname="&base"
to
upcase(libname)="%upcase(&base)"
(and same for &comp)
when creating the workspde.compare_libraries dataset.
I'm not sure why the previous rename of compare= to comp= parameter regressed the code, but it should be fixed now.  Please re-test and reopen this issue if required.
Thank you for reporting this issue.


Bug: Data Insights

Affected module
UI
Describe the bug
A graph discontinuity occurs where there is no object in the database.
To Reproduce
Screenshots or steps to reproduce
Expected behavior
Generate the graph with zero value.
Video
screen-capture.webm
Version:

OS: Chrome
OpenMetadata version: 0.13.2

@FelipeArruda can you please check the API response and see if we have datapoints for that missing day?
cc @ShaileshParmar11 @TeddyCr

@FelipeArruda can you please check the API response and see if we have datapoints for that missing day? cc @ShaileshParmar11 @TeddyCr

I just have access to airflow log. Does it work?
dag_id=OpenMetadata_dataInsight_run_id=scheduled__2023-05-16T04_00_00+00_00_task_id=data_insight_task_attempt=1.log
I found an error but idk if its the cause.
ERROR - Error trying to fetch entity -- An exception with message [Entity type table not found] was thrown while processing request.

@FelipeArruda to me, this is the right behavior. If there is no data for a specific day we should break the line of the graph (to indeed signify there is not data).

Hey @TeddyCr . No problem, I thought If no data for the day, set the value for 0 (zero) and there is no discontinuity. Just another option.


Dark mode when exporting canvas to image not supported in Webkit

Hey everyone! I realized that Excalidraw doesn't support dark mode in Safari or other WebKit-based web browsers, I'm aware that Excalidraw uses CanvasRenderingContext2D when exporting the canvas to a PNG image (which is not supported by WebKit at the moment, but I realized a PR adding that feature to WebKit has been merged so hopefully it will be supported soon) to select dark/light as background when exporting the canvas as image.
Excalidraw running on Safari:

Excalidraw running on Chrome

I left this issue here as a reference since:

maybe someone is wondering why the dark mode option when exporting as image is disabled in Safari or another WebKit browser, so they may dive into the issues section.
To track the progress of WebKit support, so the project and users can catch up to WebKit updates.

Same problem with chrome on ubuntu and plugin on vs code


Add way for users to support the site financially

Add Patreon or some other kind of link?

maybe also https://www.buymeacoffee.com/ will be great

Will wait on this until the org is a 501c3. Need to do research on the setup for this.


Fix segsev in WebP

Closes #6 and extends the fix from #4 to all public methods of the WebP object.

How does this address #6? Dis you meant #7?

Sorry, typo. I meant it to be #7


Failed to initialize react-native-reanimated library

Error: Failed to initialize react-native-reanimated library, make sure you followed installation steps here: https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/installation/
also try :npm start -- --reset-cache
"react-native-reanimated" : '2.11.0'
"react-native-cards-swipe": "^1.2.1",
babel.config.js
const alias = {'^@/(.+)': './src/\1'}; // @/folder will be an alias to /src/folder
const extensions = ['.android.js', '.ios.js', '.js', '.json', '.native'];
const presets = ['module:metro-react-native-babel-preset'];
const plugins = [
['module-resolver', {alias, extensions}, 'react-native-reanimated/plugin'],
];
module.exports = {presets, plugins};

You need to install react-native-reanimated properly by following the guide, I guess you miss these steps
Step 2: Add Reanimated's babel plugin
Add react-native-reanimated/plugin plugin to your babel.config.js.
  module.exports = {
    presets: [
      ... // don't add it here :)
    ],
    plugins: [
      ...
      'react-native-reanimated/plugin',
    ],
  };

Step 3: Clear cache (recommended)
yarn start --reset-cache
Reference: https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/getting-started/#step-2-add-reanimateds-babel-plugin


[#1512] feature(Spark): Replace taskAttemptId with mapIndex in blockId

What changes were proposed in this pull request?
Use map index (map task or source partition id) in block id instead of task attempt id.
Why are the changes needed?
The map index has a lower cardinality than the unbound positive long (63 bit) task attempt id. This reduces the practical risk (fails with sufficient number of stages for 100TB dataset and 500k partitions) of overflowing sequence number, partition id or map index below an impractical level in today's terms (supports any number of stages for 1PT dataset with 16m partitions).
Fix: #1512
Does this PR introduce any user-facing change?
No.
How was this patch tested?
Unit and integration tests.

Codecov Report
Attention: 3 lines in your changes are missing coverage. Please review.

Comparison is base (9471cba) 54.23% compared to head (4722d4c) 54.69%.

Files
Patch %
Lines

...uniffle/storage/factory/ShuffleHandlerFactory.java
0.00%
2 Missing :warning:

...rg/apache/uniffle/server/buffer/ShuffleBuffer.java
50.00%
0 Missing and 1 partial :warning:

Additional details and impacted files
@@             Coverage Diff              @@
##             master    #1514      +/-   ##
============================================
+ Coverage     54.23%   54.69%   +0.45%
+ Complexity     2810     2273     -537
============================================
  Files           430      353      -77
  Lines         24410    15807    -8603
  Branches       2082     1451     -631
============================================
- Hits          13238     8645    -4593
+ Misses        10340     6669    -3671
+ Partials        832      493     -339

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

👍

One question: We can't judge the data is from the same task. If one map task A have two attempts taskAttempt 1, taskAttempt 2. TaskAttempt 1 can have two blocks, TaskAttempt 2 may have three blocks. Because Spark doesn't guarantee every taskAttempts have the same data. Because some transforms of Spark are indeterministic.

@jerqi you are right, if both tasks report their shuffle results (block ids), we would not know how many blocks to read for our partition id and map index. For that to work we need to guarantee that only one task attempt succeeds in registering shuffle results (blockids). We then take that taskAttemptId and those blockIds for the partition id and map index.
This would require a two-phase commit to guard / coordinate the report shuffle result step, which would be a much bigger change: https://github.com/G-Research/incubator-uniffle/pull/4/files
There are only two situations, where this can happen, though: speculative task execution (which is not recommended for production) and (without speculative task execution) a task failure after shuffle results have been reported, which triggers another task attempt.

@jerqi you are right, if both tasks report their shuffle results (block ids), we would not know how many blocks to read for our partition id and map index. For that to work we need to guarantee that only one task attempt succeeds in registering shuffle results (blockids). We then take that taskAttemptId and those blockIds for the partition id and map index.
This would require a two-phase commit to guard / coordinate the report shuffle result step, which would be a much bigger change: https://github.com/G-Research/incubator-uniffle/pull/4/files
There are only two situations, where this can happen, though: speculative task execution (which is not recommended for production) and (without speculative task execution) a task failure after shuffle results have been reported, which triggers another task attempt.

 If we set up a new two-phrase commit. Maybe there will be some consistent.

@jerqi Do you mean the RSS Spark clients or Apache Spark? Can you point me to it? What do you suggest to do next?

We can use TaskSchedulerImpl#nextTaskId to simplify the taskAttemptId.

We use Java reflection to get TaskSchedulerImpl#nextTaskId from SparkContext.
We record the start taskAttemptId in the ShuffleHandle.
We use taskAttemptId minus start taskAttemptId.

@jerqi Do you mean the RSS Spark clients or Apache Spark? Can you point me to it? What do you suggest to do next?

I mean Apache Spark has own commit mechinanism.

We can use TaskSchedulerImpl#nextTaskId to simplify the taskAttemptId.

We use Java reflection to get TaskSchedulerImpl#nextTaskId from SparkContext.
We record the start taskAttemptId in the ShuffleHandle.
We use taskAttemptId minus start taskAttemptId.

Offsetting the taskAttemptId would help to reduce the ids for long running Spark jobs, but the offset ids can practically still be arbitrary large, e.g. if there are many consecutive large (with many partitions) stages.
What do you think about using the task id and the attempt no (bit-appended)? That id is unique for a stage and much more constraint than the taskAttemptId or the offset taskAttemptId.

@jerqi Do you mean the RSS Spark clients or Apache Spark? Can you point me to it? What do you suggest to do next?

I mean Apache Spark has own commit mechinanism.

Do you refer to ShuffleMapOutputWriter?

Sorry for the late reply, we are in vocation for Chinese new year.
#1529 looks fine, can we add a integration test to cover the case of speculative exection?

We can use TaskSchedulerImpl#nextTaskId to simplify the taskAttemptId.

We use Java reflection to get TaskSchedulerImpl#nextTaskId from SparkContext.
We record the start taskAttemptId in the ShuffleHandle.
We use taskAttemptId minus start taskAttemptId.

Offsetting the taskAttemptId would help to reduce the ids for long running Spark jobs, but the offset ids can practically still be arbitrary large, e.g. if there are many consecutive large (with many partitions) stages.
What do you think about using the task id and the attempt no (bit-appended)? That id is unique for a stage and much more constraint than the taskAttemptId or the offset taskAttemptId: #1529

@jerqi Do you mean the RSS Spark clients or Apache Spark? Can you point me to it? What do you suggest to do next?

I mean Apache Spark has own commit mechinanism.

Do you refer to ShuffleMapOutputWriter?

AttemptNo will waste some bits. If we increase the bits, the bitmap will occupy more memory.

AttemptNo will waste some bits. If we increase the bits, the bitmap will occupy more memory.

See https://github.com/apache/incubator-uniffle/pull/1529#issuecomment-1947826787.

#1529 looks fine, can we add a integration test to cover the case of speculative exection?

See https://github.com/apache/incubator-uniffle/pull/1529#issuecomment-1947835597.

Superseded by #1529..


Change output to enable full DUC-use in plugwise-beta

Can be done with json, see updated code.

Can be done with json, see updated code.


[DX] lakectl diff command should be more lenient about trailing slashes

Spent five minutes trying to work out why this didn't work
$ lakectl diff lakefs://drones03/main/
Invalid ref: not a valid ref uri
Error executing command.

when a previous version of the command was just fine:
$ lakectl diff lakefs://drones02/main
Ref: lakefs://drones02/main
+ added drone-registrations/Registations-P107-Active-2016.parquet
[…]

In the same way that other CLIs will proactively help the user if an error is thrown perhaps lakectl could too?
For example, something like this:
$ lakectl diff lakefs://drones03/main/
Invalid ref: not a valid ref uri

URIs should not have a trailing slash - did you perhaps mean to run this?
    lakectl diff lakefs://drones03/main

Another option would be to trim the trailing slash for the user when parsing the command:
$ lakectl diff lakefs://drones03/main/

INFO: lakefs://drones03/main/ is not a valid URI, showing a diff for lakefs://drones03/main instead

Ref: lakefs://drones03/main
+ added drone-registrations/Registations-P107-Active-2016.parquet
[…]

Same for other commands e.g. ls
$ lakectl fs ls lakefs://drones03/main
Invalid 'path': not a valid path uri
Error executing command.

$ lakectl fs ls lakefs://drones03/main/

common_prefix                                                    drone-registrations/
common_prefix                                                    sensitive/

👋 Can I be assigned to this issue @rmoff ?


style: replace hyphens with low dash

low dash prevents unexpected errors, for example in table names, and db introspect
developers usually try to run quickly local development without tweaking much

thanks! this ship has sailed.


--scripts-version=@package referencing tag, not package. Is this intentional behavior?

<EMAIL_ADDRESS>is having problems when the package name starts with @
create-react-app cra-ts --scripts-version="@petejkim/react-scripts-ts-sass" --use-npm

it tries to install<EMAIL_ADDRESS>
Aborting installation.
npm install --save --save-exact --loglevel error react react-dom react-scripts@petejkim/react-scripts-ts-sass has failed.

<EMAIL_ADDRESS>has no issues

Installing react, react-dom, and @petejkim/react-scripts-ts-sass...

I can repo this.  Definitely seem like a bug.

Could da4a87f6380d813664e95ef3d77e18df0295bca8 break it?

I knew it might backfire https://github.com/facebook/create-react-app/issues/4348#issuecomment-383693540
@Timer I think I can open a PR to fix that.

Oop, looks like fix is up in https://github.com/facebook/create-react-app/pull/4677.


Correction for raw affiliation Hematology, Centre Léon Bérard, UMR 5239 CNRS, Lyon, France,

Correction needed for raw affiliation Hematology, Centre Léon Bérard, UMR 5239 CNRS, Lyon, France,
raw_affiliation_name: Hematology, Centre Léon Bérard, UMR 5239 CNRS, Lyon, France,
new_rors: 029brtt94;01cmnjq37;02feahw73;01bj4fd12
previous_rors: 029brtt94;01cmnjq37;02feahw73
works_examples: W1551703232
contact: 1857c0d50de1d7d9e079942879ddb2e2:4ae41716f5f298a4afad8d2f7d63 @ ens-lyon.fr

This issue was accepted and ingested by the OpenAlex team on 2024-11-01. The new affiliations should be visible within the next 7 days.


Probable user error = probable doc error = "		&golang.GoFmt{}," did not work.

I am sure this is user error, but I thought I read and understood margo.go, yet results show I did not.
I added the line below for GoFmt and restarted sublime text, opened a Go file (and it reports Go mode),
messed up the formatting, and saved it.  It did not format on save.
		// both GoFmt and GoImports will automatically disable the GoSublime version
		// you will need to install the `goimports` tool manually
		// https://godoc.org/golang.org/x/tools/cmd/goimports
		//
		// gs: this replaces settings `fmt_enabled`, `fmt_tab_indent`, `fmt_tab_width`, `fmt_cmd`
		//
		&golang.GoFmt{},
		// or
		// golang.GoImports,

My likely workaround is to figure out how to run GoSublime with go 1.10 and use the old one.

Do you see an error message in the status bar?
Unlike some of the other reducers that can take options, golang.GoFmt and golang.GoImports are  variables, not a types so they'd be used as-is.
Compilation will fail but in that case there should be an error in the console and a note about it in the status bar.

I haven't been able to find any error messages.
E.g., with &golang.GoFmt{}, looking in the console
[15:24:38] margo: agent#012: starting
[15:24:38] margo: agent#012: ['/usr/local/google/home/drchase/.config/sublime-text-3/Packages/GoSublime/bin/margo.sh', 'start', 'margo.sublime', '-codec', 'msgpack']
[15:24:38] margo: agent#012: log: ``` go install -v -tags=margo -i margo.sh/cmd/margo.sublime ```
[15:24:38] margo: agent#012: log: ``` /usr/local/google/home/drchase/.config/sublime-text-3/Packages/GoSublime/bin/margo.sublime -codec msgpack ```
[15:24:38] margo: agent#012: log: store.go:137: started

But with 		golang.GoasdfasdfasdfFmt{},
I get the same, and no errors that I can see.
Perhaps they flashed by before I could read them?
And also with golang.GoFmt and with &golang.GoFmt, I get no format on save.

That's baffling. The log seems fine and shows the expected output. Are you sure you're editing the correct file?
Press ctrl+.,ctrl+x which opens ~/.config/sublime-text-3/Packages/User/GoSublime/src/margo/margo.go. Make sure to save it as well.
You can also use the &DayTimeStatus{}, reducer, which should be enabled by default. This will show the time in the status bar confirming that everything's working.

Did all that.
Saved the file, too.
The status bar shows line, column, tab size, and language. No time/date.
Unset GOPATH.
Went looking for other copies of margo.go
~/.config/sublime-text-3$ find . -name margo.go -print
./Packages/User/GoSublime/src/margo/margo.go

One possible mis-step, in following this instruction Uninstall GoSublime, there were no details, so I just removed Packages/GoSublime.  If that's not adequate, perhaps more details are needed.

That's all that should be required. It's what I did to try to reproduce this.
Reading your logs again I see that it says ... -tags=margo ... instead of ... -tags="margo margo_extension" ... so it seems like the file's either being ignored or for some other reason the margo package isn't being detected.
Can you share the file?
Also I just fixed a fmt bug. It doesn't seem related to this, but you never know. Do the usual git pull to update and see if it helps.

Can I share which file?

your margo.go file

I'm seeing the same problem. Weirdly, it's fine on my other machine and I see no change in the repo here that would explain that difference between the two.
The margo.go file is as it comes out of the box, or with the golang.GoImports line uncommented.
(I don't know if this is related, but the text "press ctrl+. ctrl+x to configure margo" remains - I don't know if this is intentional).
I'm on bf2ead85bfddd7e442ae89ec4b332ae22fb9dbfd.

(as the new user-name suggests, I'm technically AFK and will be for the next couple weeks but I'll try and check in every so often).
The function that causes extension to be switched on is extensionPkg https://github.com/DisposaBoy/GoSublime/blob/development/src/margo.sh/sublime/sublime.go#L82
It just tries to import the margo package and if it has any .go files, it's enabled.
For some reason it doesn't seem to be able to import it, whether that's a GOPATH issue or what, I have no idea.
Try editing that function to print the build.Import error and see if it's actually failing and why.
Try printing build.Default.GOPATH as well, GOPATH is a PITA.

Do you happen to have a margo pkg in your GOPATH?
I think  I found the issue (more GOPATH woes). It should be fixed by https://github.com/DisposaBoy/GoSublime/commit/ffe9020c94df6fb068828aa672ac1bf815fa9e98

My GOPATH is $HOME, in ~/src I have ./lime/3rdparty/bundles/GoSublime/margo9, that's all.
ffe9020c94df6fb068828aa672ac1bf815fa9e98 does not fix it, since I am at bf2ead85bfddd7e442ae89ec4b332ae22fb9dbfd which is after that. Is there some way I can get mor logging to the console, because at the moment, it doesn't look to me like there is very much useful verbosity available to help figure out what is going on here.

I think bf2ead8 came before ffe9020 - just do a git pull to get the latest. I also added some logging when not using the margo extension pkg.

Sorry, poor reading skills on my part. I am at b8125e243263b212810c7334e23d1cf87063d482, and still see the problem.

OK, have just pulled to 32965f016f0c3d6b8ec693a09002bc617c2589b7 and the problems appear to be fixed.
Thanks!

Great! thanks for confirming :)

Related, this time trying it on a Mac.
When you press cmd+.,cmd+x it should automatically create it for you if it doesn't exist and then open the main pkg file which is margo.go by default.

cmd+., cmd+x does the trick, at least when applied to CHANGELOG.md.
I think it may not have worked in a different buffer, is that possible?
(thanks!)

@dr2chase I'm glad it works (finally!:)
The key binding https://github.com/DisposaBoy/GoSublime/blob/development/Default (OSX).sublime-keymap#L3 has no context applied to it so it should work everywhere, unless it's conflicting with some other plugin's keybinding.
If you open the command palette and start typing gs: edit margo extension it should tell you what keys it's bound to.


Follow-up of #1011 (Support union types)

#1011 was missing a critical part: writing union type rows as JSON objects. FileWriter works okay with union types, but when we try to read values via FileReader it sees incomplete JSON data.
To illustrate the problem a bit further, FileWriter doesn't quite finish writing ORC data as JSON because JsonFieldFiller is not fully implemented to cope with union types.
            case UNION:
                // printUnion(writer, (UnionColumnVector) vector, schema, row);
                break;

And thus FileReader would encounter incomplete JSON values like:
{"values":}

This PR addresses the issue.

lgtm


feat(SelectionTable): expand checkbox click area

Issue: #648

@krozhkov can you take a look on this pr?

@amje maybe you? lgtm :)

@amje Can you check please?

@Bluepuper
There are some issues when Table is overflowing

@Bluepuper There are some issues when Table is overflowing

Add min-width of checkbox to cell, so it will not be shrinking

Can you check it please ?) @amje

Is it ok that checkbox isn't in center of a cell anymore?

I assume, yes. Now it's an equal padding between all cells

@EgorKluch I assume, yes. Now it's an equal padding between all cells

But then needs to center text too.
I'm waiting for the final decision.

@EgorKluch Oh, I thought you're talking about horizontal alignment. Checkbox should be centered as well when verticalAlign: center is set

@amje vertical-align: middle doesn't work somewhy, make PR with fix using display: flex is that ok ?

Also change column height in some cases. I send links of example in telegram.

Also change column height in some cases. I send links of example in telegram.

It turns out that the row height was wrong before this pr based on the design. This pr also fixes that, now it is correct: 40px height + 1px bottom border. Before it was 40.5 px inner height + 1px border bottom


pb files update && goprotobuf google code fix

protobuf go plugin and grpc changes. Let's upgrade it.
the google code goprotobuf is moved to github. But the hdfs dep doesn't upgrade to it. I have a temporary fix to hack GOPATH and download repo manually.

The test isn't good. I don't know why it shows green. Let me handle this and then merge this myself.

I will keep track of https://github.com/colinmarc/hdfs/issues/13
If he doesn't respond, then we can either fork ourselves or upload the code manually.

OK. now it should work.

LGTM.


Extensions patch release blocking qiskit PR

Suggested feature
The fix introduced in https://github.com/Qiskit-Extensions/qiskit-experiments/pull/1420 to unblock https://github.com/Qiskit/qiskit/pull/11997 would have to be released to be accessible to qiskit-neko, which doesn't install from source. A patch release should be enough to fulfill this. Do you think it would be possible before the 1.1 rc1 release deadline (May 1st)?

The patch release is out now :)


Closable tabs do not have button to close them

No X button to close tab in JFXTabPane.
EDIT: middle mouse button doesn't close the tab either.

JFoenix version 1.6.0
Windows 7 x64

Duplicate of https://github.com/jfoenixadmin/JFoenix/issues/75

No, author said that issue #75 is solved in #241. However in my case it's not working. Remove dublicate.

No, author said that issue #75 is solved in 5955fdf. However in my case it's not working.

https://github.com/jfoenixadmin/JFoenix/pull/241 including https://github.com/jfoenixadmin/JFoenix/commit/5955fdfa71ad377a3c0f3d83c8ca9af9a9f78e4d wasn't merged.

well this issue is not resolved yet in master branch, this issue is more of a design issue.
We need a material design behavior to integrate the close button in JFXTabPane, otherwise it feels off in the header.
Feel free to suggest any design for this issue and contribute to JFonenix.
Regards,

Hello,
well

Hello,
how to change color of close button?


update java get-started doc

Fix 2 issues.

maven-archetype-quickstart template generate App.java, not AzureApp.java https://maven.apache.org/archetypes/maven-archetype-quickstart/
error of "Source option 5 is no longer supported. Use 7 or later." if not configure Java version

@xboxeer @srnagar @JonathanGiles for review.
We might want to upgrade the versions of the lib, use the BOM etc.
But for this PR, I wanted to focus on things that appears having problem with latest maven and Java.

Hi @weidongxu-microsoft - thanks for the pull request! However, internal contributors should submit their pull requests to the internal repo at azure-dev-docs-pr. Could you please reopen there? That way we can get full build validation and other support. Thanks!


Not playing nice with dynamic data

I tried to implement ExpandableLayout to my project, which resulted in following issue.
When I click the button to expand, I only get 1 line of text showing up (for a multi-line textview). This behaviour stays until I would rotate the device.
After rotation, everything works as expected.
I am using databinding, could have an effect? My impression is that the height of the relative layout is being calculated but not refreshed when new content arrives.
Hope this makes sense? Let me know if you need more info.

Hi, @philippeluickx
ExpandableRelativeLayout has the initialize method which is initLayout(boolean).
It calculates a layout size again when it is called.
You call it if you want to initialize the layout.
Please tell me here if you cannot solve this problem.

I have the same issue, but i can't seem to find initLayout(boolean) method in ExpendableRelativeLayout, only initLayout() which does not help, if called,  that method sets the size to 0-

@Mkrizanac
I'm sorry. I added it on v1.4.0.
Try this.
compile 'com.github.aakira:expandable-layout:1.4.0@aar'

@AAkira
hmm, weird, i can see the method on git:
    public void initLayout(final boolean isMaintain) {
        closePosition = 0;
        layoutSize = 0;
        isArranged = isMaintain;
        isCalculatedSize = false;
        savedState = null;

        super.requestLayout();
    }```

and i updated to 1.4.0, but still, the only method i can see in my ExpandableRelativeLayout is
![image](https://cloud.githubusercontent.com/assets/6604210/10943008/cde303ce-8312-11e5-9315-24954c09ceaf.png)

@Mkrizanac
Thank you for reporting.
I upload the same version which is v1.4.0 again.
Please check it.

@AAkira
thanks, i can use that method now, but it's not helping, when i call it i can't even expand my layout anymore.

@Mkrizanac
Yes, you are right.
You should call initLayout() every time when the size is changed.
This library supports that the layout has the size decided in advance.
Or you can use move(position) method which can moves expandable layout to optional position.

@AAkira
still not working, size is set to 0 whenever i call initLayout(boolean) and it's not changed.
I ended up doing simple workaround, i always get all the data before opening fragment so once fragment with expandable layout starts, it already contains all the content needed to show, that way, size get's calculated correctly (if the data is set in onCreateView).  Problem still happens when changing content, which could be solved by creating fragment again, which is not a very good solution.

@Mkrizanac
Yes, this library supports that it already contains all the content needed to show.
So, you should call initLayout(boolean) which calculates the layout size again if the layout size changes.
Can you show me your code here?

Doesn't work for me either. I call the initlayout(true) on my onLoadFinished method, but then nothing changes. Without calling it, at least it bounced with 1 line...

Same issue when wrap content view inside changes it size

Call initLayout(boolean) before adding dynamic layout. This solved my problem.

in my case #49 it didn't help

@philippeluickx
@Mkrizanac
@antoxa2584x
@anirudhmaddy
@DaRolla
I'm sorry to reply late.
I released v1.5.0.
Please check it.

Hi, there
I released v1.6.0.

I find your library fascinating, I'm implemented now but I have a problem using a recycler with the ExplandableRelativeLayout, it happens that I can not hide or show my recycler, use toogle methods, move but I do not get results, I hope you can help me.


Add: Landing Page

Add new sections for the landing page below the hero sections.

Theme can be chosen by individual contributor but should contain the links that are present in the current hero section
You are free to choose any number of sections other than the required sections.

Required Section

Features sections
Contact us sections(provide dominates links)
Open source feature section

Make sure the application is responsive

I would like to work on this issue!