macOS compilation

Is it possible to make native macOS compilation like meson --buildtype release --prefix /opt build.a64?
Wine compilation successful with Xcode10,1 (clang 10.0)
I got an error
The Meson build system
Version: 0.49.2
Source dir: /Volumes/MacHD/Users/sergey/Documents/Projects/dxvk
Build dir: /Volumes/MacHD/Users/sergey/Documents/Projects/dxvk/build.a64
Build type: native build
Project name: dxvk
Project version: v1.0
Native C compiler: cc (clang 10.0.0 "Apple LLVM version 10.0.0 (clang-1<IP_ADDRESS>)")
Native C++ compiler: c++ (clang 10.0.0 "Apple LLVM version 10.0.0 (clang-1<IP_ADDRESS>)")
Build machine cpu family: x86_64
Build machine cpu: x86_64
Checking if "winelib check" compiles: NO

meson.build:46:2: ERROR:  C++ library 'vulkan-1' not found

I see no explanation where it expected the library to be.
The cross-compilation is successful but I got too large files
MacBook-Pro-Sergey:dxvk sergey$ ls -la bin/
total 140576
drwxr-xr-x   8 sergey  staff       272  5 мар 22:19 .
drwxr-xr-x  26 sergey  staff       884  6 мар 06:58 ..
-rw-r--r--@  1 sergey  staff      6148  5 мар 19:58 .DS_Store
-rwxr-xr-x   1 sergey  staff  13334312  5 мар 22:19 d3d10.dll
-rwxr-xr-x   1 sergey  staff  13334312  5 мар 22:19 d3d10_1.dll
-rwxr-xr-x   1 sergey  staff  13333800  5 мар 22:19 d3d10core.dll
-rwxr-xr-x   1 sergey  staff  16563965  5 мар 22:19 d3d11.dll
-rwxr-xr-x@  1 sergey  staff  15392460  5 мар 22:19 dxgi.dll
MacBook-Pro-Sergey:dxvk sergey$

Is it normal?

Checking if "winelib check" compiles: NO

What's build.a64/meson-logs/meson-log.txt say? Look for this line in there, and paste all the lines from "Running compile:" up to it.

Is it normal?

Did you build using the debug configuration? That's pretty normal for a debug build; the debug info in particular takes up a lot of space. If you aren't sure, you almost certainly did, because that's the default.

You mean  --buildtype release? Yes, I set it.

But IIRC MoltenVK still do not supports all needed features for DXVK? Or that's changed?

It is fast changing. I can start some vulkan application and want to test DX10/DX11 application with dxvk.
I can compile just a question about too large files. Or may be make native compilation.
The log is not helpful
`Running test binary command: /Volumes/MacHD/Users/sergey/Documents/Projects/dxvk/build.a64/meson-private/sanitycheckcpp.exe
Native C++ compiler: c++ (clang 10.0.0 "Apple LLVM version 10.0.0 (clang-1<IP_ADDRESS>)")
Build machine cpu family: x86_64
Build machine cpu: x86_64
Running compile:
Working directory:  /var/folders/_h/yd9ch_cj15x5vc1p9fhnk90r0000gn/T/tmp359k27x3
Command line:  c++ /var/folders/_h/yd9ch_cj15x5vc1p9fhnk90r0000gn/T/tmp359k27x3/testfile.cpp -pipe -c -o /var/folders/_h/yd9ch_cj15x5vc1p9fhnk90r0000gn/T/tmp359k27x3/output.obj -O0 -fpermissive
Code:
#ifndef WINE
#error 1
#endif
Compiler stdout:
Compiler stderr:
/var/folders/_h/yd9ch_cj15x5vc1p9fhnk90r0000gn/T/tmp359k27x3/testfile.cpp:2:2: error: 1
#error 1
^
1 error generated.
Checking if "winelib check" compiles: NO
Running compile:
Working directory:  /var/folders/_h/yd9ch_cj15x5vc1p9fhnk90r0000gn/T/tmp56qhmz9k
Command line:  c++ /var/folders/_h/yd9ch_cj15x5vc1p9fhnk90r0000gn/T/tmp56qhmz9k/testfile.cpp -pipe -o /var/folders/_h/yd9ch_cj15x5vc1p9fhnk90r0000gn/T/tmp56qhmz9k/output.exe -O0 -fpermissive
Code:
#include<stdio.h>
    int main(int argc, char **argv) {
        printf("%ld\n", (long)(sizeof(void *)));
        return 0;
    };

Compiler stdout:
Compiler stderr:
Program stdout:
8
Program stderr:
Running compile:
Working directory:  /var/folders/_h/yd9ch_cj15x5vc1p9fhnk90r0000gn/T/tmp9vdx46e0
Command line:  c++ /var/folders/_h/yd9ch_cj15x5vc1p9fhnk90r0000gn/T/tmp9vdx46e0/testfile.cpp -pipe -c -o /var/folders/_h/yd9ch_cj15x5vc1p9fhnk90r0000gn/T/tmp9vdx46e0/output.obj -O0 -fpermissive --print-search-dirs
Code:
Compiler stdout:
programs: =/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
libraries: =/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/10.0.0
Compiler stderr:
meson.build:46:2: ERROR:  C++ library 'vulkan-1' not found
`

But IIRC MoltenVK still do not supports all needed features for DXVK? Or that's changed?

I'm working on that.

Command line: c++ /var/folders/_h/yd9ch_cj15x5vc1p9fhnk90r0000gn/T/tmp56qhmz9k/testfile.cpp -pipe -o /var/folders/_h/yd9ch_cj15x5vc1p9fhnk90r0000gn/T/tmp56qhmz9k/output.exe -O0 -fpermissive

Did you pass --cross-file build-wine64.txt to meson(1)? That sets the compiler to winegcc. You should probably change the system = 'linux' line to say system = 'darwin' in that file, too.

OK, I set --cross-file build-wine64.txt and changed 'linux' to darwin. There is a some progress stoped at error '--no-gnu-unique' is invalid option for clang.
Then I erase this option and meson finished successfully.
Then stop with ninja
fatal error: 'support/win32/locale_win32.h' file not found
# include <support/win32/locale_win32.h>
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
winegcc: clang failed
ninja: build stopped: subcommand failed.

Hmm... I think what's happening is: winegcc(1) defines _WIN32, since it's a Windows-like environment, and as a result libc++ is trying to pull in its Windows headers... which Apple naturally doesn't distribute with Xcode. You may need to build and install libc++ yourself. You may also then need to pass -nostdinc++ -isystem /path/to/libc++/headers to make this work. Oh, and you'll probably need to use -mno-cygwin, since it wants to use a Windows C library.
I probably need to work on making libc++ play nice with winegcc(1)...

Somehow I can compile winehq in this environment with existing clang and libraries.

That's because Wine itself isn't written in C++. DXVK is.

not sure if y'all sorted this out in a different way by manually building libc++, but it also works against vanilla Xcode 9.4.1 and 10+ to build DXVK by making sure you're passing -U_WIN32 when compiling and -lstdc++ when linking. Undefining _WIN32 when calling winegcc is enough to prevent the low-level __locale header from trying to look for <support/win32/locale_win32.h> without causing other windows header problems.


无法定位软件包 dotnet-sdk-2.1.200

Problem encountered on https://dotnet.microsoft.com/download/linux-package-manager/ubuntu16-04/sdk-2.1.200
Operating System: Linux Ubuntu 16.04  -  x64
Provide details about the problem you are experiencing. Include your operating system version, exact error message, code sample, and anything else that is relevant.

This version don't exists. You can use the SDK 2.1.604 or migrate to the current 2.2 version.

Thanks @igoventura for your answer. Closing.
@zgpmc feel free to reopen if there is more information available. Thanks!

I use the following address for the installation method: https://dotnet.microsoft.com/download/linux-package-manager/ubuntu18-04/sdk-2.2.204 . My system has been upgraded to 18.04 :The prompt cannot locate the package. Can offer some Suggestions .Thanks


Multiple cameras and points of view.

Hello everyone, first of all I want to thank you for all this amazing work. It is quite impressive!
I saw that you are planning to implement a kind of GTA-like follow camera. I gave it a try my self, I'm not there yet at all, but maybe it's worth taking a look at my code.
I implemented it very naively but the result looks surprisingly good to me (I'm certainly not as exigent as you guys).
I have to make a few caveats though, I'm a little bit comfortable with JavaScript, but this is my first time with Typescript. I'm also not very good at maths or geometry.
I read a few articles and saw a couple of videos on quaternions, three.js cameras and stuff, but this was more of a trial and error implementation, so it could
hurt your eyes really bad.
Anyway, I would be glade to share my modifications and have some feedbacks. I created a new branch called cameras.
Correct me if I'm wrong, but according to the GitHub documentation, I think that you have to create the same one in order for me to do a pull request.
Or I can share it by any other means that is convenient for you.
I can also put an instance on my server if you want to try it first to decide if it's worth it for you to take a look at the code.

Hi!
Awesome. I'd definitely be interesting in checking out your changes and possibly merging them if we both like the final implementation.
You could've already made a pull request. https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request
You can request pulls across different branches as well.
And you don't have to put an instance on your server (unless you want to). Just link me the repo (or better yet, create the pull request), I can build it and test it myself. I checked your profile but you seem to have no public repositories?

We can discuss your implementation and other details directly in the PR thread.

So it means I should close this issue ?

I'll do it. 👍


[FEATURE] Add a animated button at login and signup page

Description
The right side section of login and signup isn't so attractive to look and possible enhancements can be made to make it more attractive

Possible suggestions are welcomed for enhancements and improvement , and if you like to work on this issue type "yes"

yes

can you please give me any resource to install this on docker ?


add a new pipeline for verifying hab plans

Description
As noted in the pipeline's description, this is intended to be a temporary pipeline to verify the habitat plans. It will soon perform a local build, test it, then throw it away.  Its steps should eventually move into the "verify" pipeline (if fast enough) or this pipeline should be removed in favor of learning about packaging problems after merge.
definition is overridden to get specific about where the steps are defined.
trigger is overridden so that the usual verify/ trigger of PRs opened/updated is turned off. This pipeline will only be triggered by API call (and so, also through the BuildKite UI once the pipeline exists).
Related Issue
In support of testing #8900 and #8941
Types of changes

Chore (non-breaking change that does not add functionality or fix an issue)

Checklist:

[x] I have read the CONTRIBUTING document.
[ ] I have run the pre-merge tests locally and they pass.
[ ] I have updated the documentation accordingly.
[ ] I have added tests to cover my changes.
[ ] All new and existing tests passed.
[x] All commits have been signed-off for the Developer Certificate of Origin.

The kitchen test failures here are unrelated to the pipeline being added in this PR.
OK to go, @chef/jex-team ?


Iterative field encoding on save remove cond

Codecov Report

Merging #17 into master will increase coverage by 0.03%.

@@            Coverage Diff             @@
##           master      #17      +/-   ##
==========================================
+ Coverage   96.03%   96.06%   +0.03%
==========================================
  Files           4        4
  Lines         126      127       +1
==========================================
+ Hits          121      122       +1
  Misses          5        5

Impacted Files
Coverage Δ

changesonsave/announce_changes.py
92.72% <50%> (+0.13%)
:white_check_mark:

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 2dae261...457e35b. Read the comment docs.


Fix docstring in pl_bolts/models/autoencoders/basic_vae/basic_vae_module.py

Added an extremely small change to docstring for consistency.

Looks like this PR isn't necessary anymore, so let me close this PR.


docs: Add Issue and PR templates

Fixes #77

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (4a773af) 98.87% compared to head (ec1f3ae) 98.87%.

Additional details and impacted files

@@           Coverage Diff           @@
##             main     #328   +/-   ##
=======================================
  Coverage   98.87%   98.87%
=======================================
  Files           4        4
  Lines         177      177
  Branches       18       18
=======================================
  Hits          175      175
  Partials        2        2


adding rag vectorstores

@domsteil  Getting the build errors above.  Are you using npm?  @dnovacik has started using yarn. The errors seem node-module related.

These are typescript/types errors. Should be all seen on install. The build check reports 200+ issues iirc

Import issues are resolved when llamaindex version is updated to 0.1.18. Another issue is merge conflict and then some top level awaits, pretty easy to fix, so all good :)


Mary Graham

School Name: Mary Graham
Website: https://www.marygraham.cl

@Molret I have to close this request without merging, because you requested to add a non-existent domain to this repository: Host mg.MaryGraham.cl not found: 3(NXDOMAIN) Please ensure that you are familiar with this repository rules located at the bottom of this page and submit a new request with the correct information. Thank you for your understanding!


Export more metric labels

Howdy, I was wondering if it is possible to configure the sidecar to export some specific labels of our metrics? Or are we constrained to the generic task resource labels in Stackdriver?

