Missing libc.so.6: version `GLIBC_2.34' and  –denoised-image-sdc  flag

Hi Matt,
I am running the latest qsiprep... apparently, version 17.0.? At least that's the version our system administrator found when generating a singularity sif.
Anyway, I got the error that libc.so.6: version `GLIBC_2.34' was not found (see below  ##################)
See the command to run qsiprep below.
An additional issue is in what circumstances would one set the  "–denoised-image-sdc" flag? Or would the "new" default behavior be recommendable for most data?  (could not find issue #449 as references in the "docs")
Cheers
William
My command is:
export SINGULARITYENV_ANTS_RANDOM_SEED=999
if [ ! -e ${DERIV_DIR} ]; then
mkdir -p ${DERIV_DIR}
fi
time singularity run --cleanenv --contain --nv
-B ${TOOLS_DIR}
-B ${BIDS_DIR_TMP}/:/data_in
-B ${RAWDATA_DIR}/:${RAWDATA_DIR}
-B ${SCRIPTS_DIR}/:${SCRIPTS_DIR}
-B ${DERIV_DIR}:/data_out
-B ${WORK_DIR}:/work
-B /tmp:/tmp
${qsiprep_sif}
/data_in
/data_out
participant
-w /work
--participant-label ${sub}${ses/-/}
--skip_bids_validation
--use-plugin ${SCRIPTS_DIR}/tmp/qsiprep_plugin/${sub}_${ses}qsiprep_plugin.yml
--fs-license-file ${TOOLS_DIR}/freesurfer/freesurfer.6.0.0/license.txt
--unringing-method mrdegibbs
--dwi-denoise-window 5
--output-resolution ${res}
--hmc-model eddy
--eddy_config ${SCRIPTS_DIR}/tmp/eddy_params/${sub}${ses}_eddy_params.json
--skip-t1-based-spatial-normalization
--output-space T1w
--nthreads  ${SLURM_CPUS_PER_TASK}
--write-graph
-vv
ERROR
Cmdline:
dsi_studio --action=src  --bval=/work/qsiprep_wf/single_subject_via157ses01CFINskyra_wf/dwi_finalize_acq_hardi_run_01_wf/transform_dwis_t1/rotate_gradients/rotated.bval --bvec=/work/qsiprep_wf/single_subject_via157ses01CFINskyra_wf/dwi_finalize_acq_hardi_run_01_wf/transform_dwis_t1/rotate_gradients/rotated.bvec --source=/work/qsiprep_wf/single_subject_via157ses01CFINskyra_wf/dwi_finalize_acq_hardi_run_01_wf/transform_dwis_t1/merge/vol0000_trans_merged.nii --thread_count=2 --output=/work/qsiprep_wf/single_subject_via157ses01CFINskyra_wf/dwi_finalize_acq_hardi_run_01_wf/transform_dwis_t1/calculate_qc/raw_src/vol0000_trans_merged.src.gz
Stdout:
Stderr:
dsi_studio: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.34' not found (required by /.singularity.d/libs/libGLX.so.0) 	dsi_studio: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.34' not found (required by /.singularity.d/libs/libGLdispatch.so.0)
Traceback:
RuntimeError: subprocess exited with code 1.
Traceback (most recent call last):
File "/usr/local/miniconda/bin/qsiprep", line 8, in
sys.exit(main())
File "/usr/local/miniconda/lib/python3.8/site-packages/qsiprep/cli/run.py", line 671, in main
qsiprep_wf.run(**plugin_settings)
File "/usr/local/miniconda/lib/python3.8/site-packages/nipype/pipeline/engine/workflows.py", line 638, in run
runner.run(execgraph, updatehash=updatehash, config=self.config)
File "/usr/local/miniconda/lib/python3.8/site-packages/nipype/pipeline/plugins/base.py", line 212, in run
raise error from cause
RuntimeError: Traceback (most recent call last):
File "/usr/local/miniconda/lib/python3.8/site-packages/nipype/pipeline/plugins/legacymultiproc.py", line 67, in run_node
result["result"] = node.run(updatehash=updatehash)
File "/usr/local/miniconda/lib/python3.8/site-packages/nipype/pipeline/engine/nodes.py", line 527, in run
result = self._run_interface(execute=True)
File "/usr/local/miniconda/lib/python3.8/site-packages/nipype/pipeline/engine/nodes.py", line 645, in _run_interface
return self._run_command(execute)
File "/usr/local/miniconda/lib/python3.8/site-packages/nipype/pipeline/engine/nodes.py", line 771, in _run_command
raise NodeExecutionError(msg)
nipype.pipeline.engine.nodes.NodeExecutionError: Exception raised while executing Node raw_src.

Hi William, I'd hold off on using 0.17.0 for now. This should be marked as a pre-release because a bunch of the libraries are new. @richford did you run into any GLIBC issues when running 0.17.0 on your system? It's possible you need to load a more recent glibc before running singularity with this version.
We found in ABCD that the previous QSIPrep default would result in TOPUP failing for ~10% of the subjects. If you need newer qsiprep features but want to stick closely to the behavior of the previous qsiprep version you can use the  "–denoised-image-sdc" flag. I would recommend just using the new default behavior, though.

Hi Matt,
Many thanks for the clarification.
I guess the 16.1 version our system administrator installed was also a prerelease as I can see it was created on January 23rd, and the "official one was released last month as I understand. Maybe that's why I had issues running it. I can't recall what the problem was though. I will ask them to install the "real" 16.1 version
The new default TOPUp it is  :-)
Cheers

Just tried the "16.1" version we installed.
I get the following error:
FATAL:   could not open image /data_in: failed to retrieve path for /data_in: lstat /data_in: no such file or directory
This is strange as 17.0 had no problems.
Is this a know "bug"?
Anyway, will ask them to install the "real" 16.1

Hi Matt,
Where to get the 16.1 version with the latest commits? The one on https://hub.docker.com/r/pennbbl/qsiprep/tags
is 5 months old
Cheers

Sorry for the confusion here. 0.16.1 is 5 months old but the software release on github was only posted recently. Usually I do a better job of keeping these synchronized, but this one was very late.
I'm not sure what's going on with /data_in, are you using a special wrapper to run qsiprep? I don't see data_in in the qsiprep codebase, what does your command look like?

See script below. Using the same script, but using qsiprep 17 ran without issues:
#SBATCH -J qsi_CPU
#SBATCH --cpus-per-task=3
#SBATCH --mem-per-cpu=8GB
#SBATCH --time=24:00:00
#SBATCH --output logs/slurm-%j.txt
#SBATCH --partition=HPC
slurmid=${SLURM_ARRAY_TASK_ID}
BIDS_DIR=${1}
RAWDATA_DIR=${BIDS_DIR}/rawdata
SCRIPTS_DIR=${2}
site=${3}
data_file=${4}
qiprep_sif="/mnt/depot64/singularity/site/qsiprep-0.16.1.sif"
DERIV_DIR="/mnt/scratch/VIA_BIDS/qsiprep/${site}_derivatives"
TOOLS_DIR="/mnt/depot64/"
WORK_DIR="/mnt/scratch/VIA_BIDS/qsiprep/qsiprep_work_${site}"
if [ ! -e ${WORK_DIR} ]; then
mkdir -p ${WORK_DIR}
fi
if [ ${site} == "DRCMR" ]
then
res="1.8"
elif [ ${site} == "CFIN" ]
then
res="2"
fi
BIDS_DIR_TMP="/mnt/scratch/VIA_BIDS/qsiprep/bids_qsiprep_${site}_tmp"
echo $RAWDATA_DIR $BIDS_DIR_TMP $SCRIPTS_DIR $WORK_DIR ${slurmid} ${site}
ensure no header line and double quote arround variable. The latter can happen when saving csv file in libreoffice
line=$(awk "NR==${slurmid}" ${SCRIPTS_DIR}/${data_file})
sub=$(echo $line | awk -F"," '{print $1}')
ses=$(echo $line | awk -F"," '{print $2}')
log=logs/slurm.qsiprep.${sub}.${ses}-cpu.log
lock=lock/${sub}_${ses}.lock
if [ ! -e ${DERIV_DIR}/qsiprep/${sub}${ses/-/} ] && [ ! -e $log ] && [ ! -e $lock ]; then
echo $sub $ses $i
mv logs/slurm-${SLURM_JOBID}.txt $log

# Create symlinks
# This was done separately
#echo "Create symlinks"
#bash utils/create_symlinks.sh ${BIDS_DIR} ${BIDS_DIR_TMP} ${sub} ${ses}

# Create eddy_param file, slspec_file and qsiprep_plugin.yml
echo "Create eddy_param file, slspec_file and qsiprep_plugin.yml"
bash utils/create_tmp_files.sh ${RAWDATA_DIR} ${SCRIPTS_DIR} ${sub} ${ses} --use_cuda

#RUN QSIPREP
export SINGULARITYENV_ANTS_RANDOM_SEED=999

if [ ! -e ${DERIV_DIR} ]; then
    mkdir -p ${DERIV_DIR}
fi

time singularity run --cleanenv --contain \
-B ${TOOLS_DIR} \
-B ${BIDS_DIR_TMP}/:/data_in \
-B ${RAWDATA_DIR}/:${RAWDATA_DIR} \
-B ${SCRIPTS_DIR}/:${SCRIPTS_DIR} \
-B ${DERIV_DIR}:/data_out \
-B ${WORK_DIR}:/work \
-B /tmp:/tmp \
${qsiprep_sif} \
/data_in \
/data_out \
participant \
-w /work \
--participant-label ${sub}${ses/-/} \
--skip_bids_validation \
--use-plugin ${SCRIPTS_DIR}/tmp/qsiprep_plugin/${sub}_${ses}_qsiprep_plugin.yml \
--fs-license-file ${TOOLS_DIR}/freesurfer/freesurfer.6.0.0/license.txt \
--unringing-method mrdegibbs \
--dwi-denoise-window 5 \
--output-resolution ${res} \
--hmc-model eddy \
--eddy_config ${SCRIPTS_DIR}/tmp/eddy_params/${sub}_${ses}_eddy_params.json \
--skip-t1-based-spatial-normalization \
--output-space T1w \
--nthreads  ${SLURM_CPUS_PER_TASK} \
--write-graph \
-vv

fi

can see the formatting is off when pasting the code here

Enclose inline scripts in triple backquotes
script *without* markdown problems

