Document exact GPU compilation procedure using CUDA_PATH

When invoking:
shap_values_train = explainer.shap_values(X=train_x, y=train_y)
I'm getting this error raised here https://github.com/slundberg/shap/blob/6af9e1008702fb0fab939bf2154bbf93dfe84a16/shap/explainers/_gpu_tree.py#L8 as a result of missing CUDA extension _cext_gpu.lib, which should have been compiled by compile_cuda_module if I had the CUDA_PATH env var defined at pip-installation time (as part of docker build in my case).
Can we have a more specific error message (telling user exactly what to do, complete with an example path for a given location of nvcc)?
I did notice this remark in the docs on shap.GPUTreeExplainer, :
"Currently requires source build with cuda available and ‘CUDA_PATH’ environment variable defined."
but it was not clear enough about the role of CUDA_PATH (just having it created obviously was not enough).
A more specific error message would point me to the exact solution even faster, without looking into your source code:)
Regarding the "source build' part there could be also some clarification on how to proceed, e.g. ideally in a form of exact compilation instructions or a Dockerfile like this one: dockerfile.gpu.
Having an exact compilation example is rather important, because the path to nvcc looks like this:
/usr/local/cuda-10.1/bin/nvcc
so there are at least 4 ways to define the path:
export CUDA_PATH=/usr/local/cuda-10.1/bin
export CUDA_PATH=/usr/local/cuda-10.1/bin/
export CUDA_PATH=/usr/local/cuda-10.1
export CUDA_PATH=/usr/local/cuda-10.1/

And here only the last two would work given how the variable is used:
https://github.com/slundberg/shap/blob/5831d55b598bf17b63fd4c81f9799c4d771d0bc7/setup.py#L63

Here's an argument that the current compilation instructions are barely scratching the surface: currently (i.e. for the latest 2 commits to master) CUDA compilation failed in my tests in all CUDA docker containers I tried (the official nvidia/cuda as well as custom ones), with CUDA versions ranging from 10.1 to 11.1, and gcc builds from 8 to 10 (appropriately matched).
Two issues I consistently encountered that invariably led nvcc to fail ("WARNING: Could not compile cuda extensions") were:

the use of --extended-lambda here: https://github.com/slundberg/shap/blob/5831d55b598bf17b63fd4c81f9799c4d771d0bc7/setup.py#L69 which seems to be unavailable for older CUDA versions (like 10.1), but replacement with its alias --expt-extended-lambda seems to work,
some C++ dialect problems: error: namespace "std" has no member "size" in the following 6 lines:

shap/cext/_cext_gpu.cu(178): error: namespace "std" has no member "size"

shap/cext/_cext_gpu.cu(179): error: no instance of function template "flat_idx_to_tensor_idx" matches the argument list
            argument types are: (size_t, size_t [3], <error-type>)

shap/cext/_cext_gpu.cu(183): error: no instance of function template "tensor_idx_to_flat_idx" matches the argument list
            argument types are: (size_t [3], <error-type>)

shap/cext/_cext_gpu.cu(225): error: namespace "std" has no member "size"

shap/cext/_cext_gpu.cu(226): error: no instance of function template "flat_idx_to_tensor_idx" matches the argument list
            argument types are: (size_t, size_t [4], <error-type>)

shap/cext/_cext_gpu.cu(231): error: no instance of function template "tensor_idx_to_flat_idx" matches the argument list
            argument types are: (size_t [4], <error-type>)

6 errors detected in the compilation of "shap/cext/_cext_gpu.cu".
Error building cuda module: CalledProcessError(1, ['/usr/local/cuda/bin/nvcc', 'shap/cext/_cext_gpu.cu', '-lib', '-o', 'build/lib_cext_gpu.a', '-Xcompiler', '-fPIC', '-I/usr/include/python3.8', '--extended-lambda', '--expt-relaxed-constexpr', '-arch=sm_60', '-gencode=arch=compute_70,code=sm_70', '-gencode=arch=compute_75,code=sm_75', '-gencode=arch=compute_75,code=compute_75'])
WARNING: Could not compile cuda extensions

Just for fun, I tried to specify "--compiler-options -std=c++17 but it only worsened the problem.

Hi, were you able to install with gpu support? I was interested in trying that out as well, but got the error below as well. I was installing from the repo and setting the CUDA_PATH environment variable to /usr/local/cuda/bin/nvcc
record_import_error("cext_gpu", "cuda extension was not built during install!", e)

Hi, were you able to install with gpu support? I was interested in trying that out as well, but got the error below as well. I was installing from the repo and setting the CUDA_PATH environment variable to /usr/local/cuda/bin/nvcc

No, failed due to the above compilation errors, which I hope can be fixed by developers (gently ping @RAMitchell ).
In your case, have you tried export CUDA_PATH=/usr/local/cuda (without /bin/nvcc)? The last subfolder and compiler part is already hard-coded here (which hopefully will be documented): https://github.com/slundberg/shap/blob/5831d55b598bf17b63fd4c81f9799c4d771d0bc7/setup.py#L63

Sorry we are working through a few issues, can you try pr #1646?

So after PR #1646  was merged in (thank you @RAMitchell and @JohnZed ), I tested GPU compilation from source on Ubuntu using on these two setups. The errors above were resolved only for latest CUDA, legacy version failed.
More info
a) latest: CUDA 11.1 (official nvidia/cuda container with Ubuntu 20.4, python 3.8.5 and gcc 9.3.0).:

nvcc compilation: success (long wait without any progress bar, because nvcc uses single core, which I suppose cannot be helped). The import of shap in python3.8 succeeded, but raised this warning:

"is not" with a literal. Did you mean "!="?
shap.GPUTreeExplainer was available and should work (not tested it further, only CUDA 10.1 could be tested functionally).

b) legacy: CUDA 10.1 ( official nvidia/cuda container with Ubuntu 18.4, python 3.8.0, and gcc upgraded to 8.4.0 - the maximum version supported by CUDA 10.1, which I installed as /usr/local/cuda/bin/gcc):

nvcc compilation: FAILURE (with unspecific error):

NVCC ==>  /usr/local/cuda/bin/nvcc
Compiling cuda extension, calling nvcc with arguments:
['/usr/local/cuda/bin/nvcc', 'shap/cext/_cext_gpu.cu', '-lib', '-o', 'build/lib_cext_gpu.a', '-Xcompiler', '-fPIC', '-I/usr/include/python3.8', '--std', 'c++14', '--expt-extended-lambda', '--expt-relaxed-constexpr', '-arch=sm_60', '-gencode=arch=compute_70,code=sm_70', '-gencode=arch=compute_75,code=sm_75', '-gencode=arch=compute_75,code=compute_75']
ar: build/lib_cext_gpu.a: No such file or directory
Error building cuda module: CalledProcessError(1, ['/usr/local/cuda/bin/nvcc', 'shap/cext/_cext_gpu.cu', '-lib', '-o', 'build/lib_cext_gpu.a', '-Xcompiler', '-fPIC', '-I/usr/include/python3.8', '--std', 'c++14', '--expt-extended-lambda', '--expt-relaxed-constexpr', '-arch=sm_60', '-gencode=arch=compute_70,code=sm_70', '-gencode=arch=compute_75,code=sm_75', '-gencode=arch=compute_75,code=compute_75'])
WARNING: Could not compile cuda extensions

Code to reproduce CUDA 10.1 failure:
$ docker run --rm -it --name cuda101 -u 0 nvidia/cuda:10.1-devel-ubuntu18.04 bash

# install maximum supported gcc compiler
MAX_GCC_VERSION=8 # for CUDA 10.1,10.2
apt update && apt install -y gcc-$MAX_GCC_VERSION g++-$MAX_GCC_VERSION

# add symlinks to max supported gcc inside a CUDA subfolder
ln -s /usr/bin/gcc-$MAX_GCC_VERSION /usr/local/cuda/bin/gcc
ln -s /usr/bin/g++-$MAX_GCC_VERSION /usr/local/cuda/bin/g++

# specify location of nvcc for shap compilation
export CUDA_PATH=/usr/local/cuda

# install python 3.8 and setuptools
apt install -y git python3.8 python3.8-dev python3-setuptools

# compile shap with GPU support
cd /tmp && \
git clone https://github.com/slundberg/shap && \
cd shap && \
git checkout 5209472 && \
python3.8 setup.py install

The problem is actually that the build directory doesn't exist yet, so running it again results in successful compilation. I will submit a fix.

So the error message was specific after all!:) I had the nvidia/cuda 11.1 container ready, preserved from previous tests, so this is why it seemed to work right away (it's not due to new and improved CUDA:)
I can confirm now confirm the above-defined success in a custom-build container with CUDA 10.1. nvcc compilation stage now passes even for CUDA 10.1 and so does python install. When I import shap, it does succeed, but prints these warnings that were also printed out during python install (with specific lines of code raising them):
>>> import shap
"is not" with a literal. Did you mean "!="?
"is" with a literal. Did you mean "=="?
"is" with a literal. Did you mean "=="?
"is not" with a literal. Did you mean "!="?

I've created some scripts for automatically building/testing using docker: https://github.com/RAMitchell/shap-ci-scripts
I'm currently testing cuda 10.1 and cuda 11.1 with ubuntu 18.04, and everything is working well with the #1665 fix. There should be no need to set paths, setup.py should find nvcc.
Hopefully we can get this running regularly on a CI machine.

Thank you for the Dockerfile! You could even parametrize the Ubuntu version year here (to test also 20.04 and possibly 16.04)
I did not realize the list of shap's requirements is so long (here and here) in case of source build... until I tried to complete it in a bare bones container such as nvidia/cuda:
And @RAMitchell is right that the python install stage would fail without these python dependencies... I wonder @slundberg if perhaps requiring the presence of so many extra python packages is necessary for shap installation (their installation may fail e.g. when there are multiple python versions as seen in my sample code above based on nvidia/cuda with older Ubuntu 18.04),
Perhaps the dependencies can be specified explicitly:
pip install requirements.txt

(I do hope they could be pip-installed for those not using conda)?

I've created some scripts for automatically building/testing using docker: https://github.com/RAMitchell/shap-ci-scripts

I'd change one thing in the Dockerfile though: I'd install python packages as a standard user, not root (by adding USER 1000 somewhere here  and returning to USER root before shap compilation from source... then back to USER 1000 at the very end of file). The reason is that Installing popular python packages as root makes changes to their reverse dependencies installed packages practically impossible in the future for the standard container user (pip would sometimes require uninstalling dependencies to accommodate an older package that requires them but pins them at a a version older than installed). And you can't uninstall anything as standard user if stuff was installed as root (as part of shap's sumptuous dependencies package that needs to get  pre-installed or else it gets installed automatically :)

In fact I managed to integrate GPU-enabled shap (using the duplicate python setup.py install workaround:) into one of our data science containers only after having moved its installation to the very end. Otherwise (if it preceded any other installation) it would break the installation of at least one other python package due to the above root requirements problem (even though I preinstalled all python dependencies as s standard user, shap still apparently tried to down- or upgrade some of them at build time (when having root)).
But it eventually succeeded and now is included in our CICD pipeline, ready for testing:
docker run --rm -d --name ml-gpu-py38-cuda101-cust mirekphd/ml-gpu-py38-cuda101-cust && docker logs -f ml-gpu-py38-cuda101-cust

Did our container work for you?:) In my tests the successful CUDA compilation made little to no difference... I'm testing a corporate server with proven GPU access (e.g. XGBoost trains 10x faster with tree_method="gpu_hist"). Maybe the workaround of duplicate python setup.py install did not work as intended..?
When running:
shap_values_valid = explainer.shap_values(X=valid_x, y=valid_y)
I'm getting this error as previously:
cuda extension was not built during install!

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-22-cbd558096e13> in <module>
      1 if OBJECTIVE == "binary":