The sidecar supports a number of resources, all of which are listed in resource_map.go. Most of the other labels are attached to the timeseries, except for the target labels and __name__ (see series_cache.go).
Does this answer your question?

Thank you for your prompt response! I'm not entirely sure I understand the Resource Map. When we have run it on our cluster, it's been translated to a Generic Task. If I understand correctly, if I have some application specific metrics, that will be my best shot and using job and task_id as the only free labels I could use for my purposes?

The reason I ask is that with prometheus-to-sd I was able to get all the labels from my prometheus metrics into stackdriver as well

@igorpeshansky Just wondering if you had any updates/tips here?

@nambrot Same happening here. If I mount prometheus-to-sd I get metrics (kube-state-metrics & Node exporter) from all namespaces in GCP Monitoring. However, If I use this sidecar I don´t get them from all namespaces.
How did you solve this error?

same problem, can't get metrics  from all namespaces
only get metrics from namespace which has prometheus


Support Google Play Services 4.x

You can't currently include this into a project using Google Play Service 4.x, as it requires 3.1.x

Closing this as stale. I was able to build a sample application using this library targeting com.google.gms:google-services:4.0.1, so I believe this is resolved too.


the module installed successfully and "sharp-win32-x64.node" is exist, but when I run my code, the console still outputed "Something went wrong installing the "sharp" module.  The specified procedure could not be found."

