text:
一个潜在的兼容性Bug

在项目中，发现没有使用wx.getSystemInfo这个API去获取使用机型的系统信息。
然后通过windowWidth，windowHeight和safeArea来调整小程序的布局设置。
没有通过wx.getSystemInfo的适配，在部分机型上可能会出现一些样式问题。

个人实在没精力去适配所有机器，暂时只考虑常用的那些机器


text:
Bugfix: Messages created from a message callback won't appear

This happened due to the fact that selecting a message will set the "messageVisible" boolean property to NO before calling the callback. When a new message get's presented, this message will be instantly shown, due to the "messageVisible" property being NO. If no further message
is queued, the messageWindow will be set to nil and the callback message never shows up.
This can be fixed by setting "messageVisible" to NO after calling the callback, to avoid that the message will be shown instantly and instead remains in the queue.

The behavior can be replicated with this small code snippet:
[[TWMessageBarManager sharedInstance] showMessageWithTitle:@"Test" description:@"Test" type:TWMessageBarMessageTypeInfo callback:^{
    [[TWMessageBarManager sharedInstance] showMessageWithTitle:@"Inner Test" description:@"Inner Test" type:TWMessageBarMessageTypeError];
}];

When selecting the first  message, the inner message will never appear.

source: gharchive/pull-request

repo: terryworona/TWMessageBarManager

license: mit

license_type: permissive

license_source: bigquery


text:
[serialport] cp: cannot stat ‘Debug/serialport.node’: No such file or directory

The compiler chokes when trying to compile serialport. Here is the output from the command:
➜  t2-compiler git:(master) ✗ ./compile.sh serialport
downloading package...
serialport
total 12
drwxrwxr-x 3 vagrant vagrant 4096 Apr 15 18:13 .
drwxr-xr-x 3 vagrant root    4096 Apr 15 18:13 ..
drwxrwxr-x 2 vagrant vagrant 4096 Apr 15 18:13 build
serialport-2.1.0.tgz
Connection to 127.0.0.1 closed.
running build...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  7731  100  7731    0     0  13721      0 --:--:-- --:--:-- --:--:-- 13707
=> nvm is already installed in /home/vagrant/.nvm, trying to update using git
=>
=> Source string already in /home/vagrant/.bashrc
=> Close and reopen your terminal to start using nvm
v4.2.1 is already installed.
Now using node v4.2.1 (npm v2.14.7)
Now using node v4.2.1 (npm v2.14.7)
/home/vagrant/.nvm/versions/node/v4.2.1/bin/pre-gypify -> /home/vagrant/.nvm/versions/node/v4.2.1/lib/node_modules/pre-gypify/pre-gypify.js
/home/vagrant/.nvm/versions/node/v4.2.1/bin/node-pre-gyp -> /home/vagrant/.nvm/versions/node/v4.2.1/lib/node_modules/node-pre-gyp/bin/node-pre-gyp
/home/vagrant/.nvm/versions/node/v4.2.1/bin/node-gyp -> /home/vagrant/.nvm/versions/node/v4.2.1/lib/node_modules/node-gyp/bin/node-gyp.js
pre-gypify@1.3.2 /home/vagrant/.nvm/versions/node/v4.2.1/lib/node_modules/pre-gypify
├── gyp-reader@0.0.2
└── nomnom@1.8.1 (underscore@1.6.0, chalk@0.4.0)

node-pre-gyp@0.6.26 /home/vagrant/.nvm/versions/node/v4.2.1/lib/node_modules/node-pre-gyp
├── semver@5.1.0
├── nopt@3.0.6 (abbrev@1.0.7)
├── mkdirp@0.5.1 (minimist@0.0.8)
├── rc@1.1.6 (ini@1.3.4, deep-extend@0.4.1, strip-json-comments@1.0.4, minimist@1.2.0)
├── rimraf@2.5.2 (glob@7.0.3)
├── tar@2.2.1 (inherits@2.0.1, block-stream@0.0.8, fstream@1.0.8)
├── tar-pack@3.1.3 (uid-number@0.0.6, once@1.3.3, debug@2.2.0, fstream@1.0.8, readable-stream@2.0.6, fstream-ignore@1.0.3)
├── request@2.71.0 (aws-sign2@0.6.0, forever-agent@0.6.1, tunnel-agent@0.4.2, oauth-sign@0.8.1, caseless@0.11.0, is-typedarray@1.0.0, stringstream@0.0.5, isstream@0.1.2, json-stringify-safe@5.0.1, extend@3.0.0, tough-cookie@2.2.2, node-uuid@1.4.7, qs@6.1.0, combined-stream@1.0.5, mime-types@2.1.10, form-data@1.0.0-rc4, bl@1.1.2, aws4@1.3.2, hawk@3.1.3, http-signature@1.1.1, har-validator@2.0.6)
└── npmlog@2.0.3 (ansi@0.3.1, gauge@1.2.7, are-we-there-yet@1.1.2)

node-gyp@3.3.1 /home/vagrant/.nvm/versions/node/v4.2.1/lib/node_modules/node-gyp
├── graceful-fs@4.1.3
├── semver@5.1.0
├── osenv@0.1.3 (os-tmpdir@1.0.1, os-homedir@1.0.1)
├── nopt@3.0.6 (abbrev@1.0.7)
├── fstream@1.0.8 (inherits@2.0.1)
├── which@1.2.4 (isexe@1.1.2, is-absolute@0.1.7)
├── mkdirp@0.5.1 (minimist@0.0.8)
├── minimatch@1.0.0 (sigmund@1.0.1, lru-cache@2.7.3)
├── tar@2.2.1 (inherits@2.0.1, block-stream@0.0.8)
├── glob@4.5.3 (inherits@2.0.1, once@1.3.3, inflight@1.0.4, minimatch@2.0.10)
├── rimraf@2.5.2 (glob@7.0.3)
├── request@2.71.0 (aws-sign2@0.6.0, forever-agent@0.6.1, tunnel-agent@0.4.2, oauth-sign@0.8.1, caseless@0.11.0, is-typedarray@1.0.0, stringstream@0.0.5, isstream@0.1.2, json-stringify-safe@5.0.1, extend@3.0.0, tough-cookie@2.2.2, node-uuid@1.4.7, qs@6.1.0, combined-stream@1.0.5, mime-types@2.1.10, form-data@1.0.0-rc4, bl@1.1.2, aws4@1.3.2, hawk@3.1.3, http-signature@1.1.1, har-validator@2.0.6)
├── path-array@1.0.1 (array-index@1.0.0)
└── npmlog@2.0.3 (ansi@0.3.1, gauge@1.2.7, are-we-there-yet@1.1.2)
gyp info it worked if it ends with ok
gyp info using node-gyp@3.3.1
gyp info using node@4.2.1 | linux | x64
gyp WARN download NVM_NODEJS_ORG_MIRROR is deprecated and will be removed in node-gyp v4, please use NODEJS_ORG_MIRROR
gyp http GET https://nodejs.org/dist/v4.2.1/node-v4.2.1-headers.tar.gz
gyp http 200 https://nodejs.org/dist/v4.2.1/node-v4.2.1-headers.tar.gz
gyp http GET https://nodejs.org/dist/v4.2.1/SHASUMS256.txt
gyp http 200 https://nodejs.org/dist/v4.2.1/SHASUMS256.txt
4.2.1
gyp info ok
+ pre-gypify --package_name '{name}-{version}-{configuration}.tgz'
adding action_after_build...
writing binding.gyp...
writing package.json...
kk
+ export STAGING_DIR=/home/vagrant/
+ STAGING_DIR=/home/vagrant/
+ export NODEGYP=node-gyp
+ NODEGYP=node-gyp
+ export NODE=4.2.1
+ NODE=4.2.1
+ export TOOLCHAIN_ARCH=mipsel
+ TOOLCHAIN_ARCH=mipsel
+ echo OHOHOH
OHOHOH
+ echo mipsel
mipsel
+ echo 4.2.1
4.2.1
+ set -e
+ '[' '!' -d /home/vagrant/ ']'
+ ARCH=mipsel
+ NODE=4.2.1
+ NODEGYP=node-gyp
++ ls -d /home/vagrant//toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2
+ TOOLCHAIN_DIR=/home/vagrant//toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2
+ echo /home/vagrant//toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2
/home/vagrant//toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2
++ ls -d /home/vagrant//target-mipsel_24kec+dsp_uClibc-0.9.33.2
+ export SYSROOT=/home/vagrant//target-mipsel_24kec+dsp_uClibc-0.9.33.2
+ SYSROOT=/home/vagrant//target-mipsel_24kec+dsp_uClibc-0.9.33.2
+ source /home/vagrant//toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/info.mk
++ TARGET_CROSS=mipsel-openwrt-linux-uclibc-
++ GCC_VERSION=4.8-linaro
++ LIBC_TYPE=uClibc
++ LIBC_URL=http://www.uclibc.org/
++ LIBC_VERSION=0.9.33.2
++ LIBC_SO_VERSION=0.9.33.2
+ echo 'Cross-compiling for' mipsel-openwrt-linux-uclibc-
Cross-compiling for mipsel-openwrt-linux-uclibc-
+ export PATH=/home/vagrant//toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/bin:/home/vagrant/.nvm/versions/node/v4.2.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
+ PATH=/home/vagrant//toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/bin:/home/vagrant/.nvm/versions/node/v4.2.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
+ export CPPPATH=/usr/include
+ CPPPATH=/usr/include
+ export LIBPATH=/usr/lib
+ LIBPATH=/usr/lib
+ OPTS='-I /home/vagrant//target-mipsel_24kec+dsp_uClibc-0.9.33.2/usr/include -L /home/vagrant//toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/lib -L /home/vagrant//target-mipsel_24kec+dsp_uClibc-0.9.33.2/usr/lib'
+ export 'CC=mipsel-openwrt-linux-uclibc-gcc -I /home/vagrant//target-mipsel_24kec+dsp_uClibc-0.9.33.2/usr/include -L /home/vagrant//toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/lib -L /home/vagrant//target-mipsel_24kec+dsp_uClibc-0.9.33.2/usr/lib'
+ CC='mipsel-openwrt-linux-uclibc-gcc -I /home/vagrant//target-mipsel_24kec+dsp_uClibc-0.9.33.2/usr/include -L /home/vagrant//toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/lib -L /home/vagrant//target-mipsel_24kec+dsp_uClibc-0.9.33.2/usr/lib'
+ export 'CXX=mipsel-openwrt-linux-uclibc-g++ -I /home/vagrant//target-mipsel_24kec+dsp_uClibc-0.9.33.2/usr/include -L /home/vagrant//toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/lib -L /home/vagrant//target-mipsel_24kec+dsp_uClibc-0.9.33.2/usr/lib'
+ CXX='mipsel-openwrt-linux-uclibc-g++ -I /home/vagrant//target-mipsel_24kec+dsp_uClibc-0.9.33.2/usr/include -L /home/vagrant//toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/lib -L /home/vagrant//target-mipsel_24kec+dsp_uClibc-0.9.33.2/usr/lib'
+ export AR=mipsel-openwrt-linux-uclibc-ar
+ AR=mipsel-openwrt-linux-uclibc-ar
+ export RANLIB=mipsel-openwrt-linux-uclibc-ranlib
+ RANLIB=mipsel-openwrt-linux-uclibc-ranlib
+ export 'LINK=mipsel-openwrt-linux-uclibc-g++ -I /home/vagrant//target-mipsel_24kec+dsp_uClibc-0.9.33.2/usr/include -L /home/vagrant//toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/lib -L /home/vagrant//target-mipsel_24kec+dsp_uClibc-0.9.33.2/usr/lib'
+ LINK='mipsel-openwrt-linux-uclibc-g++ -I /home/vagrant//target-mipsel_24kec+dsp_uClibc-0.9.33.2/usr/include -L /home/vagrant//toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/lib -L /home/vagrant//target-mipsel_24kec+dsp_uClibc-0.9.33.2/usr/lib'
+ export 'CPP=mipsel-openwrt-linux-uclibc-gcc -I /home/vagrant//target-mipsel_24kec+dsp_uClibc-0.9.33.2/usr/include -L /home/vagrant//toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/lib -L /home/vagrant//target-mipsel_24kec+dsp_uClibc-0.9.33.2/usr/lib -E'
+ CPP='mipsel-openwrt-linux-uclibc-gcc -I /home/vagrant//target-mipsel_24kec+dsp_uClibc-0.9.33.2/usr/include -L /home/vagrant//toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/lib -L /home/vagrant//target-mipsel_24kec+dsp_uClibc-0.9.33.2/usr/lib -E'
+ export STRIP=mipsel-openwrt-linux-uclibc-strip
+ STRIP=mipsel-openwrt-linux-uclibc-strip
+ export OBJCOPY=mipsel-openwrt-linux-uclibc-objcopy
+ OBJCOPY=mipsel-openwrt-linux-uclibc-objcopy
+ export 'LD=mipsel-openwrt-linux-uclibc-g++ -I /home/vagrant//target-mipsel_24kec+dsp_uClibc-0.9.33.2/usr/include -L /home/vagrant//toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/lib -L /home/vagrant//target-mipsel_24kec+dsp_uClibc-0.9.33.2/usr/lib'
+ LD='mipsel-openwrt-linux-uclibc-g++ -I /home/vagrant//target-mipsel_24kec+dsp_uClibc-0.9.33.2/usr/include -L /home/vagrant//toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/lib -L /home/vagrant//target-mipsel_24kec+dsp_uClibc-0.9.33.2/usr/lib'
+ export OBJDUMP=mipsel-openwrt-linux-uclibc-objdump
+ OBJDUMP=mipsel-openwrt-linux-uclibc-objdump
+ export NM=mipsel-openwrt-linux-uclibc-nm
+ NM=mipsel-openwrt-linux-uclibc-nm
+ export AS=mipsel-openwrt-linux-uclibc-as
+ AS=mipsel-openwrt-linux-uclibc-as
+ export npm_config_arch=mipsel
+ npm_config_arch=mipsel
++ which node-gyp
+ export npm_config_node_gyp=/home/vagrant/.nvm/versions/node/v4.2.1/bin/node-gyp
+ npm_config_node_gyp=/home/vagrant/.nvm/versions/node/v4.2.1/bin/node-gyp
+ npm install --ignore-scripts
npm WARN peerDependencies The peer dependency eslint@^2.0.0-rc.0 included from eslint-config-standard will no
npm WARN peerDependencies longer be automatically installed to fulfill the peerDependency
npm WARN peerDependencies in npm 3+. Your application will need to depend on it explicitly.
npm WARN deprecated lodash@0.9.2: Grunt needs your help! See https://github.com/gruntjs/grunt/issues/1403.
npm WARN deprecated jade@0.26.3: Jade has been renamed to pug, please install the latest version of pug instead of jade
npm WARN deprecated graceful-fs@1.2.3: graceful-fs version 3 and before will fail on newer node releases. Please update to graceful-fs@^4.0.0 as soon as possible.
npm WARN deprecated graceful-fs@2.0.3: graceful-fs version 3 and before will fail on newer node releases. Please update to graceful-fs@^4.0.0 as soon as possible.
sinon-chai@2.8.0 node_modules/sinon-chai