----> 2     shap_values_valid = explainer.shap_values(X=valid_x, y=valid_y)
      3
      4 else:
      5     shap_values_valid = explainer.shap_values(X=valid_x)

/opt/conda/lib/python3.8/site-packages/shap/explainers/_gpu_tree.py in shap_values(self, X, y, tree_limit, approximate, check_additivity, from_call)
    113
    114         # run the core algorithm using the C extension
--> 115         assert_import("cext_gpu")
    116         phi = np.zeros((X.shape[0], X.shape[1] + 1, self.model.num_outputs))
    117         _cext_gpu.dense_tree_shap(

/opt/conda/lib/python3.8/site-packages/shap/utils/_general.py in assert_import(package_name)
     21         msg,e = import_errors[package_name]
     22         print(msg)
---> 23         raise e
     24
     25 def record_import_error(package_name, msg, e):

    [... skipping hidden 1 frame]

<ipython-input-21-cbd558096e13> in <module>
      1 if OBJECTIVE == "binary":
----> 2     shap_values_valid = explainer.shap_values(X=valid_x, y=valid_y)
      3
      4 else:
      5     shap_values_valid = explainer.shap_values(X=valid_x)

/opt/conda/lib/python3.8/site-packages/shap/explainers/_gpu_tree.py in shap_values(self, X, y, tree_limit, approximate, check_additivity, from_call)
    113
    114         # run the core algorithm using the C extension
--> 115         assert_import("cext_gpu")
    116         phi = np.zeros((X.shape[0], X.shape[1] + 1, self.model.num_outputs))
    117         _cext_gpu.dense_tree_shap(

/opt/conda/lib/python3.8/site-packages/shap/utils/_general.py in assert_import(package_name)
     21         msg,e = import_errors[package_name]
     22         print(msg)
---> 23         raise e
     24
     25 def record_import_error(package_name, msg, e):

/opt/conda/lib/python3.8/site-packages/shap/explainers/_gpu_tree.py in <module>
      4 from ..utils import assert_import, record_import_error
      5 try:
----> 6     from .. import _cext_gpu
      7 except ImportError as e:
      8     record_import_error("cext_gpu", "cuda extension was not built during install!", e)

ImportError: cannot import name '_cext_gpu' from partially initialized module 'shap' (most likely due to a circular import) (/opt/conda/lib/python3.8/site-packages/shap/__init__.py)

The lib certainly does exist and is readable, but probably not where it should be:)
$ cd / && find | grep cext_gpu
[..]
./opt/conda/lib/python3.8/site-packages/shap-0.37.0-py3.8-linux-x86_64.egg/shap/__pycache__/_cext_gpu.cpython-38.pyc
./opt/conda/lib/python3.8/site-packages/shap-0.37.0-py3.8-linux-x86_64.egg/shap/_cext_gpu.cpython-38-x86_64-linux-gnu.so
./opt/conda/lib/python3.8/site-packages/shap-0.37.0-py3.8-linux-x86_64.egg/shap/_cext_gpu.py

$ cat /opt/conda/lib/python3.8/site-packages/shap-0.37.0-py3.8-linux-x86_64.egg/shap/_cext_gpu.py
def __bootstrap__():
    global __bootstrap__, __loader__, __file__
    import sys, pkg_resources, importlib.util
    __file__ = pkg_resources.resource_filename(__name__, '_cext_gpu.cpython-38-x86_64-linux-gnu.so')
    __loader__ = None; del __bootstrap__, __loader__
    spec = importlib.util.spec_from_file_location(__name__,__file__)
    mod = importlib.util.module_from_spec(spec)
    spec.loader.exec_module(mod)
__bootstrap__()

Does it perhaps need access to _cext_gpu.o? But it is not in python's site-packages, but where it was built from sources...:
$ cd / && find | grep shap
[...]
./usr/local/src/shap/build/lib_cext_gpu.a
./usr/local/src/shap/build/temp.linux-x86_64-3.8
./usr/local/src/shap/build/temp.linux-x86_64-3.8/shap
./usr/local/src/shap/build/temp.linux-x86_64-3.8/shap/cext
./usr/local/src/shap/build/temp.linux-x86_64-3.8/shap/cext/_cext.o
./usr/local/src/shap/build/temp.linux-x86_64-3.8/shap/cext/_cext_gpu.o

It should only need  _cext_gpu.cpython-38-x86_64-linux-gnu.so as far as I know.

Ok, then may be this is part is relevant:
ImportError: cannot import name '_cext_gpu' from partially initialized module 'shap' (most likely due to a circular import) (/opt/conda/lib/python3.8/site-packages/shap/__init__.py)
So I also checked dependencies and they seem OK (not conflicting with requirements):
shap==0.37.0
  - numba [required: Any, installed: 0.52.0]
    - llvmlite [required: >=0.35.0,<0.36, installed: 0.35.0]
    - numpy [required: >=1.15, installed: 1.19.4]
    - setuptools [required: Any, installed: 51.0.0]
  - numpy [required: Any, installed: 1.19.4]
  - pandas [required: Any, installed: 1.1.5]
    - numpy [required: >=1.15.4, installed: 1.19.4]
    - python-dateutil [required: >=2.7.3, installed: 2.8.1]
      - six [required: >=1.5, installed: 1.15.0]
    - pytz [required: >=2017.2, installed: 2020.4]
  - scikit-learn [required: Any, installed: 0.23.2]
    - joblib [required: >=0.11, installed: 1.0.0]
    - numpy [required: >=1.13.3, installed: 1.19.4]
    - scipy [required: >=0.19.1, installed: 1.5.4]
      - numpy [required: >=1.14.5, installed: 1.19.4]
    - threadpoolctl [required: >=2.0.0, installed: 2.1.0]
  - scipy [required: Any, installed: 1.5.4]
    - numpy [required: >=1.14.5, installed: 1.19.4]
  - slicer [required: ==0.0.3, installed: 0.0.3]
  - tqdm [required: >4.25.0, installed: 4.54.1]

The package folder listing with permissions:
$ ls -lan /opt/conda/lib/python3.8/site-packages/shap-0.37.0-py3.8-linux-x86_64.egg/shap/
total 10104
drwxr-sr-x. 11 0 100    4096 Dec 17 20:53 .
drwxr-sr-x.  4 0 100      34 Dec 17 20:53 ..
drwxr-sr-x.  3 0 100      83 Dec 17 20:53 actions
drwxr-sr-x.  3 0 100     177 Dec 17 20:53 benchmark
drwxr-sr-x.  2 0 100      25 Dec 17 20:53 cext
-rwxr-xr-x.  1 0 100  516176 Dec 17 20:53 _cext.cpython-38-x86_64-linux-gnu.so
-rwxr-xr-x.  1 0<PHONE_NUMBER> Dec 17 20:53 _cext_gpu.cpython-38-x86_64-linux-gnu.so
-rw-r--r--.  1 0 100     434 Dec 17 20:53 _cext_gpu.py
-rw-r--r--.  1 0 100     430 Dec 17 20:53 _cext.py
-rw-r--r--.  1 0 100    8798 Dec 17 20:53 datasets.py
drwxr-sr-x.  5 0 100    4096 Dec 17 20:53 explainers
-rw-r--r--.  1 0 100   25320 Dec 17 20:53 _explanation.py
-rw-r--r--.  1 0 100    2809 Dec 17 20:53 __init__.py
-rw-r--r--.  1 0 100     442 Dec 17 20:53 links.py
drwxr-sr-x.  3 0 100     179 Dec 17 20:53 maskers
drwxr-sr-x.  3 0 100     122 Dec 17 20:53 models
drwxr-sr-x.  5 0 100    4096 Dec 17 20:53 plots
drwxr-sr-x.  2 0 100     191 Dec 17 20:53 __pycache__
drwxr-sr-x.  3 0 100     192 Dec 17 20:53 utils

$ ls -lan /opt/conda/lib/python3.8/site-packages/shap-0.37.0-py3.8-linux-x86_64.egg/shap/cext/
total 64
drwxr-sr-x.  2 0 100    25 Dec 17 20:53 .
drwxr-sr-x. 11 0 100  4096 Dec 17 20:53 ..
-rw-r--r--.  1 0 100 58130 Dec 17 20:53 tree_shap.h

I think I will have to create a local copy of the package (from this root-owned folder), import it and set up a breakpoint to examine the error in more detail.

I implemented a workaround another likely reason for the "cuda extension was not built during install!" error, but it was not helpful.
More info
In our moderately complex python environment we have several meta-packages that require shap and these had to be installed first (due to the implicit root requirement of packages compiled from source like shap that I already mentioned earlier). So I inadvertently have two versions of shap a CPU-only one installed by pip as a dependency of those meta-packages and one GPU-enabled I complied earlier. And in spite of the installation sequence, the CPU version takes priority when you execute import shap. This situation can be detected by listing all shap dependenies like this:
$ pipdeptree -r -p shap
[..]
shap==0.37.0
  - alibi==0.5.5 [requires: shap>=0.36]
  - BorutaShap==1.0.14 [requires: shap>=0.34.0]
  - causalml==0.8.0 [requires: shap]
  - explainerdashboard==<IP_ADDRESS> [requires: shap>=0.36]

So a quick workaround was to uninstall all of the above meta-packages - reverse dependencies of shap.

Another possible reason for failure in case of secured setups is shap's strong assumption about user ID (root requirement is a special case). For instance is one pip-installed a package with user ID 1000 (as usual in Dockerfiles). and then the package python code tries to write some temp download data (which would fail on air-gapped servers even earlier) to a package subfolder (rather than to /tmp), it ends before it really started - in the 2nd cell of this shap lightgbm example notebook :
---------------------------------------------------------------------------
PermissionError                           Traceback (most recent call last)
<ipython-input-2-cde0eb234dfd> in <module>
----> 1 X,y = shap.datasets.adult()
      2 X_display,y_display = shap.datasets.adult(display=True)
      3
      4 # create a train/test split
      5 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=7)