Did you see the documentation relating to installation?
Have you ensured the architecture and platform of Node.js used for npm install is the same as the architecture and platform of Node.js used at runtime?
Idk, but I think the answer is yes
Are you using the latest version? Is the version currently in use as reported by npm ls sharp the same as the latest version as reported by npm view sharp dist-tags.latest?
Yes.
If you are using npm v6 or earlier and installing as a root or sudo user, have you tried with the npm install --unsafe-perm flag?
My npm version is 8.1.3 and I tried this command but didn't help me solving this problem.
If you are using npm v7, does the user running npm install own the directory it is run in?
Yes
If you are using the ignore-scripts feature of npm, have you tried with the npm install --ignore-scripts=false flag?
I tried but didn't help me solving this problem.
What is the complete output of running npm install --verbose sharp? Have you checked this output for useful error messages?
I tried but didn't see any error message.
npm verb cli [
npm verb cli   'C:\\Program Files\\nodejs\\node.exe',
npm verb cli   'C:\\Users\\Kay\\AppData\\Roaming\\npm\\node_modules\\npm\\bin\\npm-cli.js',
npm verb cli   'install',
npm verb cli   '--verbose',
npm verb cli   'sharp'
npm verb cli ]
npm info using<EMAIL_ADDRESS>npm info using<EMAIL_ADDRESS>npm timing npm:load:whichnode Completed in 0ms
npm timing config:load:defaults Completed in 2ms
npm timing config:load:file:C:\Users\Kay\AppData\Roaming\npm\node_modules\npm\npmrc Completed in 3ms
npm timing config:load:builtin Completed in 3ms
npm timing config:load:cli Completed in 3ms
npm timing config:load:env Completed in 1ms
npm timing config:load:file:C:\Users\Kay\Desktop\KayBotTypeScriptJDA\.npmrc Completed in 1ms
npm timing config:load:project Completed in 2ms
npm timing config:load:file:C:\Users\Kay\.npmrc Completed in 1ms
npm timing config:load:user Completed in 2ms
npm timing config:load:file:C:\Users\Kay\AppData\Roaming\npm\etc\npmrc Completed in 2ms
npm timing config:load:global Completed in 2ms
npm timing config:load:validate Completed in 0ms
npm timing config:load:credentials Completed in 1ms
npm timing config:load:setEnvs Completed in 2ms
npm timing config:load Completed in 18ms
npm timing npm:load:configload Completed in 19ms
npm timing npm:load:setTitle Completed in 0ms
npm timing npm:load:setupLog Completed in 1ms
npm timing config:load:flatten Completed in 4ms
npm timing npm:load:cleanupLog Completed in 3ms
npm timing npm:load:configScope Completed in 0ms
npm timing npm:load:projectScope Completed in 2ms
npm timing npm:load Completed in 47ms
npm timing arborist:ctor Completed in 1ms
npm timing idealTree:init Completed in 477ms
npm timing idealTree:userRequests Completed in 8ms
npm timing arborist:ctor Completed in 1ms
npm http fetch GET 200 https://registry.npmjs.org/sharp 1343ms (cache revalidated)
npm http fetch GET 200 https://registry.npmjs.org/color 96ms (cache revalidated)
npm http fetch GET 200 https://registry.npmjs.org/simple-get 97ms (cache revalidated)
npm http fetch GET 200 https://registry.npmjs.org/node-addon-api 157ms (cache revalidated)
npm http fetch GET 200 https://registry.npmjs.org/prebuild-install 951ms (cache revalidated)
npm timing idealTree:#root Completed in 2313ms
npm http fetch GET 200 https://registry.npmjs.org/color-string 57ms (cache revalidated)
npm http fetch GET 200 https://registry.npmjs.org/node-abi 123ms (cache revalidated)
npm timing idealTree:node_modules/sharp Completed in 133ms
npm http fetch GET 200 https://registry.npmjs.org/simple-swizzle 55ms (cache revalidated)
npm timing idealTree:node_modules/color Completed in 64ms
npm http fetch GET 200 https://registry.npmjs.org/is-arrayish 47ms (cache revalidated)
npm timing idealTree:node_modules/color-string Completed in 51ms
npm timing idealTree:node_modules/simple-swizzle Completed in 1ms
npm timing idealTree:node_modules/sharp/node_modules/node-addon-api Completed in 0ms
npm timing idealTree:node_modules/sharp/node_modules/prebuild-install Completed in 4ms
npm timing idealTree:node_modules/sharp/node_modules/node-abi Completed in 0ms
npm timing idealTree:node_modules/sharp/node_modules/simple-get Completed in 1ms
npm timing idealTree:node_modules/simple-swizzle/node_modules/is-arrayish Completed in 0ms
npm timing idealTree:buildDeps Completed in 2581ms
npm timing idealTree:fixDepFlags Completed in 12ms
npm timing idealTree Completed in 3092ms
npm timing reify:loadTrees Completed in 3094ms
npm timing reify:diffTrees Completed in 29ms
npm timing reify:retireShallow Completed in 1ms
npm timing reify:createSparse Completed in 10ms
npm timing reify:loadBundles Completed in 0ms
npm timing reifyNode:node_modules/simple-swizzle Completed in 148ms
npm timing reifyNode:node_modules/color Completed in 158ms
npm timing reifyNode:node_modules/color-string Completed in 164ms
npm timing reifyNode:node_modules/sharp/node_modules/simple-get Completed in 177ms
npm timing reifyNode:node_modules/simple-swizzle/node_modules/is-arrayish Completed in 241ms
npm timing reifyNode:node_modules/sharp/node_modules/node-abi Completed in 271ms
npm http fetch POST 200 https://registry.npmjs.org/-/npm/v1/security/advisories/bulk 281ms
npm timing auditReport:getReport Completed in 290ms
npm timing metavuln:cache:get:security-advisory:nth-check:phzbT+HCVgpA1C0GvSQ+THzeiYTr85AjCi0uOiMdmcC5FQFZSg2cAxsM7WmntPfv9aYplGKdCep6sPcOzXhQDw== Completed in 28ms
npm timing metavuln:cache:get:security-advisory:axios:KuWx7zaJ7Mmlnb/iEV+dKH7GH4AD5OW/Ip4dcmPDp+RUuvyDM9mjv8g2xyZ1xf0u7QRVYpP1Btjz1ZNxvg5ETw== Completed in 30ms
npm timing metavuln:cache:get:security-advisory:ansi-regex:gipfqiXURkkimm8+IyoEer5YC1ntqyorXe7xXSHfbxT4Q2N0cl4sjpCXLBfNQSZpCf2C6BCCpq61JXzBTOWL+g== Completed in 32ms
npm timing metavuln:cache:get:security-advisory:axios:v7cyFrAYC4UdnJ8NGkwG4x3pj14zBCyk2O5OpW1LVYPR6fCReL+OHhTG+KA/aBX0OjPIQGRJZZ155sfUb/eyCw== Completed in 31ms
npm timing metavuln:cache:get:security-advisory:tar:FVraO3vxxEwRFvae/qn54EZfqhwhMp2WELNyGn+whkwy5AiGGQUYfPZKYo5gVQTwEDWGqrw2ZBfQh7ybqYruyw== Completed in 31ms
npm timing metavuln:cache:get:security-advisory:tar:34G+WConGFFWccUb8BgaeTYbN3uYhdQmRaxXSUSIQ8meLzACygefO7EXhn6gKUnnryCqTBplIbxCXTplY0bYZw== Completed in 31ms
npm timing metavuln:cache:get:security-advisory:tar:Ar/tm+IovdyvUguUGqdJRiv3vndjlRFiAxefrycd9JAfXDz8f8J0i65HKJPcSI2UxmfNbqdK5JZhCWVFVGWuEg== Completed in 32ms
npm timing metavuln:cache:get:security-advisory:tar:N+UM5HifWs2F2zc5VvSjMcsJxwKLXnFlwekBDx20VEMxf4a50dbc9azjEqPWN9F4CRYdtlo8htl2my5iv0W3vQ== Completed in 33ms
npm timing metavuln:cache:get:security-advisory:node-fetch:ZpVfPQheAeBPVYM7Wttj7m+XbAR5XV1D3b8n2TKfZYiDIRur5q9lcy8hCQKdAdj7qYFZz79wWzYmCFfyuXx3hg== Completed in 33ms
npm timing metavuln:cache:get:security-advisory:tar:VtfoMHRPReMcCW9w4u31BWYREcViCFn3asZmPh4Q1xtBDUHlj8G6pba9zfaKmvRrJr1jooSQdagZ+yr2Ze8IzA== Completed in 34ms
npm timing metavuln:cache:get:security-advisory:json-schema:uVcBWD+ZqHJKVkSGOfO4yK+HybE/AV72re+WaiTN0a2jxKtVzp8MsDQW6mQ0NhRBKqqxq93dEUVYTqaY6Vbrlw== Completed in 37ms
npm timing reifyNode:node_modules/sharp/node_modules/prebuild-install Completed in 333ms
npm http fetch GET 200 https://registry.npmjs.org/ansi-regex 71ms (cache hit)
npm timing metavuln:packument:ansi-regex Completed in 73ms
npm timing metavuln:load:security-advisory:ansi-regex:1004946 Completed in 1ms
npm timing metavuln:calculate:security-advisory:ansi-regex:1004946 Completed in 75ms
npm http fetch GET 200 https://registry.npmjs.org/axios 75ms (cache hit)
npm timing metavuln:packument:axios Completed in 76ms
npm timing metavuln:load:security-advisory:axios:1005018 Completed in 0ms
npm timing metavuln:calculate:security-advisory:axios:1005018 Completed in 78ms
npm timing metavuln:load:security-advisory:axios:1005506 Completed in 1ms
npm timing metavuln:calculate:security-advisory:axios:1005506 Completed in 79ms
npm http fetch GET 200 https://registry.npmjs.org/nth-check 80ms (cache hit)
npm timing metavuln:packument:nth-check Completed in 80ms
npm timing metavuln:load:security-advisory:nth-check:1004967 Completed in 0ms
npm timing metavuln:calculate:security-advisory:nth-check:1004967 Completed in 81ms
npm http fetch GET 200 https://registry.npmjs.org/tar 81ms (cache hit)
npm timing metavuln:packument:tar Completed in 82ms
npm timing metavuln:load:security-advisory:tar:1005040 Completed in 0ms
npm timing metavuln:calculate:security-advisory:tar:1005040 Completed in 84ms
npm timing metavuln:load:security-advisory:tar:1005043 Completed in 1ms
npm timing metavuln:calculate:security-advisory:tar:1005043 Completed in 86ms
npm timing metavuln:load:security-advisory:tar:1005046 Completed in 2ms
npm timing metavuln:calculate:security-advisory:tar:1005046 Completed in 88ms
npm timing metavuln:load:security-advisory:tar:1005078 Completed in 1ms
npm timing metavuln:calculate:security-advisory:tar:1005078 Completed in 91ms
npm timing metavuln:load:security-advisory:tar:1005082 Completed in 1ms
npm timing metavuln:calculate:security-advisory:tar:1005082 Completed in 93ms
npm http fetch GET 200 https://registry.npmjs.org/json-schema 95ms (cache hit)
npm timing metavuln:packument:json-schema Completed in 96ms
npm timing metavuln:load:security-advisory:json-schema:1006724 Completed in 0ms
npm timing metavuln:calculate:security-advisory:json-schema:1006724 Completed in 102ms
npm http fetch GET 200 https://registry.npmjs.org/node-fetch 101ms (cache hit)
npm timing metavuln:packument:node-fetch Completed in 105ms
npm timing metavuln:load:security-advisory:node-fetch:1005560 Completed in 0ms
npm timing metavuln:calculate:security-advisory:node-fetch:1005560 Completed in 107ms
npm timing metavuln:cache:get:security-advisory:jsprim:QRwmQiuv2v1qSgbUQnnOq/BCmkS2/L/UCMZqttFxXCKmhngjXz/Emg8LJqaGEEX8q+I+K+Nu9HfxA4IDuytApA== Completed in 12ms
npm http fetch GET 200 https://registry.npmjs.org/jsprim 26ms (cache hit)
npm timing metavuln:packument:jsprim Completed in 28ms
npm timing metavuln:load:security-advisory:jsprim:uVcBWD+ZqHJKVkSGOfO4yK+HybE/AV72re+WaiTN0a2jxKtVzp8MsDQW6mQ0NhRBKqqxq93dEUVYTqaY6Vbrlw== Completed in 0ms
npm timing metavuln:calculate:security-advisory:jsprim:uVcBWD+ZqHJKVkSGOfO4yK+HybE/AV72re+WaiTN0a2jxKtVzp8MsDQW6mQ0NhRBKqqxq93dEUVYTqaY6Vbrlw== Completed in 29ms
npm timing metavuln:cache:get:security-advisory:strip-ansi:VNH7BZLDPXeb+XyBHjziFezTzkb3wUEeYZF30Shwpq+9ErFf3ja9WpDN5+1N0ZmzJRrF78Jsd1Rv6URhv1/2cQ== Completed in 15ms
npm http fetch GET 200 https://registry.npmjs.org/strip-ansi 41ms (cache hit)
npm timing metavuln:packument:strip-ansi Completed in 42ms
npm timing metavuln:load:security-advisory:strip-ansi:gipfqiXURkkimm8+IyoEer5YC1ntqyorXe7xXSHfbxT4Q2N0cl4sjpCXLBfNQSZpCf2C6BCCpq61JXzBTOWL+g== Completed in 1ms
npm timing metavuln:calculate:security-advisory:strip-ansi:gipfqiXURkkimm8+IyoEer5YC1ntqyorXe7xXSHfbxT4Q2N0cl4sjpCXLBfNQSZpCf2C6BCCpq61JXzBTOWL+g== Completed in 43ms
npm timing metavuln:cache:get:security-advisory:css-select:QvKraIGpcyVxEwFP0qxpEFcY9Kx8ThCeiILkMKxPQIjEnGuEnh3anOmKy/kR5kMZzYPfqYeVltD9/X58U3TjZA== Completed in 9ms
npm timing reifyNode:node_modules/sharp/node_modules/node-addon-api Completed in 498ms
npm http fetch GET 200 https://registry.npmjs.org/css-select 35ms (cache hit)
npm timing metavuln:packument:css-select Completed in 37ms
npm timing metavuln:load:security-advisory:css-select:phzbT+HCVgpA1C0GvSQ+THzeiYTr85AjCi0uOiMdmcC5FQFZSg2cAxsM7WmntPfv9aYplGKdCep6sPcOzXhQDw== Completed in 0ms
npm timing metavuln:calculate:security-advisory:css-select:phzbT+HCVgpA1C0GvSQ+THzeiYTr85AjCi0uOiMdmcC5FQFZSg2cAxsM7WmntPfv9aYplGKdCep6sPcOzXhQDw== Completed in 38ms
npm timing metavuln:cache:get:security-advisory:clarifai:sjxp9LEnx6zGh0qYToxupHcpBnyeZ/MxWqH9+JYESSgj6us3SKvdQ85oVnh9lGgCQRPLnuNBnIbSiVhUqNvi8g== Completed in 32ms
npm timing metavuln:cache:get:security-advisory:accu-weather-api-wrapper:Que+cRmGpQwnJ+jC44Vi/8F53UF/KBUqpWdXJT/OTqVYbNVvym14aqvUTcfYRm7L3G/TVVpk/qfu0eizRuvBUA== Completed in 37ms
npm timing metavuln:cache:get:security-advisory:youbike-api:A5bMz7Shp7k3adr7XC3L0ygIaPY0eeU/7j3RbG1TBjyl89YCjOvBqSPzsfJ6JOJsmBIpxpukO+UjfSpfilzWFw== Completed in 35ms
npm timing metavuln:cache:get:security-advisory:books-com-tw-crawler:yGWx7x7X6VD7eBH92vhHEO/W9EGGe7i2CRy1/NyFBjB2GWohs7K5rJqfS3Uvsk73ZVEvmOBTCU8h6d1Wh6uwkg== Completed in 38ms
npm timing metavuln:cache:get:security-advisory:rss-emitter-ts:y451rSUReqYixvZbgKeD44hAkKCu2QMKAfqfwkrIU9or7N8WEM7tWusx3mHcavEv+tVEJJAYRCLvQ+b9OXx9WQ== Completed in 34ms
npm timing metavuln:cache:get:security-advisory:genius-lyrics:tWxY0BqkW2Y/Q3aNxGuMPAENbrukbgIm4lEee0+/xssaHo/jEnspeLm0EAx/wvnjv+yNToFsR3dMZ/RB/n8foQ== Completed in 37ms
npm timing metavuln:cache:get:security-advisory:crates.io:PDvWeGkJMJkbdred0FOGKQJOb9Hmo2tq+K9VgO5D/LMH9LfaOd9I8t7W0njJZ2xe8uanMpA+ee5Z9vAYMM2Ukw== Completed in 39ms
npm timing metavuln:cache:get:security-advisory:youtube-search:uVPdCarmSHf2MvM81XyLBkXoJ0G6Zmf1SBPadvGo0a1TE0F1HFA7EQmKsj9HcsNPKJYE7ziXCLde32NBG7KuIw== Completed in 38ms
npm http fetch GET 200 https://registry.npmjs.org/accu-weather-api-wrapper 109ms (cache hit)
npm timing metavuln:packument:accu-weather-api-wrapper Completed in 111ms
npm timing metavuln:load:security-advisory:accu-weather-api-wrapper:KuWx7zaJ7Mmlnb/iEV+dKH7GH4AD5OW/Ip4dcmPDp+RUuvyDM9mjv8g2xyZ1xf0u7QRVYpP1Btjz1ZNxvg5ETw== Completed in 0ms
npm timing metavuln:calculate:security-advisory:accu-weather-api-wrapper:KuWx7zaJ7Mmlnb/iEV+dKH7GH4AD5OW/Ip4dcmPDp+RUuvyDM9mjv8g2xyZ1xf0u7QRVYpP1Btjz1ZNxvg5ETw== Completed in 112ms
npm http fetch GET 200 https://registry.npmjs.org/genius-lyrics 112ms (cache hit)
npm timing metavuln:packument:genius-lyrics Completed in 113ms
npm timing metavuln:load:security-advisory:genius-lyrics:KuWx7zaJ7Mmlnb/iEV+dKH7GH4AD5OW/Ip4dcmPDp+RUuvyDM9mjv8g2xyZ1xf0u7QRVYpP1Btjz1ZNxvg5ETw== Completed in 0ms
npm timing metavuln:calculate:security-advisory:genius-lyrics:KuWx7zaJ7Mmlnb/iEV+dKH7GH4AD5OW/Ip4dcmPDp+RUuvyDM9mjv8g2xyZ1xf0u7QRVYpP1Btjz1ZNxvg5ETw== Completed in 114ms
npm http fetch GET 200 https://registry.npmjs.org/books-com-tw-crawler 117ms (cache hit)
npm timing metavuln:packument:books-com-tw-crawler Completed in 117ms
npm timing metavuln:load:security-advisory:books-com-tw-crawler:KuWx7zaJ7Mmlnb/iEV+dKH7GH4AD5OW/Ip4dcmPDp+RUuvyDM9mjv8g2xyZ1xf0u7QRVYpP1Btjz1ZNxvg5ETw== Completed in 0ms
npm timing metavuln:calculate:security-advisory:books-com-tw-crawler:KuWx7zaJ7Mmlnb/iEV+dKH7GH4AD5OW/Ip4dcmPDp+RUuvyDM9mjv8g2xyZ1xf0u7QRVYpP1Btjz1ZNxvg5ETw== Completed in 118ms
npm http fetch GET 200 https://registry.npmjs.org/youbike-api 116ms (cache hit)
npm timing metavuln:packument:youbike-api Completed in 117ms
npm timing metavuln:load:security-advisory:youbike-api:KuWx7zaJ7Mmlnb/iEV+dKH7GH4AD5OW/Ip4dcmPDp+RUuvyDM9mjv8g2xyZ1xf0u7QRVYpP1Btjz1ZNxvg5ETw== Completed in 0ms
npm timing metavuln:calculate:security-advisory:youbike-api:KuWx7zaJ7Mmlnb/iEV+dKH7GH4AD5OW/Ip4dcmPDp+RUuvyDM9mjv8g2xyZ1xf0u7QRVYpP1Btjz1ZNxvg5ETw== Completed in 119ms
npm http fetch GET 200 https://registry.npmjs.org/crates.io 125ms (cache hit)
npm timing metavuln:packument:crates.io Completed in 127ms
npm timing metavuln:load:security-advisory:crates.io:KuWx7zaJ7Mmlnb/iEV+dKH7GH4AD5OW/Ip4dcmPDp+RUuvyDM9mjv8g2xyZ1xf0u7QRVYpP1Btjz1ZNxvg5ETw== Completed in 0ms
npm timing metavuln:calculate:security-advisory:crates.io:KuWx7zaJ7Mmlnb/iEV+dKH7GH4AD5OW/Ip4dcmPDp+RUuvyDM9mjv8g2xyZ1xf0u7QRVYpP1Btjz1ZNxvg5ETw== Completed in 128ms
npm http fetch GET 200 https://registry.npmjs.org/clarifai 129ms (cache hit)
npm timing metavuln:packument:clarifai Completed in 131ms
npm timing metavuln:load:security-advisory:clarifai:KuWx7zaJ7Mmlnb/iEV+dKH7GH4AD5OW/Ip4dcmPDp+RUuvyDM9mjv8g2xyZ1xf0u7QRVYpP1Btjz1ZNxvg5ETw== Completed in 0ms
npm timing metavuln:calculate:security-advisory:clarifai:KuWx7zaJ7Mmlnb/iEV+dKH7GH4AD5OW/Ip4dcmPDp+RUuvyDM9mjv8g2xyZ1xf0u7QRVYpP1Btjz1ZNxvg5ETw== Completed in 132ms
npm http fetch GET 200 https://registry.npmjs.org/youtube-search 132ms (cache hit)
npm timing metavuln:packument:youtube-search Completed in 133ms
npm timing metavuln:load:security-advisory:youtube-search:KuWx7zaJ7Mmlnb/iEV+dKH7GH4AD5OW/Ip4dcmPDp+RUuvyDM9mjv8g2xyZ1xf0u7QRVYpP1Btjz1ZNxvg5ETw== Completed in 0ms
npm timing metavuln:calculate:security-advisory:youtube-search:KuWx7zaJ7Mmlnb/iEV+dKH7GH4AD5OW/Ip4dcmPDp+RUuvyDM9mjv8g2xyZ1xf0u7QRVYpP1Btjz1ZNxvg5ETw== Completed in 135ms
npm http fetch GET 200 https://registry.npmjs.org/rss-emitter-ts 137ms (cache hit)
npm timing metavuln:packument:rss-emitter-ts Completed in 138ms
npm timing metavuln:load:security-advisory:rss-emitter-ts:KuWx7zaJ7Mmlnb/iEV+dKH7GH4AD5OW/Ip4dcmPDp+RUuvyDM9mjv8g2xyZ1xf0u7QRVYpP1Btjz1ZNxvg5ETw== Completed in 0ms
npm timing metavuln:calculate:security-advisory:rss-emitter-ts:KuWx7zaJ7Mmlnb/iEV+dKH7GH4AD5OW/Ip4dcmPDp+RUuvyDM9mjv8g2xyZ1xf0u7QRVYpP1Btjz1ZNxvg5ETw== Completed in 140ms
npm timing metavuln:cache:get:security-advisory:node-gyp:6+ggosCGh9zUgnYlHhEwGHNCbAfeugEO2MRfByrpjAnuhf71rldpYpnhq1DXAIWBdH4Dh0Y2vP+5LrlHG2Qhww== Completed in 6ms
npm http fetch GET 200 https://registry.npmjs.org/node-gyp 21ms (cache hit)
npm timing metavuln:packument:node-gyp Completed in 23ms
npm timing metavuln:load:security-advisory:node-gyp:VtfoMHRPReMcCW9w4u31BWYREcViCFn3asZmPh4Q1xtBDUHlj8G6pba9zfaKmvRrJr1jooSQdagZ+yr2Ze8IzA== Completed in 1ms
npm timing metavuln:calculate:security-advisory:node-gyp:VtfoMHRPReMcCW9w4u31BWYREcViCFn3asZmPh4Q1xtBDUHlj8G6pba9zfaKmvRrJr1jooSQdagZ+yr2Ze8IzA== Completed in 26ms
npm timing metavuln:cache:get:security-advisory:hive-api:SG4dePh4Mr3PutpL97a3qcRgH66XvoqfSOFz7jAnYawZFo1SgEA4awtV8wWT9gI3X1+VVoxOxXITAA/82Xopaw== Completed in 7ms
npm http fetch GET 200 https://registry.npmjs.org/hive-api 20ms (cache hit)
npm timing metavuln:packument:hive-api Completed in 21ms
npm timing metavuln:load:security-advisory:hive-api:ZpVfPQheAeBPVYM7Wttj7m+XbAR5XV1D3b8n2TKfZYiDIRur5q9lcy8hCQKdAdj7qYFZz79wWzYmCFfyuXx3hg== Completed in 0ms
npm timing metavuln:calculate:security-advisory:hive-api:ZpVfPQheAeBPVYM7Wttj7m+XbAR5XV1D3b8n2TKfZYiDIRur5q9lcy8hCQKdAdj7qYFZz79wWzYmCFfyuXx3hg== Completed in 22ms
npm timing metavuln:cache:get:security-advisory:http-signature:upm1syltaQQk+WBKtPw6YsBaxj+CsFA5RzQpT8BTsGTeKtaQDFI39vz+ktDswUws3m15VM18TZja0+/1k69g7Q== Completed in 6ms
npm http fetch GET 200 https://registry.npmjs.org/http-signature 16ms (cache hit)
npm timing metavuln:packument:http-signature Completed in 18ms
npm timing metavuln:load:security-advisory:http-signature:QRwmQiuv2v1qSgbUQnnOq/BCmkS2/L/UCMZqttFxXCKmhngjXz/Emg8LJqaGEEX8q+I+K+Nu9HfxA4IDuytApA== Completed in 0ms
npm timing metavuln:calculate:security-advisory:http-signature:QRwmQiuv2v1qSgbUQnnOq/BCmkS2/L/UCMZqttFxXCKmhngjXz/Emg8LJqaGEEX8q+I+K+Nu9HfxA4IDuytApA== Completed in 19ms
npm timing metavuln:cache:get:security-advisory:inquirer:pAR64lahnjZHUNciTAuoifx73D9SeH4NfbcHfv8LXd35C9Kzet1ZBQBs59fss9/pIGqNJfvS1VUaPG3JE7OLLw== Completed in 6ms
npm timing metavuln:cache:get:security-advisory:eslint:2FRUXL7F8oV2YWe4C+eEEOa1BulAqIY2Ja1R/Zq9kEO4j0b/3us8sh2GGUYNzJbvgaTBJNJC5e8KzNxG69KU/A== Completed in 10ms
npm timing metavuln:cache:get:security-advisory:string-width:z8iR7PVusZCDbQbpBbfUOlp4nWW5lica+XU9Ck0Wj4d793LOue6orGcnetE+RgMcvOtyfG+VyOfSi0Yzr3ZiWw== Completed in 10ms
npm http fetch GET 200 https://registry.npmjs.org/string-width 30ms (cache hit)
npm timing metavuln:packument:string-width Completed in 32ms
npm timing metavuln:load:security-advisory:string-width:VNH7BZLDPXeb+XyBHjziFezTzkb3wUEeYZF30Shwpq+9ErFf3ja9WpDN5+1N0ZmzJRrF78Jsd1Rv6URhv1/2cQ== Completed in 0ms
npm timing metavuln:calculate:security-advisory:string-width:VNH7BZLDPXeb+XyBHjziFezTzkb3wUEeYZF30Shwpq+9ErFf3ja9WpDN5+1N0ZmzJRrF78Jsd1Rv6URhv1/2cQ== Completed in 33ms
npm http fetch GET 200 https://registry.npmjs.org/eslint 35ms (cache hit)
npm timing metavuln:packument:eslint Completed in 42ms
npm timing metavuln:load:security-advisory:eslint:VNH7BZLDPXeb+XyBHjziFezTzkb3wUEeYZF30Shwpq+9ErFf3ja9WpDN5+1N0ZmzJRrF78Jsd1Rv6URhv1/2cQ== Completed in 6ms
npm timing metavuln:calculate:security-advisory:eslint:VNH7BZLDPXeb+XyBHjziFezTzkb3wUEeYZF30Shwpq+9ErFf3ja9WpDN5+1N0ZmzJRrF78Jsd1Rv6URhv1/2cQ== Completed in 50ms
npm http fetch GET 200 https://registry.npmjs.org/inquirer 51ms (cache hit)
npm timing metavuln:packument:inquirer Completed in 53ms
npm timing metavuln:load:security-advisory:inquirer:VNH7BZLDPXeb+XyBHjziFezTzkb3wUEeYZF30Shwpq+9ErFf3ja9WpDN5+1N0ZmzJRrF78Jsd1Rv6URhv1/2cQ== Completed in 0ms
npm timing metavuln:calculate:security-advisory:inquirer:VNH7BZLDPXeb+XyBHjziFezTzkb3wUEeYZF30Shwpq+9ErFf3ja9WpDN5+1N0ZmzJRrF78Jsd1Rv6URhv1/2cQ== Completed in 54ms
npm timing metavuln:cache:get:security-advisory:cheerio:T4E2lUfP1nswQFSQppAD0MMq1r2AMfLR2ggfNzT8MLxx52/PiVVxmzRjPAEs+IThDCPdEkRldzsQFpfBR6w3pA== Completed in 12ms
npm http fetch GET 200 https://registry.npmjs.org/cheerio 31ms (cache hit)
npm timing metavuln:packument:cheerio Completed in 33ms
npm timing metavuln:load:security-advisory:cheerio:QvKraIGpcyVxEwFP0qxpEFcY9Kx8ThCeiILkMKxPQIjEnGuEnh3anOmKy/kR5kMZzYPfqYeVltD9/X58U3TjZA== Completed in 0ms
npm timing metavuln:calculate:security-advisory:cheerio:QvKraIGpcyVxEwFP0qxpEFcY9Kx8ThCeiILkMKxPQIjEnGuEnh3anOmKy/kR5kMZzYPfqYeVltD9/X58U3TjZA== Completed in 35ms
npm timing metavuln:cache:get:security-advisory:sqlite3:f9s1I/Tj325wdecgYF4VxePWPGj+2me/dN1a8AXqcIr2FBgeGWsMHUYWYe2JcQaAgwor00hmNYcQu++pps/yCQ== Completed in 9ms
npm http fetch GET 200 https://registry.npmjs.org/sqlite3 28ms (cache hit)
npm timing metavuln:packument:sqlite3 Completed in 33ms
npm timing metavuln:load:security-advisory:sqlite3:6+ggosCGh9zUgnYlHhEwGHNCbAfeugEO2MRfByrpjAnuhf71rldpYpnhq1DXAIWBdH4Dh0Y2vP+5LrlHG2Qhww== Completed in 2ms
npm timing metavuln:calculate:security-advisory:sqlite3:6+ggosCGh9zUgnYlHhEwGHNCbAfeugEO2MRfByrpjAnuhf71rldpYpnhq1DXAIWBdH4Dh0Y2vP+5LrlHG2Qhww== Completed in 36ms
npm timing metavuln:cache:get:security-advisory:wide-align:Wqz3XbNZ7TpL5xlvylpEAtzvuEMdLyqgIseQu1jnX/GLXGW23bqxL8f5MmMuMSkDSJATeM8ON0buq8NeCr/TTQ== Completed in 15ms
npm timing metavuln:cache:get:security-advisory:inquirer:IOy1uQunqwb0OKw3I4ZNeKN9PQqdueQIdYpHaUllV6YGATAyjEqiNRG5vW4F5WXPfP8XWMIiBkvaFremUajJrw== Completed in 21ms
npm timing metavuln:load:security-advisory:inquirer:z8iR7PVusZCDbQbpBbfUOlp4nWW5lica+XU9Ck0Wj4d793LOue6orGcnetE+RgMcvOtyfG+VyOfSi0Yzr3ZiWw== Completed in 0ms
npm timing metavuln:calculate:security-advisory:inquirer:z8iR7PVusZCDbQbpBbfUOlp4nWW5lica+XU9Ck0Wj4d793LOue6orGcnetE+RgMcvOtyfG+VyOfSi0Yzr3ZiWw== Completed in 25ms
npm timing metavuln:cache:get:security-advisory:table:4M+57QTiDS22KNsr9oT+G5mUH3dOBHkvMQhXF5QO4QA0omxhiSLfoSYaIWglcwikiXbn1BqoDDhegOZFv7UPvQ== Completed in 25ms
npm timing reifyNode:node_modules/sharp Completed in 899ms
npm timing reify:unpack Completed in 902ms
npm timing reify:unretire Completed in 0ms
npm timing build:queue Completed in 3ms
npm http fetch GET 200 https://registry.npmjs.org/wide-align 67ms (cache hit)
npm timing metavuln:packument:wide-align Completed in 69ms
npm timing metavuln:load:security-advisory:wide-align:z8iR7PVusZCDbQbpBbfUOlp4nWW5lica+XU9Ck0Wj4d793LOue6orGcnetE+RgMcvOtyfG+VyOfSi0Yzr3ZiWw== Completed in 1ms
npm timing metavuln:calculate:security-advisory:wide-align:z8iR7PVusZCDbQbpBbfUOlp4nWW5lica+XU9Ck0Wj4d793LOue6orGcnetE+RgMcvOtyfG+VyOfSi0Yzr3ZiWw== Completed in 70ms
npm http fetch GET 200 https://registry.npmjs.org/table 70ms (cache hit)
npm timing metavuln:packument:table Completed in 72ms
npm timing metavuln:load:security-advisory:table:z8iR7PVusZCDbQbpBbfUOlp4nWW5lica+XU9Ck0Wj4d793LOue6orGcnetE+RgMcvOtyfG+VyOfSi0Yzr3ZiWw== Completed in 0ms
npm timing metavuln:calculate:security-advisory:table:z8iR7PVusZCDbQbpBbfUOlp4nWW5lica+XU9Ck0Wj4d793LOue6orGcnetE+RgMcvOtyfG+VyOfSi0Yzr3ZiWw== Completed in 74ms
npm timing build:link:node_modules/sharp/node_modules/prebuild-install Completed in 45ms
npm timing build:link Completed in 45ms
npm info run<EMAIL_ADDRESS>install node_modules/sharp (node install/libvips && node install/dll-copy && prebuild-install) || (node install/can-compile && node-gyp rebuild && node install/dll-copy)
npm timing metavuln:cache:get:security-advisory:google-play-scraper:2x/3rE5SOlCtlyTeAUFQKnTeHZn3jHGV8CtWN8PEl960D6tcFxVUX6kpUMM/md0SW2GES7yGMziA1edW3WdIGg== Completed in 23ms
npm http fetch GET 200 https://registry.npmjs.org/google-play-scraper 34ms (cache hit)
npm timing metavuln:packument:google-play-scraper Completed in 36ms
npm timing metavuln:load:security-advisory:google-play-scraper:2FRUXL7F8oV2YWe4C+eEEOa1BulAqIY2Ja1R/Zq9kEO4j0b/3us8sh2GGUYNzJbvgaTBJNJC5e8KzNxG69KU/A== Completed in 0ms
npm timing metavuln:calculate:security-advisory:google-play-scraper:2FRUXL7F8oV2YWe4C+eEEOa1BulAqIY2Ja1R/Zq9kEO4j0b/3us8sh2GGUYNzJbvgaTBJNJC5e8KzNxG69KU/A== Completed in 38ms
npm timing metavuln:cache:get:security-advisory:eslint:O/YDu5AZQJgdzhnZ3jxffVSrVzv8PhFbuIz8VMFWzxm9t/+P++8FUi95T5ozp0E1j7lHe7IIxqsPs7jt0twHZA== Completed in 9ms
npm timing metavuln:load:security-advisory:eslint:pAR64lahnjZHUNciTAuoifx73D9SeH4NfbcHfv8LXd35C9Kzet1ZBQBs59fss9/pIGqNJfvS1VUaPG3JE7OLLw== Completed in 1ms
npm timing metavuln:calculate:security-advisory:eslint:pAR64lahnjZHUNciTAuoifx73D9SeH4NfbcHfv8LXd35C9Kzet1ZBQBs59fss9/pIGqNJfvS1VUaPG3JE7OLLw== Completed in 40ms
npm timing metavuln:cache:get:security-advisory:google-play-scraper:VYVLsQSeQKSucAZqXTdViODmuym+KgTPVctf8jyqYAHa5frGzdtMq21+kFhmc2tnejoa0Zoz4TblwNoXkbmmqg== Completed in 20ms
npm timing metavuln:load:security-advisory:google-play-scraper:T4E2lUfP1nswQFSQppAD0MMq1r2AMfLR2ggfNzT8MLxx52/PiVVxmzRjPAEs+IThDCPdEkRldzsQFpfBR6w3pA== Completed in 0ms
npm timing metavuln:calculate:security-advisory:google-play-scraper:T4E2lUfP1nswQFSQppAD0MMq1r2AMfLR2ggfNzT8MLxx52/PiVVxmzRjPAEs+IThDCPdEkRldzsQFpfBR6w3pA== Completed in 21ms
npm timing metavuln:cache:get:security-advisory:eslint:8z9tts++Bn+6UMOg7/D8tCLb8OzP/4whzIVJNg6M1sqcGmN6gqpZryyr8sPxAIMokQd0cMUJ0q7M/i81WGjhcA== Completed in 37ms
npm timing metavuln:load:security-advisory:eslint:4M+57QTiDS22KNsr9oT+G5mUH3dOBHkvMQhXF5QO4QA0omxhiSLfoSYaIWglcwikiXbn1BqoDDhegOZFv7UPvQ== Completed in 1ms
npm timing metavuln:calculate:security-advisory:eslint:4M+57QTiDS22KNsr9oT+G5mUH3dOBHkvMQhXF5QO4QA0omxhiSLfoSYaIWglcwikiXbn1BqoDDhegOZFv7UPvQ== Completed in 53ms
npm timing auditReport:init Completed in 885ms
npm timing reify:audit Completed in 1197ms
npm info run<EMAIL_ADDRESS>install { code: 0, signal: null }
npm timing build:run:install:node_modules/sharp Completed in 7911ms
npm timing build:run:install Completed in 7913ms
npm timing build:deps Completed in 7962ms
npm timing build Completed in 7963ms
npm timing reify:build Completed in 7964ms
npm timing reify:trash Completed in 0ms
npm timing reify:save Completed in 484ms
npm timing reify Completed in 12592ms