bindings@1.2.1 node_modules/bindings

chai-subset@1.2.2 node_modules/chai-subset

async@0.9.0 node_modules/async

sf@0.1.7 node_modules/sf

eslint-plugin-standard@1.3.2 node_modules/eslint-plugin-standard

eslint-plugin-promise@1.1.0 node_modules/eslint-plugin-promise

debug@2.2.0 node_modules/debug
└── ms@0.7.1

nan@2.2.1 node_modules/nan

optimist@0.6.1 node_modules/optimist
├── wordwrap@0.0.3
└── minimist@0.0.10

sandboxed-module@2.0.3 node_modules/sandboxed-module
├── stack-trace@0.0.9
└── require-like@0.1.2

grunt-mocha-test@0.12.7 node_modules/grunt-mocha-test
├── hooker@0.2.3
└── mkdirp@0.5.1 (minimist@0.0.8)

chai@3.5.0 node_modules/chai
├── assertion-error@1.0.1
├── type-detect@1.0.0
└── deep-eql@0.1.3 (type-detect@0.1.1)

object.assign@4.0.3 node_modules/object.assign
├── function-bind@1.1.0
├── object-keys@1.0.9
└── define-properties@1.1.2 (foreach@2.0.5)

grunt-cli@1.1.0 node_modules/grunt-cli
├── nopt@3.0.6 (abbrev@1.0.7)
├── resolve@1.1.7
└── findup-sync@0.3.0 (glob@5.0.15)

mocha@2.4.5 node_modules/mocha
├── escape-string-regexp@1.0.2
├── commander@2.3.0
├── diff@1.4.0
├── growl@1.8.1
├── supports-color@1.2.0
├── mkdirp@0.5.1 (minimist@0.0.8)
├── glob@3.2.3 (graceful-fs@2.0.3, minimatch@0.2.14)
└── jade@0.26.3 (commander@0.6.1, mkdirp@0.3.0)

grunt@0.4.5 node_modules/grunt
├── eventemitter2@0.4.14
├── which@1.0.9
├── dateformat@1.0.2-1.2.3
├── async@0.1.22
├── colors@0.6.2
├── getobject@0.1.0
├── lodash@0.9.2
├── rimraf@2.2.8
├── hooker@0.2.3
├── grunt-legacy-util@0.2.0
├── exit@0.1.2
├── nopt@1.0.10 (abbrev@1.0.7)
├── coffee-script@1.3.3
├── iconv-lite@0.2.11
├── underscore.string@2.2.1
├── minimatch@0.2.14 (sigmund@1.0.1, lru-cache@2.7.3)
├── glob@3.1.21 (inherits@1.0.2, graceful-fs@1.2.3)
├── grunt-legacy-log@0.1.3 (grunt-legacy-log-utils@0.1.1, lodash@2.4.2, underscore.string@2.3.3)
├── findup-sync@0.1.3 (lodash@2.4.2, glob@3.2.11)
└── js-yaml@2.0.5 (esprima@1.0.4, argparse@0.1.16)

sinon@1.17.3 node_modules/sinon
├── formatio@1.1.1
├── samsam@1.1.2
├── lolex@1.3.2
└── util@0.10.3

eslint@2.8.0 node_modules/eslint
├── path-is-absolute@1.0.0
├── imurmurhash@0.1.4
├── estraverse@4.2.0
├── pluralize@1.2.1
├── ignore@3.1.1
├── path-is-inside@1.0.1
├── strip-json-comments@1.0.4
├── globals@9.4.0
├── esutils@2.0.2
├── progress@1.1.8
├── text-table@0.2.0
├── user-home@2.0.0 (os-homedir@1.0.1)
├── concat-stream@1.5.1 (typedarray@0.0.6)
├── json-stable-stringify@1.0.1 (jsonify@0.0.0)
├── mkdirp@0.5.1 (minimist@0.0.8)
├── shelljs@0.6.0
├── glob@7.0.3 (once@1.3.3, inflight@1.0.4, minimatch@3.0.0)
├── doctrine@1.2.1 (esutils@1.1.6)
├── is-resolvable@1.0.0 (tryit@1.0.2)
├── optionator@0.8.1 (fast-levenshtein@1.1.3, type-check@0.3.2, levn@0.3.0, wordwrap@1.0.0, deep-is@0.1.3, prelude-ls@1.1.2)
├── require-uncached@1.0.2 (resolve-from@1.0.1, caller-path@0.1.0)
├── js-yaml@3.5.5 (esprima@2.7.2, argparse@1.0.7)
├── inquirer@0.12.0 (figures@1.5.0, ansi-escapes@1.3.0, rx-lite@3.1.2, through@2.3.8, cli-width@2.1.0, run-async@0.1.0, readline2@1.0.1, string-width@1.0.1, cli-cursor@1.0.2)
├── espree@3.1.3 (acorn@3.0.4, acorn-jsx@2.0.1)
├── file-entry-cache@1.2.4 (object-assign@4.0.1, flat-cache@1.0.10)
├── table@3.7.8 (slice-ansi@0.0.4, tv4@1.2.7, xregexp@3.1.0, string-width@1.0.1, bluebird@3.3.5)
├── es6-map@0.1.3 (d@0.1.1, es6-symbol@3.0.2, es6-iterator@2.0.0, event-emitter@0.3.4, es6-set@0.1.4, es5-ext@0.10.11)
├── escope@3.6.0 (esrecurse@4.1.0, es6-weak-map@2.0.1)
└── lodash@4.11.1

eslint-config-standard@5.1.0 node_modules/eslint-config-standard

gruntify-eslint@2.0.0 node_modules/gruntify-eslint
└── eslint@2.8.0 (path-is-absolute@1.0.0, imurmurhash@0.1.4, estraverse@4.2.0, pluralize@1.2.1, ignore@3.1.1, path-is-inside@1.0.1, strip-json-comments@1.0.4, globals@9.4.0, esutils@2.0.2, progress@1.1.8, text-table@0.2.0, user-home@2.0.0, concat-stream@1.5.1, json-stable-stringify@1.0.1, mkdirp@0.5.1, shelljs@0.6.0, glob@7.0.3, doctrine@1.2.1, is-resolvable@1.0.0, optionator@0.8.1, require-uncached@1.0.2, js-yaml@3.5.5, inquirer@0.12.0, espree@3.1.3, file-entry-cache@1.2.4, table@3.7.8, es6-map@0.1.3, escope@3.6.0, lodash@4.11.1)
+ node-pre-gyp rebuild --target_platform=openwrt --target_arch=mipsel --target=4.2.1 --debug
node-pre-gyp info it worked if it ends with ok
node-pre-gyp info using node-pre-gyp@0.6.26
node-pre-gyp info using node@4.2.1 | linux | x64
gyp info it worked if it ends with ok
gyp info using node-gyp@3.3.1
gyp info using node@4.2.1 | linux | x64
gyp info ok
gyp info it worked if it ends with ok
gyp info using node-gyp@3.3.1
gyp info using node@4.2.1 | linux | x64
gyp WARN download NVM_NODEJS_ORG_MIRROR is deprecated and will be removed in node-gyp v4, please use NODEJS_ORG_MIRROR
gyp WARN download NVM_NODEJS_ORG_MIRROR is deprecated and will be removed in node-gyp v4, please use NODEJS_ORG_MIRROR
gyp info spawn /usr/bin/python2
gyp info spawn args [ '/home/vagrant/.nvm/versions/node/v4.2.1/lib/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args   'binding.gyp',
gyp info spawn args   '-f',
gyp info spawn args   'make',
gyp info spawn args   '-I',
gyp info spawn args   '/work/binary-module/package/build/config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/home/vagrant/.nvm/versions/node/v4.2.1/lib/node_modules/node-gyp/addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/home/vagrant/.node-gyp/4.2.1/include/node/common.gypi',
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=/home/vagrant/.node-gyp/4.2.1',
gyp info spawn args   '-Dnode_gyp_dir=/home/vagrant/.nvm/versions/node/v4.2.1/lib/node_modules/node-gyp',
gyp info spawn args   '-Dnode_lib_file=node.lib',
gyp info spawn args   '-Dmodule_root_dir=/work/binary-module/package',
gyp info spawn args   '--depth=.',
gyp info spawn args   '--no-parallel',
gyp info spawn args   '--generator-output',
gyp info spawn args   'build',
gyp info spawn args   '-Goutput_dir=.' ]
gyp info ok
gyp info it worked if it ends with ok
gyp info using node-gyp@3.3.1
gyp info using node@4.2.1 | linux | x64
gyp WARN download NVM_NODEJS_ORG_MIRROR is deprecated and will be removed in node-gyp v4, please use NODEJS_ORG_MIRROR
gyp info spawn make
gyp info spawn args [ 'BUILDTYPE=Debug', '-C', 'build' ]
make: Entering directory `/work/binary-module/package/build'
  CXX(target) Debug/obj.target/serialport/src/serialport.o
  CXX(target) Debug/obj.target/serialport/src/serialport_unix.o
  CXX(target) Debug/obj.target/serialport/src/serialport_poller.o
  SOLINK_MODULE(target) Debug/obj.target/serialport.node
  COPY Debug/serialport.node
  COPY /work/binary-module/package/build/Debug/serialport.node
cp: cannot stat ‘Debug/serialport.node’: No such file or directory
make: *** [/work/binary-module/package/build/Debug/serialport.node] Error 1
make: Leaving directory `/work/binary-module/package/build'
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/home/vagrant/.nvm/versions/node/v4.2.1/lib/node_modules/node-gyp/lib/build.js:276:23)
gyp ERR! stack     at emitTwo (events.js:87:13)
gyp ERR! stack     at ChildProcess.emit (events.js:172:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Linux 3.13.0-74-generic
gyp ERR! command "/home/vagrant/.nvm/versions/node/v4.2.1/bin/node" "/home/vagrant/.nvm/versions/node/v4.2.1/bin/node-gyp" "build" "--target_platform=openwrt" "--target_arch=mipsel" "--target=4.2.1" "--debug" "--module=/work/binary-module/package/build/Debug/serialport.node" "--module_name=serialport" "--module_path=/work/binary-module/package/build/Debug"
gyp ERR! cwd /work/binary-module/package
gyp ERR! node -v v4.2.1
gyp ERR! node-gyp -v v3.3.1
gyp ERR! not ok
node-pre-gyp ERR! build error
node-pre-gyp ERR! stack Error: Failed to execute '/home/vagrant/.nvm/versions/node/v4.2.1/bin/node /home/vagrant/.nvm/versions/node/v4.2.1/bin/node-gyp build --target_platform=openwrt --target_arch=mipsel --target=4.2.1 --debug --module=/work/binary-module/package/build/Debug/serialport.node --module_name=serialport --module_path=/work/binary-module/package/build/Debug' (1)
node-pre-gyp ERR! stack     at ChildProcess.<anonymous> (/home/vagrant/.nvm/versions/node/v4.2.1/lib/node_modules/node-pre-gyp/lib/util/compile.js:83:29)
node-pre-gyp ERR! stack     at emitTwo (events.js:87:13)
node-pre-gyp ERR! stack     at ChildProcess.emit (events.js:172:7)
node-pre-gyp ERR! stack     at maybeClose (internal/child_process.js:818:16)
node-pre-gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:211:5)
node-pre-gyp ERR! System Linux 3.13.0-74-generic
node-pre-gyp ERR! command "/home/vagrant/.nvm/versions/node/v4.2.1/bin/node" "/home/vagrant/.nvm/versions/node/v4.2.1/bin/node-pre-gyp" "rebuild" "--target_platform=openwrt" "--target_arch=mipsel" "--target=4.2.1" "--debug"
node-pre-gyp ERR! cwd /work/binary-module/package
node-pre-gyp ERR! node -v v4.2.1
node-pre-gyp ERR! node-pre-gyp -v v0.6.26
node-pre-gyp ERR! not ok
Failed to execute '/home/vagrant/.nvm/versions/node/v4.2.1/bin/node /home/vagrant/.nvm/versions/node/v4.2.1/bin/node-gyp build --target_platform=openwrt --target_arch=mipsel --target=4.2.1 --debug --module=/work/binary-module/package/build/Debug/serialport.node --module_name=serialport --module_path=/work/binary-module/package/build/Debug' (1)
Connection to 127.0.0.1 closed.