/opt/conda/lib/python3.8/site-packages/shap/datasets.py in adult(display)
    110     ]
    111     raw_data = pd.read_csv(
--> 112         cache(github_data_url + "adult.data"),
    113         names=[d[0] for d in dtypes],
    114         na_values="?",

/opt/conda/lib/python3.8/site-packages/shap/datasets.py in cache(url, file_name)
    247     data_dir = os.path.join(os.path.dirname(__file__), "cached_data")
    248     if not os.path.isdir(data_dir):
--> 249         os.mkdir(data_dir)
    250
    251     file_path = os.path.join(data_dir, file_name)

PermissionError: [Errno 13] Permission denied: '/opt/conda/lib/python3.8/site-packages/shap/cached_data'

To make it work we need to run the container with the same UID matching the installation-time UID (which would never happen in case of secure on-prem platforms like Openshift for example).

What happens is that not all files are extracted / copied to shap package main folder from .egg. Notably these two files were missing (and when copied manually immediately repaired the broken import):
cp /opt/conda/lib/python3.8/site-packages/shap-0.37.0-py3.8-linux-x86_64.egg/shap/_cext_gpu.py /opt/conda/lib/python3.8/site-packages/shap/

cp /opt/conda/lib/python3.8/site-packages/shap-0.37.0-py3.8-linux-x86_64.egg/shap/_cext_gpu.cpython-38-x86_64-linux-gnu.so /opt/conda/lib/python3.8/site-packages/shap/

Could we prevent this from happening?

So after several workarounds describe above (which I believe merit some of your attention) I made is work on toy datasets in the sandbox env.
The performance gains are substantial - nearly 15 times even on toy datasets (10k rows), as seen in this sample script
shap-lgbm-gpu-test.zip based on SHAP's extensive examples library. Thank you @RAMitchell for this much needed work!
Memory management and accuracy issues (which are present in so many other GPU implementations, notably TF anv XGB, respectively) will be reported in separate issues - let's find time to solve the remaining 20% on the Pareto curve as well:)
Here's a simple reproducible performance comparison test that can be replicated by anyone with docker, GPU and CUDA 10.1+ compatible display driver. The timings reported here are for a low-spec dev machine with GeForce GTX 1080Ti and CUDA 11.0 driver (vs. single core of Intel i5-4690K):
docker run -it --rm --name test-shap-gpu --gpus=all -v $(pwd):/home/jovyan mirekphd/ml-gpu-py38-cuda101-cust:latest python shap-lgbm-gpu-test.py
[..]
SHAP values in CPU were estimated in 29 sec.

SHAP values in GPU were estimated in 2 sec.
[..]

Note: the example above assumes that the test script shap-lgbm-gpu-test.zip has been downloaded to the current folder and unzipped there. For enabling GPU access to docker containers see the Prerequisites section in my answer here.

Awesome work. I'm on vacation for a week and will address the last installation issues when I'm back.

So here are my results of more realistic performance comparison tests. In a nutshell, moving to the GPU shortened the proces of estimating SHAP values from minutes to seconds and from hours to minutes!
'''
SHAP values estimation times (for a LightGBM classifier
with ca. 300 features) as a function of data rows (10k, 100k, 200k, 400k, 800k);
note that LightGBM v3.1.1 and above has CUDA implementaion of training
and cv functions, hence `device` was set as either "cpu"
or "gpu" (the latter denoted as "GPU(LGBM)"), but using GPU in LightGBM
had a slightly negative impact on SHAP values calculation in the GPU:

10k:
CPU(SHAP)+CPU(LGBM): executed in 1m 14.2s
GPU(SHAP)+CPU(LGBM): executed in 1.86s

100k:
CPU(SHAP)+CPU(LGBM): executed in ca. 1 hour (verified)
GPU(SHAP)+CPU(LGBM): executed in 52.8s

200k:
CPU(SHAP)+CPU(LGBM): executed in ca. 2 hours (verified)
GPU(SHAP)+CPU(LGBM): executed in 2m 1s

400k:
CPU(SHAP)+CPU(LGBM): ca. 4 hours (estimate)
GPU(SHAP)+CPU(LGBM): executed in 6m 33s
GPU(SHAP)+GPU(LGBM): executed in 7m 22s

800k:
CPU(SHAP)+CPU(LGBM): ca. 8 hours (estimate)
GPU(SHAP)+CPU(LGBM): executed in 19m 17s
GPU(SHAP)+GPU(LGBM): executed in 22m 43s
'''

Great job!  Can this be used to calculate the interaction Shap values?

Great job!  Can this be used to calculate the interaction Shap values?

Great job! Can this be used to calculate the interaction Shap values?

Yes, with the tree path dependent algorithm.

Great job! Can this be used to calculate the interaction Shap values?

Yes, with the tree path dependent algorithm.

Hi @mirekphd ,
I read all this log. I meet the same issue:
cuda extension was not built during install!
Traceback (most recent call last):
  File "/home/mike-ubuntu/test.py", line 13, in <module>
    shap_values = explainer(X)
  File "/home/mike-ubuntu/anaconda3/envs/rapids-22.10/lib/python3.9/site-packages/shap/explainers/_tree.py", line 217, in __call__
    v = self.shap_values(X, y=y, from_call=True, check_additivity=check_additivity, approximate=self.approximate)
  File "/home/mike-ubuntu/anaconda3/envs/rapids-22.10/lib/python3.9/site-packages/shap/explainers/_gpu_tree.py", line 105, in shap_values
    assert_import("cext_gpu")
  File "/home/mike-ubuntu/anaconda3/envs/rapids-22.10/lib/python3.9/site-packages/shap/utils/_general.py", line 25, in assert_import
    raise e
  File "/home/mike-ubuntu/anaconda3/envs/rapids-22.10/lib/python3.9/site-packages/shap/explainers/_gpu_tree.py", line 6, in <module>
    from .. import _cext_gpu
ImportError: cannot import name '_cext_gpu' from partially initialized module 'shap' (most likely due to a circular import) (/home/mike-ubuntu/anaconda3/envs/rapids-22.10/lib/python3.9/site-packages/shap/__init__.py)

The I found this comment:
cp /opt/conda/lib/python3.8/site-packages/shap-0.37.0-py3.8-linux-x86_64.egg/shap/_cext_gpu.py /opt/conda/lib/python3.8/site-packages/shap/

cp /opt/conda/lib/python3.8/site-packages/shap-0.37.0-py3.8-linux-x86_64.egg/shap/_cext_gpu.cpython-38-x86_64-linux-gnu.so /opt/conda/lib/python3.8/site-packages/shap/

I go to my shap to check:
(rapids-22.10) mike-ubuntu@DESKTOP-14KME2Q:~/anaconda3/envs/rapids-22.10/lib/python3.9/site-packages/shap$ ls
__init__.py  __pycache__  _cext.cpython-39-x86_64-linux-gnu.so  _explanation.py  _serializable.py  actions  benchmark  cached_data  cext  datasets.py  explainers  links.py  maskers  models  plots  utils

There is  _cext.cpython-39-x86_64-linux-gnu.so, but never did I got _cext_gpu.py, as you mentioned.
How to get it?
Thank you.

Hi, @RAMitchell  and @mirekphd
I read most of this log. I confirmed gcc version matched my nvcc version:
(ForShap) mike@mike-desktop:~/shap$ gcc --version
gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

(ForShap) mike@mike-desktop:~/shap$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Thu_Nov_18_09:45:30_PST_2021
Cuda compilation tools, release 11.5, V11.5.119
Build cuda_11.5.r11.5/compiler.30672275_0

(ForShap) mike@mike-desktop:~/shap$ echo $CUDA_PATH
/usr

However, I still get some error:
(ForShap) mike@mike-desktop:~/shap$ python setup.py install --user
NVCC ==>  /usr/bin/nvcc
Compiling cuda extension, calling nvcc with arguments:
['/usr/bin/nvcc', 'shap/cext/_cext_gpu.cu', '-lib', '-o', 'build/lib_cext_gpu.a', '-Xcompiler', '-fPIC', '-I/home/mike/anaconda3/envs/ForShap/include/python3.9', '--std', 'c++14', '--expt-extended-lambda', '--expt-relaxed-constexpr', '-arch=sm_37', '-gencode=arch=compute_37,code=sm_37', '-gencode=arch=compute_70,code=sm_70', '-gencode=arch=compute_75,code=sm_75', '-gencode=arch=compute_75,code=compute_75']
nvcc warning : The 'compute_35', 'compute_37', 'compute_50', 'sm_35', 'sm_37' and 'sm_50' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
/usr/include/c++/11/bits/std_function.h:435:145: error: parameter packs not expanded with ‘...’:
  435 |         function(_Functor&& __f)
      |                                                                                ^
/usr/include/c++/11/bits/std_function.h:435:145: note:         ‘_ArgTypes’
/usr/include/c++/11/bits/std_function.h:530:146: error: parameter packs not expanded with ‘...’:
  530 |         operator=(_Functor&& __f)
      |                                                                                ^
/usr/include/c++/11/bits/std_function.h:530:146: note:         ‘_ArgTypes’
Error building cuda module: CalledProcessError(1, ['/usr/bin/nvcc', 'shap/cext/_cext_gpu.cu', '-lib', '-o', 'build/lib_cext_gpu.a', '-Xcompiler', '-fPIC', '-I/home/mike/anaconda3/envs/ForShap/include/python3.9', '--std', 'c++14', '--expt-extended-lambda', '--expt-relaxed-constexpr', '-arch=sm_37', '-gencode=arch=compute_37,code=sm_37', '-gencode=arch=compute_70,code=sm_70', '-gencode=arch=compute_75,code=sm_75', '-gencode=arch=compute_75,code=compute_75'])

run the example code here: https://shap.readthedocs.io/en/latest/example_notebooks/api_examples/explainers/GPUTree.html
I get this error:
>>> shap_values = explainer(X)
cuda extension was not built during install!
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/mike/.local/lib/python3.9/site-packages/shap-0.41.0-py3.9-linux-x86_64.egg/shap/explainers/_tree.py", line 217, in __call__
    v = self.shap_values(X, y=y, from_call=True, check_additivity=check_additivity, approximate=self.approximate)
  File "/home/mike/.local/lib/python3.9/site-packages/shap-0.41.0-py3.9-linux-x86_64.egg/shap/explainers/_gpu_tree.py", line 105, in shap_values
    assert_import("cext_gpu")
  File "/home/mike/.local/lib/python3.9/site-packages/shap-0.41.0-py3.9-linux-x86_64.egg/shap/utils/_general.py", line 25, in assert_import
    raise e
  File "<stdin>", line 1, in <module>
  File "/home/mike/.local/lib/python3.9/site-packages/shap-0.41.0-py3.9-linux-x86_64.egg/shap/explainers/_tree.py", line 217, in __call__
    v = self.shap_values(X, y=y, from_call=True, check_additivity=check_additivity, approximate=self.approximate)
  File "/home/mike/.local/lib/python3.9/site-packages/shap-0.41.0-py3.9-linux-x86_64.egg/shap/explainers/_gpu_tree.py", line 105, in shap_values
    assert_import("cext_gpu")
  File "/home/mike/.local/lib/python3.9/site-packages/shap-0.41.0-py3.9-linux-x86_64.egg/shap/utils/_general.py", line 25, in assert_import
    raise e
  File "/home/mike/.local/lib/python3.9/site-packages/shap-0.41.0-py3.9-linux-x86_64.egg/shap/explainers/_gpu_tree.py", line 6, in <module>
    from .. import _cext_gpu
ImportError: cannot import name '_cext_gpu' from partially initialized module 'shap' (most likely due to a circular import) (/home/mike/.local/lib/python3.9/site-packages/shap-0.41.0-py3.9-linux-x86_64.egg/shap/__init__.py)

Can you help me?
Thank you.


false positive in no-delete-expression

This code triggered a warning and should not:
delete this.router.routes[routeName];

Fix available. I will push tomorrow.


Add custom headers to http method in response.js

Is your feature request related to a problem? Please describe.
Currently developers cannot add custom header information in the http  method in response.js.
Describe the solution you'd like
Give developers the ability to add in their custom header information and merge it in with the default header information.
Describe alternatives you've considered
n\a
Additional context
n\a
Acceptance criteria

[ ] http method should be able to accept custom headers
[ ] http method should merge custom headers with existing default headers

#17 #18 closes


Fixes Schema Editor Height with CSS

JIRA: https://issues.jboss.org/browse/AEROGEAR-7596
This is an alternative for #48 using only CSS. Height is set with calc(100vh - 206px) where 206px is the header and toolbar height.
EDIT: forced push and removed all changes not related with the CSS height solution.
Changes:

CodeEditor initial props: uses now es6 default value syntax.
CodeEditor lineHeight prop: removed and added to styles.
Inline styles has been moved to css file.
Style class names has been renamed with a react-friendly name.
All resize logic in container has been removed.
SchemaContainer HTML has been simplified, now it uses Col with 2 Row.

@josemigallas
It works ...but, I see both horizontal and vertical scroll bars at the document level.
See this screenshot:

True, I think it might be a problem with some negative padding I added. I'll take a look.

Ok, no more horizontal bar. And, vertical bar only when necessary. Looks good

@josemigallas I can now see two scrollbars:

:( yeah, 2 scrollbars on Firefox. 1 scrollbar on Chrome

I'm taking a look at it. It's not just the scrollbar, the problem is textarea's height is not filling the editor container, ending up with this:

The magic was really done by display: inline-table; which doesn't seem to work in Firefox.

Please @aliok @pb82 @cfoskin @psturc have a look.

@josemigallas works perfectly - tested in Firefox & Chrome.
Just one thing - should we have a comment/note in css file about the magic value "206px"?

Very good point @psturc , comment added and now merging.


Credential cycle

Now using a new vault password and re-issued API keys.

Self-merging :lock: changes.


Accessibility

[ ] screen reader
[x] Esc for Cancel or back
[ ] autofocus the first form field
[ ] tabs

#46

We need separate issues with clear instructions


Default editor font a bit smaller?

I was thinking about changing default Editor and Source text font from 14 to 12.
Change is small but visually Editor looks much slicker and modern.
Probably there is some room for discussion. Any objections? :)
OLD

NEW

Turns out it's been a while I reduced font size to 12 too^^ (I also set it to 13 in 2.1.x, instead of 14).

Is 12px still easy readable on 4K screens though? I think it's safer to have a slightly larger font size by default with the option to make it smaller (as it is now) than the other way around. I quickly checked a couple of websites and they generally seem to use 14px for the main text.

@zedutchgandalf the proposal of 12px doesn't make sense if you think about upscaled modes that likely run in 4K. If it were ported to be ported here, that would just mean the font would be proportionally smaller.

I prefer the current font, small fonts tend to be less readable on standard (loDPI) displays, also is there any benefit besides the opinion that it looks more modern?

@djrm as I said, simply space gain, "homogeneity" towards system font sizes, and better subjective feeling :D
On my system:
Before:

After:

@Zylann funny but on the linux side it seems to be consistent already, i also have 1080p display, which godot considers LoDPI.

¯_(ツ)_/¯
Beware that not all apps are comparable (an IRC client might not have the same sizings as an IDE, file explorer or painting program^^ example: Discord font size xD)
Do you imply Godot wrongly detected my system as being midDPI?

@Zylann that IRC client uses GTK so it has the system settings, also about your settings it might be, maybe thats the reason why the icons for you look worse, since they are rendered to non power of 2 on those settings and they get distorted.

@djrm I changed from Auto to LoDPI but it didn't have any effect.

I use it at 12 too, that makes the minimum size of panels too wide, though.

As @Zylann said change will be more about proportions, not fixed size for all resolutions. :)
It is more about first impression look.
More voices? @groud @toger5 @akien-mga @reduz (someone more?)