added 9 packages, and audited 812 packages in 13s

80 packages are looking for funding
  run `npm fund` for details

20 vulnerabilities (2 low, 12 moderate, 6 high)

To address issues that do not require attention, run:
  npm audit fix

To address all issues possible (including breaking changes), run:
  npm audit fix --force

Some issues need review, and may require choosing
a different dependency.

Run `npm audit` for details.
npm timing command:install Completed in 12628ms
npm verb exit 0
npm timing npm Completed in 13505ms
npm info ok

What is the output of running npx envinfo --binaries --system?
System:
    OS: Windows 10 10.0.22000
    CPU: (4) x64 Intel(R) Core(TM) i5-6400 CPU @ 2.70GHz
    Memory: 8.03 GB / 15.87 GB
  Binaries:
    Node: 16.6.1 - C:\Program Files\nodejs\node.EXE
    npm: 8.1.3 - C:\Program Files\nodejs\npm.CMD

Description: The module was installed successfully, but when I was running the code I wrote, and the console outputed this:
Something went wrong installing the "sharp" module

The specified procedure could not be found.
\\?\C:\Users\Kay\Desktop\KayBotTypeScriptJDA\node_modules\sharp\build\Release\sharp-win32-x64.node

And I checked whether the file was exist......

The file was exist