These are the same issues @rwaldron has already been dealing with for detecting installation locations with the t2-cli.

Yeah, it's pretty strange. In any case, I worked around it and uploaded the binaries to the build server.
Workaround:
vagrant ssh;
cd /work/binary-module/package
node-pre-gyp rebuild --target_platform=openwrt --target_arch=$ARCH --target=$NODE --debug
mv build/Debug/obj.target/serialport.node build/Debug/
node-pre-gyp package --target_platform=openwrt --target_arch=$ARCH --target=$NODE --debug
find build/stage -type f | xargs -i cp {} /work/binary-module/output
node-pre-gyp rebuild --target_platform=openwrt --target_arch=$ARCH --target=$NODE
mv build/Release/obj.target/serialport.node build/Release/
node-pre-gyp package --target_platform=openwrt --target_arch=$ARCH --target=$NODE
find build/stage -type f | xargs -i cp {} /work/binary-module/output
rsync -avz -e 'ssh -F ./ssh.conf' default:/work/binary-module/output/. ./out

The issue is the compile.sh is blindly creating pre-gyp configuration, which messes up any existing configuration: https://github.com/tessel/t2-compiler/blob/master/compile.sh#L32

This branch: https://github.com/tessel/t2-compiler/tree/test-pre-gypify-patch can be used to test the changes in pre-gypify

source: gharchive/issue


text:
Does it support multi modal RAG queries?

RAG is Retrieval Augmented Generation. For example. if i pass a picture, will it find a similar?

torvalds.dev is analyzing the ticket

Based on the code provided, it seems that the system is designed to support Retrieval Augmented Generation (RAG) queries. The RAG model is a type of transformer-based model that uses a retrieval component to augment the generation of responses. It retrieves relevant documents or information based on the input query and uses this information to generate a response.
However, the code does not seem to support multi-modal RAG queries. Multi-modal RAG queries would involve processing and retrieving information from multiple types of data, such as text, images, audio, etc. The code provided seems to be designed to handle text-based queries and responses only.
The file llama_index/query_engine/flare/base.py is relevant to this issue. It contains the base query engine for the FLARE system, which is used to process and respond to queries. The query engine uses various methods to retrieve information based on the input query, such as keyword retrieval and embedding retrieval. However, these methods seem to be designed to handle text-based queries only.
To support multi-modal RAG queries, the system would need to be extended to handle other types of data. This could involve adding new methods for retrieving information from images, audio, etc., and integrating these methods into the query engine. It would also likely involve changes to the response generation component of the system, to allow it to generate responses based on multiple types of data.
In conclusion, the system does not currently support multi-modal RAG queries, but it could potentially be extended to do so with some modifications. The file llama_index/query_engine/flare/base.py would likely be a key part of these modifications.

authors: Sheth-G torvalds-dev

repo: test-app-organization/test-repo-app

license: MIT

license_source: github-api


text:
New action request: Sibz/action-always-fail

Action name
uses: Sibz/action-always-fail
Reasons
Sibz/action-always-fail

Intended usage
Sibz/action-always-fail

I have checked the internal marketplace for similar actions and couldn't find one that works for us.

[X] I have checked the internal marketplace first

:robot: Found these results:

Check
Results
Links

CodeQL on the forked repo
:white_check_mark:
CodeQL run

Security scan:

Check
Result

No Dependabot configuration found
⛔

No CodeQL Init found
⛔

No CodeQL Analyze found
⛔

repo: test-gha-market/github-actions-requests


text:
R2dbc support

I've recently decided to try R2DBC and noticed that TestContainers is currently only compatible with JDBC. I've decided to add the support for it, however there are lots of impactful decisions to be made so I'd like some feedback on the assumptions I've made. I've currently implemented a very basic support for Postgresql containers. Before I go any further I'd like to discuss the following topics:

Packaging. So far it seems possible to reuse GenericContainer, so I've decided to work with that and created a new package equivalent to the org.testcontainers.jdbc. The existing container implementations are tightly coupled with JDBC, so it would be best to have a separate class for each R2DBC container. The container implementations would be prefixed with R2dbc  and reside in the packages next to original JDBC versions.

JDBC URI. As @mp911de has mentioned here and also here it would be desirable to not reimplement DataSource discovery based on string parsing. For the time being, I suggest a following approach:

A database container can only be created explicitly in a test
A container should expose an R2dbc object so that a test client can easily get access to the DB without having to create it on their own. We could also expose just the ConnectionFactory, but so far I see no benefit in this.
A container should also expose all the connection params (as a POJO or getters for specific properties) so that if there is a requirement to create a JDBC connection to the DB, they can do so.

When ConnectionFactory discovery is merged maybe we could use that.

Code reuse. Current implementation of R2dbcDatabaseContainer is mostly copied from JdbcDatabaseContainer, and all concrete implementation would contain lots of duplicate code as well. To solve this we could either:

create another abstraction layer between R2dbcDatabaseContainer and GenericDatabaseContainer
pull as much code up into GenericDatabaseContainer  as possible add R2dbc compatibility at that level (seems unlikely)
maybe create some helper classes for the common code

Looking forward to your opinions, I'm happy to be devastated in a review

I believe I've resolved all the conflicts and done all requested changes. I've also added a sample doc section. Anything else left to improve?

@bsideup @kiview I'd appreciate some feedback / action, so that this PR doesn't hang here forever. Thanks alot

FYI https://github.com/r2dbc/r2dbc-spi/issues/37 was merged and now we can finally continue with the R2DBC support 🎉

R2DBC 0.8.0.M8 is released and so URL formats are stable.
R2DBC Javadoc: https://r2dbc.io/spec/0.8.0.M8/api/

@mp911de, @kiview and I met and discussed a couple of weeks ago. Sorry for the late writeup, but what we discussed was a plan to:

With the new milestone release of R2DBC, introduce a String getR2dbcUrl() method for the existing database container classes. As a simple string getter, we'd have no binary dependency on R2DBC, so this would be straightforward to add to our existing modules. (@bsideup I know you have some thoughts on this - let's discuss)

Later, we'll do a separate piece of work to implement a proxying driver implementation, similar to our ContainerDatabaseDriver class and conforming to a R2DBC SPI.

The latter would have a binary dependency on R2DBC and thus belongs in a new module.
As such, I think this particular PR can be trimmed a lot or replaced, unfortunately @Humblehound. Thank you for sparking the conversations, and sorry it's taken a long time so far.

No problem, I'm glad to have the problem resolved one way or another.

hello, so what about testing r2dbc spring-boot apps with postgres in test-container?

authors: Humblehound bsideup daggerok mp911de rnorth

repo: testcontainers/testcontainers-java


text:
add basic clickhouse module

Add basic clickhouse module

@tomershafir please add your module under modules add file https://github.com/testcontainers/testcontainers-node/blob/main/mkdocs.yml. Otherwise it will be missing in the documentation.

done, @cristianrgreco hey, can you merge?

Thanks @tomershafir, please address the linting issues. The security alerts could also be solved by replacing Math.random() with a uuid (we have a UUID generator). I know it's for test only but it'd be nice not to get alerted each time a change is made here.

done

Thanks @eddumelendez :slightly_smiling_face:  Will merge when the build passes

Closing due to inactivity.

authors: cristianrgreco djakielski tomershafir

repo: testcontainers/testcontainers-node


text:
benchmark: bumps vs tests wasmtime and wasmedge to latest

I tried to run wasmedge locally as they publish arm64 os/x now, but it fails like below even sourcing their env. I left that alone for now
dyld[88003]: Library not loaded: @rpath/libwasmedge.0.dylib
  Referenced from: <B1821F61-C84A-38EE-BC33-F3DFB1837BEB> /private/var/folders/vd/1cf8zdb1721f4z5rjggy8bp40000gn/T/go-build1872793839/b001/wasmedge.test
  Reason: tried: '/System/Volumes/Preboot/Cryptexes/OS@rpath/libwasmedge.0.dylib' (no such file), '/usr/local/lib/libwasmedge.0.dylib' (no such file), '/usr/lib/libwasmedge.0.dylib' (no such file, not in dyld cache)
signal: abort trap
FAIL	github.com/tetratelabs/wazero/internal/integration_test/vs/wasmedge	0.240s
FAIL

verified CI can still use wasmedge even if I can't locally
BenchmarkAllocation/Call-16
wazero-compiler 5933.16   ns/op
wasmedge        167909.74 ns/op
BenchmarkFactorial/Call-16
wazero-compiler 941.73   ns/op
wasmedge        14413.08 ns/op
BenchmarkHostCall_CrossBoundary/Call-16
wazero-compiler 115.78  ns/op
wasmedge        2421.91 ns/op
Benchmark/memory.i32/Call-16
wazero-compiler 372.47  ns/op
wasmedge        9234.57 ns/op
Benchmark/memory.i64/Call-16
wazero-compiler 328.78  ns/op
wasmedge        9515.26 ns/op

repo: tetratelabs/wazero


text:
ファイル構成の整理, サポート先など

ファイルの構成について整理したいと思います。
現状は以下の通りです。

mendex.1 (roff): English man page (-> source of mendex.man1.pdf)
mendex.1.ja (roff): Japanese man page
mendex.tex: pLaTeX source of Japanese man page (-> mendex.pdf)
mendex.doc: plain text version of mendex.1.ja
README_asciimw: historic purpose only (by ASCII MEDIA WORKS)