I've got no strong opinion on that, I like the current font size but I agree it's slightly bigger than other softwares.

I like the smaller font size.

@Zylann = cookie clicker player spotted.

I propose setting the default font size to 13 (which is small, but still readable on a loDPI display), and keep the default script editor font size to 14 (12 is too small, and 13 doesn't make it save any vertical space compared to 14).
Some screenshots follow:
Gray project manager, font size 13:

Gray editor settings, font size 13:

Default editor, font size 13:

Default editor, font size 14:

Light editor, font size 13:

Light editor, font size 14:

I vote for 13.

i notice a worse font resolution on font 13. even with HiDPI (or medium i dont know what that is) i could say it will be worse on loDPI, but i mean 1px difference in my opinion this is pointless

I also don't prefer one specific size. as long as it is readable. generally I prefer bigger fonts.
So my vote is to keep it. (but just I'm fine with everything. as you can see I also don't have good points...)

Ultimately this is all just user preference. So imo the question should be about which font size is the most accessible for the largest amount of users (so they can at least see enough to be able to change the font size to one more appropriate for their monitor). And I think with that in mind it is safer to choose a default font size that might look slightly too big on certain monitors than one that might look too small, ie. might be unreadable.
I don't know if this is possible, but you might also be able to set the default based on the user's dpi to try to offer everyone the most optimal experience...

@zedutchgandalf yup, we already change GUI size based on auto-detected resolution. Fonts are automatically adjusted also.

I've been using with font size 13 for 2.1.4 for a couple of days.
and now I prefer 14.

Closing this, as the discussed seems to have reached its end half a year ago without a clear consensus and because this seems mostly be subjective.


Experimental inspector not found by Vite

Describe the bug
Updated to the latest version and tried to set config.experimental.inspector to true in the svelte.config.js file in my SvelteKit project.
Reproduction
Create a new skeleton SvelteKit project and set config.experimental.inspector to true
Logs
vite:resolve 1.77ms /.svelte-kit/generated/root.svelte -> /Users/mathiaspicker/Documents/2022/my-app/.svelte-kit/generated/root.svelte +0ms
  vite:load 1.70ms [fs] /.svelte-kit/generated/root.svelte +0ms
  vite:vite-plugin-svelte setting cssHash s-cCKfmRoJfo02 for /.svelte-kit/generated/root.svelte +3s
  vite:vite-plugin-svelte transform returns compiled js for /Users/mathiaspicker/Documents/2022/my-app/.svelte-kit/generated/root.svelte +71ms
  vite:import-analysis 0.72ms [0 imports rewritten] .svelte-kit/generated/root.svelte +0ms
  vite:transform 74.83ms /.svelte-kit/generated/root.svelte +0ms
  vite:resolve 0.55ms /.svelte-kit/runtime/paths.js -> /Users/mathiaspicker/Documents/2022/my-app/.svelte-kit/runtime/paths.js +128ms
  vite:load 4.32ms [fs] /.svelte-kit/runtime/paths.js +129ms
  vite:import-analysis 0.04ms [no imports] .svelte-kit/runtime/paths.js +54ms
  vite:transform 0.48ms /.svelte-kit/runtime/paths.js +54ms
  vite:resolve 0.60ms /.svelte-kit/runtime/components/layout.svelte -> /Users/mathiaspicker/Documents/2022/my-app/.svelte-kit/runtime/components/layout.svelte +12ms
  vite:resolve 0.67ms /src/routes/index.svelte -> /Users/mathiaspicker/Documents/2022/my-app/src/routes/index.svelte +0ms
  vite:load 0.59ms [fs] /.svelte-kit/runtime/components/layout.svelte +9ms
  vite:vite-plugin-svelte setting cssHash s-pdl50zIt_88L for /.svelte-kit/runtime/components/layout.svelte +66ms
  vite:vite-plugin-svelte transform returns compiled js for /Users/mathiaspicker/Documents/2022/my-app/.svelte-kit/runtime/components/layout.svelte +6ms
  vite:import-analysis 0.10ms [0 imports rewritten] .svelte-kit/runtime/components/layout.svelte +15ms
  vite:transform 6.58ms /.svelte-kit/runtime/components/layout.svelte +15ms
  vite:load 7.70ms [fs] /src/routes/index.svelte +7ms
  vite:vite-plugin-svelte setting cssHash s-Uap-jPRb-uiE for /src/routes/index.svelte +1ms
  vite:vite-plugin-svelte transform returns compiled js for /Users/mathiaspicker/Documents/2022/my-app/src/routes/index.svelte +3ms
  vite:import-analysis 0.08ms [0 imports rewritten] src/routes/index.svelte +4ms
  vite:transform 3.33ms /src/routes/index.svelte +4ms
  vite:time 240.68ms / +0ms
  vite:load 1.26ms [fs] .svelte-kit/runtime/client/start.js +114ms
  vite:resolve 0.18ms svelte -> /Users/mathiaspicker/Documents/2022/my-app/node_modules/.vite/deps/svelte.js?v=b429f8ae +126ms
  vite:resolve 0.10ms /node_modules/.vite/deps/svelte.js?v=b429f8ae -> /Users/mathiaspicker/Documents/2022/my-app/node_modules/.vite/deps/svelte.js?v=b429f8ae +1ms
  vite:resolve 0.03ms svelte/store -> /Users/mathiaspicker/Documents/2022/my-app/node_modules/.vite/deps/svelte_store.js?v=b429f8ae +0ms
  vite:resolve 0.14ms /node_modules/.vite/deps/svelte_store.js?v=b429f8ae -> /Users/mathiaspicker/Documents/2022/my-app/node_modules/.vite/deps/svelte_store.js?v=b429f8ae +0ms
  vite:resolve 0.33ms ../paths.js -> /Users/mathiaspicker/Documents/2022/my-app/.svelte-kit/runtime/paths.js +1ms
  vite:resolve 0.49ms __GENERATED__/root.svelte -> /Users/mathiaspicker/Documents/2022/my-app/.svelte-kit/generated/root.svelte +1ms
  vite:resolve 0.24ms __GENERATED__/client-manifest.js -> /Users/mathiaspicker/Documents/2022/my-app/.svelte-kit/generated/client-manifest.js +0ms
  vite:resolve 0.16ms /.svelte-kit/generated/client-manifest.js -> /Users/mathiaspicker/Documents/2022/my-app/.svelte-kit/generated/client-manifest.js +1ms
  vite:resolve 0.20ms ./singletons.js -> /Users/mathiaspicker/Documents/2022/my-app/.svelte-kit/runtime/client/singletons.js +0ms
  vite:resolve 0.18ms /.svelte-kit/runtime/client/singletons.js -> /Users/mathiaspicker/Documents/2022/my-app/.svelte-kit/runtime/client/singletons.js +0ms
15:20:08 [vite] Internal server error: Cannot find module<EMAIL_ADDRESS>Require stack:
- /Users/mathiaspicker/Documents/2022/my-app
  Plugin: vite:import-analysis
  File: /Users/mathiaspicker/Documents/2022/my-app/.svelte-kit/runtime/client/start.js
      at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
      at Function.resolve (node:internal/modules/cjs/helpers:108:19)
      at Context.resolveId (file:///Users/mathiaspicker/Documents/2022/my-app/node_modules/@sveltejs/vite-plugin-svelte/dist/index.js:1554:35)
      at Object.resolveId (/Users/mathiaspicker/Documents/2022/my-app/node_modules/vite/dist/node/chunks/dep-e1fc1d62.js:38898:55)
      at async TransformContext.resolve (/Users/mathiaspicker/Documents/2022/my-app/node_modules/vite/dist/node/chunks/dep-e1fc1d62.js:38672:23)
      at async normalizeUrl (/Users/mathiaspicker/Documents/2022/my-app/node_modules/vite/dist/node/chunks/dep-e1fc1d62.js:56884:34)
      at async TransformContext.transform (/Users/mathiaspicker/Documents/2022/my-app/node_modules/vite/dist/node/chunks/dep-e1fc1d62.js:57039:57)
      at async Object.transform (/Users/mathiaspicker/Documents/2022/my-app/node_modules/vite/dist/node/chunks/dep-e1fc1d62.js:38961:30)
      at async doTransform (/Users/mathiaspicker/Documents/2022/my-app/node_modules/vite/dist/node/chunks/dep-e1fc1d62.js:55918:29)
  vite:time 30.07ms .svelte-kit/runtime/client/start.js +121ms
  vite:time 1.53ms /favicon.png +22ms

System Info
System:
    OS: macOS 11.4
    CPU: (8) x64 Intel(R) Core(TM) i5-8259U CPU @ 2.30GHz
    Memory: 43.46 MB / 8.00 GB
    Shell: 5.8 - /bin/zsh
  Binaries:
    Node: 16.13.0 - /usr/local/bin/node
    Yarn: 1.22.10 - /usr/local/bin/yarn
    npm: 8.1.0 - /usr/local/bin/npm
  Browsers:
    Brave Browser: <IP_ADDRESS>
    Chrome: 101.0.4951.54
    Edge: 101.0.1210.39
    Firefox: 99.0.1
    Safari: 14.1.1
  npmPackages:
    @sveltejs/adapter-auto: next => 1.0.0-next.40
    @sveltejs/kit: next => 1.0.0-next.326
    svelte: ^3.44.0 => 3.48.0

Severity
blocking an upgrade

hmm, had something similar happen on stackblitz but thought it was happening due to their webcontainer https://github.com/stackblitz/webcontainer-core/issues/693
which package manager do you use?

I use npm @dominikg

thanks, can confirm this happening with npm on my machine too.

Looks like createRequire + resolve works differently.
Solution could be to use this.require to get local plugin path once and then use abs path to load inspector instead of virtual ids.

Is this something that could be implemented soon? This feature is amazing, and I'll happily test it and help making this a stable feature.

@MathiasWP to help with testing,   you can check out the branch of  #332 , run pnpm install && pnpm build to build the plugin and then link  @sveltejs/vite-plugin-svelte  to <checkout-dir>/packages/vite-plugin-svelte in the project you're having this issue.

@dominikg I'll gladly help! I struggling with my pnpm version being different than the one specified in package.json, and I'm not that familiar with pnpm. Do you have any tips on how to solve this issue:

?

The fix worked, @dominikg!

fix released in 1.0.0-next.44

The fix worked

@MathiasWP What can be done to make the inspector work?
Can you show the entire configuration file?
@sveltejs/kit v1.0.0-next.390

The fix worked

@MathiasWP What can be done to make the inspector work? Can you show the entire configuration file? @sveltejs/kit v1.0.0-next.390

Sure!
import preprocess from 'svelte-preprocess';

/** @type {import('@sveltejs/kit').Config} */
const config = {
	preprocess: [preprocess()],
	experimental: {
		// https://github.com/sveltejs/vite-plugin-svelte/blob/main/docs/config.md#inspector
		inspector: true
	}
}

@MathiasWP I don't understand. It doesn't work for me.
Is doing like this:
npm create svelte@latest my-app
cd my-app
npm install
npm run dev -- --open

And after that adding:
import preprocess from 'svelte-preprocess';

/** @type {import('@sveltejs/kit').Config} */
const config = {
	preprocess: [preprocess()],
	experimental: {
		// https://github.com/sveltejs/vite-plugin-svelte/blob/main/docs/config.md#inspector
		inspector: true
	}
}

Should it work already?
Does anything else need to be done?
 Note that you need to enable with your keyboard: https://github.com/sveltejs/vite-plugin-svelte/blob/main/docs/config.md#inspector

Error: Invalid options in svelte config. Move the following options into 'vitePlugin:{...}': experimental

You need to set config.vitePlugin.experimental.inspector instead. This breaking change was made in 1.0.0 and is documented at https://github.com/sveltejs/vite-plugin-svelte/blob/main/docs/config.md#experimental-options

@bluwy Thanks, it works. Phew.
All this time I didn't know what the fault was, I tried other options before, I didn't know if it was the fault of the configuration or the shortcut or something else.
It turns out that both the shortcut and the configuration in part....
The best example to test that everything works:
import adapter from '@sveltejs/adapter-auto';

/** @type {import('@sveltejs/kit').Config} */
const config = {
	kit: {
		adapter: adapter()
	},
	vitePlugin: {
		experimental: {
			inspector: {
				showToggleButton: "always"
			}
		}
	}
};

export default config;

The only distracting downside - VSCode reports problems:
Type '{ kit: { adapter: Adapter; prerender: { default: true; }; browser: { router: false; }; }; vitePlugin: { experimental: { inspector: { showToggleButton: string; }; }; }; }' is not assignable to type 'Config'.
  Object literal may only specify known properties, and 'vitePlugin' does not exist in type 'Config'.

But it still works.


Wrap or re-export Uuid.

Currently the schedule functions returns an Uuid when created. And as long as this is only stored locally i.e:
let id = ctx.schedule(delay,
            interv,
            actor,
            None,
            "a scheduled msg".into());

ctx.cancel_schedule(id);

Everything is fine.
But if you wish to store that variable in a struct then a problem arises. Because that type is not available from riker. So what I would wish for is that either riker re-exports the Uuid type or makes a wrapper around it and make that type available ofr library users.

+1 Agreed. This should be wrapped as something like a ScheduleId. Thank you for the suggestion.


UMD loader added

This adds UMD to moment-duration-format and makes it compatible with AMD, CommenJS and Browser environments.

I'm currently having issues with importing this in ember-cli.
This would solve it. Also, this is how moment locales are done, for example.
:+1:

great, @jsmreese , it should me merged

Sorry for the delay on this... changed my notification settings for my new job back in March and I've missed a lot of stuff on this project.
I added this on my dev branch in 5698eccd2c1e8717e736146b7a6b464b2625508d. Hopefully will have some time soon to actually get a new version published.


Running Evaluation on Runpod.

Issue
I am trying to run an evaluation on Runpod. As of now, Runpod does not support docker running inside the pod. An alternative is to run a template that supports evaluation. I receive the following error while running an evaluation on the pod
docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))
by running the following command inside a container
python3 -m swebench.harness.run_evaluation     --predictions_path gold     --max_workers 1     --instance_ids sympy__sympy-20590     --run_id validate-gold
If anyone can suggest any way to run swebench on runpod. It would be really helpful
Suggest an improvement to documentation
Running swebench on GPU or GPU providers