Is the canvas module also a dependency? If so, please see https://sharp.pixelplumbing.com/install#known-conflicts

@Kayxue Have you been able to fix it? and how?
Thanks.

@Kayxue Have you been able to fix it? and how? Thanks.

Yes, I fixed by usinstall chartjs-node-canvas

Hi,friend,did you fix it yet?


Added HTML code to application

This PR adds all the HTML we need for the Preword Study Guide application


Refacto instant answer module

The goal of the refacto is to dispatch common logic in the different datasources and to filter data in the search request instead of in the results

Child pr : https://github.com/Qwant/idunn/pull/346


Update Compiler.cs

Generates the cache key at the end after parsing all the files, if files have been previously parsed to still include them for the generated cacheKey.
seems to behave as expected when changing file partials back generating a unique key based on the contained bytedata, when change back previous keys are utilized as would be expected of content caching.
This may not be an entire fix, maybe just a partial fixed for me locally would like someone to additionally test it if possible.
Seems to fix #24 during my local testing with MemoryCache only and enableTagHelperBundling as true

@madskristensen If you get a chance please review the pull request.

Thanks!

Thank you for merging and updating the nuget package. It means a lot to those who use it.


feat: setup JS tests

setup simple javascript tests via wallabyJS ( #3 )

[x] wallabyJS setup
[x] reducer test example
[x] selector test example
[ ] jest snapshot example

@forestmarie do not commit this.. just review..

@forestmarie ready for review now 🚀


[bugfix] wrong language label is shown when Java is selected in /projects page

Describe the bug
The wrong label is shown when Java is selected on the /projects page
To Reproduce
Steps to reproduce the behaviour:

Go to /project
Select Java as the language
JavascriptJava is shown

Expected behaviour
Java should be displayed as the label
Screenshots

@yi-heng-chen assigned to you. please move forward with the task.


Add GHA for book preview via Netlify

Towards fixing #5

Thanks @andersy005, I can see that it's not possible to download a zip file with the built site.
Is the preview visible somewhere without downloading the zip?

I'm probably missing something, but it the preview visible somewhere without downloading the zip?

You are not missing anything, @brian-rose. This PR is still missing some pieces. I'm still looking into ways to deal with how GitHub shares secrets with pull requests. I will post an updates here once I figure it out.

@brian-rose, this is ready. The solution I came up with consists of a GitHub action that circumvents the GitHub action secrets sharing issue (for pull requests from forks) I previously mentioned. For each successful, the GitHub action will post a comment with a preview link. For instance:

🚀 📚 Preview for git commit SHA: e59fbb4 at:<PHONE_NUMBER>ba8952142f232f--pythia-foundations.netlify.app

Let me know if this is enough and/or you have any feature requests :).
NOTE: For each git commit/push, the bot will post a new comment. If this is too much, we could add an option to update an existing comment instead.

Also, the workflow that triggers this preview GitHub action is checked into main branch already:
https://github.com/ProjectPythia/pythia-foundations/blob/ad1aa8cf6da741968dee592610a4ff1efdf89bc6/.github/workflows/preview-book.yaml#L29-L45

@andersy005 this is fantastic! Great work. I think it's ready to merge. We'll try it out as we build out the book contents, and see if any tweaks are needed later.

Awesome! Merging this shortly...


Fix for #3410 overall issues for organisations is limited to num_repo…

Changed a reference to RepoNum so it is based on the org's repo count instead of the user's.
See #3410

Thanks!


Wrong comment, unable to set type in new versions

Coverage decreased (-0.006%) to 84.47% when pulling 2cf79d27676ee3ea40151aa2c10207934fc2cea6 on Virdulys:patch-2 into fb277a0595434756295ab04c80b51f24327ddd7c on jamesagnew:master.

Hi @Virdulys, thanks for the patch, I'll merge it now.
I should point out though that if you're doing new development you should consider migrating to the DSTU2/STU3 Bundle resources instead of the DSTU1 Bundle that this patch fixes. This class will be removed at some point now that DSTU1 is starting to go away.


Cattle cluster agent fails to resolve Rancher hostname

I am unable to successfully provision kubernetes cluster with single node for all roles. The node will get active, but cluster stays in error state due to cluster agent is not ready. Further investigaion shows, that cattle-cluster-agent is unable to ping rancher server and shuts itself down. This step is repeated every few minutes with the same result. Cluster never fully recovers.
Docker logs from repeatedly created container:
INFO: Environment: CATTLE_ADDRESS=<IP_ADDRESS> CATTLE_CA_CHECKSUM=5bd5632b37de5f40b5ef0233aa01fe86ae081c22e2f6633dcb8fbde586a6e80a CATTLE_CLUSTER=true CATTLE_FEATURES= CATTLE_INTERNAL_ADDRESS= CATTLE_IS_RKE=true CATTLE_K8S_MANAGED=true CATTLE_NODE_NAME=cattle-cluster-agent-7c56d97f45-wfx95 CATTLE_SERVER=https://rancher.<MY DOMAIN>
INFO: Using resolv.conf: nameserver <IP_ADDRESS> search cattle-system.svc.cluster.local svc.cluster.local cluster.local <MY DOMAIN> options ndots:5
ERROR: https://rancher.<MY DOMAIN>/ping is not accessible (The requested URL returned error: 404)

Network description
I have two DNS set up. One is public, with wildcard A record pointing to my homelab behind pfSense, and second DNS in pfSense itself. This DNS is not publicly visible and is used only as a resolver for internal services inside homelab network. The rest is forwarded to Cloudflare <IP_ADDRESS>. Internal DNS resolver is configured to automatically register all DHCP clients. Both Rancher and VM nodes uses DHCP.
Inftrastructure

vSphere 6.7
pfSense (firewall, router, dns resolver)

Rancher

Version: 2.5.1
Installation: Single Node Installation via Docker with self-signed CA
Docker Image: rancher:rancher/latest
VM Host: unmodified Ubuntu 18.04 cloud image

Cluster

Architecture
amd64

Docker Version
19.3.13

Kernel Version
5.4.0-51-generic

Kubelet Version
v1.19.3

Kube Proxy Version
v1.19.3

Operating System Image
Ubuntu 20.04.1 LTS

Operating System
linux

Provider: vSphere
Node Template: unmodified Ubuntu 20.04 cloud image
Cloud Config

#cloud-config

ssh_authorized_keys:
  - ssh-rsa <public key>

users:
  - default

I tried to remove wildcard A record for the domain from public DNS just to see, what happens. To my surprise, cluster recovered. I created the wildcard record again as this is not the correct solution.
I haven't edited /etc/resolv.conf anywhere. Rancher is resolved correctly from every VM including the node itself meaning that DNS resolver is configured correctly.
	IN	A

;; ANSWER SECTION:
rancher.mydomain.cz. 30	IN	A	<IP_ADDRESS>

;; Query time: 0 msec
;; SERVER: <IP_ADDRESS>#53(<IP_ADDRESS>)
;; WHEN: Tue Oct 27 16:46:20 UTC 2020
;; MSG SIZE  rcvd: 97

Logs:
ubuntu@srv01-node-1:~$ sudo docker ps -a -q --filter "label=io.kubernetes.container.name=cluster-register" | while read container; do echo "=> $container"; sudo docker logs $container; done
=> 5711cd5745e7
INFO: Environment: CATTLE_ADDRESS=<IP_ADDRESS> CATTLE_CA_CHECKSUM=5bd5632b37de5f40b5ef0233aa01fe86ae081c22e2f6633dcb8fbde586a6e80a CATTLE_CLUSTER=true CATTLE_FEATURES= CATTLE_INTERNAL_ADDRESS= CATTLE_IS_RKE=true CATTLE_K8S_MANAGED=true CATTLE_NODE_NAME=cattle-cluster-agent-5cbd984497-rl599 CATTLE_SERVER=https://rancher.mydomain.cz
INFO: Using resolv.conf: nameserver <IP_ADDRESS> search cattle-system.svc.cluster.local svc.cluster.local cluster.local mydomain.cz options ndots:5
ERROR: https://rancher.mydomain.cz/ping is not accessible (The requested URL returned error: 404)

Your setup probably needs some customization regarding how DNS is handled. Both https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/ and https://github.com/rancher/rancher/issues/16697#issuecomment-441659499 should probably be enough. (given that the 404 is based on the name being resolved to your wildcard DNS)

I don't understand, how a record in public DNS affects this, when nodes in cluster and Rancher itself has DNS set up as <IP_ADDRESS>, which is DNS Resolver in pfSense with implicit hostname resolution for rancher.mydomain.cz and IP: <IP_ADDRESS>.
If there is an issue with ndots, the query to <IP_ADDRESS> translates as rancher.mydomain.rancher.mydomain.cz, which is unknown to the pfSense DNS resolver It then calls upstream, where wildcard record is. But why the resolution starts to work, when I remove wildcard certificate? This should return unresolvable hostname instead.
I've read all topics availible, yet I fail to see, how I should reconfigure something on my end. Hostname resolution works everywhere but Rancher / K8s cluster. And if I should change some configuration in Rancher, what exactly should I do? My apologies, but it's not aparent from the links you provided nor from the other readings.