mendex.1 は、元のmendex.1(日本語) を英語に翻訳したもので、mendex.man1.pdf のソースになっている他 man によるコマンドライン上のマニュアルのソースになっています。
mendex.1.ja は、元のmendex.1(日本語) をリネームしたもので、やや編集が滞りがちでした。しかし、man によるコマンドライン上のマニュアルの日本語版として利用価値があると思います。
mendex.tex は、日本語マニュアルのpdf版ソースになっており、現状一番よくメンテナンスされています。
mendex.doc は、元はmendex.1(日本語) をテキストファイル化したものでした。若干編集が滞りがちのようです。
README_asciimw はアスキー社さんによるオリジナルのREADMEです。コンパイル方法など現状とあわない旧い情報も含まれますが、<特徴>, <kpathsea の環境変数について> などmendex.1.ja 等には盛り込まれていない情報も含まれています。
私の意見は以下です。

mendex.1.ja は、man によるコマンドライン上のマニュアルの日本語版向けにメンテナンスを継続する。
mendex.doc は、mendex.1.ja, mendex.tex, mendex.pdf と重複するので削除する。あるいは、groff で自動生成できるものに差し替え mendex.ja.txt のようなファイル名に変更する。
README_asciimw は、今の段階では残す。将来、全ての情報が mendex.1.ja に含まれた場合には削除しても良い。
mendex のサポート先を「日本語TeX開発コミュニティ issue@texjp.org」とする。英語版 README を作成し、サポート先として明記する。

mendexのメンテナーは成り行き上私になっていましたが、そろそろコミュニティーに移させてもらういい頃合いじゃないかな、と思います。もちろん、私が手をいれた部分に問題が生じた場合には、私が最大限対応するつもりです。
READMEについては、別案として、冒頭部分を英語のREADMEにして、後ろの方に README_asciimw の内容を引用する形でもよいです。

若干意見を修正します。

README_asciimw, ChangeLog* は、現状も mendex-doc のCTANアーカイブに含まれていないので、
今後もmendex-doc には含めない。mendex-docリポジトリから削除し、Build/source/texk/mendexk の方に残す。

今回書いた README_mendex.md は、CTAN の mendex-docリポジトリに含めても良いし、Build/source/texk/mendexk に入れるだけでも良いです。

ユーザ向けのドキュメントをCTANにアップした方がいいと思います。Build/sourceに入ってるファイルを結局誰も読んでいない気がします。
他のこと：

README_mendex.md とREADME.mdの両方が要らないと思います
README_mendex.mdはまだREADME_asciimwを述べています

この２つの点を直せばマージしていいと思います。

README_mendex.md に書いたことを README.md に取り込んでみました。
README.md は「mendex-doc の CTAN用 README」であるとともに source の方にもコピーして置こうと思っています。

田中さん、変な日本語をすみません。はい、仰るとおり、１つだけ結構だと思います。
今の状況を確認しました。僕ならば、これでいいです。ありがとうございます。

コメントありがとうございます。

source の方にはもっと簡潔な (...) という感じの README でも十分ではないでしょうか？

好みの差なのだとは思いますが、以下の理由でその案は魅力的とは感じません。

「mendex-docを見よ」では、source ディレクトリを見ている人にとって、情報が削られた分参照先を見る手間を増やすことになる。
mendex-doc の役割は、ユーザーマニュアルの整備、配布にある。source の方には、(未来の)開発者に知らせたい情報は集めておきたい。
source ディレクトリは、mendex.1, mendex.1.ja を含む今の形を維持したい。README.mdとともに mendex-docと source ディレクトリをsyncする形にすればよい。それは大した手間ではない。

いろいろありがとうございます。今確認したところで，これでいいと思います。

ご協力ありがとうございました。
Build/source/texk/mendexk の方も以下の更新しました(r48247)。ここを閉じます。
mendex.1, mendex.1.ja (更新)
README.md (追加)

authors: aminophen norbusan t-tk

repo: texjporg/mendex-doc


text:
Copy of Make thread.ID just a string alias

Sorry @asutula, I didn't grasp that the problem was related to JSON Schemas. So, adding this PR to reduce work. Feel free to take it over.
Some notes:

There doesn't seem to be a way to reflect a private attribute.
+1 to your original solution.
This branch has been reset --hard to when before you reverted the change, plus a small nits I added. I wasn't able to easily cherry-pick your better error message commit, so I made the change manually.

So, the downside to this, and why I was resistant, is that not there's nothing stopping me from doing myID := ID("foo"), which is not a valid ID. Calling String() on myID would panic if we weren't hardcoding the response from Version(), which we should probably not be doing anymore since now it's possible to create a version other than V1. Maybe we can add a Valid() or similar method that could be called to ensure String() won't panic when you're unsure.

@asutula I updated the Android protoc installer action... seems to be good now.

Awesome, thanks for doing that. I'm going to go through this one more time in the morning and make sure I also feel right about it... you got me second guessing myself haha. Mainly, I want to step down into some of the json schema code and understand why it thinks the instance doesn't match the schema in that test case. There's probably a good reason for it, but it isn't apparent to me just yet.

Mongo's ObjectID could provide some inspiration: https://godoc.org/go.mongodb.org/mongo-driver/bson/primitive#ObjectID. Instead of a string or struct, it's a byte array. This has the same problem as I described above, where it allows a user to create an invalid ID. However, we can easily add some extra validation in the string decoding method, as they have done in ObjectIDFromHex.
Some additional thoughts:

Regarding validation, no matter what we do, the schema won't be able to really validate the ID, which requires something custom (maybe that doesn't matter, as a bad ID would/should cause hiccups in a user's app logic)
In any case, https://github.com/qri-io/jsonschema#custom-validators looks interesting, although it would only be useful in the Go realm

To clarify, I'm not suggesting with use a byte array, just that seeing their design makes me feel better about not "protecting" the inner string.

I think I'm close to finding out if we can keep the original private string... think it might be possible. Stand by.

Ok @sanderpick I pushed some changes here.

Adds Valid() bool method to thread.ID
Refactors code in thread.ID to be DRY as possible
Two methods on thread.ID (String() and Version()) might panic if they encounter an unsupported state because of an invalid thread.ID, so I updated all production calls (not tests) to call thread.ID.Valid() and handle the invalid case before calling either of those

Left some comments and questions in the code. Let me know what you think.

authors: asutula sanderpick

repo: textileio/go-threads


text:
refactor(markdown-to-ast): migrate  to neotraverse

fix #1400

Thanks!

authors: Jayllyz azu

repo: textlint/textlint


text:
What is the correct way to return a single value from select query?

The simple way to do select query in knex is like this:
db('table_name').where({ id: 1 }).select();

But, it return an array. Since id is a unique field, it's clear that I
expect a single result. And then, I have to do something like this:
db('table_name').where({ id: 1 }).select().then(result => result[0]);

Is there any official way to return a single value?

db('table_name').where({id: 1}).first().then((row) => row)
Should work

Oh, it's actually first  and I keep looking for one, selectOne, etc. Thanks

db('table_name').where({id: 1}).first(); this would work the same. no?

@arch-mage If there should be only single matching result, then it's a best practice to ensure it, common single implementations do it using limit 2. Here's how to add it to Knex.
import Knex from 'knex'

declare module 'knex' {
  interface QueryInterface {
    _method: string
    _isSelectQuery: () => boolean
    single: (columns?: string | string[], notFoundMessage?: string, notSingleMessage?: string) => Promise<any>
  }
}

Knex.QueryBuilder.extend('single', function single(
  this: Knex.QueryBuilder,
  columns: string | string[] = '*',
  notFoundMessage?: string,
  notSingleMessage?: string,
): any {
  // eslint-disable-next-line no-underscore-dangle
  if (!this._isSelectQuery() || this._method === 'first')
    // eslint-disable-next-line no-underscore-dangle
    throw new Error(`Cannot chain .single() on "${this._method}" query!`)
  // eslint-disable-next-line no-param-reassign
  if (typeof columns === 'string') columns = [columns]
  const allColumns = columns.includes('*')
  const singleColumn = !allColumns && columns.length === 1 ? columns[0] : false
  if (!allColumns) this.select(...columns)
  this.limit(2)
  return this.then((results: any[]) =>
    (console.log(results) as any) || results.length === 1
      ? singleColumn
        ? results[0][singleColumn]
        : results[0]
      : results.length
      ? Promise.reject(notSingleMessage || `Query has more than one result: "${this.toSQL().sql}"`)
      : Promise.reject(notFoundMessage || `Query has no results: "${this.toSQL().sql}"`),
  )
} as any)

@wubzz would you be interested in a PR adding the single method to QueryInterface?

db('table_name').where({id: 1}).first().then((row) => row)
Should work

worked for me

db('table_name').where({id: 1}).first().then((row) => row)
Should work

Returned Promise { **pending** }
Used following method to resolve: variable.then(function(result) {    console.log(result) })

Funny i wanted to return all matching the ID. as my id filed is not unique. But even then i get only one row returned. Is there a way to return all matching rows

@sshammi how many rows are there in your table with the same id? If id is declared as primary key and auto_increment, then only one unique id will be given to each row. Therefore, you can't return all matching rows by id.

So basically my table had multiple rows for StudentID but it;s not a primary key. When I do this i get multiple row. However the moment I add .groupBy('SessionIdentifer') it returns just 1 row. and SessionIdentifer is also not the primaty key. ActivityID is they primaty key but i don;t want that in response. Thanks again for the response @jkalandarov   const rows = await Database("UserActivityData").select(         "SessionIdentifer",         "TaskName",         "TimeTaken",         "Score",         "Status"     ).where({         StudentID,         CourseID: 'SOPEP_1'     });

authors: Arch-Mage haroonKhan-10p iki jkalandarov ssshammi trojancode wubzz

repo: tgriesser/knex


text:
Store seed state in database like migrations

Hi,
It seems that seed:run will run all of the seed files, is there a benefit to adding a seed:latest method that works in the same fashion as the migrate:latest. The implementation of seed files wouldn't change but it would allow for test data to be passed around branches, and would ease testing and qa.
Cheers,
Jason

:+1: Would love to see something like this as well. Not sure why the current seeds are alphabetical?? I'm not saying it was a bad idea. I just don't understand the significance of alphabetical seeds. Especially when dealing with relations, etc.

+1

@elhigu Is this issue still relevant? From my understanding this is kinda redundant, since versioned seeds are basically migrations.

Thanks @kibertoad. Definitely not needed or wanted. Indeed migrations works just fine for this.

authors: elhigu jbrumwell jocull jpdesigndev kibertoad


text:
[MRG] Py37 build artifacts