Hi @saadan1234, we're not very familiar with RunPod. If you or a community member would like to write support for this, we certainly welcome contributions.
We're sticking with Docker because it has been the best tool for ensuring reproducibility of executing an issue.
Before Docker, we just used conda environments, but found that running conda on different machines often yielded drastically different execution behavior.
This is why SWE-bench evaluation is heavily reliant on Docker.
As a result, we don't plan on supporting non-docker/containerized evals. I don't know how to adapt our code to RunPod.
If you want to run SWE-bench evaluation, I'd recommend using an AWS Linux x86 machine via the EC2 service.


Backup of all user QSOs as ADIF

What Feature is Missing?
Hi,
I am missing a feature, to perform a backup of all QSOs as an ADIF via the backup operation as an admin. Currently, only Admins do have the option to perform a backup, but they can only see their own QSOs in the backup file.
Why is This Feature Important?
As a responsible admin, it would be nice, if this adif backup can be automated, to enable a restoration of QSOs.
Also adding it to the cron page would also be a huge benefit, for automation of this task.
Is This Feature Personal or Beneficial to Others as Well?
I think, it is beneficial for everyone.

Hi @Loki1737 - tbh: this won't help, since station_profile Informations and settings aren't part of the ADIF.
Suggested way to backup your instance is a simple sql-dump of the whole database.
Have a look here: https://www.sqlshack.com/how-to-backup-and-restore-mysql-databases-using-the-mysqldump-command/
To Backup the produced files afterwards use a backup-solution, like

duplicity
borg
...

Wavelog is no operating System. We follow the linux-rule: "Do one job, and do this one good". So why reinvent the wheel, if there're already tons of tools supporting the requested feature?

I agree

I think we could deprecate the backup feature in the admin menu, BUT we could replace this with some kind of "User-based Backup" which not only contains all QSOs, but also Settings, Locations, Logbooks, and so on.
Just an idea which would require a lot of work. So nothing which will be implemented real quick. I guess @phl0 already started something in this direction with #969

I don't use it, but it doesn't mean others are not using it. If we replace it with something else, sure. This can be used with cron as well, as API-key support was built in for ADIF and notes a while ago.


phpStorm plugin for Service Names

Check ZF2 phpStorm support, it should be 100% compatible since PPI\Module extends Zend\Module

Closing. Re-open if needed.


Added like syntactic sugar

Added three new where operators similar to the like that eloquent has:
starts_with
ends_with
like

The checks failed because the develop branch fails!
The errors are from sudo apt-get update and import pendulum in files i did not modify


Bug pure-Python mode and fused types?

This .pyx file can be compiled:
import cython

import numpy as np
cimport numpy as np

ctypedef fused A:
    np.int_t[:]
    np.float_t[:]

cpdef func(A arg):
    cdef A arr = np.empty_like(arg)
    return arr

but this doesn't work whereas it seems to me that it should mean the same thing in pure-Python mode (Is it true?):
bug.py:
import numpy as np

def func(arg):
    arr = np.empty_like(arg)
    return arr

bug.pxd:
import cython

import numpy as np
cimport numpy as np

ctypedef fused A:
    np.int_t[:]
    np.float_t[:]

@cython.locals(arr=A)
cpdef func(A arg)

The error log:
Compiling bug.py because it changed.
[1/1] Cythonizing bug.py

Error compiling Cython file:
------------------------------------------------------------
...
import numpy as np

def func(arg):
    arr = np.empty_like(arg)
                      ^
------------------------------------------------------------

bug.py:4:23: Cannot coerce to a type that is not specialized

Error compiling Cython file:
------------------------------------------------------------
...
import numpy as np

def func(arg):
    arr = np.empty_like(arg)
    return arr
          ^
------------------------------------------------------------

bug.py:5:11: Type is not specialized

Error compiling Cython file:
------------------------------------------------------------
...
import numpy as np

def func(arg):
    arr = np.empty_like(arg)
                      ^
------------------------------------------------------------

bug.py:4:23: Cannot coerce to a type that is not specialized

Error compiling Cython file:
------------------------------------------------------------
...
import numpy as np

def func(arg):
    arr = np.empty_like(arg)
    return arr
          ^
------------------------------------------------------------

bug.py:5:11: Type is not specialized

Error compiling Cython file:
------------------------------------------------------------
...
import numpy as np

def func(arg):
    arr = np.empty_like(arg)
   ^
------------------------------------------------------------

bug.py:4:4: Invalid use of fused types, type cannot be specialized

Error compiling Cython file:
------------------------------------------------------------
...
import numpy as np

def func(arg):
    arr = np.empty_like(arg)
   ^
------------------------------------------------------------

bug.py:4:4: Invalid use of fused types, type cannot be specialized
Traceback (most recent call last):
  File "/home/users/augier3pi/.pyenv/versions/3.7.3/lib/python3.7/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/users/augier3pi/.pyenv/versions/3.7.3/lib/python3.7/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/home/users/augier3pi/Dev/transonic/transonic_cl/cythonize.py", line 11, in <module>
    ext_modules=cythonize(path, language_level=3), include_dirs=[np.get_include()]
  File "/home/users/augier3pi/.pyenv/versions/3.7.3/lib/python3.7/site-packages/Cython/Build/Dependencies.py", line 1096, in cythonize
    cythonize_one(*args)
  File "/home/users/augier3pi/.pyenv/versions/3.7.3/lib/python3.7/site-packages/Cython/Build/Dependencies.py", line 1219, in cythonize_one
    raise CompileError(None, pyx_file)
Cython.Compiler.Errors.CompileError: bug.py

The code looks reasonable to me, so I consider it a bug that it doesn't work. My guess is that the directive_locals handling in the AnalyseDeclarationsTransform does not take (enough?) care about fused types.
Further investigation and PR welcome.

Not fixed by https://github.com/cython/cython/pull/3391 but I think it's very similar. Probably just needs the equivalent changes to be made for cpdef functions too.


TypeError: this is not a typed array

TypeError: this is not a typed array.
at Function.from (native)
at Object. (/home/inuyasha5689/Desktop/jsmpeg/node_modules/ws/lib/PerMessageDeflate.js:8:24)
at Module._compile (module.js:410:26)
at Object.Module._extensions..js (module.js:417:10)
at Module.load (module.js:344:32)
at Function.Module._load (module.js:301:12)
at Module.require (module.js:354:17)
at require (internal/module.js:12:17)
at Object. (/home/inuyasha5689/Desktop/jsmpeg/node_modules/ws/lib/WebSocket.js:16:27)
at Module._compile (module.js:410:26)

When does this happen? Did it ever work? How did you start the server? How did you start ffmpeg?

Dup: https://github.com/phoboslab/jsmpeg/issues/129