So today I wanted to continue with cluster setup just to be welcomed to functional cluster. It recovered after nearly 500 retries without any intervention on my side. I was still sleeping 4 hours ago. There must be something wrong either in Rancher or Kubernetes or CoreDNS.
d66e2d8e8470        141c7125f5a2                                      "run.sh"                 4 hours ago         Up 4 hours                                    k8s_cluster-register_cattle-cluster-agent-5cbd984497-rl599_cattle-system_d6ab7e95-e8af-4276-a03e-b7d5784be833_477
b9e5e5b45f42        141c7125f5a2                                      "run.sh"                 4 hours ago         Exited (1) 4 hours ago                        k8s_cluster-register_cattle-cluster-agent-5cbd984497-rl599_cattle-system_d6ab7e95-e8af-4276-a03e-b7d5784be833_476

A potential solution is in https://github.com/rancher/rancher/issues/16697#issuecomment-521334029. If you believe there is a bug here, please provide the DNS server logs and the commands (and command output) issued during that logging where you query the actual hostname and the hostname with added search domains which we can then lookup why CoreDNS is not resolving this properly.
Normally the wildcard record returns a result which is then used and ends up at the wrong place (404), while removing this lets the query succeed with the actual record. This should also be testable by switching between having a wildcard record and not having a wildcard record and running the DNS queries manually to see what the result of the query is.

Let me know if this needs further investigation

one , i see the same issues using rancher 2.5.7 and 2.5.8 , what is the status of any resolution ?

my setup is on AWS, exactly the same error

This is a closed issue, and it was regarding having a wildcard DNS record causing issues (it routed to a place where the name was not known, hence the 404). If you are experiencing issues with your setup, please file a new issue with all the details requested in the issue template and logs so we can investigate.

Hi, i will open a new one, just mentioning this should not close as we at big prod app use wildcards in dns and can not install rancher since 2.5.x

Just ran head first into this exact issue on 2.8.0, using Ubuntu 22.04 LTS images.
Only recourse i see is getting a new domain to run rancher on, without any wildcards - which doesn't seem right


Typo 'acces' on a kata's /solutions page

Just reporting a small spelling error. acces = access

Thanks, fixed in the next deployment


Add disassembler

Disassemble the source code for roms so that it can be displayed in a debugger window.

Disassembler is complete, just tweaking and adding to the UI


Improve setup.py

Current dependencies on/for this PR:

main

PR #18

PR #19   👈

This comment was auto-generated by Graphite.

Codecov Report
All modified lines are covered by tests :white_check_mark:

Comparison is base (ebe7e37) 92.42% compared to head (9e67565) 92.46%.
Report is 4 commits behind head on main.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##             main      #19      +/-   ##
==========================================
+ Coverage   92.42%   92.46%   +0.03%
==========================================
  Files           5        6       +1
  Lines         198      199       +1
==========================================
+ Hits          183      184       +1
  Misses         15       15

Flag
Coverage Δ

unittests
92.46% <100.00%> (+0.03%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Files
Coverage Δ

src/revefi_dbt_client/__init__.py
100.00% <100.00%> (ø)

src/revefi_dbt_client/api_helper.py
69.23% <ø> (ø)

src/revefi_dbt_client/config.py
92.85% <ø> (ø)

src/revefi_dbt_client/upload.py
92.30% <ø> (ø)

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

Merge activity

Oct 12, 1:50 PM: @sumeet-revefi merged this pull request with Graphite.


Add Mobile: weex-eros

Eros is a app solution based on Weex and Vue, which enables you to use API of Vue, simple and quick development of small and medium app.

@kazupon thanks for your remind，i had fix it.


qFlipper: 1.1.0 -> 1.1.1

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for qFlipper is: "Cross-platform desktop tool to manage your flipper device"
meta.homepage for qFlipper is: "https://flipperzero.one/"
meta.changelog for qFlipper is: ""
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 1.1.1 with grep in /nix/store/0cf9k3dz7gpddbfbk9yzgf7wym8sfycc-qFlipper-1.1.1
found 1.1.1 in filename of file in /nix/store/0cf9k3dz7gpddbfbk9yzgf7wym8sfycc-qFlipper-1.1.1

Rebuild report (if merged into master) (click to expand)

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
qFlipper

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/0cf9k3dz7gpddbfbk9yzgf7wym8sfycc-qFlipper-1.1.1 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A qFlipper https://github.com/r-ryantm/nixpkgs/archive/e4ff6fa16ed39102b421f6d09512fc7bc6350008.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/0cf9k3dz7gpddbfbk9yzgf7wym8sfycc-qFlipper-1.1.1
ls -la /nix/store/0cf9k3dz7gpddbfbk9yzgf7wym8sfycc-qFlipper-1.1.1/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

qFlipper (qflipper)

Maintainer pings
cc @cab404 for testing.

hooray, it works


AzOps.Push is failing trying to deploy subscription template from Enterprise-Scale examples folder

we cloned the Enterprise_Scale repo back in November 2020 and set upi AzOps with Azure DevOps per the documentation.
The pipelines had been working ok until today.
Today I made a feature branch and merged it with main branch in upstream repository https://github.com/Azure/Enterprise-Scale)
Error:

(Invoke-AzOpsGitPush) Invoking new state deployment - *.subscription.json for a file examples/landing-zones/connected-subscription/connectedSubscription.json

File is from https://github.com/Azure/Enterprise-Scale/blob/main/examples/landing-zones/connected-subscription/connectedSubscription.json
Why would AzOps attempt to deploy a file from the examples folder, surely it should only deploy ARM templates from the azops/Root Management Group ([GUID]) folder?
Perhaps I am missing a parameter to set the correct root folder somewhere?
Steps to reproduce

Pull Request submission causes the AzOps.Pull pipeline on our Azure DevOps to run which fails with the above message

I have realised that I can help avoid the build failure by adding a Path filter '/azops/*' to the Build Validation. I'm still not convinced that this resolves the entirely but I also realise that this is potentially an Issue with the Enterprise-Scale pipeline YAML file rather than an issue with AzOps.

I think this may resolve the issue https://github.com/Azure/AzOps/pull/272

@rohancragg  - can you please clone this repo and try?
https://github.com/azure/azops-accelerator/wiki/getting-started
We are in the process of separating GitHub Actions/ADO from Enterprise-Scale repo to make it easier to manage and update.

Many thanks, yes. I have had a look and I agree that the instructions for ADO Pipelines are much clearer and I really like that fact that you are separating this out from Enterprise-Scale as it was very confusing, tt doesnt make much sense for all the docs and examples to live in the same repo that you're trying to use to manage our 'compliance as code' environment.

You can close this issue as I believe it's effectively a duplication and should be resolved by #272 or by following the workaround to add a path filter as I mentioned

For anyone else reading, I was also confused why our pipeline was not using the latest version of AzOps module (now 1.07) where this issue should already be reolved. The version of AzOps in Enterprise-Scale at time of writing is using the Docker image of AzOps which has not been updated for 5 months. I am pleased to see that the new AzOps-Accellerator verison of the pipeline is simply leveraging the PowerShell module form the PSGallery and will therefore remain up to date. It also helps avoid some cofusion and opaqueness as to what was happening inside of the Docker container. It'll be easier to just go and find the powershell source and take Docker out of the equation.


Make sure the results are sorted

first sort by file path and then by line number within the file

Ready for re-review


#4517 update timezone on user activity

Details

This PR replaces the original automatic timezone implementation that only checked timezone on app start with a new one, that also checks for updates on specific user activity: send chat message and open profile settings (the 2 places where you will see your current timezone impact rendering).
Fixed Issues

$ https://github.com/Expensify/App/issues/4517
Tests

These are long, but are required to check that the timezone is updated:

on app start
on message send
on profile settings open

Set timezone to automatic
Change throttle timer to something more testable (5 seconds for example)
Open a chat with a second account that is in the same timezone as your active account
You should not see participant's local time because you're in the same timezone
Change the current timezone in your OS
Send a message
Participant's local time should appear
Change the timezone back
Send another message after a throttle timeout passed
Participant's local time should disappear
Change the timezone again
Refresh the page or restart the app
Open chat and you see participant's local time again
Change the timezone back
Open your profile's settings
You should see the newly selected timezone there

QA Steps

Set timezone to automatic
Open a chat with a second account that is in the same timezone as your active account
You should not see participant's local time because you're in the same timezone
Change the current timezone in your OS
Send a message
Participant's local time should appear
Change the timezone back
Send another message 10 minutes later
Participant's local time should disappear
Change the timezone again
Refresh the page or restart the app
Open chat and you see participant's local time again
Change the timezone back
Open your profile's settings
You should see the newly selected timezone there

Tested On

[x] Web
[x] Mobile Web
[x] Desktop
[x] iOS
[x] Android

Screenshots

Web

https://user-images.githubusercontent.com/64093836/130581595-31015651-5ca7-4639-846d-a32e4f6d5ea1.mp4
Mobile Web

https://user-images.githubusercontent.com/64093836/130618247-3b1768c0-e467-415a-9d68-e089504b363e.mp4
Desktop

https://user-images.githubusercontent.com/64093836/130603509-fcc18965-2c4d-4a6f-bbd5-fa1e0be07443.mp4
iOS

https://user-images.githubusercontent.com/64093836/130618137-fd1dbbab-826d-418a-a0f0-fdb453fbdaad.mp4
Android

Sorry for the crash in the middle of the video, reloading with hermes results in crash like 50% of the time for me. Still trying to figure it out
https://user-images.githubusercontent.com/64093836/130581926-c4fe3cd7-d6ae-4d86-85f8-42867d139bba.mp4

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by @tylerkaraszewski in version: 1.0.89-0 🚀

platform
result

🤖 android 🤖
skipped 🚫

🖥 desktop 🖥
skipped 🚫

🍎 iOS 🍎
skipped 🚫

🕸 web 🕸
skipped 🚫

🚀 Deployed to production by @roryabraham in version: 1.0.90-2 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅


Multi-touch not registering correct inputs in HTML5

Godot version
3.4
System information
Window 10, GLES2, Chrome(PC, android, iOS),
Issue description
Multi-touch does not accurately track multiple fingers when running a project through HTML.
Test project exported to HTML so that you can run on a mobile device:
Test Project
Steps to reproduce
Run a project in HTML that would require tracking multiple fingers.  Only one finger seems to be accurately tracked.
Minimal reproduction project
Multi-Touch_Error.zip

Duplicate of https://github.com/godotengine/godot/issues/54135 (will be fixed in 3.4.1)
.


[DOCUMENTATION] Fix FLAVA example's link in the page Introducing Trochmultimodal

🚀 The feature, motivation and pitch
The FLAVA example's link in the page Introducing Torchmultimodal is wrong, and it's pointing out to the paper.
Should be: https://github.com/facebookresearch/multimodal/tree/main/examples/flava
Instead: https://arxiv.org/abs/2112.04482
Alternatives
No response
Additional context

This is done. I changed 3 instances of this link on the page. LMK if that isn't what you want.

Thanks @cjyabraham, I believe you changed 2 other references which are actually meant to be links to the paper. Only the one circled in the screenshot needs to be changes

Sorry about that. It is now fixed: https://pytorch.org/blog/introducing-torchmultimodal/


A compelx data type for 'identifiers'?

Consider the possibility of a complex identifier data type that includes fields for the identifier itself (code), and basic/generic information to help a user understand what the identified/referenced entity is (e.g. 'entityType' and 'label') .
This is particularly relevant for us if we give ACM-based names to the attributes used to structure statement semantics (i.e. 'subject', and  'descriptor', rather than 'variant' and 'disease') - as these names which do not tip the user off as to what type of thing the attribute holds. In the case that the identifier in a subject slot is opaque (e.g. clingen:12345), and the entity's representation is not inlined - a user may not know from the data itself what type of thing clingen:12345 is.  This potential issue could be addressed if the identifier is wrapped in a complex data type that includes the ability to provide a type and label.

@mbrush +1; this is the standard we had agreed on in various GA4GH schema parts. Basically using OntologyClass objects / structure for identifiers (even if not strictly ontologies); the label should be optional:
{
   "id" : "DUO:0000004",
   "label" : "no restriction"
},
{
   "id" : "cellosaurus:CVCL_2253",
   "label" : "cell line C-4-I"
},
{
    "id" : "PMID:28966033"
}

HL7 has used a complex type for Identifier for many years (see here).  IMO, the core part that we should support at a minimum is:
type     CodeableConcept   Coded type describing the identifier
system   uri               Namespace for the identifier
value    string            Value of the identifier

Note that CodeableConcept is also a complex type:
coding   Coding   Code defined by a terminology system
text     string   Plain text representation of the concept (used when a Coding is not available)

Coding is also a complex type:
system    uri      Identity of the terminology system
version   string   Version of the system - if relevant
code      code     Symbol in syntax defined by the system (string + syntax rules)
display   string   Representation defined by the system

Example (illustrating two standardized codes from different systems that are mapped to a codeableconcept from my favorite local code system):
<Identifier>
  <system value="http://my.favorite.system" />
  <value value="123456" />
  <type>
    <coding>
      <system value="http://hl7.org/fhir/sid/icd-10" />

    </coding>
    <coding>
      <system value="http://snomed.info/sct" />

      <display value="Headache" />
    </coding>
    <text value="general headache" />
  </type>
</Identifier>

I realize this is a much more complex structure than most GA4GH project might need, but it isn't too different from the Resource and OntologyClass structures in Phenopackets.

@rrfreimuth But the basic code's 3 components correspond ~ to the 2 in OntologyClass; system:value are represented through the id there (recommended format: CURIE). Now, in contrast to the "everything is resolved through the CURIE, CodeableConcept has its own built-in structure; but in principle this maps.

Just to clarify, the proposal here is for representing identifiers for referenced instances in the data when they are captured 'by reference' instead of inlined.  I think this is analogous to how the FHIR 'Reference' data type is used - e.g. to capture a related Encounter in the Observation resource here.
This is separate issue from how we propose to capture terms from ontologies/terminologies as coded values for attributes - which is where FHIR CodableConcepts and Codings come into play.  The proposed VA 'coding' data type is used for this, and is largely modeled after a FHIR 'coding'.
What I am talking about here is a way to capture 'references' to other instances in a data set as a structured object using more than the identifier for the referenced object. i.e. bundling this with its type and perhaps even its label.  So that users will have a sense for what it is when its representation is not inlined.  I think a better name for this proposed complex data type would be to follow FHIR and call it a 'Reference' - updating the issue title accordingly.
(As an aside the full proposal for initial data types in the VA Spec is here  - and will be discussed on the VA call today in about an hour.   The 'identifier' data type here is a simple data type for representing the string used to capture an instance identifier in the data.)

@mbrush Yes, I got that. But IMO that is the case here for "Id =~ URI/CURIE" + some label / description.


Possibility to have a Procfile for each environment?

Hi,
I read about procodile and it looks very promising and easy to use, thank you.
Is it possible to have different Procfiles for different environments?
E.g: on development I often use mailcatcher but not on production/staging.
I think it would be nice if we could have one Procfile for each environment like Procfile.development, Procfile.staging
Thank you very much.
Cheers
Flo

This is the ideal use for the Procfile.local configuration file. You shouldn't store configuration data for these environments in your repository but you should simply override your options. For example, if you need 4 workers in production but only 1 in development you can just add Procfile.local to your production environment to set the quantity to 4.
processes:
  worker:
    quantity: 4

More details on the configuration page.

Thank you very much for responding so fast.
Can I also use the Procfile.local for a service which only should be started in development environment?
Something like this:
Procfile
web: bundle exec puma -C config/puma.rb
Procfile.local
mail: bundle exec mailcatcher

Add the service as usual to your Procfile and set the quantity to 0 for environments you don't wish it to run.

Works great, thank you very much. :)