This PR removes the explicit version for cython, which was preventing build artifacts for Python 3.7 (#76), and adds a check to make sure our build artifacts were created before deployment.
I added the check in the before_deploy section of the build as noted here, so it will only get run on a tagged release (i.e., it won't run when we merge this in). I initially had it in the after_success phase, and I am more than happy to move it back, but it made more sense to me here.

If y'all would like to see a build where the assertion ran correctly (since it won't run unless we are on a tagged branch), see here

Codecov Report

Merging #77 into develop will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff            @@
##           develop      #77   +/-   ##
========================================
  Coverage    98.51%   98.51%
========================================
  Files           37       37
  Lines         1746     1746
========================================
  Hits          1720     1720
  Misses          26       26

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 1d17960...cf1dd36. Read the comment docs.

authors: aaronreidsmith codecov-io


text:
🛑 VPN is down

In 3064695, VPN ($SECRET_VPN_URL) was down:

HTTP code: 0
Response time: 0 ms

Resolved: VPN is back up in a4badcc after 13 minutes.

repo: tgstation-operations/status


text:
Development workflow

A "full stack" (?) development workflow.

resolve #92
tgve/eatlas-template#4 (?)
dev workflow instructions in README.md

[ ] for eAtlas contributors

[ ] clone eatlas-template
[ ] locally modify eAtlas dependency in package.json to point to link:../eAtlas

[x] move change log to separate .md file
[x] #100

[ ] commit to either yarn or npm to avoid warnings about package-lock.json
native Mac development

[ ] get to the point where we can run geoplumber::gp_plumb() in the R console

[ ] Docker-based development

[x] move Dockerfile from eAtlas/npm to `full-template
[x] locally modify package.json to point to file:../eAtlas (not link:!)

[ ] ../eAtlas not visible inside Docker container

[ ] locally modified package.json/yarn.lock is a bit of a pain

Done/dropped:

experiments on master branch

[x] build Docker image
[x] yarn install/yarn start

experiments on npm branch

[x] build Docker image :x: Error: Cannot find module 'webpack/lib/node/NodeTemplatePlugin'
[x] yarn install/yarn start :x: Could not find a required file. Name: index.html
[x] npm install/npm start :x: Webpack 4.42.0/4.46.0 dependency issue

Hopefully this becomes much clearer once we deal with #92 and #93.

@layik In the proposed internal dev workflow (where we clone, rather than instantiate, eatlas-template), the developer (in this case me) has to have a locally modified package.json and yarn.lock. This is a bit annoying. Any ideas on how we might improve on this?

OK here is part of the doc I am working on for developers which can replace this Wiki entry. I am happy to refer to how other npm package developers do it but would have to be similar. Here is part of the MD being written.
Local React App
To develop (make changes) or even better contribute to eAtlas, please set up your own development environment.
We propose two ways:

using the eatlas-template OR
using a clean CRA app

There are three steps in either of the two cases:

Clone the eAtlas template
Transpilte it using the provided package.json script currently named dist. For instance:

git clone https://github.com/tgve/eAtlas
cd eAtlas
npm run dist

Make your dependency of eatlas a local one to your step (1)

That should set you up.
Clean CRA app
Using eatlas-template

A Wiki entry like this: https://github.com/tgve/eAtlas/wiki/Developing-eAtlas

Now, I am happy to say "We propose you create a CRA app from scratch" etc.

Will do some more tests on using yarn and hopefully can commit to yarn as our other repos all use yarn. It is a very valid checklist item.

RE checklist item: "get to the point where we can go gp_plumb if this Wiki entry is fully reproducible, I am happy to make sure it stays fresh. It is one aspect of this work that I like to tell data scientists that our approach is fully reproducible.
https://github.com/tgve/eAtlas/wiki/Reproducible-TGVE

And perhaps, I need to commit an .Rmd that can be run by users and reproduced using an R package like reprex::reprex().

RE checklist item: "get to the point where we can go gp_plumb if this Wiki entry is not fully reproducible, I am happy to make sure it stays fresh. It is one aspect of this work that I like to tell data scientists that our approach is fully reproducible.
https://github.com/tgve/eAtlas/wiki/Reproducible-TGVE

Won't reproducibiity be exactly what's captured by the Dockerfile? Or do you have something else in mind?

RE checklist item: "get to the point where we can go gp_plumb if this Wiki entry is not fully reproducible, I am happy to make sure it stays fresh. It is one aspect of this work that I like to tell data scientists that our approach is fully reproducible.
https://github.com/tgve/eAtlas/wiki/Reproducible-TGVE

Won't reproducibiity be exactly what's captured by the Dockerfile? Or do you have something else in mind?

I agree a Dockerfile is a reproducible example. But more like a document in shape of a notebook or an Rmarkdown is what I have in mind for [data] scientists.

@layik Ok. Perhaps this could build on what's currently in the jupyter repo?

@layik Should we think of the development workflow (assuming a full stack setup that allows change to the R code, React code, etc) as belonging to full-template?

For me this is what we discussed today and a "development workflow" would be what a developer would be doing to develop eAtlas npm package.

You mean the full-template sticking with R to make my life easier.

Let's talk about this tomorrow morning.

authors: LydiaFrance layik rolyp

repo: tgve/eAtlas


text:
Color Issue?

The colors for LCARS 'default' don't match the default LCARS implementation. Have I done something wrong? See image comparing my current HA implentation of ha-lcars versus those for PiHole and SmokePing.

If this is simply an implementation decision, any pointers to where to put my own colors would be helpful. I looked in the code, and the base colors seem to be 'correct' as per https://www.thelcars.com so I'm not sure why they aren't showing up in my implementation.
Thanks

The image on the left is showing the LCARS "Modern" color scheme. I suspect you have a conflict between what you are selecting as the backend theme and your profile theme. LCARS "Default" should look more like the Smoke Ping interface you have pictured (and also the hero images at the top of the HA_LCARS documentation). The PiHole colors look completely arbitrary to me (though not bad).


text:
Improving {Halt,Retry}Error semantics

It's a continuation of a small discussion that we had on Slack a few weeks ago. Currently, we have HaltError and RetryError. HaltErrors happen when some critical issue occurs and we have to halt the whole process so that the operator could investigate what went wrong. RetryError happens when some operation fails that we can retry. Some relevant snippets of code:
  366             // The RetryError signals that we hit an retriable error (transient error, no connection).
  367             // You should alert on this being triggered too frequently.

  354             // The HaltError type signals that we hit a critical bug and should block
  355             // for investigation. You should alert on this being halted.

However, the way it is right now is if a RetryError occurs then we retry the whole iteration i.e. compactMainFn(). That's awesome but all of the previously performed work disappears because once we start that function again, we wipe the workspace:
https://github.com/thanos-io/thanos/blob/master/pkg/compact/compact.go#L938-L941
https://github.com/thanos-io/thanos/blob/master/pkg/compact/compact.go#L464-L469
This means that all of the files that were previously successfully downloaded have been lost.
I propose extending this logic to check what is on the disk before trying to overwrite the files. My idea is:

Extend meta.json to include file integrity checksums of all files in the directory besides meta.json itself and deletion-mark.json. These should only be calculated by writers only if some flag has been specified so that this wouldn't incur a performance cost on all writers;
Make Thanos Compact consult those checksums if they are present before trying to download files again. If they match then we don't download the file. If they don't - we overwrite and download the file again.

Affected Thanos versions: <=0.13.0.
Thoughts?

My gut feeling is that your proposed logic adds extra complexity to cover a case which shouldn't be the normal one. I wouldn't expect failures to happen so frequently and, if they do, probably fixing the root cause is better, but I'm open to discuss it further.

Extend meta.json to include file integrity checksums of all files in the directory besides meta.json itself and deletion-mark.json. These should only be calculated by writers only if some flag has been specified so that this wouldn't incur a performance cost on all writers;

Some object storages already export the checksum of objects when reading attributes (HEAD operation). Have you checked if it's available for any object store we support? If so, you wouldn't need to store any checksum in meta.json.

My gut feeling is that your proposed logic adds extra complexity to cover a case which shouldn't be the normal one. I wouldn't expect failures to happen so frequently and, if they do, probably fixing the root cause is better, but I'm open to discuss it further.

I actually had to implement a rough version of https://github.com/thanos-io/thanos/pull/2785 because it was impossible for Thanos Compactor to finish at least one iteration due to transient errors. RetryError should help out in this case but it wipes everything right now so it's pretty useless. It only "helps" by not restarting the whole process when --wait is specified.
If the object storage code doesn't support (and it shouldn't) retries when some more serious error happens and if our retrying logic is kind of useless IMHO then where do you think such things should be handled?
RetryError seems like an elegant solution to me but it needs improvements as outlined in the OP.

Extend meta.json to include file integrity checksums of all files in the directory besides meta.json itself and deletion-mark.json. These should only be calculated by writers only if some flag has been specified so that this wouldn't incur a performance cost on all writers;

Some object storages already export the checksum of objects when reading attributes (HEAD operation). Have you checked if it's available for any object store we support? If so, you wouldn't need to store any checksum in meta.json.

That's true but I don't think we should add another method for this to our object storage interface if we can avoid it because that raises the bar for any other object storage that might not support such functionality.

That's true but I don't think we should add another method for this to our object storage interface if we can avoid it because that raises the bar for any other object storage that might not support such functionality.

We have the attributes function which was designed for this. Assuming it's feasible to add the checksum (I haven't checked if it's implemented by all storages we do support nowadays) I agree that adding extra attributes there could be a blocker to support other storages in the future.

WIP. Have basic hashes support in my own branch, now need to add the needed functionality in Compactor.

Attempting to implement this in https://github.com/thanos-io/thanos/pull/3031.

Trying to push https://github.com/thanos-io/thanos/pull/3031 over the line.

authors: GiedriusS pracucci

repo: thanos-io/thanos


text:
Memcached client not configured with dial timeout

Thanos, Prometheus and Golang version used:
We use Cortex, but under the hood the Thanos version is d1acaea2a11a3e4db6bb435c98dea63c517e3530

Object Storage Provider:
S3
What happened:
We run Cortex, and the store-gateway component heavily utilizes the Thanos bucket store
When memcached cluster is unresponsive, the query times out on the cache path, instead of timing out fast, and go directly to the bucket store.
What you expected to happen:
Cache failure should not result in query failure. We can configure the dialtimeout on the memcached client so when the cluster is unresponsive, we still have a chance to get data from object store directly.
we can configure the memached client dialtimeout, which will fail faster.
https://github.com/thanos-io/thanos/blob/main/pkg/cacheutil/memcached_client.go#L243
https://github.com/cortexproject/cortex/blob/34bb142b129bd781539001fb1629cf2f3ed54b82/pkg/chunk/cache/memcached_client.go#L144
How to reproduce it (as minimally and precisely as possible):
Restart memcached while performing queries
Full logs to relevant components:
Logs

level=warn ts=2022-06-07T19:27:20.241823574Z caller=memcached_client.go:461 name=index-cache msg="failed to fetch items from memcached" numKeys=2 firstKey=S:01G4EWW6D96D2JAFRVSPBQNA2A:753353152 err="dial tcp 10.0.20.35:11211: connect: connection timed out"

Anything else we need to know:

Yeah, I think this makes sense. @roystchiang Would you like to open a PR?

yup! I will be more than happy to :)

after taking a closer look at the memcached client, we are correctly setting the dial timeout. https://github.com/themihai/gomemcache/blob/master/memcache/memcache.go#L233
it turns out to be a misconfiguration on our side :(


text:
Update files

Hi, I made some small updates, such as typos and grammatical mistakes.

Thank you @tomz00 for the pull request fixing a lot of silly mistakes. Much appreciated!

repo: thatsmanmeet/tasky-web


text:
List of available settings ?

Laravel Version: 5.4
Voyager Version: 0.11.12
PHP Version: 7
Database Driver & Version: mysql

Description:
Where can i find the full list of admin setting that i can add ?
Currently i found those : admin_title , admin_description , admin_icon_image ,  admin_bg_image, google analytics ?

There is no difference between "admin" and "regular" settings. The admin_ settings are used by the package developers to set some properties and to allow us to customize them.
You can add as much settings as you want and add them to your public or admin views, but you already found all the available "admin settings".

right , i just thought a list was already available instead of looking into the code and extracting them to modify the backend as i wanted .
Thanks !

authors: afontcu chaaban

repo: the-control-group/voyager


text:
BREAD Select Dropdown options not always staying in the same order

Laravel Version: 5.5.0
Voyager Version: 1.0.5
PHP Version: 7.1.8
Database Driver & Version: MySQL 5.7.19

Description:
I entered the JSON for a "Select Dropdown" field's options and then when I saved it, it got saved out of order.
Steps To Reproduce:
This can be reproduced using Voyager's built-in "pages".

Go to /admin/database/pages/bread/edit
Change the status field's JSON to the following:{
    "options": {
        "": "---------",
        "1": "1",
        "1.5": "1.5",
        "2": "2",
        "2.5": "2.5",
        "3": "3",
        "3.5": "3.5",
        "4": "4",
        "4.5": "4.5",
        "5": "5"
    }
}

Submit the form
Go back to the same URL as step 1
Observe that the JSON wasn't saved in the same way that it was entered. For me, it was like this:{
    "options": {
        "1": "1",
        "2": "2",
        "3": "3",
        "4": "4",
        "5": "5",
        "": "---------",
        "1.5": "1.5",
        "2.5": "2.5",
        "3.5": "3.5",
        "4.5": "4.5"
    }
}

Had a crack at this today. Does not seem to be a Voyager issues but rather a browser one.
Have a search for "json parse json.parse reorder json".
The only solution viable at the moment is prepending keys with some sort of string or uderscore.
That prevents the JSON implementation of the browser from reordering it.
Hope it helps.

Would it be feasible to deprecate the current syntax in favor of syntax that will guarantee order? Maybe something like this:
{
    "options": [
        {"": "---------"},
        {"1": "1"},
        {"1.5": "1.5"},
        {"2": "2"},
        {"2.5": "2.5"},
        {"3": "3"},
        {"3.5": "3.5"},
        {"4": "4"},
        {"4.5": "4.5"},
        {"5": "5"}
    ]
}

In my case, I'm working with a decimal field in a database, so I can't prepend the keys.

I tried with the array as well, and got the same result.
But later on in the day i'll try have to have a look at it again.
Non the less a pull request that implies a syntax change for a heavily used object like the config object would be very hard to merge.

You got the same result, meaning that it ended up in the wrong order even with the array? If that's what you mean, that's strange. When I enter these two lines into my console, the first one messes up the order, but the second one preserves the order:
JSON.parse(`[paste the JSON from step 2 of this issue's description]`);
JSON.parse(`[paste the JSON from my previous comment on this issue]`);

To be clear, I'm not saying that everything about the config object should be changed; I'm talking only about the "options" part of the config object. Also, if it's feasible, perhaps there could be a period of time where the old syntax is still supported along with this new, proposed syntax so that people could have time to switch to the new syntax. I imagine it would be pretty simple to upgrade to the new syntax programmatically and not have to go through a big, laborious process to upgrade.


text:
Admin serverside search resulting in Unknown column 'posts.post_belongsto_category_relationship'

Laravel version
8.52.0
PHP version
7.4.9
Voyager version
1.x-dev aaee6ab
Database
MySQL 8.0.22
Description
While attempting to filter blogs based on category name using the supplied UI I get an error stating:
Column not found: 1054 Unknown column 'posts.post_belongsto_category_relationship' in 'where clause' (SQL: select count(*) as aggregate from posts where posts.post_belongsto_category_relationship LIKE %cat%)
Steps to reproduce

Using the Dummy Data change Posts to server-side and Categories to Browse
Go to Posts on Admin dashboard
Use filter drop down to select Categories, then contains, then use any search string (I used cat in my example)
Error is reproduced stating an unknown column.

Expected behavior
Posts should filter based on the search string within the input across the belongsto relationship.
Screenshots
No response
Additional context
No response

I am experiencing the same the same issue, but I noticed that you can search for the related display value by choosing the foreign key field from the dropdown, rather than the name of the displayed field, in the search controls.
For example, if you had models of cars related to makers, you can filter the cars by choosing "maker_id" as the search field, and then entering the display value you're looking for (e.g. "Ford").
This is counter intuitive, as you would expected a search on the foreign key field (e.g. "maker_id") to be a search for an ID number.
However, As a quick and dirty solution - until someone much smarter than me can solve it properly - I overrode the index method of VoyagerBaseController and replaced lines 50-55 with:
$searchNames = [];
if ($dataType->server_side) {
    $searchRows = $dataType->browseRows->filter(function ($item, $key) {
        return $item->type !== 'relationship';
    });
    $searchNames = $searchRows->mapWithKeys(function ($row) {
        return [$row['field'] => $row->getTranslatedAttribute('display_name')];
    });
}

This removes the relationship fields from the list of searchable fields that are passed to the view. You can then change the "Display Name" of the foreign key field in the bread to remove "_id" (e.g. display "maker_id" as "Maker") and make the search more intuitive for the user.

I was able to fix it. You need to change your index method of VoyagerBaseController and replace:
if ($dataType->server_side) {
    $searchNames = $dataType->browseRows->mapWithKeys(function ($row) {
        return [$row['field'] => $row->getTranslatedAttribute('display_name')];
    });
}

By:
if ($dataType->server_side) {
    $searchNames = $dataType->browseRows->mapWithKeys(function ($row) {
        return $row['type'] == 'relationship'
                    ? [$row['details']->column => $row->getTranslatedAttribute('display_name')]
                    : [$row['field'] => $row->getTranslatedAttribute('display_name')];
        });
}

Also You need to change this line:
$row->details->model::where($row->details->label, $search_filter, $search_value)->pluck('id')->toArray()
To:
$row->details->model::where($row->details->label, $search_filter, $search_value)->pluck($row->details->key)->toArray()
Now, in your User bread you can search for example by role relationship using the value of the field you set up in your relationship, for example: 'Admin' that would be the value of the field display_name in role table.

@SneakyGerald this works perfectly, thank you men!

change row  on findSearchableRelationshipRow
if ($item->details->type != 'belongsTo' && $item->details->type != 'belongsToMany') {
    return false;
}

I was able to fix it. You need to change your index method of VoyagerBaseController and replace:
if ($dataType->server_side) {
    $searchNames = $dataType->browseRows->mapWithKeys(function ($row) {
        return [$row['field'] => $row->getTranslatedAttribute('display_name')];
    });
}

By:
if ($dataType->server_side) {
    $searchNames = $dataType->browseRows->mapWithKeys(function ($row) {
        return $row['type'] == 'relationship'
                    ? [$row['details']->column => $row->getTranslatedAttribute('display_name')]
                    : [$row['field'] => $row->getTranslatedAttribute('display_name')];
        });
}

Also You need to change this line: $row->details->model::where($row->details->label, $search_filter, $search_value)->pluck('id')->toArray()
To: $row->details->model::where($row->details->label, $search_filter, $search_value)->pluck($row->details->key)->toArray()
Now, in your User bread you can search for example by role relationship using the value of the field you set up in your relationship, for example: 'Admin' that would be the value of the field display_name in role table.

thanks

Hi,
Surprisingly, I am also getting same issue in
PHP 8.1.11
Laravel 9.17.0
Voyager 1.6.x-dev
Can anybody please help? I have already tried above suggestions in "VoyagerBaseController.php" that I have overridden in my 'app\Http\Controllers' folder but it is not working ...

Thanks.

Make sure that, you have project_notes column in db table
On Thu, Sep 29, 2022, 9:00 PM Muhammad Omar @.***>
wrote:

Hi,
Surprisingly, I am also getting same issue in
PHP 8.1.11
Laravel 9.17.0
Voyager 1.6.x-dev
Can anybody please help? I have already tried above suggestions in
"VoyagerBaseController.php" that I have overridden in my
'app\Http\Controllers' folder but it is not working ...
[image: image]
https://user-images.githubusercontent.com/10277690/193081019-6db1e741-9395-424b-8263-a4380a26bc42.png
Thanks.
—
Reply to this email directly, view it on GitHub
https://github.com/the-control-group/voyager/issues/5412#issuecomment-1262487822,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AHN3Q72AJVWLNCU7CMAUFNTWAW4KPANCNFSM5BFPMFRQ
.
You are receiving this because you commented.Message ID:
@.***>

I was able to fix it. You need to change your index method of
VoyagerBaseController and replace:
if ($dataType->server_side) {
$searchNames = $dataType->browseRows->mapWithKeys(function ($row) {
return [$row['field'] => $row->getTranslatedAttribute('display_name')];
});
}
By:
if ($dataType->server_side) {
$searchNames = $dataType->browseRows->mapWithKeys(function ($row) {
return $row['type'] == 'relationship'
? [$row['details']->column =>
$row->getTranslatedAttribute('display_name')]
: [$row['field'] =>
$row->getTranslatedAttribute('display_name')];
});
}
Also You need to change this line:
$row->details->model::where($row->details->label, $search_filter,
$search_value)->pluck('id')->toArray()
To:
$row->details->model::where($row->details->label, $search_filter,
$search_value)->pluck($row->details->key)->toArray()
Now, in your User bread you can search for example by role relationship
using the value of the field you set up in your relationship, for example:
'Admin' that would be the value of the field display_name in role table.
On Thu, Sep 29, 2022, 9:00 PM Muhammad Omar @.***>
wrote:

Hi,
Surprisingly, I am also getting same issue in
PHP 8.1.11
Laravel 9.17.0
Voyager 1.6.x-dev
Can anybody please help? I have already tried above suggestions in
"VoyagerBaseController.php" that I have overridden in my
'app\Http\Controllers' folder but it is not working ...
[image: image]
https://user-images.githubusercontent.com/10277690/193081019-6db1e741-9395-424b-8263-a4380a26bc42.png
Thanks.
—
Reply to this email directly, view it on GitHub
https://github.com/the-control-group/voyager/issues/5412#issuecomment-1262487822,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AHN3Q72AJVWLNCU7CMAUFNTWAW4KPANCNFSM5BFPMFRQ
.
You are receiving this because you commented.Message ID:
@.***>

I created a trait for this very purpose and use that trait in controllers that are using relation fields in BREAD. Then have the controller extend \TCG\Voyager\Http\Controllers\VoyagerBaseController. In BREAD manager, the custom controller needs to be set.
Also this adds support for explicitly mentioning the relationship name in Voyager Relationship Details like so
{     "relation": "user" }
otherwise it will just try to figure out the relationship name from the model. For this to work the relationship method must be defined in the model.
`trait PatchedVoyagerBaseController
{
public function index(Request $request)
{
// GET THE SLUG, ex. 'posts', 'pages', etc.
$slug = $this->getSlug($request);
    // GET THE DataType based on the slug
    $dataType = Voyager::model('DataType')->where('slug', '=', $slug)->first();

    // Check permission
    $this->authorize('browse', app($dataType->model_name));

    $getter = $dataType->server_side ? 'paginate' : 'get';

    $search = (object) ['value' => $request->get('s'), 'key' => $request->get('key'), 'filter' => $request->get('filter')];

    $searchNames = [];
    if ($dataType->server_side) {
        $searchNames = $dataType->browseRows->mapWithKeys(function ($row) {
            return [$row['field'] => $row->getTranslatedAttribute('display_name')];
        });
    }

    $orderBy = $request->get('order_by', $dataType->order_column);
    $sortOrder = $request->get('sort_order', $dataType->order_direction);
    $usesSoftDeletes = false;
    $showSoftDeleted = false;

    // Next Get or Paginate the actual content from the MODEL that corresponds to the slug DataType
    if (strlen($dataType->model_name) != 0) {
        $model = app($dataType->model_name);

        $query = $model::select($dataType->name.'.*');

        if ($dataType->scope && $dataType->scope != '' && method_exists($model, 'scope'.ucfirst($dataType->scope))) {
            $query->{$dataType->scope}();
        }

        // Use withTrashed() if model uses SoftDeletes and if toggle is selected
        if ($model && in_array(SoftDeletes::class, class_uses_recursive($model)) && Auth::user()->can('delete', app($dataType->model_name))) {
            $usesSoftDeletes = true;

            if ($request->get('showSoftDeleted')) {
                $showSoftDeleted = true;
                $query = $query->withTrashed();
            }
        }

        // If a column has a relationship associated with it, we do not want to show that field
        $this->removeRelationshipField($dataType, 'browse');

        if ($search->value != '' && $search->key && $search->filter) {
            $search_filter = ($search->filter == 'equals') ? '=' : 'LIKE';
            $search_value = ($search->filter == 'equals') ? $search->value : '%'.$search->value.'%';

            $searchField = $dataType->name.'.'.$search->key;
            if ($row = $this->findSearchableRelationshipRow($dataType->rows->where('type', 'relationship'), $search->key)) {
                $query->whereRelation($row->relation, $row->field, $search_filter, $search_value);
            } else {
                if ($dataType->browseRows->pluck('field')->contains($search->key)) {
                    $query->where($searchField, $search_filter, $search_value);
                }
            }
        }

        $row = $dataType->rows->where('field', $orderBy)->firstWhere('type', 'relationship');
        if ($orderBy && (in_array($orderBy, $dataType->fields()) || !empty($row))) {
            $querySortOrder = (!empty($sortOrder)) ? $sortOrder : 'desc';
            if (!empty($row)) {
                $query->select([
                    $dataType->name.'.*',
                    'joined.'.$row->details->label.' as '.$orderBy,
                ])->leftJoin(
                    $row->details->table.' as joined',
                    $dataType->name.'.'.$row->details->column,
                    'joined.'.$row->details->key
                );
            }

            $dataTypeContent = call_user_func([
                $query->orderBy($orderBy, $querySortOrder),
                $getter,
            ]);
        } elseif ($model->timestamps) {
            $dataTypeContent = call_user_func([$query->latest($model::CREATED_AT), $getter]);
        } else {
            $dataTypeContent = call_user_func([$query->orderBy($model->getKeyName(), 'DESC'), $getter]);
        }

        // Replace relationships' keys for labels and create READ links if a slug is provided.
        $dataTypeContent = $this->resolveRelations($dataTypeContent, $dataType);
    } else {
        // If Model doesn't exist, get data from table name
        $dataTypeContent = call_user_func([DB::table($dataType->name), $getter]);
        $model = false;
    }

    // Check if BREAD is Translatable
    $isModelTranslatable = is_bread_translatable($model);

    // Eagerload Relations
    $this->eagerLoadRelations($dataTypeContent, $dataType, 'browse', $isModelTranslatable);

    // Check if server side pagination is enabled
    $isServerSide = isset($dataType->server_side) && $dataType->server_side;

    // Check if a default search key is set
    $defaultSearchKey = $dataType->default_search_key ?? null;

    // Actions
    $actions = [];
    if (!empty($dataTypeContent->first())) {
        foreach (Voyager::actions() as $action) {
            $action = new $action($dataType, $dataTypeContent->first());

            if ($action->shouldActionDisplayOnDataType()) {
                $actions[] = $action;
            }
        }
    }

    // Define showCheckboxColumn
    $showCheckboxColumn = false;
    if (Auth::user()->can('delete', app($dataType->model_name))) {
        $showCheckboxColumn = true;
    } else {
        foreach ($actions as $action) {
            if (method_exists($action, 'massAction')) {
                $showCheckboxColumn = true;
            }
        }
    }

    // Define orderColumn
    $orderColumn = [];
    if ($orderBy) {
        $index = $dataType->browseRows->where('field', $orderBy)->keys()->first() + ($showCheckboxColumn ? 1 : 0);
        $orderColumn = [[$index, $sortOrder ?? 'desc']];
    }

    // Define list of columns that can be sorted server side
    $sortableColumns = $this->getSortableColumns($dataType->browseRows);

    $view = 'voyager::bread.browse';

    if (view()->exists("voyager::$slug.browse")) {
        $view = "voyager::$slug.browse";
    }

    return Voyager::view($view, compact(
        'actions',
        'dataType',
        'dataTypeContent',
        'isModelTranslatable',
        'search',
        'orderBy',
        'orderColumn',
        'sortableColumns',
        'sortOrder',
        'searchNames',
        'isServerSide',
        'defaultSearchKey',
        'usesSoftDeletes',
        'showSoftDeleted',
        'showCheckboxColumn'
    ));
}

protected function findSearchableRelationshipRow($relationshipRows, $searchKey)
{
    $row = $relationshipRows->filter(function ($item) use ($searchKey) {
        if ($item->field != $searchKey) {
            return false;
        }
        if ($item->details->type != 'belongsTo') {
            return false;
        }

        return !$this->relationIsUsingAccessorAsLabel($item->details);
    })->first();

    $relation = $row->details->relation ?? \Str::camel(class_basename(app($row->details->model)));

    return (object) ['relation' => $relation, 'field' => $row->details->label];
}

}`

find this line
if ($search->value != '' && $search->key && $search->filter) {

change like this for custom logic
     if ($search->value != '' && $search->key && $search->filter) {
         if ($search->key == 'log_customers_activity_belongsto_customer_relationship_1') {
                $query->whereHas('customer', function ($query) use ($search) {
                    if ($search->filter == 'equals') {
                        $query->where('name', $search->value);
                    } else {
                        $query->where('name', 'LIKE', '%' . $search->value . '%');
                    }
                });
            }
        }
...

Unfortunately, none of the above solutions provide the same search experience that worked before.
And looking at the VoyagerBaseController, I see no changes that should produce this error. Is there a clean solution that make it work normally?

可惜的是我用最新版这个问题也是没有解决

authors: Mazharqwe Reltik SneakyGerald ayhamnajem bhargavraviya enzi-dev jegardiner liemarr nathanpayne samik-os web-developer-pk


text:
Translation terms

Added some of the missing terms

.deploy

authors: GrantBirki Shebuka

repo: the-hideout/tarkov-dev


text:
SVG/Tile selection

When maps are defined with both SVGs and tiles, there is now the option to toggle between them. Customs and Factory are currently the only maps with both SVG and tiles.
The map now also saves state, so tile/svg and which markers are shown is saved between page loads (and across loading different maps).

.deploy to development

.deploy to development

.deploy to development

.deploy to development

.deploy to development

.deploy to development

.deploy

.deploy

.deploy

.deploy


text:
question

ddf能否支持组卷积，不同batch之间不共享权重？

1.支持组卷积；2.本来不同batch就不共享权重，不然为啥叫动态滤波器

是的

repo: theFoxofSky/ddfnet


text:
Wrong value for RainFall in weather data

The value for Rain Fall in the weather data seems to always be set to True, even for races where there wasn't any hint of rain (Bahrain, Monza 2019...).
Thank you.

Yep, that's a bug in the api parser. Will be fixed.
Thanks

This is now fixed in the first pre-release version of v2.2 (see https://github.com/theOehrly/Fast-F1/discussions/105)
The stable release including this bug fix will most likely be released before the first race weekend.

authors: OmaMansou theOehrly


text:
MNIST

MNIST

MNIST


text:
Terminal not opening/closing in menu

The terminal icon on the left does not respond to touch on the new iPad Mini. The only way to make the terminal appear is the run the program, the only way to make it go away is to slide the window all the way to the bottom

Thanks for reporting this. Which iPadOS version are you using?

18.1 on the iPad Mini(A17 Pro)

authors: bummoblizard sjvandy

repo: thebaselab/codeapp


text:
iPad升级ipadOS15之后, 命令行出现乱码, 重启多次无效

請到App Store更新
On Sat, 25 Sep 2021 at 21:10, Veloma-Timer @.***> wrote:

[image: image]
https://user-images.githubusercontent.com/49268882/134772754-fdc76921-e9fd-44a0-8e75-3609fccace4a.png
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/thebaselab/codeapp/issues/249, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AJE6T2YIMAG2INYZTCJDI4TUDXC6BANCNFSM5EXTHM5Q
.

authors: Veloma-Timer bummoblizard


text:
New Release

Could you cut a new release so folks needing #22 don't have to use a git dependency?

@lovesegfault will do today!

Thank you!

authors: lovesegfault theduke

repo: theduke/ffprobe-rs


text:
action not fired when expected

Using this for the first time.
given this example
{{#x-select id="age-group" value=ageGroup action="selectAgeGroup"}}
	{{#x-option}}Select Age Group...{{/x-option}}
	{{#x-option value="18-25"}}18-25{{/x-option}}
	{{#x-option value="25-35"}}25-35{{/x-option}}
	{{#x-option value="35-55"}}35-55{{/x-option}}
	{{#x-option value="55+"}}55+{{/x-option}}
{{/x-select}}

when action is fired, it receives the previous value. So if I change to "25-35" from "18-25". this.get("ageGroup") is 18-25. Not the new value.
The only way I can get this to work is to use an observer. That has the correct value.

/cc @rosshadden

I'm going to close this because I can't replicated on current master. If this comes up again I'll reopen :)

repo: thefrontside/emberx-select


text:
Swift 3 version

Migrate pod to swift 3

Do we really want to add Pods in example to the repository?

We agreed here, that the Pods project is not needed and should be added to .gitignore. Also @TFTmilan, could you rename the pull request to something sane. Like Swift 3 version? Thanks!

@kafejo are you ok with current state? Should we merge?

Nope. Still pending changes that @mkj-is pointed out.

@TFTmilan could you please check it?

@TFTmilan Can you please merge? The issues I pointed out are not so critical and just a fine-tuning and we are not using this pod for location management anymore.
(And I see this pull request all the time when I go to the list of pull request where I am mentioned. 💣)

authors: TFTmilan jakubknejzlik kafejo mkj-is zvonicek

repo: thefuntasty/LocationManager


text:
Better support for DE in scverse

Continuation of a discussion in https://github.com/theislab/single-cell-best-practices/issues/141
Goal
Implementation of useful helper methods for common DE tools. We don't plan to reimplement several DE methods. Other people are trying this already.
Tools
We could implement wrapper functions that make it streamlined to run DE tools within the scverse ecosystem. The output of the tools should be in the right slots of the AnnData object.
Most important

wrap basic methods from scanpy (wilcoxon, t-test, ...)
wrap  pydesq2, see also https://github.com/owkin/PyDESeq2/issues/15

Other options
Disclaimer: while the rpy2 code snippets should work in principle, I haven't used them extensively and am not sure if they follow the best practices of the respective tool.

edgeR (through rpy2) [code snippet]
MAST (through rpy2) [code snippet] -> should additionally support LME models.
Limma (through rpy2)
statsmodels linear model wrapper [code snippet]

Input specification
I envisage something like
def de_analysis(
    adata: AnnData
    groupby: str,
    *,
    formula: Optional[str]
    contrast: Optional[Any]
) -> pd.DataFrame:
    """
    Perform differential expression analysis

    Parameters
    ----------
    adata
        single-cell or pseudobulk AnnData object
    groupby
        column in adata.obs that contains the factor to test, e.g. `treatment`.
        For simple statistical tests (t-test, wilcoxon), it is sufficient to specify groupby. Linear models require to specify
        a formula. In that case, the `groupby` column is used to compute the contrast.
    formula
        model specification for linear models. E.g. `~ treatment + sex + age`.
        MUST contain the factor specified in `groupby`.
    contrast
        TODO
        See e.g. https://www.statsmodels.org/devel/contrasts.html for more information.
    """

Clearly, the challenge here is to find an interface that works with both simple methods like t-test and the more flexible linear models. It will also always be a tradeoff between simplicity and the possibility to use all features of the underlying methods (e.g. do we want to support arbitrary contrasts? Do we want to support multiple contrasts for a single model fit?).
Some of these cases could require splitting the function up into a fit and a compute_contrast step. In that case an OOP interface might be more appropriate.
Output specification
Each DE tool should output a data frame with at least the following columns

gene_id
log2 fold change
mean expression
unadjusted p-value
adjusted p-value

and optionally other columns (may depend on the method).
Plots

Add volcano plots from decoupler/wrap them (plot_volcano)
Note: an (optionally) interactive version based on plotly/altair could be really nice -- hover over the dots to view the gene name.

Add paired or unpaired scatter+boxplots are nice ways of visualizing individual genes (each dot is a pseudobulk-sample)
[code snipped based on seaborn]

Add bar charts. Scatterplot on top for paired observations. Each dot represents the fold change for one paired observation.
[code snipped based on altair]

heatmap of coefficients with FDR correction
[code snippet based on altair]

@grst what else do you think we should add? Feel free to edit my issue (hope you have the rights now - if not please ping me).

Tools
Personally, I never made good experiences with rpy2 -- which is one reason why I stopped using these functions in more recent projects. Instead I performed DE in R and connected it through a workflow manager.
Are you sure you want to support that? It would also entail quite complicated CI setups if we were to test it.
Maybe we start with pydeseq2, t-test, wilcoxon test?
Plots
another nice one I forgot, which is especially useful when comparing between multiple conditions:

Visualization frameworks
My plotting functions are a mix of altair and matplotlib. Do you want to stick to one of them?

Personally, I never made good experiences with rpy2 -- which is one reason why I stopped using these functions in more recent projects. Instead I performed DE in R and connected it through a workflow manager.
Are you sure you want to support that? It would also entail quite complicated CI setups if we were to test it.

rpy2 is at the moment an optional dependency for pertpy because milopy can also work with edgeR. I'd keep stick to this for support for the R options.

Maybe we start with pydeseq2, t-test, wilcoxon test?

Yup. We'd have to discuss what the interface should look like. Would you base it on the current scanpy t-test/wilcoxon test or would you redesign it completely? If yes, what should it look like?

My plotting functions are a mix of altair and matplotlib. Do you want to stick to one of them?

Preferably matplotlib. We replaced altair code in other tools with matplotlib equivalents.

Would you base it on the current scanpy t-test/wilcoxon test or would you redesign it completely? If yes, what should it look like?

I would probably use the scanpy implementation but redesign the output. IMO all tools should return a dataframe with one row per var with p-value and logFC. This dataframe could optionally be saved in adata.varm.
I also have a wrapper for a statsmodels linear model which could be relevant here:
https://github.com/icbi-lab/luca/blob/89c4e6109bc723f6958cae7af791398b28e8e422/lib/scanpy_helper_submodule/scanpy_helpers/compare_groups/lm.py#L24-L151

Preferably matplotlib. We replaced altair code in other tools with matplotlib equivalents.

Fair enough, shouldn't be too hard to rewrite it. Maybe an excuse to play with the new seaborn API.

Another point to consider is how the interface would look like. groupby is nice for a simple pairwise or groupwise comparison, but what about more complicated cases? Do we allow to specify patsy model strings?

I would probably use the scanpy implementation but redesign the output. IMO all tools should return a dataframe with one row per var with p-value and logFC. This dataframe could optionally be saved in adata.varm.

Yes, that makes a lot of sense.

I also have a wrapper for a statsmodels linear model which could be relevant here: https://github.com/icbi-lab/luca/blob/89c4e6109bc723f6958cae7af791398b28e8e422/lib/scanpy_helper_submodule/scanpy_helpers/compare_groups/lm.py#L24-L151

Yeah, why not.

Preferably matplotlib. We replaced altair code in other tools with matplotlib equivalents.

Fair enough, shouldn't be too hard to rewrite it. Maybe an excuse to play with the new seaborn API.

Yup, but we also have manpower for this if you don't want to do this yourself.

Another point to consider is how the interface would look like. groupby is nice for a simple pairwise or groupwise comparison, but what about more complicated cases? Do we allow to specify patsy model strings?

I wouldn't really need them for a quick t-test or Wilcoxon test but when doing serious work with edgeR/deseq2 for complex setups - yes I think that we need to support them.

Yup, but we also have manpower for this if you don't want to do this yourself.

ok, even better. So implementation-wise, what would you need from my side?

If you explicitly designed an interface (parameters that you want and output DF) it would certainly help and guide one of my students. I am confident though that I could also do that if you're busy.
Could you please edit my post and add links to the current implementations to all of your plots?
You are of course welcome to contribute to pertpy, but if you're busy one of my students will help out.

Updated the comment and added some draft specs for further discussion.

Excellent, thank you very much.
So would the de_analysis have an additional parameter called "method" to which this is passed to? Or would you have separate public functions per test?

Good point. I would have said the former. Updated the specs accordingly.

What do we do with https://scanpy.readthedocs.io/en/stable/generated/scanpy.pl.rank_genes_groups.html#scanpy.pl.rank_genes_groups and all of its siblings? Think it expects the old format?

tbh, I'm not a big fan of how scanpy currently stores the DE results. So I wouldn't mind if the scanpy functions were rewritten. But that would be either a breaking change or require a bunch of code handling legacy formats, so not sure if this is going to happen in a reasonable timeframe.

Unlikely.

Alternatively, these functions could be mirrored in pertpy, together with the other plotting functions planned. I have a code snippet for adding a data frame to anndata such that it works with the scanpy plotting functions here.

So the mirroring would work as follows: users calls
pt.pl.rank_genes_groups(adata, key="MYDERESULTSDF")

Under the hood we call your function and then call the scanpy plotting function?
Or how would you design it?

Maybe by using a context manager that temporarily adds the converted data frame to adata.uns?
def rank_genes_groups(adata, key, *args, **kwargs):
   with _add_de_res_for_scanpy(adata, key):
       sc.pl.rank_genes_groups(adata, *args, **kwargs)

Yeah, that's a lovely idea. Do you think that we should expose another "add_de_res_for_pertpy" function that does the same thing but this time load the DE results into adata.varm? We know where to store such dataframes, but newbies are always confused with the slots and varm is rarely used.
But I think that we've got it figured out! Do you want to tackle any of this? If not, I'll find someone as mentioned.

Yeah, that's a lovely idea. Do you think that we should expose another "add_de_res_for_pertpy" function that does the same thing but this time load the DE results into adata.varm

Either that, or allow to pass a data frame directly to the plotting function:
def plot_something(
    adata: AnnData,
    de_res: pd.DataFrame | str,
    p_col: str = "FDR",
    fc_col: str = "log2FC",
):
    """
    de_res:
         This may be either
            * the key under which the results are stored in `adata.varm`, or
            * a pandas data frame with DE results. The data frame must use gene
               identifiers from `adata.var_names` as index.
    """

But I think that we've got it figured out! Do you want to tackle any of this? If not, I'll find someone as mentioned.

If you had someone it would be awesome! I'm happy to review if required.

Closing this now in favor of more specific issues.

authors: Zethson grst

repo: theislab/pertpy


text:
allow different polygons in sc.pl.spatial

[ ] Additional function parameters / changed functionality / changed defaults?
[ ] New analysis tool: A simple analysis tool you have been using and are missing in sc.tools?
[ ] New plotting function: A kind of plot you would like to seein sc.pl?
[ ] External tools: Do you know an existing package that should go into sc.external.*?
[x] Other?

e.g. squares, hexagons cc @jwrth

New analysis tool: A simple analysis tool you have been using and are missing in sc.tools

What about alternative normalization tools like SCTransform? I read that they are supposed to be better for spatial data. As non-mathematician of course I'm not sure how big the difference will really be in the end but it would be great if there was a easy way to call and test them if it's worth it.

New plotting function: A kind of plot you would like to seein sc.pl?

I think a plot that shows the gene expression profile along a spatial axis would be nice if this is not planned yet. So to draw in e.g. a line in napari and get the gene expression of certain genes along this line.

External tools: Do you know an existing package that should go into sc.external.*?

A package I found very useful and easy to integrate with scanpy is SpatialDE. Are you planning to provide this in sc.external.*? And of course tools to integrate sc-RNA-seq and spatial data (like Stereoscope, cell2location,...) would be great! But I think you mentioned that there are plans for own tools, right?

authors: giovp jwrth

repo: theislab/scanpy


text:
Plotting examples

Re #1604, @fidelram, I've got the sphinx extension working for examples (at least locally) here. You can check out a simple example for sc.pl.embedding.
Does this solve the problem you were running into?

 Functions which need examples
Functions in sc.pl

[ ] Embedding plots

[ ] sc.pl.embedding
[ ] sc.pl.draw_graph
[ ] sc.pl.diffmap
[ ] sc.pl.pca
[ ] sc.pl.tsne
[ ] sc.pl.umap
[ ] sc.pl.spatial
[x] sc.pl.embedding_density

[ ] PCA specific

[ ] sc.pl.pca_loadings
[ ] sc.pl.pca_overview
[ ] sc.pl.pca_scatter
[ ] sc.pl.pca_variance_ratio

[ ] PAGA

[ ] sc.pl.paga
[ ] sc.pl.paga_adjacency
[ ] sc.pl.paga_compare
[ ] sc.pl.paga_path

[ ] DPT pseudotime

[ ] sc.pl.dpt_groups_pseudotime
[ ] sc.pl.dpt_timeseries

[ ] Groupby

[x] sc.pl.dotplot
[ ] sc.pl.matrixplot
[ ] sc.pl.clustermap
[ ] sc.pl.heatmap
[ ] sc.pl.dendrogram
[ ] sc.pl.stacked_violin
[ ] sc.pl.tracksplot
[ ] sc.pl.violin

[ ] Preprocessing

[ ] sc.pl.filter_genes_dispersion
[ ] sc.pl.highest_expr_genes
[ ] sc.pl.highly_variable_genes

[ ] DE

[ ] sc.pl.rank_genes_groups
[ ] sc.pl.rank_genes_groups_dotplot
[ ] sc.pl.rank_genes_groups_heatmap
[ ] sc.pl.rank_genes_groups_matrixplot
[ ] sc.pl.rank_genes_groups_stacked_violin
[ ] sc.pl.rank_genes_groups_tracksplot
[ ] sc.pl.rank_genes_groups_violin

[ ] Misc/ to be classified

[ ] sc.pl.ranking
[ ] sc.pl.scatter
[ ] sc.pl.sim
[ ] sc.pl.correlation_matrix
[ ] sc.pl.matrix

[ ] Time series (???)

[ ] sc.pl.timeseries
[ ] sc.pl.timeseries_as_heatmap
[ ] sc.pl.timeseries_subplot

Other functions

[x] sc.pp.calculate_qc_metrics
[x] sc.tl.embedding_density
[ ]  sc.get.obs_df
[ ] sc.get.rank_genes_groups_df

Example of what the dotplot docs look like (locally) once this is working:

Does make that bbox_inches="tight" option seem important.

@ivirshup  This looks great! Thanks.  The issue with the cropping of the labels is quite annoying and indeed bbox_inches="tight" should help. However, I don't think is nice to add that line for each example, but, on the other hand, if we add this to the scanty code, many figures will be affected and would need to be updated.
The same issue also affects the test images which most are cropped.

@flying-sheep, weird sphinx bug I'm running into:

The readthedocs builds are failing after commit fc83ec3
The error is:

scanpy/scanpy/external/pp/_bbknn.py:docstring of scanpy.external.pp.bbknn:24: WARNING: py:class reference target not found: sklearn.neighbors._dist_metrics.DistanceMetric

The error will still occur as long as this has been added:

    .. plot::
        :context: close-figs

        >>> import scanpy as sc
        >>> adata = sc.datasets.pbmc68k_reduced()
        >>> sc.tl.umap(adata)

If I remove the sc.tl.umap line, the builds work fine, as sklearn.neighbors.DistanceMetric resolves and no warning is thrown.

For now, I'm going to remove the type annotation from sc.external.pp.bbknn, since it's causing the error. Any ideas why calling sc.tl.umap means sklearn.neighbors._dist_metrics.DistanceMetric can no longer resolve? I assume it has something to do with packages being imported in an unexpected order, but also this is real weird.

@fidelram
I don't think making a broader change would be so bad right now, especially if it deals with this issue. However, if there was a way to just fix the issue here specifically that would also be good.
Separate issue these examples raise:
It looks like the colormap is changing at some point when it shouldn't:

Any idea what's up with this?

For this PR, I'm thinking I'm going to wait on a response from @flying-sheep to figure out what to do about the sklearn intersphinx problem, then clean it up for a merge. A new issue will be opened up with all the functions that need examples, and those can be added through separate PRs as the release progresses.

@Isaac the color change is caused because of the way the defaults are used. This is an issue that has to do with the visualisation of defaults in the documentation.
When you add .style(....) the default colormap is winter. This appears on the readthedocs documentation.  Ideally, the default should be None in which case it can be decided if the colormap was already set or instead use the default.  We had some discussions with @flying-sheep on how to address this that are still pending.

Is there an open issue for this colormap problem? If so, could you link it? I'd like to track it for at least 1.8.

So far looking good. Maybe we can add to the TO-DO list, to fix issue with the 'cropped' labels.

I think this is ready to merge. After that, I'll open the meta-issue about adding examples to all the listed functions.

authors: fidelram ivirshup


text:
Add scale information to plots

when plotting spatial information, scale information is. We should discuss if we can add this to our plots if scale information is available. E.g. in sq.pl.co_occurrence, mark distance with actual units.
It might be more appropriate to raise this issue at scanpy actually, because it mainly concerns sc.pl.spatial, but discussing here might not hurt.

@hspitzer do you have code for doing this easily? I think it would make sense to import in squidpy the sc.pl.spatial function from scanpy, and allow for this addition as well as plotting across multiple slides as discussed in #332

it's coming real fast with #437

authors: giovp hspitzer

repo: theislab/squidpy


text:
Does ligrec function take factor in cell-cell proximity?

I've looked at the docs, but could not figure out if the ligrec takes into consideration the cell-cell proximity, or does it rely only on expression?
Thanks!

hi @rgranit ,
it does not. However, you can use the results to filter out e.g. LR interactions based on neighboring cell types.
HTH
GIovanni

authors: giovp rgranit


text:
refact: auto-generated mergeable types

This PR adds a Codegen plugin that automatically generates mergeable types from the GraphQL schema. It introduces a Mergeable supertype to group these types together, eliminating the need to manually create subtypes for nested objects without identifiers. The merging behavior mirrors that of Apollo Client v2, making the migration process smoother.

Very nice workaround! We also found this issue while reviewing PR #4829.
ref: https://medium.com/qulture-rocks-product-blog/migrating-from-apollo-client-2-to-3-9ba20783b124

repo: thematters/matters-web


text:
The theme is not applied with Netlify hosting

Fork repository(succeeded!)

Add my repository in Forestry and change the base url in configuration.(succeeded!)

3.Setup and host the site with Netlify
I succeeded to deploy, but no CSS file is applied. Like this(https://newthugo.netlify.app/).
How can I fix it?
I’ve tried to manage it by myself, but It was hard for me.

It seems , the base url is not correct in config file .
Mehedi Sharif
Themefisher
Themefisher@gmail.com
www.themefisher.com
On Apr 26, 2020, 2:40 PM +0600, newt0 notifications@github.com, wrote:

Fork repository(succeeded!)

Add my repository in Forestry and change the base url in configuration.(succeeded!)

3.Setup and host the site with Netlify
I succeeded to deploy, but no CSS file is applied. Like this(https://newthugo.netlify.app/).
How can I fix it?
I’ve tried to manage it by myself, but It was hard for me.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

THANK YOU VERY MUCH!
After fixing baseURL, my site works well.
I feel like you're my savior because I was struggling for 5 hours.

repo: themefisher/parsa-hugo