Hi Again,
I tested 16.1, but got the same error:  " /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found " (see below ########)
Tried to run singularity without the "--contain" flag, but that did not change anything
Any ideas?
Thanks again!
singularity run --cleanenv --nv
-B ${TOOLS_DIR}
-B ${BIDS_DIR_TMP}:/data_in
-B ${RAWDATA_DIR}:${RAWDATA_DIR}
-B ${SCRIPTS_DIR}:${SCRIPTS_DIR}
-B ${DERIV_DIR}:/data_out
-B ${WORK_DIR}:/work
-B /tmp:/tmp
${qsiprep_sif}
/data_in
/data_out
participant
-w /work
--participant-label ${sub}${ses/-/}
--skip_bids_validation
--use-plugin ${SCRIPTS_DIR}/tmp/qsiprep_plugin/${sub}_${ses}qsiprep_plugin.yml
--fs-license-file ${TOOLS_DIR}/freesurfer/freesurfer.6.0.0/license.txt
--unringing-method mrdegibbs
--dwi-denoise-window 5
--output-resolution ${res}
--hmc-model eddy
--eddy_config ${SCRIPTS_DIR}/tmp/eddy_params/${sub}${ses}_eddy_params.json
--output-space T1w
--nthreads  ${SLURM_CPUS_PER_TASK}
--write-graph
-vv
####################
230323-15:24:29,833 nipype.workflow ERROR:
could not run node: qsiprep_wf.single_subject_via214ses01CFINskyra_wf.dwi_finalize_acq_hardi_run_01_wf.transform_dwis_t1.calculate_qc.raw_src
230323-15:24:29,841 nipype.workflow INFO:
crashfile: /data_out/qsiprep/sub-via214ses01CFINskyra/log/20230323-151136_d042ff75-7417-4de0-8613-eecb3b692854/crash-20230323-152034-wimb-raw_src-36104fe1-abc0-4e3d-87eb-0ad5a120d543.txt
230323-15:24:29,841 nipype.workflow INFO:
***********************************
QSIPrep failed: Traceback (most recent call last):
File "/usr/local/miniconda/lib/python3.8/site-packages/nipype/pipeline/plugins/legacymultiproc.py", line 67, in run_node
result["result"] = node.run(updatehash=updatehash)
File "/usr/local/miniconda/lib/python3.8/site-packages/nipype/pipeline/engine/nodes.py", line 527, in run
result = self._run_interface(execute=True)
File "/usr/local/miniconda/lib/python3.8/site-packages/nipype/pipeline/engine/nodes.py", line 645, in _run_interface
return self._run_command(execute)
File "/usr/local/miniconda/lib/python3.8/site-packages/nipype/pipeline/engine/nodes.py", line 771, in _run_command
raise NodeExecutionError(msg)
nipype.pipeline.engine.nodes.NodeExecutionError: Exception raised while executing Node raw_src.
Cmdline:
dsi_studio --action=src  --bval=/work/qsiprep_wf/single_subject_via214ses01CFINskyra_wf/dwi_finalize_acq_hardi_run_01_wf/transform_dwis_t1/rotate_gradients/rotated.bval --bvec=/work/qsiprep_wf/single_subject_via214ses01CFINskyra_wf/dwi_finalize_acq_hardi_run_01_wf/transform_dwis_t1/rotate_gradients/rotated.bvec --source=/work/qsiprep_wf/single_subject_via214ses01CFINskyra_wf/dwi_finalize_acq_hardi_run_01_wf/transform_dwis_t1/merge/vol0000_trans_merged.nii --thread_count=1 --output=/work/qsiprep_wf/single_subject_via214ses01CFINskyra_wf/dwi_finalize_acq_hardi_run_01_wf/transform_dwis_t1/calculate_qc/raw_src/vol0000_trans_merged.src.gz
Stdout:
Stderr:
dsi_studio: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.34' not found (required by /.singularity.d/libs/libGLX.so.0) 	dsi_studio: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.34' not found (required by /.singularity.d/libs/libGLdispatch.so.0)
Traceback:
RuntimeError: subprocess exited with code 1.
Traceback (most recent call last):
File "/usr/local/miniconda/bin/qsiprep", line 8, in
sys.exit(main())
File "/usr/local/miniconda/lib/python3.8/site-packages/qsiprep/cli/run.py", line 664, in main
qsiprep_wf.run(**plugin_settings)
File "/usr/local/miniconda/lib/python3.8/site-packages/nipype/pipeline/engine/workflows.py", line 638, in run
runner.run(execgraph, updatehash=updatehash, config=self.config)
File "/usr/local/miniconda/lib/python3.8/site-packages/nipype/pipeline/plugins/base.py", line 212, in run
raise error from cause
RuntimeError: Traceback (most recent call last):
File "/usr/local/miniconda/lib/python3.8/site-packages/nipype/pipeline/plugins/legacymultiproc.py", line 67, in run_node
result["result"] = node.run(updatehash=updatehash)
File "/usr/local/miniconda/lib/python3.8/site-packages/nipype/pipeline/engine/nodes.py", line 527, in run
result = self._run_interface(execute=True)
File "/usr/local/miniconda/lib/python3.8/site-packages/nipype/pipeline/engine/nodes.py", line 645, in _run_interface
return self._run_command(execute)
File "/usr/local/miniconda/lib/python3.8/site-packages/nipype/pipeline/engine/nodes.py", line 771, in _run_command
raise NodeExecutionError(msg)
nipype.pipeline.engine.nodes.NodeExecutionError: Exception raised while executing Node raw_src.
Cmdline:
dsi_studio --action=src  --bval=/work/qsiprep_wf/single_subject_via214ses01CFINskyra_wf/dwi_finalize_acq_hardi_run_01_wf/transform_dwis_t1/rotate_gradients/rotated.bval --bvec=/work/qsiprep_wf/single_subject_via214ses01CFINskyra_wf/dwi_finalize_acq_hardi_run_01_wf/transform_dwis_t1/rotate_gradients/rotated.bvec --source=/work/qsiprep_wf/single_subject_via214ses01CFINskyra_wf/dwi_finalize_acq_hardi_run_01_wf/transform_dwis_t1/merge/vol0000_trans_merged.nii --thread_count=1 --output=/work/qsiprep_wf/single_subject_via214ses01CFINskyra_wf/dwi_finalize_acq_hardi_run_01_wf/transform_dwis_t1/calculate_qc/raw_src/vol0000_trans_merged.src.gz
Stdout:
Stderr:
dsi_studio: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.34' not found (required by /.singularity.d/libs/libGLX.so.0) 	dsi_studio: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.34' not found (required by /.singularity.d/libs/libGLdispatch.so.0)
Traceback:
RuntimeError: subprocess exited with code 1.
Sentry is attempting to send 4 pending error messages
Waiting up to 2 seconds
Press Ctrl-C to quit

You may want to check with the system admin to see if there is a way to load a newer glibc in your environment. I've been able to get around issues like this on older CentOS machines by module loading devtoolsets with newer gccs in them before running singularity

Oke, thanks
should I drop the "--contain" flag in this case?

--contain should be fine, it will prevent mapping some directories like /tmp and $HOME but shouldn't affect system libraries

great, thanks again!

I don't know if this will help, but if you want multiple library paths, you need
  --env LD_LIBRARY_PATH=/drcmrlib:\$LD_LIBRARY_PATH

This lets you append, rather than replace, LD_LIBRARY_PATH in the container.
One reason you are seeing this error and others are not may be that you are running with --nv, which requests system libraries get mapped into the container, including libGL.

Here are our eddy settings (see below)
Previously we successfully used qsiprep 12, patched at that time with a patch from Jesper Anderson, as the fsl was not updated to do these at the time (some years back).
{
"flm": "quadratic",
"slm": "none",
"fep": false,
"interp": "spline",
"nvoxhp": 1000,
"fudge_factor": 10,
"dont_sep_offs_move": false,
"dont_peas": false,
"niter": 8,
"method": "jac",
"repol": true,
"num_threads": 3,
"is_shelled": false,
"use_cuda": true,
"cnr_maps": true,
"residuals": false,
"output_type": "NIFTI_GZ",
"args": "--very_verbose --fwhm=10,6,4,2,0,0,0,0 --ol_type=both --mporder=8 --s2v_niter=8 --slspec=/mnt/projects/VIA_BIDS/scripts/qsiprep/tmp/slspec_files/sub-via218_ses-01DRCMRprisma_slspec.txt --estimate_move_by_susceptibility"
}

Ok, many thanks... will try again!

I checked in the image and there are no missing libraries for dsi studio or glibc:
root@b137bc3906ad:/opt/dsi-studio/dsi_studio_64# ldd dsi_studio
	linux-vdso.so.1 (0x00007fff4abcc000)
	libGLU.so.1 => /usr/lib/x86_64-linux-gnu/libGLU.so.1 (0x00007f5b7a630000)
	libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f5b7a413000)
	libQt5OpenGL.so.5 => /opt/qt512/lib/libQt5OpenGL.so.5 (0x00007f5b7b12a000)
	libQt5Charts.so.5 => /opt/qt512/lib/libQt5Charts.so.5 (0x00007f5b7a253000)
	libQt5Widgets.so.5 => /opt/qt512/lib/libQt5Widgets.so.5 (0x00007f5b79bdf000)
	libQt5Gui.so.5 => /opt/qt512/lib/libQt5Gui.so.5 (0x00007f5b79602000)
	libQt5Core.so.5 => /opt/qt512/lib/libQt5Core.so.5 (0x00007f5b7903d000)
	libGL.so.1 => /usr/lib/x86_64-linux-gnu/libGL.so.1 (0x00007f5b78db1000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f5b78b92000)
	libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f5b78785000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f5b783e7000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f5b781cf000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5b77dde000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f5b7af65000)
	libpng16.so.16 => /usr/lib/x86_64-linux-gnu/libpng16.so.16 (0x00007f5b77bac000)
	libharfbuzz.so.0 => /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0 (0x00007f5b7790e000)
	libicui18n.so.60 => /usr/lib/x86_64-linux-gnu/libicui18n.so.60 (0x00007f5b7746d000)
	libicuuc.so.60 => /usr/lib/x86_64-linux-gnu/libicuuc.so.60 (0x00007f5b770b5000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f5b76eb1000)
	libglib-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f5b76b9a000)
	libGLX.so.0 => /usr/lib/x86_64-linux-gnu/libGLX.so.0 (0x00007f5b76969000)
	libGLdispatch.so.0 => /usr/lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007f5b766b3000)
	libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f5b763ff000)
	libgraphite2.so.3 => /usr/lib/x86_64-linux-gnu/libgraphite2.so.3 (0x00007f5b761d2000)
	libicudata.so.60 => /usr/lib/x86_64-linux-gnu/libicudata.so.60 (0x00007f5b74629000)
	libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f5b743b8000)
	libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f5b74080000)
	libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f5b73e58000)
	libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f5b73c54000)
	libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f5b73a4e000)
	libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f5b73839000)
	librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f5b73631000)