[SPARK-13457][SQL] Removes DataFrame RDD operations

What changes were proposed in this pull request?
This PR removes DataFrame RDD operations. Original calls are now replaced by calls to methods of DataFrame.rdd.
How was the this patch tested?
No extra tests are added. Existing tests should do the work.

Test build #51772 has started for PR 11323 at commit 919e0b7.

Test build #51772 has finished for PR 11323 at commit 919e0b7.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/51772/
Test FAILed.

Merged build finished. Test FAILed.

LGTM pending tests pass.
And address Xiangrui's comment too.

Thanks for the review, addressed those styling issues.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/51828/
Test FAILed.

retest this please

Test build #51847 has started for PR 11323 at commit 61653c5.

Test build #51847 has finished for PR 11323 at commit 61653c5.

This patch fails to build.
This patch merges cleanly.
This patch adds no public classes.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/51847/
Test FAILed.

Merged build finished. Test FAILed.

The build failure was introduced by newly merged MLlib changes in master. Rebased to fix it.

Test build #51952 has started for PR 11323 at commit d530c75.

Test build #51952 has finished for PR 11323 at commit d530c75.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/51952/
Test FAILed.

retest this please

Test build #51962 has started for PR 11323 at commit d530c75.

Test build #51962 has finished for PR 11323 at commit d530c75.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/51962/
Test FAILed.

Failed test case in the last two build failures is "SQLListenerSuite.SPARK-11126: no memory leak when running non SQL jobs", which is irrelevant to this PR. I'm going to merge this to master.

@liancheng The failed test is actually introduced by this PR, so I'm going to revert this patch.

@davies Thanks a lot and sorry for the trouble! DataFrame.foreach and DataFrame.foreachPartitions shouldn't be removed since they are actions. The failure was because the withNewExecutionId calls were removed together with these two methods and thus Spark jobs are not properly tracked.
Opened #11388 for another try.


Snapshot and domain:

https://github.com/creek-service/creek-test/issues/30
https://github.com/creek-service/creek-test/issues/24
Reviewer checklist

[ ] Ensure relevant issues are linked (description should include text like "Fixes #")
[ ] Ensure any appropriate documentation has been added or amended

Coverage remained the same at 100.0% when pulling 5cdc768ccaf9322ec614fa7917199f738ce2d770 on snapshot into 36b19c7e55ec6728bcd671d2a6c28c7ae3be254c on main.


Add multiplatform counter samples

This implements a multiplatform counter samples, starting with Android, Desktop, and Mosaic.
Note that the Mosaic impl doesn't fully work yet due to lack of effects support upstream, but is here as a toe-hold for now.
We can use this to add other examples in the future too, such as compose JS, or even iOS 👀
counterdemo.webm
https://user-images.githubusercontent.com/1361086/194786249-ff199e26-5965-4bcd-ad5a-aa6305870970.mov

I am once again asking gradle variant matching to make sense

Depends on #193


feat (interactive) : Expand Node Storage Capacity in Interactive

When loading a graph in interactive, if we bulkload a certain number of nodes, only an additional 20% space is reserved for storing newly inserted nodes.
If more nodes are inserted, it fills up. For example, in the current testing of the interactive SDK with the modern graph, the person has only four nodes, and at most, only one more node can be inserted.
It might be necessary to consider an expansion mechanism or initially have a strategy to store more.

Maybe we should increase the minimum vertex capactiy.


NoLoggingToStdout is only effective for Flink versions <1.10

We should add a note and fail if the property is set for >=1.10 versions.
https://issues.apache.org/jira/browse/FLINK-15275

I think we can just drop the supports for Flink < 1.10

Instances of NoLoggingToStdout found in following locations:
https://github.com/spotify/flink-on-k8s-operator/blob/master/config/crd/bases/flinkoperator.k8s.io_flinkclusters.yaml
https://github.com/spotify/flink-on-k8s-operator/blob/master/controllers/flinkcluster/flinkcluster_converter.go
https://github.com/spotify/flink-on-k8s-operator/blob/master/apis/flinkcluster/v1alpha1/flinkcluster_default.go
https://github.com/spotify/flink-on-k8s-operator/blob/master/apis/flinkcluster/v1alpha1/flinkcluster_types.go
https://github.com/spotify/flink-on-k8s-operator/blob/master/apis/flinkcluster/v1alpha1/zz_generated.deepcopy.go
This seems like a simple change, just not sure how to implement.

Yeah I think we can drop support for Flink 1.10


Split Track 1 tests from Track 2

Closing this as a dupe of #15101.   Please use that issue for tracking.


Stale file handle when running parallel build stages

I have an sbt build that fails when running in a Jenkins on AWS pipeline with:

21:32:59 [Build UI] [error] coursier.ResolutionException: Exception during resolution
21:32:59 [Build UI] [error] Caused by: java.io.IOException: Stale file handle
21:32:59 [Build UI] [error] at sun.nio.ch.FileDispatcherImpl.lock0(Native Method)
21:32:59 [Build UI] [error] at sun.nio.ch.FileDispatcherImpl.lock(FileDispatcherImpl.java:90)
21:32:59 [Build UI] [error] at sun.nio.ch.FileChannelImpl.lock(FileChannelImpl.java:1073)
21:32:59 [Build UI] [error] at java.nio.channels.FileChannel.lock(FileChannel.java:1053)

The pipeline runs two stages in parallel that execute sbt tasks on disjoint projects (but not disjoint dependencies).
I see lots of the following:

21:30:13 [Build Core] Downloading https://repo1.maven.org/maven2/io/confluent/kafka-avro-serializer/4.1.0/kafka-avro-serializer-4.1.0.pom.sha1
21:30:13 [Build Core] Downloading https://repo1.maven.org/maven2/io/confluent/kafka-avro-serializer/4.1.0/kafka-avro-serializer-4.1.0.pom
21:30:13 [Build Core] Downloading http://packages.confluent.io/maven/io/confluent/kafka-avro-serializer/4.1.0/
21:30:13 [Build Core] Downloading https://repo1.maven.org/maven2/io/confluent/kafka-schema-registry-parent/4.1.0/kafka-schema-registry-parent-4.1.0.pom
21:30:13 [Build Core] Downloading https://repo1.maven.org/maven2/io/confluent/kafka-schema-registry-parent/4.1.0/kafka-schema-registry-parent-4.1.0.pom.sha1
21:30:13 [Build Core] Downloading http://packages.confluent.io/maven/io/confluent/kafka-schema-registry-parent/4.1.0/
21:30:13 [Build Core] Downloading https://repo1.maven.org/maven2/io/confluent/rest-utils-parent/4.1.0/rest-utils-parent-4.1.0.pom
21:30:13 [Build Core] Downloading https://repo1.maven.org/maven2/io/confluent/rest-utils-parent/4.1.0/rest-utils-parent-4.1.0.pom.sha1

which I interpret as snapshot-like resolution, presumably related to the  Maven metadata files listing available versions, etc. comment from https://coursier.github.io/coursier/1.1.0-SNAPSHOT/docs/ttl.
Note that I only see this behavior for apache-kafka and confluent-kafka artifacts.  I tried adding

coursierTtl in ThisBuild := Some(Duration("Inf"))
but it does not stick across an sbt invocation (or reload).

This sbt project has 60+ sub-projects.  I switched to coursier because IntelliJ/sbt synchs were taking 20-30 minutes.  With coursier, they are under 2 minutes.

@dpennell Does it consistently fail this way? Or is it transient?
The downloading messages above aren't related to snapshots, their versions are stable / release ones. So TTL doesn't matter for those. (Once they're in cache, they're used from there, and no attempt is made to download them again.)

@alexarchambault I've seen it succeed once in almost a dozen tries.  I know they aren't snapshots, but if I restart sbt or reload, and then run update, I see those downloading messages all sub-projects that have these dependencies.  If you then run update again, it's quiet.  It seems like snapshot behavior.  The doc I referenced indicated that there were other conditions than "SNAPSHOT" that could trigger this behavior.

also - I changed the build to not add the coursier plugin if running on Jenkins and the issue disappeared.  We get the benefit of coursier for dev and the build is OK, but this is just a workaround.


Wasmtime wasi-streams: splice

https://github.com/bytecodealliance/wasmtime/pull/7234

Done in https://github.com/bytecodealliance/wasmtime/pull/7234


Support writing to org files?

Is there any plan to support writing to org files? i.e. creating new org-nodes?

Hey, I actually do have a small library, inorganic lto write org-mode files and you can see examples in doctests and in orger library. I implemented this in a separate library because want to understand what would be a good API first. So let me know if inorganic works for you and I'd be curious about your usecase, so I could think of a convenient interface!

Is there any reason why there's no documentation on constructing nodes? It seems that roundtrip even with complex files works flawflessly, the only part that is missing is how to construct the ast by hand?

@hrehfeld for documentation, do you mean in orgparse, or in the inorganic library I mentioned above?
For orgparse, I guess the main issue that the original author of library (and me) didn't have this in mind, so the 'ast' is geared towards single pass document reading. It's also possible to take the document object tree and modify it... but writing back might be a bit more complicated, although doable. I just didn't have many usecases for it so far.

Hm, I see.

@hrehfeld for documentation, do you mean in orgparse, or in the inorganic library I mentioned above?
I mainly need full round-trip org-mode parsing, i.e. parse the file, change something, write back the changes. So.. a separation doesn't really make that much sense here other than to keep reading/writing separate.

For orgparse, I guess the main issue that the original author of library (and me) didn't have this in mind, so the 'ast' is geared towards single pass document reading. It's also possible to take the document object tree and modify it... but writing back might be a bit more complicated, although doable. I just didn't have many usecases for it so far.

my usecase is definitely:
root = orgparse.parse('myfile.org')
root.title = 'Look Ma, I changed the Title!'
orgparse.dump(root, 'myfile.org')


Integration of entity-based LightComponents with Light Propagation / Voxel Lighting