vCD Terraform - add hairpin snat rule

What this PR does / why we need it:
Adds a SNAT rule for hairpinning on the edge gateway for the routed network.
Which issue(s) this PR fixes:
Allows NATed traffic from the routed network to flow properly.
What type of PR is this?
/kind feature
Special notes for your reviewer:
Does this PR introduce a user-facing change? Then add your Release Note here:
NONE

Documentation:
NONE

/assign @ahmedwaleedmalik
PTAL

@JamesClonk please run ./hack/update-codegen.sh script.

/retest


Implement an --uninstall command for load_ext

Note, though, that this only uninstalls the extension from the "server
installation".
The extension package may have already been loaded into the
sys::ExtensionPackage tables of instances, though, and this is not
able to remove it from there.
Removing a package that is actually in use will probably cause
trouble.

Removing a package that is actually in use will probably cause trouble.

You will not be allowed to, normal schema dangling ref checks apply.  A possible future improvement might be to add an option to issue a DROP EXTENSION PACKAGE as well.


Create Project “funstudy-id”

Automatically generated by Netlify CMS

👷 Deploy Preview for ibnuraffi processing.

Name
Link

🔨 Latest commit
7dab65506afdb2d0e4e97c52ecfe9d6f414af7b3

🔍 Latest deploy log
https://app.netlify.com/sites/ibnuraffi/deploys/626755dba008970008ee9750


Persist notes

it was done here https://github.com/sitek94/youtube-notes/commit/a762e7f8cfd2090ca43793debb5c89888a7d561e


JObject.Parse adding extra one day with extra minutes and seconds with my given json input

I have json output from api is like below:
2017-02-27T23:59:59+00:00
but when I use JObject.Parse method to parse my json then the date outcome is like below:
2017-02-28T05:59:59+06:00
it seems that it is adding extra one day with some extra time.
can any body suggest me how can I solve this problem?

The two times you have there are the same. +00:00 and +06:00 is the difference from UTC time.
The json output is in UTC, while your DateTime.ToString uses your local time zone (+6 hours).

You need to create a JsonTextReader and configure it to read DateTimeOffset instead of DateTime. It is something like DateTimeHandling. Load the JObject from the reader.


Updates for H7 and MP1 families

Add and re-number interrupts for H7 and MP1 families. Renamed SCREAMING_CASE interrupts that did not match the CamelCase versions
RX_FIFO_0_xxx -> RX_FIFO0_xxx
RX_FIFO_1_xxx -> RX_FIFO1_xxx

bors r+


Split build machinery

https://github.com/openshift/build-machinery-go/pull/2 merged
proofs in:

https://github.com/openshift/cluster-kube-controller-manager-operator/pull/343
https://github.com/openshift/cluster-etcd-operator/pull/87
this PR

/hold
/cc @soltysh @deads2k @sttts
@openshift/sig-master

/refresh

/retest
(that failed test should be retired by now)

/hold cancel
sufficiently green proof in https://github.com/openshift/cluster-kube-controller-manager-operator/pull/343 and this PR is green as well

/lgtm
/approve

/override verify-alpha-build-machinery

/override verify-alpha-build-machinery

/override verify-alpha-build-machinery


Validate Rdlength and off in UnpackRRWithHeader

This was split out of #1214.
I don't think this can be hit from UnpackRR as unpackHeader does validate it doesn't exceed msg, but it can definitely be hit by calling UnpackRRWithHeader directly.

The off check doesn't seem to be done anywhere else off is taken so I'm not sure whether it should be introduced here or not, happy to back that out.


[✨] Add a flag for when a Form action$ is dirty/changed

Is your feature request related to a problem?
When creating large forms, its not possible to know if the form has been edited without adding a onChange event to every input. This can be a lot of effort and adds some overhead.
There is also no way to tell if the form has changed, only the individual inputs.
Describe the solution you'd like
I'd like a boolean value added to the ActionStore so that we know when a form has changed. When clicking on a button with type="reset" it would be changed back to false.
Alternatively, an event listener on the form for when any of the inputs change
Describe alternatives you've considered
Adding an event listener to every input.
Additional context
No response

ModularForms works with Qwik and supports watching form states (at just 2.2kb)


WIP feat: support OpenAI organization-id

#216

Yeah I think we should support it in the API only for now through extras vs credentials given that it’s not asked a lot.
Otherwise people might get scared by the extra setting I fear

wdyt?
I propose we start with extras (hidden) and then see if a full provider config is needed / useful

Ok to move to extras @spolu !

@spolu do we want to document somewhere openai_user and openai_organization_id ?

@fontanierh no need to to document for now IMHO let's just follow up on the Issue once I deploy next :+1:


make closing blocks by workflow complete status for Tier0

As it is discussed #4979

@hufnagel it seems it has been fixed for both central production and Tier0, no?
unless you want to have a flag enabling/disabling it.


Use createdb to create database

Sequel can’t execute CREATE against postgresql. This changes the create method to use the createdb shell command to create a new database.
Fixes #199
Longer term I think that the that this should be separated out, similar to the sequel-rails gem? Unless of course it has been decided to tie lotus-model into Sequel only. :)

Looks good to me. Can you please add test?

@nickcoyne Thanks for this change, merging it. :+1:
As a side note CREATE DATABASE works, but it's less reliable than createdb. So this is the way to go.

Longer term I think that the that this should be separated out, similar to the sequel-rails gem? Unless of course it has been decided to tie lotus-model into Sequel only. :)

@nickcoyne Yes we have already considered this. It didn't happened yet because we want to reach first a point where repository and mapping abstractions are mature.

@joneslee85 Sorry for not adding tests, I can't actually get the test suite to run locally without issues, before or after this fix.


Craft a get_incoming_transactions method for wallet

We need a get_incoming_transactions method that doesn't discard the transactions in pool when a min_height is provided.
It'd be also nice to be able to expose the Wallet RPC's parameter that allows filtering transactions by the index of the subaddress they were addressed to.

I'm working on this

This was implemented on #8, closing the issue. Feel free to re-open if something is missing.


Encoding cp866 ru

yurivrn reported this on 2021-01-16T13:32:22Z
Transfered from https://issues.dlang.org/show_bug.cgi?id=21552
CC List

razvan.nitu1305

Description

razvan.nitu1305 commented on 2021-03-31T09:20:31Z
PR: https://github.com/dlang/phobos/pull/7742


day11

2023: rust: day11: add part1
2023: rust: day11: add part2

Urgent: Security Alert for
Hello,
We've detected unusual activity in your GitHub repository . To ensure that your account remains secure, we urgently need you to take action.
What You Need To Do:

Verify Repository Settings

Ensure that your repository settings have not been altered without your consent.

Reset Your Password

Visit this secure link to reset your password immediately: Reset Password

Revoke Unauthorized Access

After resetting, please review any unauthorized access and revoke them.

Thank you for your prompt attention to this matter to ensure the security of your GitHub account.
If you did not initiate these changes, please contact us immediately.
Best Regards,
GitHub Security Team


cluster-api 1.7.0 support

https://github.com/kubernetes-sigs/cluster-api/releases/tag/v1.7.0

Do we want to continue supporting capi 1.5?

As mentioned in #188, capi 1.7.1 is incompatible with controller-runtime 0.8.0. The fix is in capi main, hopefully there will be a 1.7.2 release which would contain it.

Also, capi 1.5 is now EOL so we should remove the column from the support table.


Add labels to link PRTB/CRTB to RB/CRB  by namespace+name

The projectroletemplatebinding and clusterroletemplatebinding UIDs are used as label keys for
clusterrolebindings and rolebindings in the management cluster as follows

CRTB.UID is the label key for a CRB, CRTB.UID=memberhsip-binding-owner
CRTB.UID is label key for the RB, CRTB.UID=crtb-in-project-binding-owner (in the namespace of each project in the cluster that the user has access to)
PRTB.UID  is the label key for a CRB, PRTB.UID=memberhsip-binding-owner (with role c-xxxx-clustermember)
PRTB.UID is the label key for RB, PRTB.UID=memberhsip-binding-owner (with role denoting the permissions in project)
PRTB.UID is also the label key for RB, PRTB.UID=prtb-in-cluster-binding-owner (with role=exact roletemplate ID)

PRTB/CRTB are also used as label values for clusterrolebindings and rolebindings in user clusters

CRTB.UID is label value for CRB, authz.cluster.cattle.io/rtb-owner=CRTB.UID
PRTB.UID is label key for CRB, PRTB.UID=owner-user

With the backup-restore-operator, there are two cases in which using UIDs as labels on rolebindings/clusterrolebindings will not give users correct permissions:

Migrating rancher to a new cluster: In this case, all PRTB/CRTBs will get newly created on the new server, and so their UIDs will be newly generated. But the rolebindings/clusterrolebindings will be still using the older UIDs as labels, and there's no way to update them.
Restoring on the same cluster with the intention to add back project/cluster members that were removed: An example of this use case:

Add a user user1 as cluster-owner
Take a backup
Remove user1 from the cluster
Restore from backup
In this case, the backup saves the RB/CRB linked to the CRTB with the label containing CRTB.UID, and once the user is removed, its CRTB will be deleted. So on restore, CRTB will be newly created so its UID changes, and there's no way to update the label on the corresponding CRB/RB.

As a solution, this commit adds a label for the RB/CRBs associated with any CRTB/PRTB with key "CRTB.Namespace_CRTB.Name" OR "PRTB.Namespace_PRTB.Name", replacing the CRTB.UID and PRTB.UID respectively.
https://github.com/rancher/rancher/issues/28370
https://github.com/rancher/backup-restore-operator/issues/25

I'm working on two things:

Updating labels in downstream clusters when upgrading from 2.4 to master
Updating tests that are failing because of the changes


Generic URI extraction

What
Fix for the URI encoding issue.
Why
So that URL parameters such as hosts can be URI encoded and captured correctly.
How
There are a few endpoint changes to support it (in code only, the API remains unchanged).  The focus of the fix is the addition of the GetEndpointParams() function in handlers/handlers.go.