root@b137bc3906ad:/opt/dsi-studio/dsi_studio_64# ldd /usr/lib/x86_64-linux-gnu/libGLX.so.0
	linux-vdso.so.1 (0x00007ffe13346000)
	libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fafddcff000)
	libGLdispatch.so.0 => /usr/lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007fafdda49000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fafdd845000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fafdd626000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fafdd235000)
	libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007fafdd00d000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fafde268000)
	libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007fafdce09000)
	libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007fafdcc03000)
	libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007fafdc9ee000)
	librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fafdc7e6000)

I think this might be an issue with your gpu/cuda setup. We're stuck with whichever cuda version FSL is using, which in our case is 10. I noticed you're using version 11, which may be ok. There are some other singularity issues that might be related. Could you try out the solution from there?

Hi Matt,
Thanks, I will take it up with our system administrator
Have a great weekend

Hi Matt,
Deleting libGLX.so(.0), libglx.so(.0), and libGLdispatch.so, from nvliblist.conf` in the singularity installation directory (in our setup .../singularity/3.11.1-ce/etc/singularity/nvliblist.conf) solved the issue
Many thanks!


Private properties required when assigning an instance of a different class with the same public interface

TypeScript Version:  2.3.4
Code
class ComplexClass {
  public firstField: string;
  public secondField: string;

  private thirdField: string;
}

class NormalClass {
  public firstField: string;
  public secondField: string;
}

function complexFunction(param: ComplexClass) {
  console.log(param.firstField);
  console.log(param.secondField);
  // done, I can't use other properties of a ComplexClass object
}

complexFunction(new NormalClass());

Expected behavior:
Typescript compiles correctly.
Actual behavior:

Argument of type 'NormalClass' is not assignable to parameter of type 'ComplexClass'.
Property 'thirdField' is missing in type 'NormalClass'

Comments:
The public interface of ComplexClass is what the function complexFunction is expecting to use (properties firstField and secondField) but Typescript is expecting the developer to pass a parameter that mirrors also the private properties.
Is this done on purpose?
To make it work I need to create an unnecessary interface:
interface NormalInterface {
  public firstField: string;
  public secondField: string;
}

class ComplexClass implements NormalInterface {
  public firstField: string;
  public secondField: string;

  private thirdField: string;
}

class NormalClass implements NormalInterface {
  public firstField: string;
  public secondField: string;
}

function complexFunction(param: NormalInterface) {
  console.log(param.firstField);
  console.log(param.secondField);
}

complexFunction(new NormalClass());

Not always I have control on the type of the input parameter of the function so this solution is not applicable. Why the parameter of the function does not accept an object with the same public interface?

That's the intended design for protected/private fields of classes.  If you want the public part of a class, you can make a new type alias:
type PublicPart<T> = {[K in keyof T]: T[K]}; //keyof only sees public properties

class ComplexClass {
  public firstField: string;
  public secondField: string;
  private thirdField: string;
}

class NormalClass {
  public firstField: string;
  public secondField: string;
}

function complexFunction(param: PublicPart<ComplexClass>) {
  console.log(param.firstField);
  console.log(param.secondField);
  // done, I can't use other properties of a ComplexClass object
}

complexFunction(new NormalClass()); // no error

But I think the "unnecessary" interface is actually what you want, since it specifies the shape of the data you care about.  Even with PublicPart<> I think you'd want to say
class NormalClass implements PublicPart<ComplexClass>

or, forget about PublicPart<> and just do this:
class NormalClass {
  public firstField: string;
  public secondField: string;
}

class ComplexClass extends NormalClass {
  private thirdField: string;
}

function normalFunction(param: NormalClass) {
  console.log(param.firstField);
  console.log(param.secondField);
  // done
}

normalFunction(new NormalClass()); // no error
normalFunction(new ComplexClass()); // no error

I understand what your saying but not always I have access to the type of the parameter, if an external library instead of typing a parameter with an interface is using a class with private/protected fields (I know that it's wrong but it could happens) and for example I want to make a dummy/stub for it I need to either:
• extend the real class (not viable since you don't know what happens in the constructor)
• implement the real class implementing also private fields (not viable, if the internal implementation of the class changes the test double needs to change)
• cast it (not ideal)
In a different language it would be different but this is typescript and in absence of private fields I can assign the parameter without any problems.
Another example:
// External library
class ComplexClass {
  public firstField: string;
  public secondField: string;
}

// External library
function complexFunction(param: ComplexClass) {
  console.log(param.firstField);
  console.log(param.secondField);
  // done, I can't use other properties of a ComplexClass object
}

// Personal Application
class NormalClass {
  public firstField: string;
  public secondField: string;
}

// Personal Application
complexFunction(new NormalClass()); // this works

This example works but it's odd that with a simple implementation change in the ComplexClass (adding the private thirdField) I need to change my NormalClass when in the eye of the complexFunction nothing changes, also the application would impossibly breaks unless there is a direct access to private fields inside that function so the forced change is useless.
I have read your link but I can find only how private fields work but not why it works like that, I really like to know the reason for that decision, I'm curious to see where I'm wrong at this point!

Read through #471 to see a discussion about this.
I think casting is the only solution if you don't have access to the class definition or parameter typings.  You can do this sort of safely with something like:
function mock<T>(instance: PublicPart<T>): T {
    return <T>instance;
}

complexFunction(mock<ComplexClass>(new NormalClass()));

I found an example in that discussion, I translate it with my example classes:
class ComplexClass {
  public firstField: string;
  public secondField: string;
  private thirdField: Function = () => {};

  public static doSomething(cc: ComplexClass): void {
    cc.thirdField();
  }
}

class NormalClass {
  public firstField: string;
  public secondField: string;
}

const normal: NormalClass = new NormalClass();
ComplexClass.doSomething(normal); // Fails

Now I understand why we can't accept an object based only on his public interface. Thanks for the answers!

Automatically closing this issue for housekeeping purposes. The issue labels indicate that it is unactionable at the moment or has already been addressed.


feat: update rollup storage to hold pending/proven tips

Update the rollup state to hold pending and proven tips, which themselves are structs with block/slot numbers, instead of proven/pending counts.

I think this is also missing some checks that were made to the block count etc. In my mind, we would want to fix it such that we don't have the confusion of block count as well as this. And I could see at least some test still had those values.

#8593
#8583  👈
master

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @just-mitch and the rest of your teammates on  Graphite


Question about "ros config set  " race conditions.

This is a question, not necessarily a bug report.
The code discussion below is referring to code base as of v0.7.0-rc7
When we do a "ros config set  " the go implementation does the following:
a. Read the entire config from the relevant files into a local data structure
b. Apply changes into the local data structure (i.e. modify or create the specified key with specified value).
c. Write the changed local data structure back to a file. The write is made atomic by writing to a temp file and then renaming the temp file to actual file.
What is the expected behavior if two containers happen to run "ros config set" with different key/value pairs at the same time. Isn't it possible for one of the key/values to be lost because there is no synchronization, or way to prevent this race ?
Here is a concrete example :

Process 1 runs "ros config set key1 value1"
Process 1 reads existing config, and applies change for key1/value1
Process 2 runs "ros config set key2 value2"
Process 2 reads existing config, and applies change for key2/value2
Process 1 writes its updated config to file.
Process 2 writes its updated config to file.

Result: Process 1's key value pair (key1, value1) is LOST ! :(
I believe I might be hitting into this case (in my tests, I am running an older version of rancher 0.6.1).
Can anybody please confirm this is a problem ? Or can we please confirm there is some protection against the above race condition ? I will continue my debugging effort in the meantime .....
Thanks

This might also be worthy of a unit test, since if this issue crops up again, it takes a while to debug lost key(s)/value(s).

@ibuildthecloud, @joshwget ... git history shows you as the last two people touching the code in "ros config set". A response from you would be appreciated. Thank you very much for your time here.

There's no lock around the file so it's certainly possible. I don't think this would happen unless you were running ros config set pretty frequently though. What's your use case?

My use case is the following :

I have added some more services which all start in parallel.
Many of these services read and write to "rancher.environment" using "ros config set".
Once in a while (not frequently), some writes are lost ... the writer service believes it is done writing, and the reader service never proceeds because it is waiting for the write to complete.

The intention of this bug report was just to confirm that this can happen. I may make progress by attempting to fix this race (and submitting a PR to see if you like my approach).


fix : Show copyright menu-item in AboutFragment

Fixes #1947
Changes: Adds menu-item for Copyright in menu_home inflated in AboutFragment
Screenshots for the change:

This issue for fixed in #1938


TypeError: load() missing 1 required positional argument: 'Loader'

pyyaml==6.0 made the Loader argument necessary when using yaml.load() which is now causing error with the new version of pyyaml.
Creating file /home/runner/work/django-user-tasks/django-user-tasks/docs/modules.rst.
Traceback (most recent call last):
  File "/home/runner/work/django-user-tasks/django-user-tasks/.tox/docs/bin/swg2rst", line 8, in <module>
    sys.exit(main())
  File "/home/runner/work/django-user-tasks/django-user-tasks/.tox/docs/lib/python3.8/site-packages/swg2rst/swagger2rst.py", line 32, in main
    doc = _parse_file(_file)
  File "/home/runner/work/django-user-tasks/django-user-tasks/.tox/docs/lib/python3.8/site-packages/swg2rst/swagger2rst.py", line 74, in _parse_file
    doc = yaml.load(_file)
TypeError: load() missing 1 required positional argument: 'Loader'

Hi @shaders could you please release a new version of the package so we can utilise this fix. Currently, we are blocked on this change. Thanks.


⚠ Bofrost.at has degraded performance

In 4451c97, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 932 ms

Resolved: Bofrost.at performance has improved in 84270fa.


CI test failing: test_compute_flow.py::test_compute_update_trusted_algorithm

Describe the bug
I just created a branch, made a trivial change (added a space to a README), and created a PR from it.
This of course invoked the CI automated tests.
The automated test results show two failures:
=========================== short test summary info ============================
FAILED ocean_lib/data_provider/test/test_data_service_provider.py::test_get_root_uri
FAILED tests/integration/test_compute_flow.py::test_compute_update_trusted_algorithm

UPDATE Sep 19: the first test now passes. The second fail still exists, randomly.

I'm currently fixing that here: https://github.com/oceanprotocol/ocean.py/pull/898. We used a now-obsolete provider for some URL transform tests.

Copied comment from @mariacarmina here:

tect_data_service_provider.py::test_get_root_uri is outdated and will be fxed in @calina-c 's PR https://github.com/oceanprotocol/ocean.py/pull/898 (https://github.com/oceanprotocol/ocean.py/commit/440a8d5478e756069face84da005e3fa70e17790). The second one, test_compute_flow.py::test_compute_update_trusted_algorithm fails when the compute job is taking too long to run, when this happens, we usually re-run the tests on CI, but it doesn't happen everytime.

Reopening this issue. @calina-c 's fix above was for the first issue: tect_data_service_provider.py::test_get_root_uri.
There is still not a fix for the second issue: test_compute_flow.py::test_compute_update_trusted_algorithm. It's unacceptable to have CI that randomly fails; it makes it hard to develop against.
We can only close this issue when all the issues reported have been resolved, not a subset.

@trentmc the update trusted algorithm or some other compute-related test will fail sometimes due to c2d timeout issues. From ocean.py, we have no control over pod publishing, calculation, time spent on c2d setup and teardown etc. C2d-related tests are integration tests, so they run through the entire stack.
One solution would be for us to always wait an excessive time for these results to show up, slowing down tests. But since we always have 2 suites (pull request and push), and the probability of both failing at once is minimal, then we save some time by allowing this. I agree it is not the best solution, but also it is not an ocean.py fix.

Thanks for the info. We still need to solve the issue: we can't have tests randomly failing. It makes sw development hard if we make changes then tests fail for other reasons.
So we need to make changes such that the chance of any test failing is zero, or near zero (eg <1/10000).
Consider that the aim of this issue.
Now, let's find a way. It's ok if it's an ocean.py specific thing.
Some possible ways:

Wait an excessive time for the results, as you suggest
Like 1, but keep checking if there are results, and stops as soon as there are. This minimizes the time overhead compared to (1)
don't run the two failing tests in ocean.py local or CI testing. Instead have a separate setup with its own CI, that runs daily; this could be in ocean.py or a different repo

(3) is best if we see a way to do it easily.
(1) and (2) are similar, and (2) has less time overhead.
I recommend (3) if you (Calina) see a way to do it easily. Otherwise do (2).

I just turned off the remaining test, until we can fix it.
Fixing it is now the goal of this issue
https://github.com/oceanprotocol/ocean.py/commit/1c15c1d37617547aa33cb32bb17ca04b4138ac18


Dandelion without cdn

Switch all javascript and css to dandelion bandles (http://dandelion.github.io/dandelion/features/asset-bundles/) to eliminate datatables CDN in generated JSP.
Update jquery and jquery-ui.

Adding @tduchateau so we can get his opinion.

It seems that this solution will be much simpler to implement starting from Dandelion 1.0.0 (coming soon!).
So let's wait for 1.0.0 to be out, no rush.


[Event Request] table 36 "Sales Header" - OnBeforeSetLocationCodeFromShipToAddr

Can we please get the following event to skip the change fo the Location Code by the ShipToAddr?
procedure SetShipToCustomerAddressFieldsFromShipToAddr(ShipToAddr: Record "Ship-to Address")
var
    IsHandled: Boolean;
begin
    IsHandled := false;
    OnBeforeCopyShipToCustomerAddressFieldsFromShipToAddr(Rec, ShipToAddr, IsHandled);
    if IsHandled then
        exit;

    "Ship-to Name" := ShipToAddr.Name;
    "Ship-to Name 2" := ShipToAddr."Name 2";
    "Ship-to Address" := ShipToAddr.Address;
    "Ship-to Address 2" := ShipToAddr."Address 2";
    "Ship-to City" := ShipToAddr.City;
    "Ship-to Post Code" := ShipToAddr."Post Code";
    "Ship-to County" := ShipToAddr.County;
    Validate("Ship-to Country/Region Code", ShipToAddr."Country/Region Code");
    "Ship-to Contact" := ShipToAddr.Contact;
    if ShipToAddr."Location Code" <> '' then
        //+EVENT
        IsHandled := false;
        OnBeforeSetLocationCodeFromShipToAddr(Rec, xRec, ShipToAddr, IsHandled);
        if not IsHandled then
        //-EVENT
            Validate("Location Code", ShipToAddr."Location Code");
    "Shipping Agent Code" := ShipToAddr."Shipping Agent Code";
    "Shipping Agent Service Code" := ShipToAddr."Shipping Agent Service Code";
    if ShipToAddr."Tax Area Code" <> '' then
        "Tax Area Code" := ShipToAddr."Tax Area Code";
    "Tax Liable" := ShipToAddr."Tax Liable";

    OnAfterCopyShipToCustomerAddressFieldsFromShipToAddr(Rec, ShipToAddr, xRec);
end;

[IntegrationEvent(false, false)]
local procedure OnBeforeSetLocationCodeFromShipToAddr(var SalesHeader: Record "Sales Header"; xSalesHeader: Record "Sales Header"; ShipToAddr: Record "Ship-to Address"; var IsHandled: Boolean)
begin
end;

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.


Allow arbitrary frame for cartesian trajectory in cartesian_trajectory_controller

As far as I can see, the cartesian trajectory controller does not use the frame of the poses that are coming in.
In our example test_move script we do not set the frame_id explicitly and in the controller implementation I cannot find any mechanism to do a lookup.
@stefanscherzinger am I missing something or is this functionality missing?

@fmauch
You are right. This functionality is not yet implemented. We currently assume the robot's base frame for control when processing sampled trajectory points. This is particularly the case for calls to our IK solver and when forwarding targets to the UR IK solver. It's also the case here.
The cartesian_trajectory_interpolation, however, is independently formulated in its own coordinate system that's implicitly defined by the given poses (without the loss of generality). All poses must have the same implicit reference frame, though. But that's assured by the message definition
I assume you have two common use cases in mind:

Re-use a previously taught Cartesian trajectory (e.g. some polishing motion) at a new - but static - spot in the robot's workspace.
Re-use and apply a previously taught Cartesian trajectory to some moving object.

Both 1. and 2. probably only make sense if the new frame is not directly part of the robotic chain, but belongs somewhere to the TF tree of the setup. I think we could achieve 1. with a static transform that we need to look-up only once. That's probably okay. But since we sample control points during trajectory execution on the fly, 2. will require to do the lookups online and possibly in real-time. Not sure at the moment how critical that is.

What I have in mind is for example commanding a trajectory in a different reference frame than the one defined for the controller as in https://forum.universal-robots.com/t/about-the-cartesian-trajectory-controllers-and-movegroup/18606.
I am aware, that the message definition does provide a reference frame definition, but I couldn't find anything in the controller's code that is actually interpreting this.

Hi!
So I am attempting to control the UR10 with the forward_cartesian_traj_controller and the UR ROS driver, and I have set up my tf tree to include some additional frames that are children of the tool0_controller (I have a setup with more than one "tool center point", attached is the tf tree generated by running rosrun tf2_tools view_frames.py). I am interested in commanding each tcp ("tcp_gripper1, tcp_gripper2) to go to the same pose in my environment (relative to my base frame), at separate instances.
I have therefore defined a desired CartesianTrajectoryPoint msg, which I intend to use in two CartesianTrajectory trajectory definitions, that differ in their controlled_frame attribute; one of them uses "tcp_gripper1" and the second uses "tcp_gripper2". Unfortunately, it seems that when I send each of these trajectories to the trajectory controller the arm drives the flange, and not the desired grippers, to the pose of interest. Note: on my teach pendant, I have made sure to have the active tcp set as the flange.
I am not sure if this is precisely the subject of this Issue, but I wanted to address it here before I raise another Issue.
Thank you for your time!


Rebuild the Xamarin.TestCloud nuget for .NET 6

Describe the solution you'd like
We need a new build of the Xamarin.TestCloud nuget for .NET 6. This is to allow .NET Maui projects to use UI tests on iOS.
.NET Maui is now in RC and is a supported product byMicrosoft, so dependencies like this need to be updated.
Describe alternatives you've considered
There isn't an alternative other than dropping Xamarin UITest and AppCenter altogether.

@JohnHDev, hello. You mean Xamarin.TestCloud.Agent nuget package or Xamarin.UITest nuget package?

@JohnHDev Okay, thank you your request. We created a task for that.

Excellent thank you! Any idea when this might be available?

It's in our plans, but we don't have ETA for now.

Thanks Alexey.
If there is anything you can do to push this forward, that would be appreciated. Migrating to .NET Maui is a high priority and we need to get all our dependencies updated, including this one. We have extensive UI testing that will need to support .NET 6, and all we need to do that is this updated nuget. I would do it myself if it were open source.

Thanks Alexey. If there is anything you can do to push this forward, that would be appreciated. Migrating to .NET Maui is a high priority and we need to get all our dependencies updated, including this one. We have extensive UI testing that will need to support .NET 6, and all we need to do that is this updated nuget. I would do it myself if it were open source.

We will reply to you when we'll finish the estimation

Our organization has a plan to migrate to MAUI soon. I upvote this feature.

@IlyaBausovAkvelon any news on this pls?

We would love this feature :-)

Any update on this? .NET MAUI is now GA and we still can't run UI tests on iOS.
'Soon' obviously means different things to different people...

Just weighing in with my strong, enthusiastic hope for this feature to arrive soon :-) thanks

A client is deciding on a tech stack.
I cannot advise to the client to go with .net MAUI until there is a clear and clean automated test solution to testing .net MAUI.
Please put this at the top of the priority list.
Thanks

Yes, please make this a top priority. We can't move to Maui without a replacement for automated ux testing.

@AlexeyBudynkov it is now 3 months since we asked for this and we still can't create UI tests for iOS.
Would you advise dropping Xamarin UITest and AppCenter all together? We need better support than this.
If this isn't going to happen can you ask for it to be made open source pls, without seeing the source I suspect we might be able to do this ourselves in a day or 3.

Hi @JohnHDev, thank you for your patience! Unfortunately, this feature takes more time to implement than we expected. It is currently in development and we will update everyone here once it is available.

Hi @akamenev, we need some kind of eta, please. This year? Thanks

Hi @akamenev, please provide an answer about Maui test support with some kind of real timeline or date estimations. thanks!

Are we able to build .Net MAUI apps in App Center Build yet?

@mnxamdev Hello. We're still working on it

Upvote for .net maui support

Upvote for .net maui support

And now .net 7 is in preview for release in November…
This was raised 5 months ago.

Hello,
Some mention in the tubes that this is ongoing -> https://youtu.be/Bz1XLecJlXc?t=997

.NET 7 is GA now.
Still waiting for Xamarin.TestCloud.Agent to be updated

Also waiting on this

So, its 8 months since I reported this and we still can't run UI tests on .NET Maui iOS apps.
Other than 1 comment in a YouTube video from Gerald Versluis that 'something' was coming, we are no further forward.
@AlexeyBudynkov, @IlyaBausovAkvelon, @akamenev is there anything you can share on this? There are many of us that can't or just won't start migration to Maui without this.

We are planning to release Xamarin.TestCloud.Agent package soon.

@IlyaBausovAkvelon any progress on this?
If it helps, I tried adding Xamarin.TestCliud.Agent nuget to a .NET 6 and .NET 7 iOS project, the underlying error reported is:
Package Xamarin.TestCloud.Agent 0.23.1 is not compatible with net6.0-ios16.0 (.NETCoreApp,Version=v6.0). Package Xamarin.TestCloud.Agent 0.23.1 supports: xamarinios (Xamarin.iOS,Version=v0.0)
The nuget needs to be updated to support .NET 6 and .NET 7 iOS runtimes.

What is the status? Is it possible to use Xamarin.UITest with iOS MAUI?

@JohnHDev @pm90pl  We are still working on the release of Xamarin.TestCloud.Agent.

Are there any pre-release builds? Can we help test this?

Hello @TheresasAccount , we are still working on a fix, and will only be able to share an official release when done. Thank you!

It's good to know this is being worked on, it would be even better to have this resolved before this ticket is 1 year old. ;)

Hey, I assume you have some high-level estimation for NuGet release. Could you please share this information with us? :)
My team is under the migration to .net 6 and this is a serious blocker for us.

@jfversluis Did you hear anything from your end?
When it is released, can you do an in-depth video on MAUI testing (as I suspect a lot of it will be updated/different)?
thanks

@krzbbaranowski hello! No, please wait for an official release!

@IlyaBausovAkvelon
We have been waiting.
For 10 months.
Any idea of how much longer we need to wait would be helpful and not an unreasonable thing to ask for.

@JohnHDev we are working on it. Please wait for release.

I definitely agree that at least a rough timeline would be better than "please wait for a release"...
That being said, I noticed that there was a 4.1.0 release of Xamarin.UITest 14 days ago that claims to target net6.0 now as well as net462. I have not had a chance to try this out, yet, but I will be soon!
https://www.nuget.org/packages/Xamarin.UITest/

Guys, I assume we will wait many months for an update (or never :)). So, my team probably will decide to use the other tool.
Question to everyone, do you know any suitable alternative to AppCenter and TestCloud?

BrowserStack - but that cloud supports only Appium

I don't know of any alternatives to AppCenter for iOS beside Apple's store, but would be interested if anyone had one.

Any update on this?

@akrol95  W we are still working on that task. Unfortunately no ETA yet. Thank you for your patience.

+1 for that, we invested quite a lot of time in these UI Tests and now simply can't run them. Happy to beta test a package early :)

any news?

This one is a blocker

My team is considering replacing TestCloud with local machines. I wonder how many teams will do the same.
We are almost done with the migration to .NET 7 so we can't wait for the new version of TestCloud indefinitely...
My biggest concern is the fact that MS team has no ETA.

@krzbbaranowski what will you replace the test framework with? Ideally looking for a replacement for Xamarin.UITest in its entirety, but still be able to create UI tests with C#.

To any who have ended up on this thread that have an alternative, please
post them here.
Thanks
On Tue, Apr 4, 2023 at 11:27 PM JohnHDev @.***> wrote:

@krzbbaranowski https://github.com/krzbbaranowski what will you replace
the test framework with? Ideally looking for a replacement for
Xamarin.UITest in its entirety, but still be able to create UI tests with
C#.
—
Reply to this email directly, view it on GitHub
https://github.com/microsoft/appcenter/issues/2416#issuecomment-1495801330,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AMUG7OIZT7OZPJSI3ZMMSBTW7QARNANCNFSM5UHPUV4Q
.
You are receiving this because you commented.Message ID:
@.***>

To any who have ended up on this thread that have an alternative, please post them here. Thanks
…

Appium with BrowserStack in C# with NUnit. No backdoors though.

Our team has started the transition to Appium with C# and xUnit. We've added up an interface to abstract platform-specific drivers so we can use a single code base for the UI tests. Benefit of Appium is that it works with Xamarin Forms app and our future MAUI version as well.
We're also planning on implementing parallel testing on multiple devices locally.

@e1T How does Appium deal with automation on iOS? Xamarin UITest requires the iOS app is built with the Xamarin.TestCloud nuget installed with an initialiser for the library, is there not the same requirement with Appium?
Looks like we will most likely go the same route as you.

The iOS (or Android) app project doesn't need to include references to Appium itself. With Appium you can automate any application. For iOS it uses a Web Driver Agent installed on the device which runs the commands sent from the Appium server.
The architecture looks like this:

I was able to successfully get my application to have a basic test run against it today with Xamarin.UITest 4.1.3 in an NUnit 3 project targeting .NET 7. I'm not sure where the disconnect is between the MS dev team working on this and their inability to post a meaningful update in this issue, but I suspect this has been fixed on .NET 6/7 for a little while now. I don't have any super complicated test cases to try out with this at this time, but I'm curious if others can try Xamarin.UITest 4.1.3 and let me/us all know if your more advanced tests just work!

@anxkha I presume you are referring to a UI test with an Android app, the issue here is that to run a UI test on iOS we need to install the TestCloud nuget, which we can't yet without it being rebuilt. Let us know though! :)

@JohnHDev Ah yes, that's a fair point my bad on not fully understanding some of the concerns here (there's confusion earlier on in the thread about which package specifically). Our app is pretty specialized and only on Android so I was only concerned about that. That's disappointing that TestCloud hasn't been updated yet :(

@vvechkanov any news? we are about to invest resources into moving from Xamarin UITest to Appium. We need to do this to be able to move to .NET Maui before Xamarin is deprecated.
If it is no longer supported just say so. At the moment Microsoft is just wasting our time.

Any news?
Running Android or iOS build on .NET 6, with XamarinUITest 4.1.3 on App Center still not possible for me.
WARNING: Testing tests built for .NET 6 and above is not yet supported on Test Cloud.
Any workaround please?

Hi All!
Thanks for your patience. The new TestCloudAgent with .NET 6 and above support will be released tomorrow.

@IlyaBausovAkvelon thank you for the update.
I have just tried the new Xamarin.TestCloud nuget on a .NET Maui project and I am now able to successfully write UI tests that include iOS.
Please congratulate the team on a job well done. It is unfortunate it has taken a year (- 6 days) to complete.

@IlyaBausovAkvelon I have spotted an issue with the nuget, release builds appear to be including the nuget and they fail on uploading to TestFlight. The Calabash.Start() code is wrapped in a ifdef for DEBUG, but I have worked around the issue with the following in the .csproj:
	<ItemGroup Condition="'$(TargetFramework)' == 'net7.0-ios' AND $(Configuration) == 'Debug'"> 		<PackageReference Include="Xamarin.TestCloud.Agent" Version="0.23.2" /> 	</ItemGroup>
the error in the upload is:
[08:13:08]: [altool]         detail = "The app references non-public selectors in Payload/AppDev.xxx.app/AppDev.xxx: setOrientation:animated:";

Same Issue with non-public selectors

@IlyaBausovAkvelon any comments on this? ideally need a fix, having to put conditions in the csproj isn't really ideal.

@JohnHDev could you please clarify do you need Release configuration to test app on TestFlight?
Does TestFlight accept Debug builds?
Answering your question: This is by design. We don't think that calabash and TestCloud.Agent package should be in release configurations. I think in your case it's better to customize the project file.
@DmitriyKirakosyan

@IlyaBausovAkvelon The builds we are uploading to TestFlight are release builds.
The Xamarin.Calabash.Start(); code is wrapped in an IFDEF DEBUG && IOS, so isn't being called on a release build.
However, something in the nuget means it is being included in the Release build when it should be linked out if there aren't any references.

What if it's actually a dotnet trimmer's (Linker) issue? Looks like it's the trimmer's responsibility to not include assemblies wrapped in DEBUG or AD-HOC etc.
.NET 7 Linker has lots of issues which were not released yet: https://github.com/dotnet/linker/issues/3160

What if it's actually a dotnet trimmer's (Linker) issue? Looks like it's the trimmer's responsibility to not include assemblies wrapped in DEBUG or AD-HOC etc.
.NET 7 Linker has lots of issues which were not released yet: dotnet/linker#3160

I believe you are correct, I have updated Xamarin iOS projects to the latest Xamarin.TestCloud nuget and Im not seeing the same issue with Release builds.
Im going to close this issue as the TestCloud nuget has now been updated to support .NET 6.


Subword Navigation not work properly for uppercase like HTML_DOCUMENT or HTMLDocument

VSCode Version: 1.25.0 (0f080e5267e829de46638128001aeb7ca2d6d50e)
OS Version: macOS 10.13.5

Steps to Reproduce:

type HTML_DOCUMENT in editor, position cursor to word start
do cursorWordPartRight twice will move to H^T^ML_DOCUMENT (which is wrong) instead of HTML^_DOCUMENT^ (expected)
^ <=> cursor stop positions

Note: I also expect ^HTMLDocument to move right-ward to HTML^Document^

Fixed by #53470


菜单收缩起来echarts不会自适应显示

Describe the bug
菜单收缩echarts不会自适应显示，会出现留白
To Reproduce
Steps to reproduce the behavior:

登录网站
点击菜单收缩按钮
查看echarts表现

Expected behavior
自适应显示
Screenshots

Desktop (please complete the following information):

OS: windows
Browser: chrome
Version: 108.0.5359.125

Smartphone (please complete the following information):

Device: [e.g. iPhone6]
OS: [e.g. iOS8.1]
Browser [e.g. stock browser, safari]
Version [e.g. 22]

Additional context
Add any other context about the problem here.

fixed


how to limit care number ??????????  who can  tell me ............

Not sure if this is what you're looking for since you didn't really give any info but try this...
swipeableView.numberOfActiveViews = 15


Automated metadata and assets creation for releases

Every new or updated version in releases will be detected and update the metadata and corresponding assets.
Those will be saved in meta/, ready for building.

Sorry, discard, wrong target (should be for the ubuntu project)


CA doc content review (SOFTWARE-3070)

A lot of duplicate info removed but it's possible that I may have gotten carried away...

Alright, @matyasselmeci this should be ready for re-review


[INTERNAL] Refactor taskRepository to include specVersion

Also tasks are only required on-demand now

Coverage remained the same at 91.201% when pulling d6609327bd233e535ed4c388b068852bf9608fb0 on refactor-task-repository into d71bed0e6d8301dd0b10d0e0e156d17f2d7c624d on master.


Teams App install on teams is not triggering any bot events.

Once we install a teams' app in a team, via graph API. (POST https://graph.microsoft.com/v1.0/teams/2395e2cd-3425-408d-930c-c6c4fcedcbe8/installedApps) we are not getting app installed event in the callback service.
onInstallationUpdateAdd is the one we are expecting, with channel id and service URL.
We used to get the event but now, the events are not triggered.
Bot Id : 6e2c4995-f170-4ba3-9a0b-aefd4c87dfa5

We are checking the issue

@coolanz - We tried to repro the issue by installing an app via Graph API to any team and we are able to get bot events being fired.
POST  https://graph.microsoft.com/v1.0/teams/{teamId}/installedApps

{
<EMAIL_ADDRESS>"https://graph.microsoft.com/v1.0/appCatalogs/teamsApps/{externalId}"
}

{
    "action": "add",
    "type": "installationUpdate",
    "timestamp": "2022-04-12T10:32:51.011Z",
    "id": "f:a961ad7c-27ce-506d-a5e5-bfe69xxxxc4",
    "channelId": "msteams",
    "serviceUrl": "https://smba.trafficmanager.net/amer/",
    "from": {
        "id": "29:1GdHzmtVE_hN2wPrVQSb0fdMuI-HG8_kDOUXSNcf1pCKVxxxxxaAVUlNYy7BzXbQc1dg38oMTNnKOg",
        "aadObjectId": "4exxxx291b-4154-a85f-a89cd77aefa8"
    },
    "conversation": {
        "isGroup": true,
        "conversationType": "channel",
        "tenantId": "36a70xxxxxd-4d60-9de0-0a5f7b7693df",
        "id"<EMAIL_ADDRESS>    },
    "recipient": {
        "id": "28:448ec8xxxxxf80-b5a1-cd3bdefd1f5b",
        "name": "xxxPSD"
    },
    "channelData": {
        "settings": {
            "selectedChannel": {
                "id"<EMAIL_ADDRESS>            }
        },
        "channel": {
            "id"<EMAIL_ADDRESS>        },
        "team": {
            "aadGroupId": "2693xxxxxxxx2-ba50-4ec85e5b67c7",
            "name": "SOC Team",
            "id"<EMAIL_ADDRESS>        },
        "tenant": {
            "id": "36a70xxxxxx-9de0-0a5f7b7693df"
        },
        "source": {
            "name": "message"
        }
    }
}

@coolanz - We have also used the catalog app's generated app ID (different from the developer-provided ID in the Microsoft Teams zip app package.

Alright, so why this bot is not receiving any installupdate event? @Prasad-MSFT

Is the bot getting added successfully to the team?

Yes @Prasad-MSFT

@Prasad-MSFT But we are receiving user app installed and member removed events

@coolanz - Ok, we are checking with engineering team what could be the root cause for this. We will get back to you once we get any update. Thanks!

Any updates @Prasad-MSFT ?

@coolanz -Engineering team is looking into the issue. We will get back to you once we get any update. Thanks!

@Prasad-MSFT We are facing the same issue with our Microsoft Teams app. We use Graph API to install the app into a Team and rely on the installationUpdate activity on the Bot's Botframework endpoint to fetch the channel (team) id and service URL. The events are sent if the app is manually installed into a Team. However, if the app is installed via GraphAPI, the events are not sent to the endpoint.
I have this issue posted on Stackoverflow already and I'm not getting any useful responses: https://stackoverflow.com/questions/71943420/not-receiving-botframework-installationupdate-when-app-is-added-via-graphapi/
We noticed that this is broken after we have submitted our app for verification via the Partner centre. From around 2022-04-12.  In fact, when the Verification team performed the testing, we notice that the events have worked. Our app didn't pass the verification for different technical reasons which we have now addressed. However, ever since the validation team responded saying that the validation has failed, we notice that the installation events are being sent to the endpoint for this app.
We have other apps that are not submitted for verification and their events work completely fine. So, I'm assuming that this has to do something with the verification process.
I hope this helps debug this a little more.
Ever since we submitted the app for validation, we are unable to serve our new customers. Even worse, we can't resubmit the app for validation because this flow is not broken. We are stick in a limbo state now.
@coolanz Did your app also go through a verification process by Microsoft before you started facing this issue?

get out!
dont steal my email anymore!

发件人: Sri Vishnu Totakura @.>
发送时间: 2022年4月23日 10:01
收件人: MicrosoftDocs/msteams-docs @.>
抄送: Subscribed @.***>
主题: Re: [MicrosoftDocs/msteams-docs] Teams App install on teams is not triggering any bot events. (Issue #5713)
@Prasad-MSFThttps://github.com/Prasad-MSFT We are facing the same issue with our Microsoft Teams app. We use Graph API to install the app into a Team and rely on the installationUpdate activity on the Bot's Botframework endpoint to fetch the channel (team) id and service URL. The events are sent if the app is manually installed into a Team. However, if the app is installed via GraphAPI, the events are not sent to the endpoint.
I have this issue posted on Stackoverflow already and I'm not getting any useful responses: https://stackoverflow.com/questions/71943420/not-receiving-botframework-installationupdate-when-app-is-added-via-graphapi/
We noticed that this is broken after we have submitted our app for verification via the Partner centre. From around 2022-04-12. In fact, when the Verification team performed the testing, we notice that the events have worked. Our app didn't pass the verification for different technical reasons which we have now addressed. However, ever since the validation team responded saying that the validation has failed, we notice that the installation events are being sent to the endpoint for this app.
We have other apps that are not submitted for verification and their events work completely fine. So, I'm assuming that this has to do something with the verification process.
I hope this helps debug this a little more.
Ever since we submitted the app for validation, we are unable to serve our new customers. Even worse, we can't resubmit the app for validation because this flow is not broken. We are stick in a limbo state now.
@coolanzhttps://github.com/coolanz Did your app also go through a verification process by Microsoft before you started facing this issue?
―
Reply to this email directly, view it on GitHubhttps://github.com/MicrosoftDocs/msteams-docs/issues/5713#issuecomment-1107445309, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AQH4D33I474SC537UHEF3DDVGPDBBANCNFSM5TFZOXRQ.
You are receiving this because you are subscribed to this thread.Message ID: @.***>

No @tsrivishnu, we haven't submitted the app for verification. But the issue started somewhere around the same timeframe as yours.

@tsrivishnu - There is an issue raised for this and engineering team is investigating it. We will inform you once we get any further update. Thanks!

@Prasad-MSFT Any updates?

The fix is in internal stage. The fix will be deployed to production in one to two weeks. We will update you once its done.
Thanks for understanding!

@Prasad-MSFT hi, are there any updates on the deployment?

@tsrivishnu - We got info from engineering team that this issue is fixed. Please do verify

I can confirm that this is fixed and is working for our own tenant and our developer tenant. I will need sometime to verify if this is working for our customers’ tenant. I will post an update if I have any. Thank you.

The fix works!


Is there any Application to interact with the generated DAG

Hi,
I am using LogCausalAnalysis application for an experiment.
I have generated the event template and DAG with the help of application. So far your application is working for my requirement.
I would like to know if there is any Application available to interact with the generated graph and get the Casual relationship between the events for a given input event.
//BR
Aarish

Currently no applications on the basis of LogCausalAnalysis.
Use pcresult functions, or make a script using pcresult.PCOutput methods.


Turtle patch release

Changes:

Support for images overrides in clusterctl.yaml
CAPI Operator bump to v0.13.0
CAPIProvider deletion fixes
rancherInstalled helm option and cache timeout fixes, in case of no rancher installed.

After discussion, this no longer seems to be time sensitive, as an alternative immediate solution was implemented.

Is it ok if we close this one @Danil-Grigorev? We'll be releasing a new minor version anyway.

Yes, this was here for posterity (re: last comment  https://github.com/rancher/turtles/issues/712#issuecomment-2328887673)


Session Management in Node.js

Article checklist
NOTE: (Please ensure that you have only one open issue + linked pull request at a time. This will ensure that we complete the article in a timely manner from inception to publishing.)
Preliminary Checks - Formatting and Structure

[x] Does your article follow any of the suggested structure formats? - see example formats
[x] Is your article properly formatted in Markdown? - see Github Markdown guide
[x] Have you used the correct folder and file structure? - see Contribution Guidelines
[x] Is your article over 750 words? - Tool: Wordcounter.net
[x] Have you used our preferred heading structure? - H3 (###) and up
[x] Does your article provide enough value and detail about your topic? - Articles should be clear, accurate, and fully explained.
[x] Can your article be understood by beginners? - Assume the audience is smart but has no prior exposure to the common terminology in your article.
[x] Have you included a hero image that is 600x400 pixels and have the copyright to use it? - Tools: Pixlr Image Editor for resizing and Unsplash for Creative Commons images
[x] In your PR - add a comment that states "This fixes #(enter your Idea Content Form #)" to link and close your Idea Content (issue) when the PR is merged.

Grammar & plagiarism checks

[x] Have you spellchecked and grammar checked your article? - Tools: Write&Improve - ProWritingAid -  Grammarly
[x] Please place your article through a 3rd party plagiarism checker? We suggest using Quetext, this tool is free and has a daily limit. We typically accept articles with 10% or less.
[x] Have you checked your article for readability? - Tool: Hemmingway
[x] Have you added sources for quotes and images that aren't yours?

Technical checks

[x] Are your code snippets properly formatted for syntax highlighting - see Syntax guide

Contribution guidelines
For first-time contributors and for more details, see Contributing Guidelines

plagiarism check done

Made changes @zolomohan

Made changes @zolomohan

@zolomohan, have you seen the updates?

@zolomohan, Check the newly added format.

I have also updated the PR to match the new  EngEd Repo structure

Thank you v much for your patience as we worked through our Repo re-structuring process.
The purpose behind this restructure - was to better allow us to handle more volume and allow students to publish more articles and get more involved with the community (with open-source contribution and suggestions).
With most of the changes coming to completion - we will be sure to get your article published asap.
Thank you again - and we are looking forward to more amazing articles.

@zolomohan, Check the newly added format.

@zolomohan, AM still waiting for an update.

It should work fine now @zolomohan

Hi @Catemacharia. After logging in, When I reach the / home route, I don't see the logout button. Instead, I see the form again. Could you check why this is happening?

@zolomohan I hope you got the newly added commit

Is this your first PR @Catemacharia?

No, this is my second.

Great work @Catemacharia
Awesome tutorial to follow along - please make sure to do a git pull on your forked repo before your next article 👍


Define commitlint scopes

We currently use commitlint to ensure our commit messages adhere to the conventional commit standard. The current config is here https://github.com/i-am-bee/bee-agent-framework/blob/main/commitlint.config.ts
Unfortunately, we don't have a strict set of scopes that one can use, and therefore, scopes vary from commit to commit - this can be seen in our CHANGELOG.
Example:
tool: add google custom search tool (https://github.com/i-am-bee/bee-agent-framework/issues/34) ([ef839da](https://github.com/i-am-bee/bee-agent-framework/commit/ef839da933276c3deff21552e16627dfe9c3ef7d))

vs
tools: update Wikipedia tool, remove links, extend interface ([ee651c3](https://github.com/i-am-bee/bee-agent-framework/commit/ee651c38ae21711161dfd755987be8640519c9fc))

We should define a set of allowed scopes and put them inside the commitlint config via scopeEnum property (https://commitlint.js.org/reference/rules.html#scope-enum)
Example of allowed scopes:

code-interpreter
tools
llms
adapters
serialization
...

I'd like to try this.  Would you assign to me?

Assigned @akihikokuroda . Feel free to ask if you have any questions.

Here is the list of the scope enum that I'm thinking

code-interpreter
tools
llms
adapters
serializer
docs
ci"

Are these OK?
Thanks!

Not really; you are mixing scopes with types.
See https://www.conventionalcommits.org/en/v1.0.0/#summary

I see.   How about these?  Should "memory" and "cache" be in the list, too?

code-interpreter
tools
llms
adapters
serializer

Thanks!

All modules should be in there. Your proposal captures very little scope.
What scope would you use if you changed something in the following locations?

src/internals/helpers/map.ts
src/cache/fileCache.ts
src/adapters/langchain/tools.ts
docker-compose.yaml

and so on... think of all possible variations and then come up with a proper enum.

Thanks!  I thought that one commit may include changes in multiple locations.  I believe that some of files under src/internals, tests, docs and examples are often included in a commit.  So it may be better to have general functions as the scope value. Do you want the scope to indicate changed files?

Yes, one commit may include changes in multiple locations. The final enum should cover all cases so far (see CHANGELOG, where you can see all commits and how they are formatted), and the author should provide a guide on how to use scopes with some examples, such as adding a new adapter or creating a new tool.

The scope values used so far are:
agent,  llm(s), tool(s), ibm-vllm, code-interpreter, serializer, cache, groq, watsonx, observability, bee-agent, utils, memory, execution, custom-tool, example, template, react, bam, python
I looked through the updated files in each commit with these scopes.  The scope "agent", "llm" and "tools" are used for a lot of commits and updated files in these scopes are agent: 25, llm: 22, and tools: 34.  It probably better to splits these scope to sub-scopes.  The commits with other scopes include specific files for the commit and some common files.
Here are the list of scopes what I propose:

bee-agent (agent/bee)
parser-agent (agent/parser)
agent (agent)
bam-adapter (adapters/bam)
groq-adapter (adapters/groq)
ibm-vllm-adapter (adapters/ibm-vllm)
langchain-adapter (adapters/langchain)
ollama-adapter (adapters/ollama)
openai-adapter (adapters/optnapi)
shared-adapter (adapters/shared)
watsonx-adapter (adapters/watsonx)
llm (llms)
database-tools (tools/database)
python-tools (tools/python)
search-tools (tools/search)
weather-tools (tools/weather)
web-tools (tools/web)
tools (tools)
cache (cache)
emitter
utils (internals)
logger (logger)
memory (memory)
serializer (serializer)
code-interpreter-infra (infra/code-interprter)
tests (tests)
docs (docs)
examples (examples)
scripts (scripts)

The order in the list is the priority of the scope.  Each scope has an associated directory in the project.  The file in the highest priority scope in the commit determines the scope of the commit.  When a new adapter, tool or a major new sub component created, it must be added as a new scope in commitlint.ts file.

I think these are a bit confusing and unnecessary (mixing types with scopes as @Tomas2D said):

tests
docs

Probably the changes to the instrumentation of tests or docs will happen way less often than actually documenting or testing something.
If you add a new test, I'd use a commit message
test(tools): add wikipedia tool test

This commit would make sense, but in my opinion it's really unnecessary, when you extend test utils for example, you  do because you need it for a specific test
fix(tests): skipping e2e tests due to wrong condition

The following are too general:

utils ->

Also I'm not sure whether we should distinguish individual adapters and tools.  I'd rather if don't need to change the commitlint configuration everytime you add a new tool or adapter, I think it's unnecessary strict for new contributors and you still have the commit message to express the actual subtype of the tool. Also, the following will probably only ever contain one tool, we're not planning to have multiple python tools. I'd flip it to tools-python if we want to go with the specific ones:
database-tools (tools/database)
python-tools (tools/python)
search-tools (tools/search)
weather-tools (tools/weather)
web-tools (tools/web)
tools (tools)

I think a good rule of thumb would be to follow the directory structure of src/.

(except index and version)
If there is something that does not fit, for example a change in src/agents/parsers/field.ts will extend parsers to be a generalized concept, we should move parsers to the top level.
"examples" feels like a type to me more than a scope, also you should add example as part of the feature, if you add new adapter, the example for it should be in the same commit.
Then we need couple other for the houskeeping stuff:

infra - "e.g. changing docker-compose.yml
deps for bumping dependencies

If the commit does not obviously fall into any of the categories, we should allow to leave the scope empty
(e.g. chore: update tsconfig ...)

Following the directory structure is good.  When the changes are in multiple directories, the committer can put the scope based on the directory that got the most significant or important changes.
I put the sub directories of the adapter because there are some scopes used so far for specific adapter (ibm-vllm,  groq, watsonx, groq, watsonx).
The infra may not be a good name because there is a infra directory already.  It may be confusing.   The utils has been  used to update the files in internals directory.
I don't have strong opinion about the list of scopes so I just need to get consensus in this community.  I think the scope is used to

assign the right reviewer of the commit
find commits that might cause some regression issue

in addition to the type.  So as far as the scope value helps these, I think it's good.
For now, the proposed list is:

adapters
agents
llms
tools
cache
emitter
internals
logger
memory
serializer
repo-infra
deps


Couldn't find all of the services!

I've successfully managed to connect to the ble device and get its services by both calling discoverServices and services on the BluetoothDevice object.
The problem is that it only returns 3 primary services namely 1800, 1801, and 180a which are not useful to me and are for generic access, generic attributes, and device information respectively.
I'm looking for FFF0 service which holds the characteristics FFF1 and FFF2 for reading and writing data.
*Note that I've already found and worked with the FFF0 service with both the flutter_blue package for android and ios and NRF connect mobile app; meaning that the service indeed exists.
As I decided to expand my project to the web, I thought that flutter_web_bluetooth is a suitable alternative.
In short:
A service is missing from the services list. Does anyone know how to solve this problem?
/// getting bluetooth devices
await FlutterWebBluetooth.instance.requestDevice(
        RequestOptionsBuilder.acceptAllDevices(
            optionalServices: BluetoothDefaultServiceUUIDS.VALUES
                .map((e) => e.uuid)
                .toList()));

FlutterWebBluetooth.instance.devices
        .firstWhere(
            (devices) => devices.any((device) => device.name == "NAME"))
        .then((devices) async {
      /// storing the device in a custom object member of type BluetoothDevice
      Bluetooth.connectedDevice =
          devices.firstWhere((device) => device.name == "NAME");
      Bluetooth.connectedDevice.connect();

      /// getting services after device is connected
      StreamSubscription subscription;
      subscription = Bluetooth.connectedDevice.connected.listen((event) async {
        print("waiting for device to be connected");
        if (event) {
          Bluetooth.connectedDevice.discoverServices().then((services) async {
            services.forEach((service) {
              print(service.uuid);
            });
          });
          subscription.cancel();
        }
      });
    });

It returns three services with uuids:
00001800-0000-1000-8000-00805F9B34FB
00001801-0000-1000-8000-00805F9B34FB
0000180a-0000-1000-8000-00805F9B34FB
But I'm looking for:
0000FFF0-0000-1000-8000-00805F9B34FB

The service you are looking for is not part of the BluetoothDefaultServiceUUIDS list and thus you will need to add it in the acceptAllDevices function as an optional service else the web browser won't show it to you even if it is there.
Also some services are part of a blacklist and are thus not able to be used, it should print int he console if this is the case.

@jeroen1602
Thank you very much. Yes, That was certainly the solution.
Does the same principle hold for the characteristics? Do I have to add the characteristics that I'm looking for in the service somewhere?
The charachtrestics that I'm loooking for are:
0000fff1-0000-1000-8000-00805f9b34fb for reading and
0000fff2-0000-1000-8000-00805f9b34fb for writing.
Here's the code:
StreamSubscription subscription;
      subscription = Bluetooth.connectedDevice.connected.listen((event) async {
        print("waiting for device to be connected");
        if (event) {
          try {
            Bluetooth.connectedDevice.discoverServices().then((services) async {
              Bluetooth.writeCharacteristic = await services
                  .firstWhere((service) => service.uuid == SERVICE_UUID)
                  .getCharacteristic(WRITE_UUID);
            });
            print("succ");
            Bluetooth.writeCharacteristic.writeValueWithoutResponse(
                Uint8List.fromList([0x01, 3, 0, 255]));
          } catch (e) {
            print("err");
          }
          subscription.cancel();
        }
      });
    });

My concole propmts "succ" and "err" right after that. Seemingly because it cannot writeValueWithoutResponse on the Bluetooth.writeCharacteristic

@jeroen1602 Perfect it worked! Thank you very much.


wechat_camera_picker所依赖的camera插件的CameraController方法参数变了，导致升级新版本编译不过去了

/usr/local/Library/flutter/.pub-cache/hosted/pub.flutter-io.cn/wechat_camera_picker-1.3.0/lib/src/widget/camera_picker.dart:423:43: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
        await cameraController.takePicture(path);
                                          ^
/usr/local/Library/flutter/.pub-cache/hosted/pub.flutter-io.cn/wechat_camera_picker-1.3.0/lib/src/widget/camera_picker.dart:496:43: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
      cameraController.startVideoRecording(filePath).then((dynamic _) {

还是不能太相信官方…先通过override使用旧版本吧

Fixed by 84b34b2e4aa941f5d4a384005a431a27f6631022 .


Add documentation template with react-markdown. Closes #170

This branch needs merging, preferably today/tomorrow.


Add STARR_REF param to bootstrap job

The new parameter was added to the boostrap script in:
https://github.com/scala/scala/pull/4976
I have manually added this parameter via the Jenkins UI in
the meantime.

Review by @adriaanm
Testing this out https://scala-ci.typesafe.com/view/scala-2.12.x/job/scala-2.12.x-integrate-bootstrap/324/ (link is 404 until the build machine wakes up)

@adriaanm @SethTisue @szeiger
I'd like to be able to use the product of this build as STARR for a PR against scala/scala. Would appreciate your thoughts on this. Here are mine:
We'll need to convince scripts/jobs/validate/publish-core to use https://scala-ci.typesafe.com/artifactory/scala-release-temp/. I am doing this locally with the file ~/.sbt/repositories containing:
[repositories]
  local
  typesafe-ivy-releases: http://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
  maven-central
  sonatype-snapshots: https://oss.sonatype.org/content/repositories/snapshots
  private-repo: https://scala-ci.typesafe.com/artifactory/scala-release-temp/

I could modify publish-core in my pull request to write out that file. Looks like we already have per-job isolation of $SBT_HOME  (it is set to SBT_HOME="$WORKSPACE/.sbt"), so it should be safe to drop this file in there.
Alternatively, I could pass the SCALA_VER_BASE parameter to the bootstrap job (or even tag the commit) to send the binaries to Sonatype. I'd rather not do this in the first instance, as I'm sure there will still be some iteration required.

I could modify publish-core in my pull request to write out that file

Here's my attempt at that: https://github.com/retronym/scala/commit/b76bcafd71c38f116d47bfc15eeac5e0ba1ca3b3

Getting closer, trying again with a fix for the broken JUnit test in the backend: https://scala-ci.typesafe.com/view/scala-2.12.x/job/scala-2.12.x-integrate-bootstrap/326/console

ping me about this next week if you still need feedback? unless it's actually pretty urgent? in the meantime, I deployed your change


Support for ARM64

Most of my Docker containers run on Raspberry Pi or in a free instance of Oracle Cloud. Unfortunately, they only support ARM64, so your software always exits with this error: exec /usr/local/bin/docker-entrypoint.sh: exec format error.
I've found some instructions for adding multiple platform support:
https://docs.docker.com/build/building/multi-platform/
Do you think it'd be possible to tweak your software to play nice with different architectures like ARM64? That'd be a huge help!

Sounds like a good idea to add!

ARM64 build will be automatic from 1.2.4 (current latest) onward.


Fix Symfony 4.2 deprecation

Hi! Thank you for your pull request!
Fyi, I've slightly updated it in 7c539c6caac55fef451669695463da2de00e43f3 , so we can keep support for older Symfony versions as well.

What about merge and update version for composer ?

I agree. I took your commit and continued fixing the Travis config in https://github.com/wouterj/WouterJEloquentBundle/pull/97 . Thanks for submitting your patch! I'll try to release a new version this week.


python311Packages.ossfs: 2023.4.0 -> 2023.5.0

Diff: https://github.com/fsspec/ossfs/compare/refs/tags/2023.4.0...2023.5.0
Changelog: https://github.com/fsspec/ossfs/releases/tag/2023.5.0
Description of changes

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.05 Release Notes (or backporting 22.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 231625 run on x86_64-linux 1

4 packages built:

python310Packages.ossfs
python310Packages.ossfs.dist
python311Packages.ossfs
python311Packages.ossfs.dist


[SITE BROKEN] mtlnovel.com

Every time I check a novel on this site, it says Forbidden (403). I wanna know why

The server is blocking bot requests.

Okay, thank you very much for responding.

how to fix that ?


Error: failed to download "hcloud-pricing-exporter/hcloud-pricing-exporter"

I can't seem to install this chart using the instructions. I always keep getting:
Error: failed to download "hcloud-pricing-exporter/hcloud-pricing-exporter"

Hello @jorikseldeslachts,
thanks for opening this issue. I just tried to replicate this issue, but it seems to work fine for me. What version are you using? I am using v0.6.0-r1 while testing.
Could you share some additional information?

Which command exactly is failing?
Which machine are you running this command on? Does it have access to the internet?
What is the output if you append --debug to the failing command?

With kind regards
Jan

Hello @jorikseldeslachts,
any news on this issue? Without any additional input, I will have to close it and just assume it is solved...
With kind regards
Jan


question of the hard coded item count limit

First, Nice plugin. I just began to use this, it looks quite nice. I met a minor problem that If I'm not following the strict L:B:C pattern, the item available will not be refreshed to fetch the target account.
expectation
For example, If I want to get Assets:Receivable:Eason and it is beyond the 10 first completion item, if I use ARE to find it. The is the current completion behavior in vscode-beancount plugin which I'm used to.
If I want to use such way to get the completion, I think a simple approach could be allowing user to increase the limit. I tried the code below it seems worked.
local max_item_count = request.option.max_item_count
if max_item_count == nil or type(max_item_count) ~= 'number' then
    max_item_count = 10
end
...
if count >= max_item_count then
    break
end

As an amateur coder, I'm not quite good at this, maybe there are better ways to accomplish this.

@sidkang Thanks for the suggestion. max_item_count will be added soon.

Just read the nvim-cmp doc, it seems there is already the count limit implemented in the framework, maybe the limit in this plugin can be just removed and added in the config.  It's removed.


Add continuous integration for URL validation

Closes https://github.com/seandavi/awesome-single-cell/issues/125
Uses https://github.com/dkhamsing/awesome_bot to check links in all Markdown files.
@seandavi please let me know when Travis CI has been activated for this repository so I can test this.

@agitter travis is activated.


FileSystem.getChecksum should return the checksum and not null

The issues comes when using Stocator via FileSystem API directly.
For example, the following Java code upload an object
FileSystem fs = null;        String p = "swift2d://container.bmtest1/some.data";        try {         fs = FileSystem.get(URI.create(p), mConf);        } catch ( IOException e) {         e.printStackTrace();        }        try {         FSDataOutputStream out =  fs.create(new Path(p));         out.write("abcdefgh".getBytes());         out.close();        } catch (Exception e) { e.printStackTrace(); }
User might want to verify that object created successfully and call FileSystem.getChecksum.
However current code will return null, which seems like a bug.
We need to return the checksum.

@djalova Can you see it please? I guess the checksum is the hash returned by the object store, after the object was created with 201 status.

@gilv Can I get a stack trace of this? I don't see an exception when I try to run the code above as a test.

@djalova The code above doesn't produce any exception. But if you will run that code and then call fs.getChecksum() it will return null and not the real check sum of the object

@gilv I'm not sure if this method is meant to be used that way. Calling fs.getChecksum() returns a ChecksumFile object. If we just want to retrieve the etag for a an object there might be a better way.


pseudostem traits

Proposed new parent term and definition:
- pseudostem anatomy and morphology trait: A stem anatomy and morphology trait (TO:0000361) wich is associated with a pseudostem (PO:0025248).
Proposed new children of term + definitions:
- pseudostem length: A pseudostem anatomy and morphology trait (TO:id) which is associated with the length of a pseudostem (PO:0025248). Refer to length PATO:0000122
- pseudostem shape: A pseudostem anatomy and morphology trait (TO:id) which is associated with the shape of a pseudostem (PO:0025248). Refer to shape PATO:0000052
- pseudostem color: A pseudostem anatomy and morphology trait (TO:id) which is associated with the color of a pseudostem (PO:0025248). Refer to color PATO:0000014
- pseudostem diameter: A pseudostem anatomy and morphology trait (TO:id) which is associated with the diameter of a pseudostem (PO:0025248). Refer to diameter PATO:0001334
Reported by: lauramooray
Original Ticket: obo/plant-trait-ontology-to-requests/95

See comments and revisions on #94.


dotnet-core-uninstall does not work for .NET 8

Type of issue
Outdated article
Description
This article mentions that one may use the ".NET Uninstall Tool" to uninstall old runtimes and SDKs but the ".NET Uninstall Tool" hasn't been updated to support .NET 8:
$ ./dotnet-core-uninstall list

This tool cannot uninstall versions of the runtime or SDK that are installed using zip/scripts. The versions that can be uninstalled with this tool are:

.NET Core SDKs:
  8.0.101  (arm64)  [Cannot uninstall version 8.0.0 and above]
  8.0.100  (arm64)  [Cannot uninstall version 8.0.0 and above]
  7.0.310  (arm64)  [Used by Visual Studio for Mac. Specify individually or use —-force to remove]
  6.0.416  (arm64)

.NET Core Runtimes:
  8.0.1   (arm64)  [Cannot uninstall version 8.0.0 and above]
  8.0.0   (arm64)  [Cannot uninstall version 8.0.0 and above]
  7.0.13  (arm64)  [Used by Visual Studio for Mac or SDKs. Specify individually or use —-force to remove]
  6.0.24  (arm64)  [Used by Visual Studio for Mac or SDKs. Specify individually or use —-force to remove]

$ ./dotnet-core-uninstall remove --sdk 8.0.100
Uninstallation not allowed. This tool cannot uninstall .NET Core SDKs with version 8.0.0 or above.

$ ./dotnet-core-uninstall remove --runtime 8.0.100
The specified version is not found: "8.0.100".

Related:
https://github.com/dotnet/core/issues/1202
Page URL
https://learn.microsoft.com/en-us/dotnet/core/install/remove-runtime-sdk-versions
Content source URL
https://github.com/dotnet/docs/blob/main/docs/core/install/remove-runtime-sdk-versions.md
Document Version Independent Id
090b8fbd-39e6-b754-e1da-890b1123f2c4
Article author
@adegeo
Metadata

ID: 4efe9b33-ff9f-3b37-e8bd-a34c0a77bd1e
Service: dotnet-fundamentals
Sub-service: install

I'll ask around internally to see what the story is.

any updates?

@quitelight @durandt @the1schwartz Sorry for the delay here. I did ask around and was told it's owned by the SDK folks but it sometimes just really lags behind. I also noticed this https://github.com/dotnet/cli-lab/issues/279 which has a roadmap for releasing the next version. It's close, but there are some blockers currently.