Currently Terasology handle point-like lights in two separate ways, the output of which is combined via shaders.
The first method is somewhat more traditional (fully shader-based) and handles the lighting produced by entity with a LightComponent attached to them. An example of this is the held-in-hand torch of a player.
The second method handles lights placed in the landscape, i.e. torches placed on the ground or attached to a tree. These lights are not entity-based but at are light-emitting blocks instead. These are handled via Voxel Lighting / Light Propagation, a method involving a cellular automata-like algorithm.
Ideally, we'd like to eliminate the first method and handle all or most lighting through the second method, probably making exceptions for purely directional lights i.e. the sun/moon.
The rationale for this is that the Voxel Lighting / Light Propagation system produces nice visual features such as "around the corner" lighting and shadows with reasonable performance (1). Conversely, it would be quite difficult to have those features with the first method and they would be very computationally expensive.
(1) See https://www.youtube.com/watch?v=OkPL3HvYqVM

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/39148895-integration-of-entity-based-lightcomponents-with-light-propagation-voxel-lighting?utm_campaign=plugin&utm_content=tracker%2F5279&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F5279&utm_medium=issues&utm_source=github).

While still having a method to get the light level of a given block?

Dear @OvermindDL1, your question is obviously very clever but my smallmind just cannot make sense of it in the context of the description of this issue. Would you care to elaborate and give a chance to individuals with lesser intellects  to understand your concern?

I think he might be referring to the method in "WorldProvider"
/**
* Returns the light value at the given position.
*
* @param pos The position
* @return The block value at the given position
*/
byte getLight(Vector3f pos);

I think he might be referring to the method in "WorldProvider"

Precisely, yes, sorry.  Busy day.  :-)

smallmind

What is that about?

smallmind: self-deprecating flunked humor - nevermind :smile:
Thank you both for clarifying the concern.
If all lighting goes through the voxel lighting method per-block light levels should still be very easy to obtain: the per-block data will still be there but it will also take in account the input of dynamic lights, which right now I don't makes it into the per-block light levels.
No need to worry about imminent changes though: unless somebody picks up this issue I do not intend to work on it any time soon.

Do all the entities that use the first method use LightComponent? If not, what's the best way to identify these objects?

@eviltak: I would say the answer is yes, all lights affecting the world via the more traditional deferred lighting rendering path are entities with a  LightComponent attached to them. Notice that if you look at the code related to the MainLight (sun/moon) that only -stores- the light information in a LightComponent but doesn't attach it to any entity. So, that's handled completely separately.
Tagging @Josharias and @skaldarnar for confirmation.

I want to find the event where the torch is picked up/selected in the inventory (i.e. used as an item), where can I do that?

@emanuele3d So we're looking at ALL entities having a LightComponent only of the POINT type, correct? I reckon that directional lights won't be simulated well with voxel light propagation.

Short answer: yes.
Longer answer: I don't think the current LightComponent implementation makes much sense for directional lights, intended as lights producing parallel light rays, i.e. from astronomical sources. A number of attributes in the LightComponent are really unnecessary for directional class.
I haven't had the time to really look into this and either change it myself or write an issue about it, but I suspect the LC could be broken in smaller components that can be better mix&matched. So, a directional light might be an entity with a BaseLightComponent (containing only information regarding color/intensity) and a LocationComponent interpreted as a unit-length direction vector. Meanwhile a Point Light could be any entity with a BaseLightComponent, a LightLimits component and a LocationComponent, this time interpreted as a proper position.
I really haven't thought about the consequences of all this but this could be a way forward. Feel free to look into it and come up with proposals.

[...] and a LocationComponent interpreted as a unit-length direction vector.

I advice against using components for a different purpose. The LocationComponent should onyl be used for locations, everything else is just confusing. A DirectionComponent might have the same interface and implementation, but it is clear by naming what its intention is.

Meanwhile a Point Light could be any entity with a BaseLightComponent, a LightLimits component and a LocationComponent, this time interpreted as a proper position.

This sounds like "correct" usage of the components. Just from looking at the PointLightEntity, you can guess that its a light located somewhere in the world.

@skaldarnar: you make a good point about avoiding misuse of existing components. Ok, let's eventually use a DirectionComponent then. Thank you for pointing it out.

Combing through and testing the code, I reckon it is currently not possible to implement this in an efficient way. The method I've thought of is setting the luminance of the block containing the light position (only the single block for now). But owing to the current voxel lighting architecture using Propagators, we have to keep track of the blocks that were changed, unset the changes after every frame, and recalculate (repropagate) the lighting two times (once after every block change set/unset). This can be circumvented by using a dynamic voxel lighting system, but that will require a not very small rendering pipeline change/addition, something for which I may have enough experience with the Terasology architecture.


Failed to convert article 2309.15025

Exact location of issue
https://ar5iv.labs.arxiv.org/html/2309.15025
Problem details
Conversion to HTML had a Fatal error and exited abruptly. This document may be truncated or damaged.
Desktop (please complete the following information)

OS: Windows
Browser: Edge

Smartphone (please complete the following information):
N/A

Thank you for the report! I just addressed this conversion instability in latexml #2309.
The issue should be resolved once the next full ar5iv re-conversion is completed and updated (~1 month from  today).


Consider to handle the timeout=0 as None in asyn.py

After upgrade fsspec from 0.8.7 to 2021.5.0, I found my application not able to download from Azure Datalake. I found out the reason is I call fs.get(...) with extra argument timeout=0, which in Azure's API means infinite timeout, and with the new implementation for using asyncio, the timeout=0 not work any more, the equivalent usecase is timeout=None.
I would suggest treating timeout=0 as timeout=None. I think for have 0 second timeout is kind of not make sense at all in an async situation (no waiting also means you can't finish anything), and on the other hand, use 0 second timeout to indicate infinite waiting is quite natural for me, not sure how the others think.
Thanks!

Sounds reasonable - and easy to implement as a PR if you have the time.
…
On May 19, 2021 10:33:12 AM EDT, Scott Zhou @.***> wrote: After upgrade fsspec from 0.8.7 to 2021.5.0, I found my application not able to download from Azure Datalake. I found out the reason is I call fs.get(...) with extra argument timeout=0, which in Azure's API means infinite timeout, and with the new implementation for using asyncio, the timeout=0 not work any more, the equivalent usecase is timeout=None. I would suggest treating timeout=0 as timeout=None. I think for have 0 second timeout is kind of not make sense at all in an async situation (no waiting also means you can't finish anything), and on the other hand, use 0 second timeout to indicate infinite waiting is quite natural for me, not sure how the others think. Thanks! -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: #642
-- Sent from my Android device with K-9 Mail. Please excuse my brevity.

PR created. I have a question that might off-topic: I try to set up the development env by tox (follow the README) but it's failed. Not sure what is the issue, and also I found the README might not all correct, it says tox -e dev, but there is actually no dev env defined in tox.ini. However, I've never used tox so not sure if it's I'm using it in the wrong way or it's the README outdated.

The best reference for how to run the tests is actually in the CI; but for all practical purposes you will be fine setting up a local conda environment with pytest. Some tests require docker, some require extra packages, but tests should be efficiently skipped when those are not available.


feat: relationships loading

Pull Request Checklist

[ ] New code has 100% test coverage
[ ] (If applicable) The prose documentation has been updated to reflect the changes introduced by this PR
[ ] (If applicable) The reference documentation has been updated to reflect the changes introduced by this PR
[x] Pre-Commit Checks were ran and passed
[x] Tests were ran and passed

Description
Expose SQLAlchemy relationship loading techniques through the repository interface.
The idea is to have SQLAlchemy loading styles more integrated into the repository API, via a single .load() repository method that sets the relationships to load on the repository model.
Here is the proposed API:
# List author and load all their books
authors = await AuthorRepo(session=session).load(books=True).get_one(name="J.R.R Tolkien")
assert all(isinstance(book, BookModel) for book in author.books)

# Calling .load() only affect the next query, so no relationship will be explictly loaded here
authors = await AuthorRepo(session=session).get_one(name="J.R.R Tolkien")
print(authors[0].book.title) # May throw an error if book is not configured to be lazy loaded on the mapper side

# Go one step deeper by loading publisher too
# Chil relations are chained with the '__' separator
author = await AuthorRepo(session=session).load(books__publisher=True).get_one(name="J.R.R Tolkien")
assert all(isinstance(book, BookModel) for book in author.books)
assert all(isinstance(book.publisher, PublisherModel) for book in author.books)

# Ellispis (...) load all nested relationship under (and including) the specified one
author = await AuthorRepo(session=session).load(books=...).get_one(name="J.R.R Tolkien")
assert all(isinstance(book, BookModel) for book in author.books)
assert all(isinstance(book.publisher, PublisherModel) for book in author.books)
assert all(isinstance(book.publisher.company, CompanyModel) for book in author.books)

# We can customize how relationship is loaded by passing a SQLAlchemy relationship loading style
# https://docs.sqlalchemy.org/en/20/orm/queryguide/relationships.html#summary-of-relationship-loading-styles
author = await AuthorRepo(session=session).load(books="subqueryload").get_one(name="J.R.R Tolkien")
assert all(isinstance(book, BookModel) for book in author.books)

# Exclude all relationships to be loaded (overriding mapper configuration), and only load books
load_config = SQLAlchemyLoadConfig(default_strategy="raiseload")
author = await AuthorRepo(session=session).load(load_config, books=True).get_one(name="J.R.R Tolkien")
assert all(isinstance(book, BookModel) for book in author.books)

# You can pass a SQLAlchemyLoad object if you want
# to set a default set of relationships to be loaded on a repository
repo = AuthorRepo(session=session, load=SQLAlchemyLoad(books=True))

author = await repo.get_one(name="J.R.R Tolkien")
assert all(isinstance(book, BookModel) for book in author.books)

await repo.session.expunge_all()

authors = await repo.list()
for author in authors:
    assert all(isinstance(book, BookModel) for book in author.books)

It also makes relationship loading more "composable" since SQLAlchemyLoad are standalone objects that can be reused.
Close Issue(s)

This is a great addition @gazorby!
However, I have concerns about the interface. The pipeline style doesn't really fit in with the rest of the repositories, as it's the only place this would be used. Furthermore, the SQLAlchemyLoad, in combination with the pipeline pattern on the repository, comes quite close to just remodeling SQLAlchemy's query building, if we think a few iterations and feature additions ahead here.
Another concern is the "blanket keyword argument" style, which isn't great for type checking (and testing), and is something that - in this case - SQLAlchemy would do better than we here.
I would propose that for now, the interface for this stays functional, which could maybe look something like this:
# List author and load all their books
authors = await AuthorRepo(session=session).get_one(name="J.R.R Tolkien", load=Author.books)
assert all(isinstance(book, BookModel) for book in author.books)

author = await AuthorRepo(session=session).get_one(name="J.R.R Tolkien", load=[Author.books, BookModel.publisher])
assert all(isinstance(book, BookModel) for book in author.books)
assert all(isinstance(book.publisher, PublisherModel) for book in author.books)

# use loaders from sqla
author = await AuthorRepo(session=session).get_one(
  name="J.R.R Tolkien",
  load=subqueryload(Author.books)
)
assert all(isinstance(book, BookModel) for book in author.books)

Hi @gazorby
I wasn't sure if you'd be continuing with this, so I'd made my own, admittedly lazier POC here #130 - I've just now noticed your recent activity.
Aside from agreeing with @provinzkraut's comments above, what I really like about SQLAlchemy's loader strategies is fine grained control over deeply nested data, to be more specific - the load_only method comes to mind.
If we take for example the relationship of Author -> Books -> Chapters, we can do the following with pure SQLAlchemy:
result = session.execute(
    select(Author).options(selectinload(Author.books).selectinload(Book.chapters).load_only(Chapter.name)
)

This gives us the opportunity to emit a more lightweight query in the context of the book hierarchy if the Chapter table for example had multiple other columns of metadata, but in this particular context, we're only interested in the name.
I also often make use of has() and any() to refine results, e.g.
# find out about authors and only their books containing "foo" in the title
select(Author).options(selectinload(Author.books.any(Book.title.ilike("%foo%")))

The native approach makes a lot of sense to me here, let me know your thoughts?

Hi @LonelyVikingMichael!
I refactored my codebase with a new implementation exposing the API @provinzkraut suggested, which I also agree with, and brings several benefits over my previous iteration, not least being fully typed and much lighter.
So now I can use plain SQLAlchemy loaders or pass a nested list of relationships and let the repository generate the loaders:
author_repo.get(id, load=Author.books)
author_repo.get(id, load=[(Author.books, Book.chapter), Author.publisher]
author_repo.get(id, load=selectinload(Author.books).selectinload(Book.chapters).load_only(Chapter.name))

supplanted by #157