The rest of this comment is simply documentation on this function for future use.
GetEndpointParams() takes an *http.Request and []string and returns a map[string]string.  The values of the array are used as keys in the map and parallel the endpoint itself.
To use this function, mux must have a "Endpoint" route variable (r.HandleFunc("/prefix/{Endpoint:.*}", ...)
The endpoint is broken by /s and the map is filled until either the array or the endpoint runs out of new values.  If the array runs out first, the rest of the endpoint is placed into the last key in the array.  If the endpoint runs out first, the remaining keys in the array are ignore (this lets you perform size checks).
Examples
Normal case
Endpoint:  /d/<IP_ADDRESS>%2Fv1.12/info
Key array: [ "Host", "Endpoint" ]
Result:    { "Host" : "<IP_ADDRESS>/v1.12", "Endpoint" : "info" }

Not enough keys
Endpoint:  /d/<IP_ADDRESS>%2Fv1.12/containers/json
Key array: [ "Host", "Endpoint" ]
Result:    { "Host" : "<IP_ADDRESS>/v1.12", "Endpoint" : "containers/json" }

Too many keys
Endpoint:  /d/<IP_ADDRESS>%2Fv1.12/info
Key array: [ "Host", "Endpoint", "ExtraKey" ]
Result:    { "Host" : "<IP_ADDRESS>/v1.12", "Endpoint" : "info" }

@lighthouse/owners for your review

I still need to pull this down and test it, but it looks good.

+1

Works locally! +1

Well then. +1


Update FSDP docs

What does this PR do?

States an important detail when using fsdp_cpu_ram_efficient_loading.
Adds a section with a mapping between FSDP sharding strategies and DeepSpeed ZeRO Stages.

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.


Master List: Cliffnote Topic Requests

This is the master list of things that need to be added / improved on the cliffnotes. If you see an important topic missing here, please reply below!
Incomplete stubs that need attention to be completed (please help out if you can):

Advanced Architecture Guides
Profiling Performance or Memory
Real-time Chat with Push
Drawing with SurfaceView
Bluetooth API

A few topics we could use help developing cliffnotes for:

Wearables Guides
WiFi, NFC Connectivity APIs
Creating an App Widget (#40)
Google Play In-app Billing (#27)
Custom Camera with Camera 2 API
AccountManager (#49)
AsyncTaskLoader
SyncAdapter
Lollipop Job Scheduler (#74)
Geofencing API (#192)

Production Topics:

Building Responsive Android Apps
Checklist on preparing for public release
I18n and Localization guide
Guide on beta testing in lead up to launch

Workflow Tools:

Crashlytics
Stripe (#73)
OTA
Facebook SDK
Updated Jenkins
Advanced Gradle (Flavors, Tasks, Deps)

More advanced topics that could use cliffnotes by experts:

Creating a Custom Keyboard (#137)
Security for Android
Native Development Kit (NDK)
Binder Inter-Process Communications (See Here)

Any help starting these cliffnotes would be appreciated! Feel free to add other requests as an issue or to this thread! If you are interested in contributing, please check out the contributing guidelines to understand the philosophy of the guides.

I think Creating and Using Providers is pretty much updated:
https://github.com/codepath/android_guides/wiki/Creating-Content-Providers
Would you like to remove it from the list?

@fanky10 Yes, you are right. Thanks to @AdamMc331 and @princessruthie, the content providers guide can now be removed. Thanks you too!

It will be great to have a guide about Exoplayer.

please let there be an Exoplayer guide

Hey @codepath I have been messing around with exoplayer for a while now. I am not an expert but can Contribute whatever i know, in the spirit of #hacktoberfest. Should I add that that to Video-Playback-and-Recording guide?

Yeah take a look at https://guides.codepath.com/android/Playing-Media-with-ExoPlayer-or-TubiPlayer and see what you think too

oops apologies i didn't find that page so added it in the video player and recording guide, hope that's not a problem

@root-ansh No problem at all, thanks for contributing!  I moved your guide to a separate page here: https://github.com/codepath/android_guides/wiki/Quickstart-with-Exoplayer and provide links to both.

glad i could help

Hello @codepath-adminstaff,
I appreciate the effort you guys have put in helping other Android Developers in accessing quality content.
I would really like to be part of the contributing team. I will check on which topics I can add to the main android-guides.
Thank you for your consideration.


test: Redeploy DNS after endpointRoutes reconfiguration

In general up until now, Cilium has expected endpointRoutes mode to be
set to exactly one value upon deployment and for that value to stay the
same for the remainder of operation. Toggling it can lead to a mix of
endpoints in different datapath modes which is not well covered in CI.
In Github issue #16717 we observed that if the testsuite toggles this
setting then we can end up with kubedns pods remaining in endpoint
routes mode, even though the rest of the daemon (and other pods) are not
configured in this mode. This can lead to connectivity issues in DNS,
and a range of test failures in subsequent tests because DNS is broken.
Longer term to resolve this, we could improve on Cilium to ensure that
users can successfully toggle this setting on or off at runtime and
properly handle this case, or alternatively shift all logic over to
endpoint-routes mode by default and disable the other option.
Given that CI for the master branch is in a poor state due to this issue
today, and that part of the issue is CI reconfiguring the datapath state
of Cilium during the test setup in an unsupported manner, this commit
proposes to force DNS pod redeployment as part of setup any time a test
reconfigures the endpointRoutes mode. This should mitigate the testing
side issue while we mull over the right longer-term solution.
Fixes: #16717
Fixes: https://github.com/cilium/cilium/pull/16227
Related: #14955

test-me-please

On the fence about v1.9 backport, from out-of-band discussion with @pchaigno this flake is likely caused by https://github.com/cilium/cilium/pull/16227 which was backported to v1.9. I briefly looked through scheduled CI job runs for v1.9 and didn't observe the issue at all. We'll hold off for now. Now that we know how to detect this problem, if we see it on v1.9 it's easy to figure out if we see this particular issue and if so we can backport.

Hit #16813, which seems at first glance like maybe #15459 resurfacing. Given that this is addressing one of the most common flakes in the tree today, bypassing the failing build to merge.
CI-3.0 not necessary to pass since this only changes ginkgo test code.

Marking for backport to 1.9 following discussion here: https://github.com/cilium/cilium/pull/18031#issuecomment-991084995


donate button please receive equivalent for 100 USD in crypt (not scam nor spam).

on any crypto wallet if you wish from me

seems sent :)


Fast change of Aliases

Can you please implement that i can change an alias for more rules at the same time, for example i select 20 rules and change for them at once the Source Alias.
Or would it be possible that i can change an assigned aliastype, for example i have an Alias of the type GeoIP for 50 rules, now i must change the aliastype to Host(s) but that isn't allowed and if i would like to change like this i must change all the 50 rules individually

Timeout


Feature in Companies Publicly Supporting OpenXR

Introduction
When a user accesses the OpenXR website, they are directed to the "Companies Publicly Supporting OpenXR" section. However, currently, clicking on a specific company does not result in any action. I would like to add a hover feature to allow users to interact with and access information about each company by hovering over their respective logos.
Screenshot

I think that's just a standard "logo field" as used elsewhere on the Khronos web site (this is the wrong repo - I'm not sure there is a repo for the page you're showing but I'll move it to a better one and ping the web services person @outofcontrol  ). Links would be nice, however it might need to be in common stuff with other Khronos web pages. (looks like that's actually a single large static image, interestingly enough)
If you look at the "API Adopters" page/logo field, those do have links: https://www.khronos.org/conformance/adopters/conformant-companies


Remote signaller buff

About the PR
remote signaller now has range of 250m
advanced has range of 500000m
c4 bundle now has advanced signaller and network configurator
also fixed universal access config not having ntrep and bso
Why / Balance
my stolen seismic charges and c4 will hold every substation hostage for i am RETEP and i am EVIL
Technical details

Media

Requirements

[X] I have read and am following the Pull Request and Changelog Guidelines.
[X] I have added media to this PR or it does not require an ingame showcase.

Breaking changes

Changelog
:cl:

add: c4 bundle gets advanced remote signaller and network configurator now
tweak: remote signaller range is now 250m and advanced one is practically infinite range now
fix: universal access configurator has NTrep and BSO in it now (this means nothing to non admins)

Summary by CodeRabbit

New Features

Introduced new duffel bag bundles with specific items, including the ClothingBackpackChameleonFill and ClothingBackpackDuffelSyndicateC4tBundle.
Expanded access levels for the AccessConfiguratorUniversal, now including NanotrasenRepresentative and BlueshieldOfficer.

Improvements

Enhanced operational range for RemoteSignaller and RemoteSignallerAdvanced devices, significantly increasing their effectiveness.

Content Adjustments

Updated contents of various duffel bags, refining item specifications and categories.

holy based

corn starch here with another fire PR

nvm checks are related to rat species :trollface:


Binary Search Algorithm

Write an implementation of binary search algorithm on an integer array with proper explanation through comments.

hi @prafulla-k-roy , i would love to do this ! kindly assign this issue to me.

please assign this to me. I love binary search and its implementation.


Tooling not compatible with net46 projects?

When upgrading tooling to Microsoft.EntityFrameworkCore.Tools.DotNet 1.1, the nuget restore fails with net46 projects:

error: Package Microsoft.EntityFrameworkCore.Tools.DotNet 1.1.0-preview4-final is not compatible with net46 (.NETFramework,Version=v4.6). Package Microsoft.EntityFrameworkCore.Tools.DotNet 1.1.0-preview4-final supports: netcoreapp1.0 (.NETCoreApp,Version=v1.0)
error: One or more packages are incompatible with .NETFramework,Version=v4.6.

project.json at http://hastebin.com/ohekihiqiy.json

"Microsoft.EntityFrameworkCore.Tools.DotNet": {

  "version": "1.1.0-preview4-final",
  "type": "build"
},

This part should be under "tools" section rather than "dependencies".

Thank you, that fixed it. Maybe something left by the old templates or an upgrade I did wrong.


Fix full-width space

Coverage remained the same at 90.931% when pulling cfd66586babd74df686b8df8a2ac6949694eca56 on ocadaruma:fix-fullwidth-space into ca6d633198487de152acebc6a2b21b5b6333c8ef on redpen-cc:master.

🙇


feat(hwil): implements hwil command

Description
This pull request introduces the hwil command to manage hardware-in-loop devices.
Usage
Usage: rio hwil [OPTIONS] COMMAND [ARGS]...

  Manage Hardware-in-the-Loop (HWIL) devices

Options:
  --help  Show this message and exit.

Commands:
  create   Create a new hardware-in-the-loop device.
  delete   Delete one or more devices
  execute  Execute
  inspect  Inspect the hardware-in-the-loop device.
  list     Lists hardware-in-loop devices.
  login    Log in to HWIL.
  ssh      SSH into the hardware-in-the-loop device.

Demo
Managing devices

Execute and SSH Command

:tada: This PR is included in version 7.6.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


refactor: Clean ABAP changes

Various clean code fixes and cleanup, including new abapLint rules enabled.
@AlexandreHT do you plan to keep this compatible with 7.02 for the time being? There could be quite a bit more cleaned up if it were upgraded.

I'm using it for 702 and up. Let's keep it that way :-)  (Alternative, would be to setup an automatic downport with abaplint).
PS: The clean-up is certainly appreciated. It's a lot... keep it even smaller in scope. One change at a time: cl_aunit_assert to cl_abap_unit_assert, fixing the space dot, updating comments, ... This will increase speed of review and the likelihood of getting changes merged 😃

Totally understand. I expected this to be small once I started, but kept finding more little things to correct.

I gave it a quick test and it works fine. LGTM 👍

@AlexandreHT do you plan to keep this compatible with 7.02 for the time being? There could be quite a bit more cleaned up if it were upgraded.

I'm open to discussion but fondamentally yes. abapGit and abap2xlsx are also compatible with 7.02, it seemed relevant to me to be aligned with these two huge projects.

it's blocking other changes. can we merge?

We could but it's flagged as draft. Is is on purpose or is it a mistake?

@jelliottp it looks good to me. Anything else you want to add?

Ready to go

Thanks


feat: add oathekeper to galoy-auth

@nicolasburtey this is working now locally - ready for review / rollout.
A request to api-backend shows the following logs in oath keeper:
time=2022-10-05T09:26:59Z level=info msg=started handling request http_request=map[headers:map[accept:application/json user-agent:curl/7.79.1 x-forwarded-for:<IP_ADDRESS> x-forwarded-proto:https x-request-id:fa526ad666e7a2ba4e0b8282e01879bf] host:galoy-oathkeeper-api.galoy-dev-galoy.svc.cluster.local method:GET path:/decisions query:<nil> remote:<IP_ADDRESS>:54236 scheme:http]
time=2022-10-05T09:26:59Z level=info msg=Access request granted audience=application granted=true http_host=galoy-oathkeeper-api.galoy-dev-galoy.svc.cluster.local http_method=POST http_url=https://localhost/graphql http_user_agent=curl/7.79.1 service_name=ORY Oathkeeper service_version=v0.39.0
time=2022-10-05T09:26:59Z level=info msg=completed handling request http_request=map[headers:map[accept:application/json user-agent:curl/7.79.1 x-forwarded-for:<IP_ADDRESS> x-forwarded-proto:https x-request-id:fa526ad666e7a2ba4e0b8282e01879bf] host:galoy-oathkeeper-api.galoy-dev-galoy.svc.cluster.local method:POST path:/graphql query:<nil> remote:<IP_ADDRESS>:54236 scheme:http] http_response=map[status:200 text_status:OK took:954.3µs]

Are there other ingresses that it should be added to?

Are there other ingresses that it should be added to?

looks good for me. does it apply to the admin API as well?


Prepare for 0.24.1 release

[x] I agree to follow the project's code of conduct.
[x] I added an entry to CHANGES.md if knowledge of this change could be valuable to users.

I'll wait a day before publishing in case anyone else wants to review or include something in the release.

published: https://crates.io/crates/geojson/0.24.1
tagged: https://github.com/georust/geojson/releases/tag/0.24.1


Support for a question

Hi. Sorry but I am not able to find public info about json-server.
I am trying to use it in my client-rest application.
I can read from db.json but not to write.
I mean that I can add an item with HTTP POST but it is in memory!
Same problem with HTTP PATCH/PUT. db.json file not report any changes.
I need to save the update into the db.json file.
But not with 's' from the console, I need to commit changes to db.json everytime I update my data by http.
I don't understand if with json-server I will be able to update the db.json file.
Or I need another extension to update and save it?
When I stop the json-server , all my changes are lost.
Is this normal?
my json-server version 0.8.21
Thanks in advance.
Sergio
PS: is there a support site?

Now all is working.
The problem was that I had an old version of nodejs.(0.10.25).
After the update of nodejs,  json-server is working fine.
Bye


Azure IoT Edge: Failed to fetch container registry authentication token

Required Information
I'm trying to deploy an Azure IoT Edge module through Azure Pipelines. I've set up my build steps as below but it's returning an error message on the Push module images step
Question, Bug, or Feature?
Type: Bug
Enter Task Name: AzureIoTEdge
Environment

Server - Azure Pipelines

Agent - Hosted

Issue Description
Below is a copy of my pipeline. I have a service connection set up under the name containerregistry

trigger:
- master

pool:
  vmImage: 'Ubuntu-16.04'

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

steps:
- task: AzureIoTEdge@2
  inputs:
    action: 'Build module images'
    templateFilePath: 'deployment.template.json'
    defaultPlatform: 'arm32v7'
- task: AzureIoTEdge@2
  inputs:
    action: 'Push module images'
    containerregistrytype: 'Generic Container Registry'
    dockerRegistryConnection: 'containerregistry'
    templateFilePath: 'deployment.template.json'
    defaultPlatform: 'arm32v7'
    fillRegistryCredential: 'true'

Task logs
##[section]Starting: AzureIoTEdge
==============================================================================
Task         : Azure IoT Edge
Description  : Build and deploy an Azure IoT Edge image
Version      : 2.3.0
Author       : Microsoft Corporation
Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/build/azure-iot-edge
==============================================================================
Pushing module images...
29177abd-9970-4ff3-a171-cf8cb6824915 exists true
##[error]Error: Failed to fetch container registry authentication token, please check you container registry setting in build task. The username for container registry is
##[section]Finishing: AzureIoTEdge

Error logs
[error]Error: Failed to fetch container registry authentication token, please check you container registry setting in build task. The username for container registry is

This is also the response I get when I choose the Azure Container Registry option. (which I am using) it falsely indicates a success even though nothing has been pushed to the registry.
##[section]Starting: AzureIoTEdge
==============================================================================
Task         : Azure IoT Edge
Description  : Build and deploy an Azure IoT Edge image
Version      : 2.3.0
Author       : Microsoft Corporation
Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/build/azure-iot-edge
==============================================================================
Pushing module images...
/home/vsts/work/1/s /home/vsts/work/1/s
iotedgedev already installed with version: version 2.1.0

[command]/usr/local/bin/iotedgedev push --no-build --file /home/vsts/work/1/s/deployment.template.json --platform arm32v7

=======================================
======== ENVIRONMENT VARIABLES ========
=======================================

.env file not found on disk. Without a file on disk, you must specify all Environment Variables at the system level. (/home/vsts/work/1/s/.env)
Validating deployment template /home/vsts/work/1/s/deployment.template.json
Validating schema of deployment template.
Deployment template schema validation passed.
Expanding image placeholders
Converting createOptions
Deleting template schema version
Expanding 'deployment.template.json' to 'config/deployment.arm32v7.json'
Validating generated deployment manifest config/deployment.arm32v7.json
Validating schema of deployment manifest.
Deployment manifest schema validation passed.
Start validating createOptions for all modules.
Validating createOptions for module edgeAgent
No settings or createOptions property found in module edgeAgent. Skip createOptions validation.
Validating createOptions for module edgeHub
No settings or createOptions property found in module edgeHub. Skip createOptions validation.
Validating createOptions for module webapp
No settings or createOptions property found in module webapp. Skip createOptions validation.
Validation for all createOptions passed.
The generated deployment file located in the path: /home/vsts/work/1/a/deployment.arm32v7.json
Expanding registry credentials in deployment file...
Finished pushing module images
##[section]Finishing: AzureIoTEdge

I got the same problem. @prativen @blackchoey any progress on this issue so far?

Hello.
i am experiencing a similar issue. Do you have any update?
We run the task that generates a manifest
pool:
  vmImage: 'ubuntu-latest'
....
- task: AzureIoTEdge@2
  displayName: 'Azure IoT Edge - Generate manifest'
  inputs:
    action: 'Generate deployment manifest'
    templateFilePath: 'EdgeSolution/deployment.template.json'
    defaultPlatform: 'amd64'
    deploymentManifestOutputPath: '$(Build.ArtifactStagingDirectory)/newdeployment.json'
    validateGeneratedDeploymentManifest: 'true'

and the deployment.template.json has the following section
...
    "$edgeAgent": {
      "properties.desired": {
        "schemaVersion": "1.0",
        "runtime": {
          "type": "docker",
          "settings": {
            "minDockerVersion": "v1.25",
            "loggingOptions": "",
            "registryCredentials": {
              "myiotcontainerthatdoesnotexist": {
                "username": "$CONTAINER_REGISTRY_USERNAME_myiotcontainerthatdoesnotexist",
                "password": "$CONTAINER_REGISTRY_PASSWORD_myiotcontainerthatdoesnotexist",
                "address": "myiotcontainerthatdoesnotexist.azurecr.io"
              }
            }
          }
        },
...

The pipeline has the two variables:

but at the end the file newdeployment.json remains unchanged.
I expect the task to replace the placeholders for username and password in the template and generate a new file. Isn't it?
This is what i deduce reading this doc (step 10):
https://docs.microsoft.com/en-us/azure/iot-edge/how-to-ci-cd#configure-continuous-deployment
The log of the task says:

Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/build/azure-iot-edge
==============================================================================
Start generating deployment manifest...
/home/vsts/work/1/s/EdgeSolution /home/vsts/work/1/s
iotedgedev already installed with version: version 2.1.5

/usr/local/bin/iotedgedev genconfig --file /home/vsts/work/1/s/EdgeSolution/deployment.template.json --platform amd64 --fail-on-validation-error
/usr/local/lib/python2.7/dist-packages/cryptography/__init__.py:39: CryptographyDeprecationWarning: Python 2 is no longer supported by the Python core team. Support for it is now deprecated in cryptography, and will be removed in a future release.
  CryptographyDeprecationWarning,

=======================================
======== ENVIRONMENT VARIABLES ========
=======================================

.env file not found on disk. Without a file on disk, you must specify all Environment Variables at the system level. (/home/vsts/work/1/s/EdgeSolution/.env)
Expanding image placeholders
Converting createOptions
Deleting template schema version
Expanding 'deployment.template.json' to '/home/vsts/work/1/a/newdeployment.json'
Validating generated deployment manifest /home/vsts/work/1/a/newdeployment.json
Validating schema of deployment manifest.
Deployment manifest schema validation passed.
....

I tried to use te syntax ${VAR} in the template but that does not fix it.
Can you please help?

Hello.
There is also this open ticket about a missing documentation.
https://github.com/MicrosoftDocs/azure-devops-docs/issues/8656
The links i reported above is broken. They recently changed the url, i guess. The good page is
https://docs.microsoft.com/en-us/azure/iot-edge/how-to-continuous-integration-continuous-deployment
The broken link is accessible also from the "About this task" link in the pipeline extension itself.

Paging @marianan   @tameraw    @pprovost ; new owners of the area path

@alevincenzi  thank you for reporting this issue. Regarding the documentation bug, we are already tracking it in our backlog and will share updates when available. Regarding the initially reported issue of env variables not being substituted - is this still an issue? If yes, do you have workaround that can unblock you in the meantime?

Well .. that was a loooong time ago.
We dropped the usage of that type of task and replaced it with a bash script that fetches the secrets from a vault and replaces them with jq.
We never tried to use it since.

Thanks all for your feedback. A couple of follow ups below:

Format for env variables in deployment.json
We are updating the documentation to be explicit on the format of the env variables in the deployment manifest - @alevincenzi , you have it all correctly setup.
"registryCredentials": {
"": { // Your Azure Container Registry Registry name value
"username": "${ACR_USER}",
"password": "${ACR_PASSWORD}",
"address": "${ACR_ADDRESS}"
}
}

Configure verbose logs for further troubleshooting
If anyone else is still struggling with this issue please configure verbose logs and share here - the logs will show clearly what env variables are found and substituted it in the config json. Here is info about how to configure verbose logs for your pipeline - https://docs.microsoft.com/en-us/azure/devops/pipelines/troubleshooting/review-logs?view=azure-devops.

The MSDN article at https://docs.microsoft.com/en-us/azure/iot-edge/how-to-continuous-integration-continuous-deployment?view=iotedge-2018-06#verify-iot-edge-cicd-with-the-build-and-release-pipelines has been updated with the expected format for the environment variables in the deployment templates as well as with isntructions how to collect debug logs.

Hi @marianan Is it possible variable substitution still has a bug ?

generate deployment manifest step in ( releases ) was failing on a ubuntu agent when the pipeline variable was set as CONTAINER_REGISTRY_USERNAME to be substituted in the deployment template

but it started working when i renamed the variable to ACR_USER Is it a pre-defined variable key perhaps ?

In that case could you make an explicit mention on the docs here  please

Hi @irajbalakrish thanks for our post. Based on your description, please make sure that the environment variable is named the same in the yaml file and in the variables section in the pipeline. The name is not predefined and you can use any name that you need. Let us know if you are still running into issues.

Hi @marianan Thanks much for your response. I did make sure the variable in my deployment.template.json / YAML is the same as that of pipeline variables in each case. Am not able to explain why it doesn't pick up other variable KEYs other than what is mentioned in the doc link ☹ is it an idea to send you more details on your email ( mine is<EMAIL_ADDRESS>)


How update?

I have downloaded latest commit, run the pip install ofscraper but the ofscraper -version  return  ofscraper.exe 1.87

Yeah I haven't updated the version number
You can
pip uninstall ofscraper
Before installing the commit.

ok thanks


License missing from repo

This repo is missing a license. Without a license, all code is copyright the author and may not be used by anyone else.
Please use something like http://choosealicense.com/ to decide what license to use. I recommend MIT or GPL.

Moved to MIT.


Minor cleanups

Drive-by comment: the diff on the shell scripts would more accurately highlight the true issues if it left the indentation alone and focused on the quotes and expansion issues.

Hmm that's just my editor warning about mixed indentation, so I dealt with that too to silence that warning.

Then I would recommend folding that in with a separate fix-whitespace commit. Have one commit "fix shellcheck warnings" about variable quotes, $(), etc., and another that does all the indentation/whitespace stuff. Much easier to follow

Thanks.  I'll include most of it.  Changing backticks to $() might not work with older shells, I'm not sure, thus I'll leave that out.